
From guido.moritz@uni-rostock.de  Tue Jun  1 23:22:13 2010
Return-Path: <guido.moritz@uni-rostock.de>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7F3B53A6800 for <core@core3.amsl.com>; Tue,  1 Jun 2010 23:22:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.1
X-Spam-Level: 
X-Spam-Status: No, score=0.1 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HELO_EQ_DE=0.35, MANGLED_TOOL=2.3, MSGID_MULTIPLE_AT=1.449, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id N1440fpZ2Jhw for <core@core3.amsl.com>; Tue,  1 Jun 2010 23:22:10 -0700 (PDT)
Received: from ida.uni-rostock.de (ida.uni-rostock.de [139.30.8.34]) by core3.amsl.com (Postfix) with ESMTP id 9FACB3A67D3 for <core@ietf.org>; Tue,  1 Jun 2010 23:22:09 -0700 (PDT)
Received: from email1.uni-rostock.de (139.30.8.208) by ida.uni-rostock.de (139.30.8.162) with Microsoft SMTP Server (TLS) id 8.2.254.0; Wed, 2 Jun 2010 08:21:55 +0200
Received: from Schlappi (212.50.147.101) by email1.uni-rostock.de (139.30.8.210) with Microsoft SMTP Server (TLS) id 8.2.254.0; Wed, 2 Jun 2010 08:21:55 +0200
From: Guido Moritz <guido.moritz@uni-rostock.de>
To: <core@ietf.org>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com> <6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>
In-Reply-To: <6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>
Date: Wed, 2 Jun 2010 08:21:54 +0200
Message-ID: <001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Office Outlook 12.0
Thread-Index: Acr+ZFvZPw2Mu3NgSiuox0ikI6Lk8gDtkG8g
Content-Language: de
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 02 Jun 2010 06:22:13 -0000

Dear WG,

I agree to focus on the ToDos and not on the maybes. But a comprehensive
eventing concept includes more than only the method/message type. It
requires lease concepts, filtering mechanisms ... It would also require
mechanisms to assign incoming NOTIFYs to a specific SUBSCRIBTION if one =
and
the same client has SUBSCRIBED to more than one event of the same =
device. Is
this out of scope of COAP or should it be considered already at this =
point
to have a straight forward and clean protocol design? Hence it might be
reasonable to have SUBSCRIBE and NOTIFY as single methods and grouping =
every
sub functionality as type below the method?

However, as HTTP has no native mechanism to feature eventing, for =
eventing
it would be always required to have a caching intermediate entity =
(proxy,
gateway, what ever). This one can provide which interface ever to the
external networks (HTPP, polling, WebHooks, XMPP, WS-Eventing, ...). So =
this
is implementation specific and might not be considered in COAP at all.

Guido

> -----Urspr=FCngliche Nachricht-----
> Von: core-bounces@ietf.org [mailto:core-bounces@ietf.org] Im Auftrag =
von
Zach
> Shelby
> Gesendet: Freitag, 28. Mai 2010 14:50
> An: Adriano Pezzuto
> Cc: core
> Betreff: Re: [core] Subscribe/Notify for CoAP
>=20
> Hi,
>=20
> This is a really good conversation. One thing we need to do is =
remember
what
> our minimum requirements are for subscribe/notify and not try to solve
> something more than we should. From what I know it is sufficient to be
able to
> receive notifications when a URI changes or periodically. You might
consider
> new URIs under this URI path to be changes to a URI though...
>=20
> On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrote:
>=20
> > Hello,
> > with this flavor, the SUBSCRIBE may be replaced by a simple POST. So =
no
> needs to have an explicit SUBSCRIBE method.
>=20
> This is what coap-01 assumes.
>=20
> > If we want support a more oriented peer-to-peer transaction on CoAP, =
it
> looks to me both SUB and NOTIFY should be treated as messages.
>=20
> The Request/Response model can be used peer-to-peer, and in CoAP you =
can
even
> use a Request asynchronously. Additionally, we want a native RESTful
> subscribe/notify technique, that is, we want to subscribe to resources =
and
be
> susequently notified about those resources when they change.
>=20
> In that sense, you can think of a subscription as a request to receive
> asynchronous notifications about a resource (about a URI). This can be
> achieved by:
>=20
> 1.  as a SUBSCRIBE Request on the URI with some option indicating the
lifetime
> as in coap-01,
> 2.  as a Subcsribe message (no methods) on the URI with some option,
> 3.  or as a POST Request on the URI with options indicating that this =
is
> actually a subscription and the lifetime.  This bends the meaning of =
POST
> quite a bit and might be prone to mistakes?
>=20
> The asynchronous response is a harder one. Can we bend the meaning of =
a
> Request for making asynchronous notifications? Also a notification
includes a
> URI about a resource on the requestor, which is inverse from normal
Requests
> in REST. So the options here are:
>=20
> 1. as a Notify message about a URI (no methods) as in coap-01,
> 2. as a NOTIFY Request about a URI as was in coap-00,
> 3. hmmm... reusing CRUD methods really doesn't work for this one at =
all...
>=20
> I wonder what the HTTP designers would have done if this would have =
been a
> requirement back then? Maybe we should ask them...
>=20
> Zach
>=20
> >
> > Adriano
> >
> > From: matthieu.vial@fr.non.schneider-electric.com
> [mailto:matthieu.vial@fr.non.schneider-electric.com]
> > Sent: venerd=EC 28 maggio 2010 13.52
> > To: Adriano Pezzuto (apezzuto)
> > Cc: core; core-bounces@ietf.org; robert.cragie@gridmerge.com
> > Subject: Re: [core] Subscribe/Notify for CoAP
> >
> > > So strictly speaking, both NOTIFY and SUBSCRIBE are message types =
not
> methods!
> >
> > SUBSCRIBE can be just an asynchronous GET on update then I think it =
is a
> method and NOTIFY is an asynchronous response so a message.
> > But if we want to have selective notifications when a resource is
created,
> updated or deleted then I think you're right NOTIFY and SUBSCRIBE are
> messages.
> >
> > Does that make sense ?
> >
> > Matthieu
> >
> > <image001.gif>"Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
> >
> >
> >
> >
> > "Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
> > Envoy=E9 par : core-bounces@ietf.org
> > 28/05/2010 12:50
> >
> > <image003.png>
> > A
> > <image004.png>
> > <robert.cragie@gridmerge.com>
> > <image003.png>
> > cc
> > <image004.png>
> > core <core@ietf.org>
> > <image003.png>
> > Objet
> > <image004.png>
> > Re: [core] Subscribe/Notify for CoAP
> > <image004.png>
> > <image004.png>
> >
> > Hi Roberto,
> > I understand your point and personally agree on M2M is quite =
different
from
> web page model. On the architectural RESTful style, the method =
information
> tells the server what to do with data kept in the URI information.
> >
> > So strictly speaking, both NOTIFY and SUBSCRIBE are message types =
not
> methods!
> >
> > Adriano
> >
> > From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
> > Sent: venerd=EC 28 maggio 2010 11.53
> > To: Adriano Pezzuto (apezzuto)
> > Cc: Paul Duffy (paduffy); Zach Shelby; core
> > Subject: Re: [core] Subscribe/Notify for CoAP
> >
> > I think the point here is that there are two levels we are =
considering.
> >
> > At the lowest (foundation) level, there are the transaction messages =
as
> described below. This provides a flexible mechanism for the =
application
with
> regard to synchronicity and threading. This is important for the types =
of
> devices CoAP is being aimed at.
> >
> > Above that, the methods can be used according to the architectural
style. So
> in this case, it is RESTful (COnstrained Restful Environments), which =
will
> naturally limit the number of methods and how transactions occur.
> >
> > The actual architecture using a combination of the methods and =
messages
also
> depends on what is required at the application layer. Consider a =
typical
> client which wants to subscribe to a resource. That client controls =
the
feed
> of data but needs a component which is capable of handling (possibly
> buffering) the data it receives through notifications. Is this a =
separate
> server? Or would we want to consider it part of an enhanced client =
model
which
> is able to process feeds of data? These are the sort of models which =
have
led
> to the myriad of solutions (GENA, Webhooks, long polling, =
pubsubhubbub,
RESTMS
> etc.) based around HTTP which are all essentially ingenious ways of
getting
> around the limitations imposed by HTTP and how it is processed for
anything
> which deviates from the classic web page access model.
> >
> > I think the aim of CoAP should be clean from the word go with regard =
to
> supporting these more peer-to-peer transactions, where the client can
exist on
> either entity and both entities can feed data to each other; typical =
in
M2M
> applications.
> >
> > Robert
> >
> > Robert Cragie (Pacific Gas & Electric)
> >
> > Gridmerge Ltd.
> > 89 Greenfield Crescent,
> > Wakefield, WF4 4WA, UK
> > +44 1924 910888
> > +1 415 513 0064
> > http://www.gridmerge.com
> >
> > On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:
> > Hi Robert,
> >
> > in my personal opinion, the option 1a) brings some sort of ambiguity =
to
CoAP
> specs.
> >
> > My be my understatement of new CoAP specs is not so deep, but now we
have 5
> methods and 3 message types: request, response and notify. Which =
methods
are
> allowed with which messages types?
> > I suppose you have to use PUT/POST method with notify message for =
asynch
> data notification. How to make a subscribe? I suppose you would use a
> SUBSCRIBE method with request/response message or SUBSCRIBE with =
notify
> message? Also what about POST/DELETE methods in a notify message? They =
not
> make any sense..
> >
> > I think the choice is between: option 1) -> only CRUD methods and =
option
1b)
> -> CRUD + SUB/NOTIFY methods, keeping in mind cost/benefits of both
solutions.
> >
> > Adriano
> >
> > From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
> > Sent: mercoled=EC 26 maggio 2010 20.09
> > To: Adriano Pezzuto (apezzuto)
> > Cc: Paul Duffy (paduffy); Zach Shelby; core
> > Subject: Re: [core] Subscribe/Notify for CoAP
> >
> > Hi Adrian,
> >
> > I would also prefer to keep the protocol in CoAP asynchronous. You =
can
> always map an asynchronous protocol to a synchronous one but, as we =
see in
> HTTP, it always ends up as a kludge to do it the other way round. The
efforts
> which have been gone to to make HTTP quasi-asynchronous via all the
schemes
> mentioned below and many more besides (all non-interoperable of =
course) is
> testament to how important this is for M2M communication.
> >
> > So, back to Zach's list, I favor 1a) for the following reasons:
> >
> > Foundation level of messages:
> >
> > 1. request/response can be asynchronous or synchronous messages (as
there is
> a transaction ID in there)
> > 2. notify is an asynchronous message
> > Derived methods:
> >
> > I think it makes sense to add a pub/sub model as a useful mechanism =
for
M2M.
> >
> > So, looking at it the other way round: It will be entirely possible =
to
> translate whatever is currently built on HTTP to CoAP based on the =
above,
with
> all its restrictions regarding synchronous and client/server =
transactions.
> What may be harder is to translate directly is a CoAP-based =
application to
> HTTP. So I guess the question is: Do we want to be hamstrung to
synchronous
> client/server transactions as dictated by HTTP and provide a direct
mapping to
> HTTP, then have to come up with similar kludges for asynchronous
peer-to-peer
> transactions as has been done in numerous ways for HTTP, or do we want =
to
> define the protocol cleanly to start with and accept that some sort of
> transaction relaying/conversion would have to take place at a mapping
node?
> >
> > Robert
> > Robert Cragie (Pacific Gas & Electric)
> >
> > Gridmerge Ltd.
> > 89 Greenfield Crescent,
> > Wakefield, WF4 4WA, UK
> > +44 1924 910888
> > +1 415 513 0064
> > http://www.gridmerge.com
> >
> > On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:
> > Hi,
> > it looks to me that CoAP should use an explicit sub/notify mechanism
since
> this is the core of the machine-to-machine interaction model.
> > HTTP suffers of this lack and we have seen a plethora of solutions =
to
give
> an asynch taste to it. Webhooks and websockets are only the lasts of =
the
list.
> > As someone has already pointed out on this list, it is theoretically
> possible to describe sub/notify using only CRUD methods but it looks a
little
> bit tricky and verbose.
> >
> > Now we have a chance to build from scratch a new protocol with and I
think
> using explicit sub/notify methods with a clear and well defined =
semantic
is
> the best option. It is easily understanding from every developer and =
will
> prevent to build other fanny solutions on top of the CoAP. HTTP does =
not
have
> this well defined semantic and (for hundreds of other reasons also) it =
is
not
> used as wide protocol for machine-to-machine communication.
> >
> > CoAP - as binary protocol - and with an explicit asynch model has a
chance
> to be a really wide protocol for M2M communication not only for
constrained
> environments.
> >
> > my 2 cents
> >
> > - adriano
> >
> > -----Original Message-----
> > From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf =
Of
Paul
> Duffy (paduffy)
> > Sent: mercoled=EC 26 maggio 2010 0.47
> > To: Zach Shelby
> > Cc: core
> > Subject: Re: [core] Subscribe/Notify for CoAP
> >
> > On 5/25/2010 6:41 PM, Zach Shelby wrote:
> >
> > Hi,
> >
> > On May 26, 2010, at 12:23 AM, Charles Palmer wrote:
> >
> >
> > Hi folks
> >
> > It occurs to me that CoRE should be keeping a close eye on ZigBee =
SE2.0
> work, so that it is as easy as possible for ZigBee SE to use CoRE when
ready.
> That suggests to me that we should align with their subscribe/notify
process.
> >
> >
> > I am not sure I understand that. I mean, ZigBee SE2.0 is defining an
> application specific subscribe/notify mechanism for that purpose so =
far
for
> HTTP. This uses standard HTTP methods and some custom payload and REST
> interfaces. CoAP Req/Res is already totally compatible with SE2.0 in =
that
> respect, so alignment is already OK there. Nothing stopping someone =
from
using
> SE2.0 over CoAP.
> >
> > Specifying a native susbcription/notify into CoAP is another matter. =
We
> can't adopt a solution specific to one application as that won't solve =
the
> problems of other applications nor general HTTP mapping at all =
(probably
would
> make it worse). It seems that for the near future there will be a =
bunch of
> HTTP push mechanisms in use without any clear standard appearing - or =
am I
> wrong there?
> >
> >
> >
> >
> > If COAP extends HTTP semantics with new subscription methods, it =
will
> > not be possible to easily interchange HTTP/COAP, and translation
> > gateways will become more complex to implement.
> >
> >
> >
> > Zach
> >
> >
> > Regards - Charles
> >
> >
> > -----Original Message-----
> > From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf =
Of
Paul
> Duffy
> > Sent: 25 May 2010 03:48
> > To: Zach Shelby
> > Cc: core
> > Subject: Re: [core] Subscribe/Notify for CoAP
> >
> > Recommend something like #2, primarily to avoid introducing non HTTP
> > method semantics, simplifying HTTP/COAP translation.gateways, etc.
> >
> >
> > On 5/24/2010 11:49 AM, Zach Shelby wrote:
> >
> > (thread renamed)
> >
> > We have two different paths with regard to a subscribe/notify =
mechanism
for
> CoAP:
> >
> > 1. Use specific Subscription and Notify mechanisms for CoAP as HTTP
really
> does not include this concept.
> > 1a) Notify as a message and SUBSCRIBE as a method. This is currently
used in
> coap-01.
> > 1b) NOTIFY and SUBSCRIBE as methods. This was used in coap-00, but =
we
had a
> good list discussion about this leading to a. In practice it doesn't =
make
a
> big difference if notification is a message or method.
> >
> > 2. Use an HTTP specific framework such as Webhooks, the ZigBee SE2.0
> proposal or GENA.
> >
> > So far we have focused on 1 in the WG, and every now and again 2 =
comes
up.
> At least I am not convinced that we need to suffer the drawbacks of =
HTTP
here.
> Anyways 2 does not help our mapping to HTTP in reality very much as =
there
is
> no standard way of doing this over HTTP. Thus a CoAP-HTTP proxy may =
end up
> anyways translating between multiple HTTP frameworks depending on the
> application. So instead of doing a CoAP Notify/Subscribe to Webhooks
mapping,
> you will could end up having to do a CoAP Webhooks to HTTP GENA =
mapping.
> >
> >
> >
> > I don't understand this last para. If CoAP sticks to the semantics =
of
> > the current HTTP methods, would this not offer a fairly =
straightforward
> > translation to/from HTTP?
> >
> >
> >
> > From what I have heard so far 1 still seems like a wise choice, =
although
I
> need to look at Webhooks more deeply. In reality many applications =
specify
> their own way of doing a push interface using REST methods and =
specific
> payloads (ZigBee SE2.0 is such an example). That is just fine, and =
might
be
> used instead of a specific CoAP notify/subscribe in that case. So 1
doesn't
> prevent the application using its own mechanism, it just provides a =
native
way
> for doing push.
> >
> > What do people think?
> >
> > Zach
> >
> > On May 17, 2010, at 6:44 =
PM,matthieu.vial@fr.non.schneider-electric.com
> wrote:
> >
> >
> >
> > Hi,
> >
> > My comments about the subscribe/notify mechanism of Zigbee IP.
> >
> > Pros:
> > - Derived from the webhooks concept
> > - If used by CORE it will be easier to map to HTTP because it uses =
only
CRUD
> verbs.
> > - The subscription message is extendable and could support advanced
options
> (delays, increment, ...)
> > - Only one listening port whatever the transport binding is.
> >
> > Cons:
> > - No interoperability without well known URIs and a well defined
> subscription message format (Not sure CoAP draft is the right place to
specify
> this).
> > - XML/EXI is too complex to be the required format for the default
> subscription/notification mechanism.
> > - The notification should not require a subsequent GET to retrieve =
the
> content.
> > - Subresource subscription is redundant.
> >
> > Hope this could help,
> > Matthieu
> >
> >
> > <graycol.gif>"Charles Palmer"<charles.palmer@onzo.com>
> >
> >
> >
> >
> > "Charles Palmer"<charles.palmer@onzo.com>
> > Envoy=E9 par : core-bounces@ietf.org
> > 15/05/2010 14:06
> >
> > <ecblank.gif>
> > A
> > <ecblank.gif>
> > "core"<core@ietf.org>
> > <ecblank.gif>
> > cc
> > <ecblank.gif>
> > <ecblank.gif>
> > Objet
> > <ecblank.gif>
> > Re: [core] Selecting a WG document for CoAP
> > <ecblank.gif> <ecblank.gif>
> >
> > Dear all
> >
> > Those interested in the subscribe/notify discussion might like to =
look
> > at the draft Smart Energy Profile 2.0 Application Protocol
> > Specification. It is available here:
> > =
http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20PublicApp
> > licationProfile.aspx
> >
> > It manages subscribe/notify by using POST. This seems to remove the =
need
> > for SUBSCRIBE and notify.
> >
> > "Imagine a host A, which exposes a resource at http{s}://A/resource =
and
> > a second host B, which wishes to learn of changes to this resource. =
To
> > facilitate a subscription/ notification mechanism, A would expose a
> > resource http{s}://A/sub and B would expose a resource =
http{s}://B/ntfy.
> > To subscribe to notifications regarding http{s}://A/resource, B =
would
> > send a POST to the address http{s}://A/sub/B containing the URI of =
the
> > resource of interest (http{s}://A/resource) and the URI of B's
> > notification resource (http{s}://B/ntfy). Following this =
subscription
> > step, should A wish to notify B of a change to the resource =
addressed at
> > http{s}://A/resource, A would send a POST to the address
> > http{s}://B/ntfy containing the URI of the resource changed
> > (http{s}://A/resource) and the URI of A's subscription resource
> > (http{s}://A/sub/B), should A wish to change its subscription. The =
host
> > B can then query the resource (or not) at its leisure."
> >
> > Sleepy nodes are not allowed to subscribe, and must poll.
> >
> > Regards - Charles Palmer
> >
> > -----Original Message-----
> > From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf =
Of
> > Angelo P. Castellani
> > Sent: 14 May 2010 13:14
> > To: Zach Shelby
> > Cc: core
> > Subject: Re: [core] Selecting a WG document for CoAP
> >
> > Zach,
> >
> > thanks for the comments, but please refer to my most recent e-mail =
for
> > a more specific list of technical issues I'm pointing to.
> >
> > I want to do only a little integration to what I've written there.
> >
> > In my very personal opinion, to maximize adherence with the REST =
model
> > and minimize implementation effort SUBSCRIBE and NOTIFY should be
> > mapped to methods (as discussed many times together...).
> >
> > Uniform interface principle (Fielding PhD dissertation Section =
5.1.5,
> > "The central feature that distinguishes the REST architectural style
> > [...]") states that to simplify the software architecture, resource
> > interfaces/interfaces should be as general as possible.
> >
> > I agree with this principle in this specific case, mainly because
> > handling a special message type for notify leads node software =
design
> > to a more complex architecture.
> >
> > The reason is that this new message type requires special handling =
and
> > introduces a complexity in the software modularization.
> >
> > Best,
> > Angelo
> >
> > On Fri, May 14, 2010 at 13:06, Zach Shelby<zach@sensinode.com> =
wrote:
> >
> >
> > Hi Angelo,
> >
> > On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:
> >
> >
> >
> > Dear C. Bormann, all,
> >
> > before deciding for the final direction, I've the following
> > observations about draft-shelby-core-coap-01
> >
> > While I mostly share Zach's view of the protocol approach, and
> > appreciate many aspects of the proposal, there are in my opinion
> >
> >
> > still
> >
> >
> > some open issues that need to be at least discussed before the
> >
> >
> > current
> >
> >
> > document can be selected.
> >
> >
> > Of course there are plenty of open issues. Remember that working =
group
> >
> >
> > documents still undertake as much change and improvement as the WG
> > wants, so by no means is coap-01 set in stone. I would expect at =
least
> > 5-10 more revisions still along the way. Already several of your =
ideas
> > have been integrated into coap-01, and several more are under
> > consideration, so it is coming along. Patience ;-)
> >
> >
> >
> > In particular, I would like to highlight the following:
> >
> > a) As it is now, it is not possible to have a straightforward
> > translation of HTTP -> CoAP and viceversa: see
> > http://www.ietf.org/mail-archive/web/core/current/msg00133.html =
(this
> > impacts the scalability of the web service model too)
> >
> >
> > In coap-01 the Method names are now identical to HTTP methods. The
> >
> >
> > Req/Res interaction is a direct translation. The URI hierarchy is
> > compatible, and the URI binary code format we are still working on
> > obviously. The only thing that takes some state to translate is
> > Subscribe/Notify. But note, Subscribe/Notify takes some state no =
matter
> > how you do it, even with HTTP-HTTP there is no clean and easy way to
> > handle subscriptions.
> >
> >
> >
> > b) Moreover, CoAP's implementation is not as simple as it should be.
> > I've investigated the implementation and some design choices (as
> > Options) are leading to very high program complexity (ROM) on a
> > MSP430-based device.
> >
> >
> > This we can definitely improve, and already made several =
optimizations
> >
> >
> > from -00 to -01. Here I need some very concrete proposals though. =
Also
> > remember that many things are optional, for example subscribe/notify =
is
> > not required if you don't need it.
> >
> >
> >
> > c) Finally when comparing HTTP message size with CoAP message size,
> > the resulting compression isn't as good as you may expect.
> >
> > Example:
> > HTTP: GET /sensor/temp.xml HTTP/1.0 =3D 32 B
> > CoAP: 24 B with options parsing procedure requiring an added
> > implementation complexity
> >
> >
> > Right, that is not how it will work in practice. Working with a real
> >
> >
> > HTTP server that HTTP header will be more complex, and on the CoAP =
side
> > you would chose shorter URLs. The biggest improvement possible here =
is
> > from using binary coded URLs of course. We need to look at a wider =
range
> > of interactions and real HTTP headers as well to check that we are
> > efficient enough.
> >
> >
> >
> > Addressing all these points potentially leads to major technical
> > modifications (especially point a) on the current draft, hence it is
> > appropriate in my opinion to discuss these points before making the
> > final decision.
> >
> >
> > I am not sure what else you have in mind for a). If we just forget
> >
> >
> > about Subscribe/Notify then you are good to go. But then you are =
also
> > not fulfilling the charter or the industry needs in that respect.
> >
> >
> > Thanks,
> > Zach
> >
> >
> >
> > Best regards,
> >
> > Angelo P. Castellani
> >
> >
> > On Mon, May 10, 2010 at 18:51, Carsten Bormann<cabo@tzi.org>wrote:
> >
> >
> > The CORE WG has a milestone to select a WG document for CoAP in
> >
> >
> > April:
> >
> >
> > http://datatracker.ietf.org/wg/core/charter/
> > ...
> > Apr 2010 Select WG document for basis of the CoAP protocol
> >
> > Of the various documents that have been contributed,
> >
> >
> > draft-shelby-core-coap has significant discussion, as well as the
> > largest number of updates (including a previous version that was =
still
> > called -6lowapp-coap).
> >
> >
> > Today, another updated version of that draft was announced. See
> > http://www.ietf.org/mail-archive/web/core/current/msg00138.html
> > for the announcement and
> > http://tools.ietf.org/html/draft-shelby-core-coap-01
> > for the draft itself.
> >
> > However, as the authors say, there are still significant TODOs.
> >
> > Are we in a state yet where we can say whether this is the right
> >
> >
> > direction for the WG to take?
> >
> >
> > If yes, is it the right direction? Should we adopt it as a WG
> >
> >
> > document?
> >
> >
> > If you don't think we can say yet, is there a set of technical
> >
> >
> > decisions you would like the authors to take with priority?
> >
> >
> > Note that once a document has become a WG document, the authors act
> >
> >
> > as editors for the working group, making (and usually fleshing out =
the
> > details of) any change that the WG decides it needs.
> >
> >
> > If you think we can still improve the draft, this is not an obstacle
> >
> >
> > to making it a WG document.
> >
> >
> > But of course we shouldn't do that if we intend to reverse its
> >
> >
> > fundamental technical direction.
> >
> >
> > In order to stay roughly in sync with our milestones, we should
> >
> >
> > reach at a decision on how to go forward this week.
> >
> >
> > Gruesse, Carsten
> >
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> >
> >
> >
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> >
> >
> > --
> > Zach Shelby, Chief Nerd, Sensinode Ltd.
> > http://zachshelby.org - My blog "On the Internet of Things"
> > http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded =
Internet"
> > Mobile: +358 40 7796297
> >
> >
> >
> >
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> >
> > --------------------------------
> > Onzo is a limited company number 06097997 registered in England& =
Wales.
The
> > registered office is 6 Great Newport Street, London, WC2H 7JB, =
United
> Kingdom.
> >
> > This email message may contain confidential and/or privileged
information,
> and
> > is intended solely for the addressee(s). If you have received this =
email
in
> > error, please notify Onzo immediately. Unauthorised copying, =
disclosure
or
> > distribution of the material in this email is forbidden.
> > --------------------------------
> >
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> >
> > =
______________________________________________________________________
> > This email has been scanned by the MessageLabs Email Security =
System.
> > =
______________________________________________________________________
> >
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> >
> >
> >
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> >
> > --------------------------------
> > Onzo is a limited company number 06097997 registered in England& =
Wales.
The
> > registered office is 6 Great Newport Street, London, WC2H 7JB, =
United
> Kingdom.
> >
> > This email message may contain confidential and/or privileged
information,
> and
> > is intended solely for the addressee(s). If you have received this =
email
in
> > error, please notify Onzo immediately. Unauthorised copying, =
disclosure
or
> > distribution of the material in this email is forbidden.
> > --------------------------------
> >
> >
> >
> >
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> >
> >
> >
> > =
______________________________________________________________________
> > This email has been scanned by the MessageLabs Email Security =
System.
> >
>
_________________________________________________________________________=
___
__
> _______________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> >
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
>=20
> --
> Zach Shelby, Chief Nerd, Sensinode Ltd.
> http://zachshelby.org  - My blog "On the Internet of Things"
> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
> Mobile: +358 40 7796297
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core


From vladounet@gmail.com  Wed Jun  2 00:13:02 2010
Return-Path: <vladounet@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 3C2B93A6964 for <core@core3.amsl.com>; Wed,  2 Jun 2010 00:13:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0
X-Spam-Level: 
X-Spam-Status: No, score=x tagged_above=-999 required=5 tests=[]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nbp6J9mTU4t3 for <core@core3.amsl.com>; Wed,  2 Jun 2010 00:13:02 -0700 (PDT)
Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.157]) by core3.amsl.com (Postfix) with ESMTP id C41B43A6A1C for <core@ietf.org>; Wed,  2 Jun 2010 00:12:58 -0700 (PDT)
Received: by fg-out-1718.google.com with SMTP id d23so1625928fga.13 for <core@ietf.org>; Wed, 02 Jun 2010 00:12:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:cc:message-id:from:to :in-reply-to:content-type:mime-version:subject:date:references :x-mailer; bh=wFU3MZm2x2ieAhbOY0KCHNyAhZO+aNq0aKdm+YNMys4=; b=A0iVa2GCu6UJvm+SZPyJ2wbh+5V5t6MOg0kLyqoPY6YtKFVlwYxxWll2mJaasdgAuM vb7gDqGvRG+GpnV8a2lzCqZYQQ6BFueaQXqddOKBnVV71vLSQ2fd7QnR0hrRxn3vifBm h0z3M7ZqEaIdS6RY7BAkIluEK46UXcld08APQ=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=cc:message-id:from:to:in-reply-to:content-type:mime-version:subject :date:references:x-mailer; b=RxdQjj4DR0sGnCsxt6sHNPzoG1Vxwn1mZBAbCqyXllj5c59nxm9k6Bj8A3K7XAgCwD zsM4sh4/GQEU3pxs6N/u+CWdaLWuWZHModa1dHPsyiQuna3r1sWt5uwKcbEw33uJFbpC miK8EYex5n1kdW6qUSxGmV3VNqb6A/dqU13Pg=
Received: by 10.87.38.3 with SMTP id q3mr12827552fgj.26.1275462762771; Wed, 02 Jun 2010 00:12:42 -0700 (PDT)
Received: from [10.20.46.31] (vpn-global-dhcp2-236.ethz.ch [129.132.209.236]) by mx.google.com with ESMTPS id 22sm10990906fkq.47.2010.06.02.00.12.36 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 02 Jun 2010 00:12:40 -0700 (PDT)
Message-Id: <727919DA-EB90-4772-A9EB-B516333ACE43@gmail.com>
From: Vlad Trifa <vladounet@gmail.com>
To: Guido Moritz <guido.moritz@uni-rostock.de>
In-Reply-To: <001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>
Content-Type: multipart/mixed; boundary=Apple-Mail-14-802811802
Mime-Version: 1.0 (Apple Message framework v936)
Date: Wed, 2 Jun 2010 10:12:34 +0300
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com> <6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com> <001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>
X-Mailer: Apple Mail (2.936)
Cc: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 02 Jun 2010 07:13:02 -0000

--Apple-Mail-14-802811802
Content-Type: text/plain;
	charset=US-ASCII;
	format=flowed;
	delsp=yes
Content-Transfer-Encoding: 7bit

Hi, sorry to join the discussion only now.

I think we should avoid explicitly defining a messaging/eventing  
construction in coap which would be an "add-on" on top of http. HTTP  
doesn't define any by design, but doesn't mean we can't use/create a  
pattern that implements this behavior, and we just just propose the  
pattern, not turn it into a design. It'd be more useful to stay as  
close as possible to the original http/rest (unless the mapping to  
http/web is more of an "nice-to-have"option that the motivation of  
doing coap), which means it's great if we can show show how to  
implement messaging on top of coap, but avoid inserting additional  
verbs, etc that would not be directly supported in http (thus making  
the mapping between coap-http more complex).

We just wrote a paper on Web-based restful messaging for embedded  
devices which will be presented next month at ICWE, and as it's highly  
relevant to this notification discussion thread, I thought I'd share  
it here.


--Apple-Mail-14-802811802
Content-Disposition: inline;
	filename=icwe2010.pdf
Content-Type: application/pdf;
	x-unix-mode=0644;
	name="icwe2010.pdf"
Content-Transfer-Encoding: base64

JVBERi0xLjQKJdDUxdgKMyAwIG9iaiA8PAovTGVuZ3RoIDI2NDkgICAgICAKL0ZpbHRlciAvRmxh
dGVEZWNvZGUKPj4Kc3RyZWFtCnjatVlLk+O4Db7Pr/BRrrK1ej82l/TOziSbrcxObXcyVcnmQEt0
izWy5CWl7u3Nnw+Aj/LYbadqcsiJBAiRIAACH+zvHt588z4uVnEWplmRrB72q7iMw7KuVkVRhElE
rHb1z+DTus4CvVtv0zIP/qqdU49meAS5Hy0mPx1pjAM9gFRDi8l9o3q16/X6Xw9/WcV1mCSrbVyG
dZpi8++Nm6zZzZNePtCDO21/dzz2plGTGQfHO3zzvlrVYV0kBWu7zfOwjOLVNs3CIvXa/r1XvFOa
Bg/rKg2s2St8Wa6KsC7Tir/M8jBOi1UaFnGOz2IIxdGZVEqzZBVB4A/XuyRhWhTLenKtXxZmRU3a
fTllA82+Hw9mML/Omsks+NNsBmXXcdBen1EnYVGUX6Np/P/QlKw5fV4nZTB6zdU6qYIn044yus/m
+rCKYueWbV8dWN46725orVYOdvlRHUyvrHE3zijDNK3PD0m/6hCOwm0S1WFRphSIcVjnBdYQsaTC
D0/rnAPYX1j3DV+100/XWpR5WFTQoriwLZ2fk1SJMI0Lsn9c88EkX14YJclXFSlcZHKrsMzFDVVU
Q+qHwU1motdB2mRJsF9vY3JFHPCry9LgI6ummSaly0A58wSOSL8dD8d5ose0gfS7hz9j4R+zNbjV
Boz7ZzP9rm3PRri+QJaEFetVhoshk69S/v7uI7b/WTut7MWJ/6MKW0pSeZ2c65B+lQ5/G9gkdaCt
MxOf94Ljxj1s8vblaGfnDfTBNKMziuy5OV9F1FDyyquCxoiCxu/+drRWO0p9dAK7ZWiRuuhTNU/d
aL+Fkml5pmSdhVGRLq/xifJVOHGa+qPRWoejffTf1Gff0P2LsCr5blVYLTF0t6PkqZopvGGKrArz
+PTm36+rIpin2VJoZHFCOb3KJaczoZBlSX8kWmE+m77HzAwNv0m6Wf8CjtW/zmbZitb67WQOSPFb
f+6FmVo1KbZRFezteMBs6jQmx07c4kiDHpxndtho+5bJOmhIsbHvdSM1gjk7FniBsN/4IJtYo1rQ
7F8eHZWT0TovO/hVstmstqJwdKnqRMIhe7AO3s7k3IGPmujiZL8N+Gbgsyb9aKUwMbPy8VQHbm74
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
ZW5kb2JqCjIgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDMgMCBSCi9SZXNvdXJjZXMg
MSAwIFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCAxMyAwIFIKPj4gZW5kb2JqCjEg
MCBvYmogPDwKL0ZvbnQgPDwgL0YxNiA0IDAgUiAvRjggNSAwIFIgL0Y3IDYgMCBSIC9GMTAgNyAw
IFIgL0YyNiA4IDAgUiAvRjI1IDkgMCBSIC9GMzcgMTAgMCBSIC9GMzkgMTEgMCBSIC9GNDIgMTIg
MCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNyAwIG9iaiA8PAovTGVu
Z3RoIDE1NTMgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjafVdZb+M4DH7v
r8ijA9Su5TN+nGKnmC72nAbYBTp9UGwlEeojI8nN9N8vDzlNssYgD+YhUhRJfVTu1zd3D0m+WEVV
UWSL9XYh0iwqi3xRVEkk4nyxbhbPQbIMU1EmwXq5ygOjt3L5sv717iFdnRnmeZRX1SJmC+XApCgD
2Ua8drWoYGlS4NLQrw2TPKrilC1k0xhlre53yzBZJcGw5a/uG/2mm1G2zPcDfoNGWeZr2TNhdXdo
9fadObdXTDTqbQnrVTscOtUj6S43kAcwq6XTQ28nW+kwajhMKERU5T4Nms3VzkgH3rMcwpBOMrU1
Q8cUbG0ntXrTtbIRc59atxTBfhh3exbUsOXYKcOcalXtzNDr2rLgqJ1f+Oh3NuFFXAXH1Ss6UhHI
ul6GIoA0et5QEspgA58yUPXQ+fyWcJjaKIn5bt959YESOxzGVhqWPIuXW14tWQAOuqFn0c4MY9+w
nDJGUtXLTQu1mUmfVbJrObZidZFMTT5BSDUpTnljhtOQYDddlgq9+K91um2ZbGWNnl/hZBGbPfaN
Us0tq7kxgOhw1ftVRqdKSzxYGfuAqkBhXn9oKJ9FykH0ItjxmoMZHDdlPbSWZbL3DqwDUpqGLVGy
HQwTWDYwOi6hNCATwStSyhuiBe36hrv6unIwbjS9d6b4sPs5j68/6WGIN01TSN/QUi8L2M9LWgjY
MsNlRWoPR8A+SdPsVDkja6/lCiFF8ZSB5wZItiEAuPm8vhEQS7wQC1FUUZqVizRfRaXIF3V38/0m
joo8yTNack6TcrL0grvHTix+GW7+ht+kCiev4Znbe4S3tJqBtzQto7LKOCcPGjtFVGUgPFpdQGIK
6SuzCdkeltDvI5SArngRNNo6ozejw8KhwKqeUSzL86uORfWRGhUpo76Pmt3kgfTGtWzxAjGn+62R
4H6saT8sZ+ijCUUMRa04piOkGUzSDOBRHZFIP64QMhJaCDsSaavMmYbgEw0RIqjPkQEwVn65ZLsk
GO0k8uUGGcCJ7hCZUay+xSIdjJtBfJFFVQZB53GUCY9a96qWIwFlWvKtzNIi+Ge5Ak8bZvB24/eI
DYrXoFHYhGiA0dyydmDgUr3nKWJcA/D2ziLsd5RcILhf7rcucevMb13ixad0T5Gf36H1HuqLocV4
Oy2hF9IABB5DrfJq2jhOoNZ8VBTtPXHUjQrtAVC4YcHH2YG5qj3J+GTgDlFldhQg1GBlVyL4Fufx
l/X6r7t/f//t7uvTE/ACNQnfflgB46dXdIdBqAgPN5xKX/6VOGsjWPOcvEQsfuy9q73220njdN1i
UlF+pJk7B0Dqh1PUUrmvOhKn1CODmIvfKc1IH6SRjd51nqUTwNeOB59x41jSDcb7/LhKyHEb051C
gAL0olpBkxg5OwLIMimhI5/+YOJq+oBkQyOE6da/M4zc8YwtfWshwUBOeu7AsDF64mlFL7nMSNPQ
ge9h3LTa7kM7bmwNGMO1mR2t79apztLNO102kUer1EPcJzw8dihcIj0Yfcs89gdTVilOLkyRwXnZ
qAnVkKaphdrNqNuGTohiSg6KL5ODqunNgUeX4zQ5FS//2fXSDj2ALQKksu4O3oVcK/CtWMXpipj5
MvipB9nxRbhlDTcYuapPjz/k7VjX9BRJE843Ck/3D4WH0e69Ex7uNNtRg600c/Wc4lHca4wa7qmI
YWyiiGNiCb+PGmYYCoC4fqSWGGcWVxQamU0+AMf/30C44mrSgG0Dw6V2AJgzDTN8xIV1zSqfKiD8
XYyY+3Mk/QoyaMeWKgNSu/cp96b0TIBFXz8/rbdjy+IOEuwvA7JbaIHBbzYHNiCewGbu3YKHKgTN
ySIB2PVTsphQEYRnwxPFB8Dj0/MI9dTDqProYRQzZKD8NEmuHIMjmBhdR85ngrt4AyTV2RsgqS7f
ABHr19hpA6sHzDAKX3tOKrTHDnEUZV6Zf7zpiKNnbzUBDBAwejNjHWupYTGKqUozIbNlDmXBPwEb
3Wo3gVnhn72glH7N2NKfhLya7ki4kfQcQNHl6UFguU/t6ZFcXLQnL/J/GYCCPxXUDbrn0uNb8T+R
1PH7CmVuZHN0cmVhbQplbmRvYmoKMTYgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDE3
IDAgUgovUmVzb3VyY2VzIDE1IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDEz
IDAgUgo+PiBlbmRvYmoKMTQgMCBvYmogPDwKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0Zvcm0K
L0Zvcm1UeXBlIDEKL1BURVguRmlsZU5hbWUgKC4vbWVkaWEvZ2VuZXJhbC5wZGYpCi9QVEVYLlBh
Z2VOdW1iZXIgMQovUFRFWC5JbmZvRGljdCAxOSAwIFIKL0JCb3ggWzAgMCA0MjQgMzMwXQovUmVz
b3VyY2VzIDw8Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBd
Ci9Db2xvclNwYWNlIDw8Ci9DczEgMjAgMCBSCi9DczIgMjEgMCBSCj4+L0ZvbnQgPDwgL0YxLjAg
MjIgMCBSPj4KL1hPYmplY3QgPDwKL0ltMiAyMyAwIFIKL0ltMSAyNCAwIFIKL0ltMyAyNSAwIFIK
Pj4+PgovTGVuZ3RoIDI2IDAgUgovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAGdm8ty
Hclxhvf9FL2UFmzWrburvLPoUYQV4YgZkWEtJrzAgIciGLiQACh5XtbP4u+vqq5unNM4AOUJWkSx
65aXP//MLHzrf+m/9WaYTP6//qp/++7B9pcPvc3/PVz2b1Icxv6Nj/qfcUz9HH1/f+g/9W9/Ptxf
Hr4+fr+47u+vum+9dak3/GcNs20crA+Bv4yDm+3YX970b//zxvb/ccemb/96uL54vPrH4d3d9d39
1c3h8f7qklV6G9yQptl2dhqH0cXQ37DuOEQbp95OaZi1lvVumMa5d2YcQrKefzGDsY5PUhp8mtiO
MTeMo5k6Zy1HmPkqhcFPzHeGr0JMecSOnhXXec6GwaSUemfdwN5s49MwJuM6DjHMwcfeOcfGbu7t
zMc2aD8X/GBMjGw8DzF4m79yns+RBAu4fF5O57imGWyYxo5phhVCZClvhhi5sZ39kELkKzcPU/6n
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
/QpJUnNOBJb2SX4aDTsn/EChVDbibawqSFRpolIAVXPwxqLVvdmrKZ1FKIlOaQCNe23O8dVL0hji
1Oa56kiPR3ZM3PBlcz26mAsBWGbzixxtdhaz2ggjGTbvBlVfVhJAFoNY8gvJ/Msmwj0ydNUb+Iza
J+/N8TYee+9MPleNzZO1mYr9lEDFpZ0KyGxGSwAMxZl1BQ4ws5mILmUX3YpmnXY+mqwboBI6p+Kp
wAiUgIfwPB9BW7wvwU9Qca7pqE9h8quvUH6XSjr+wVfR2YIpQNGUyW81j9asNvRs/kMHG4LIdcT5
eQzYUD/gkCo0Bf7w6nzaB+ifv/9Gu2AfpF+zNPUVWDyEkH2O3iP918XD5+9fN0i9SX7FPCqiojjR
fMr6hl8colKtMkkuPeWn1nrXswxhMbRayWmhEfUrKZ3fw/HUz8vD1mUA1+FkQjW1E8pHAEN+gNtW
4dgAOSQQpOK75QydzFvPVqknoO0eIlhn8rfNuvy0bNu+Xg7W1loGXugpUP0aKQXigsW0MGLIHY7F
9esYIOB47pt/I2gZo8tPtRQBFNRXe3wdIejo/TU3W8dwCFyOAtyyEK0F5rS98o+IbDlP/hnBQ3T5
/Ti2yQN6aM1h62L1p3W7OqA4pBOtk5fbteWXgbV3UJ59YRFHiV/ubuCUUgDJAx2CSkq3zQOUOSvc
rsZYSelP14dL/W6iSM7P93f/uPp4uF+ZyW5c2KQTG/B+dYzg8hSbATcFbTKCDEuEUzox9QmIU2Pg
dTECTASqaIoIYNToLYDqJxCKJ91grApugk5SfK6v33VJbC6M0+jx5B8JEUAkdXFIB+keT9wLvgJW
2lvPq1GM/EW/bkmKj2tSbptlywvAana3ma0r//L/WhATwQplbmRzdHJlYW0KZW5kb2JqCjE5IDAg
b2JqCjw8Ci9BdXRob3IgKHZsYWRvdW5ldCkKL0NyZWF0aW9uRGF0ZSAoRDoyMDA5MTAyMTA4MTAw
MFopCi9DcmVhdG9yIChPbW5pR3JhZmZsZSBQcm9mZXNzaW9uYWwgNS4wKQovTW9kRGF0ZSAoRDoy
MDA5MTEwMjEwMDkwMFopCi9Qcm9kdWNlciAoTWFjIE9TIFggMTAuNS44IFF1YXJ0eiBQREZDb250
ZXh0KQovVGl0bGUgKHd3dy5ncmFmZmxlKQo+PgplbmRvYmoKMjAgMCBvYmoKWy9JQ0NCYXNlZCAy
NyAwIFJdCmVuZG9iagoyMSAwIG9iagpbL0lDQ0Jhc2VkIDI4IDAgUl0KZW5kb2JqCjIyIDAgb2Jq
Cjw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UcnVlVHlwZQovQmFzZUZvbnQgL0JOWlRMTSMyQkhl
bHZldGljYQovRm9udERlc2NyaXB0b3IgMjkgMCBSCi9XaWR0aHMgMzAgMCBSCi9GaXJzdENoYXIg
MzIKL0xhc3RDaGFyIDIyMgovRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjIz
IDAgb2JqCjw8Ci9MZW5ndGggMzEgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQov
V2lkdGggMTY4MAovSGVpZ2h0IDEwNTAKL0NvbG9yU3BhY2UgMzIgMCBSCi9JbnRlcnBvbGF0ZSB0
cnVlCi9JbnRlbnQgL1BlcmNlcHR1YWwKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9GbGF0
ZURlY29kZQo+PgpzdHJlYW0KeAHsvWvQHcV5Lkqq8s/nX05yXMlO7cpJ9klqV872NTsVhVSy62TH
xiflxEnsbG+f7SRAlJyKE9uxTzaYSwi+34IqNliY4GAbEjAGxE02WEgCIQshIQmBxEWgG+hiBEIg
gSR04Txrek1PzzvTs97p1bO+nm+eqan1dfe8/Xb30z3v2/18PTMnT54+/topnkSACBABIkAEiAAR
IAJEgAgQASJABIgAESACRIAIzDkCJ0+efuXoiQMvHuNJBIgAESACRIAIEAEiQASIABEgAkSACBAB
IkAEiMCcIwCy7kfPv/rotoM8iQARIAJEgAgQASJABIgAESACRIAIEAEiQASIABGYcwRA1h04ePSJ
HYd4EgEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASIw5wiArDv40vHtzxzmSQSIABEgAkSACBAB
IkAEiAARIAJEgAgQASJABIjAnCMAsu7Qy6/t2vsqTyJABIgAESACRIAIEAEiQASIABEgAkSACBAB
IkAE5hwBkHWv8yACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEi
QASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAAR
IAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAI
EAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAE
iAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESAC
RIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBAB
IkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgA
ESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSA
CBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJA
BIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEg
AkSACBABIkAEiAARmAqBpQvPOOOMBYu2TaWEmecGgazz0H/jY+HS2VZj26IFKHliqXNcy9liwtKI
wHxHQHnfz3cYxu2bJ+ZtnjRjIIOOzSQCRGDWCNDxWcTnibuYJ82w3cIAESAC8REYsWQTjtmQaJnB
mk1R8VFMSqMx/RPZq5h1zoqsLdFfGXNlTLOZSLX7fenlCUs5pmhYpra2vorMFBkmAvmAteayOlyH
CcyctbrNfW9kbd9lgfnVgR6j5jOhvvQ2oHbb854GdVsotRMBIjAbBOa/Te4IR52NNhY+2OWZ7KnP
kj1OwlS+6uB96TpEO+rOklpPg0oyjBABIjBEBGLydVPZvMxMVe3rEPtE12Yv2sYlzdTP+n2MpzKm
8s6WuHo5k1rdOifaLqKT8fPXd3JeSgwOgfFoLc9881jfbFbrmyXd7tY2JTcjeZe5f/vWff7e8Bk1
03rpD3JMZLoWU6ceviy+dCdrY9DXoMZMvEgEiED6COT2x7XFeXj+2OSO+kFnWb0QS5tfX0uTXSfr
atBVzs0xTdjnJOprn0MiWxVQZ18WX7q2kb4GafNTjggQgWEgUG/ktG2fylJlRdNRa7F+/fWp0NYX
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
JXOxB6/Ykuxnz5dAGOvZVj4ve7dS4iVc6xU0cznbe2dM0OAyl7BysaHhoLWgsEQj9devWDnWfC74
1vL/6Zk12vQ+5RKXBUyZSpmLDUyZekgAgeFHoJqADVeGYNdS8yhYIS6sHGu+MrhWpVsdzuVOVgbZ
z54vgTDWsy1ESXcYRfNyfJlQERRGTYgCv6K4rDwZTCOiWiTpW0OUjEAFMRAYIgRo5va+iA9Rf3px
hVZAYNELgKgLBIAAEAACQAAIAAEgAASAABAAAkAACAABINAOAUnNN2Dl2zU2OrXA143OtYKnQAAI
AAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAE
gAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAASAABIAAEAAC
QAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAAB
IAAEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAExhGBO958EH2Gp2fD5s/w
IANPgAAQAAKMwK5du6ampubjpyMEzj333K1bt77wwgvbt28nbPft2/f6669jsAEBIAAEgAAQAAJA
AAgAASAABGYQgWHjx4bNnxm8NGgaCAABIBBEYNGiRcRUffe7373rrrtewk8PCKxcufKKK64gMK++
+ur169c/+eSTZIwou/379weRhxAIAAEgAASAABAAAkAACAABIDAYBIaNH1vx/kPIpZfvWDqY7qMV
IAAEgMDIIcDHyohr6oGpQtUCAYKR8Vy2bNmqVavooN3LL7+8Z88eHLEbuXkBh4EAEAACQAAIAAEg
AASAwDghAL5unK4m+gIEgMAkIMD8Ehi3rhBgPK+77rrbb7/90Ucffeqpp1599VUcsZuEqYQ+AgEg
AASAABAAAkAACACBoUUAfN3QXho4BgSAABDwEaBzX+DrumLq2A7jSbfE/vKXv7z33ns3bdpER+z2
7t3rgw8JEAACQAAIAAEgAASAABAAAkBgMAiArxsMzmgFCAABINAJAuDruiXryBrzdfQ8wGuuuWbp
0qVr1659/vnnd+/e3cn1ghEgAASAABAAAkAACAABIAAEgEALBMDXtQANVYAAEAACM4UA3aeJ83Xd
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
SIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAE
SIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEBAgc
PHRkx+7967bsWrHu40UrtyxYsUl/sIlM7EIBFBOojCZIgARIgARIgARIgARIgARIgARIgARIgARI
gAQMAlDeln64dcq8D4e9tWTQsNl3Dn7rxntHdOj9ctuez17YfchZ1z327U6Dvnntw/gggU1kYhcK
oBgK4xAciMNhBKYMw0ySAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlYEdiyY8+MhR89P3bB7Y9P
vPaOV797w+BTrnzgLy/4wxfOvfMvL7z7v//Lvae2H3hG18Hn3fjsJb948dJfv/yvlQ8S2EQmdqEA
iqGwd8gFf8DhMAJTMAizMI4qrJrCQiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQVgL4KuvrU5be
/dTkdr994Ss/GvCFc+/4L9/795N+8CAkuI53jfzVoCn9Xpz31Nj335y1dtrizQtW71i+ftfqzZ+u
375v48feBwlsIhO7UADFUBiH4EAcDiMwBYMwC+OoAhWhOlRaVt70mwRIgARIgARIgARIgARIgARI
gARIgARIgARiCOBxcyOmLfvdoAmtf/bUf2tzDyS1f7qyP5bM/fbxaU+OeX/i/A3vf/TJjk8PxRxp
nYXDYQSmYBBmYRxVoCJUh0pRNRqAZljbY0ESIAESIAESIAESIAESIAESIAESIAESIAESaGkEjh07
Pm/ZxgEvvYOlbv/jX/r+9UX/8ZUOg27oN/bREYvfWrjxo217G85hGEcVqAjVoVJUjQagGWgMmoSG
NVzVtEwCJEACJEACJEACJEACJEACJEACJEACJEACRSOAN7fiBRB4lBxeD4Hny2GpW4c7Rzzx5pLZ
y7ft3ne4MVuL6lApqkYD0Aw0Bk1Cw9A8vl62MTuCdZEACZAACZAACZAACZAACZAACZAACZAACTQJ
gSNHj0EK++0j40/vMBBfR/3fnZ+4bcjb4+et37LzQJO0R1eKBqAZaAyahIaheWgkmooG6zJMkAAJ
kAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBLIvDu0vV3Dn5LKXVn3fB0v5fmzV2x/eDhAgliaAyahIah
eUq1Q4PR7JbUC/SFBEiABEiABEiABEiABEiABEiABEiABEiABPAqh0HDZl/YfchfnH/XGV2H3PfS
vPmrPz589Njxzz4r4AcNQ/PQSDQVDUaz0Xi+jYJhTAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk0DII
jJ+1suvdr/35eXd86aqHbn1i+rvLt2EZG6Q618+eA0c+3LJ30sKtL0z56ME3Puj93CL16XT/rGvv
ewcfJHQmCqAYCuMQHOhaF8qjkWgqGoxm/9l3fw8X4EjL6BF6QQIkQAIkQAIkQAIkQAIkQAIkQAIk
QAIkUE4CWJP2wNAZ37z24b/+/j3tbn999Jx123YdPHz0uP1n9ea9Y+dtfmjEipsfn6dEuWy/cTiM
wBQM2teOkmjw2Lnr0Xi4AEfgDhfalTOY6TUJkAAJkAAJkAAJkAAJkAAJkAAJkAAJNHcCMxZ+9NM+
w/+0Ve8v//DhPi/MW75+16Ejxyw/Cz7c+djolb8cPN9U57rc//aN/SffOmjcfwwePfDZN5968c1n
Xh71zCujR7755qjKz4iRI5Hz9EveLhRAMRTGITjQtNPrifcGjVqJKiwbg2JoPFyAI3AHTsG15t47
bD8JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEB5CODLrsPeWnLxz5/Gw98uveWV8e9t2L774IFDx+p+
Vm7c88e31t7x/GItr3V7YOptg8YOeGbUi6+9OWbMmEmTJk2bNm327NnvvffewoULFy9e/P7773/w
wQcrVqzA7+XLly9duhSZ2DVv3rxZs2ZNnToVh4wePfqFYSP7P/Pm7waNhUFt/PY/Lnpu0hpUWrdh
KAAX4AjcgVNwDQ7CzfL0KT0lARIgARIgARIgARIgARIgARIgARIgARJopgR27N7/8CuzTmvf/+/b
3tvjobfeW/nx3oNH636mLtn2Hy8v1UraDQ9Ouevx0c+/MnLcuHEQ6ObOnbtkyRKIcmvWrNm2bdsn
n3yyZ8+egwcPHjp06MiRI8eMn6NHjyITu1AAxbZu3bp27VpIeRDxYATy3dixY59/ZQSM/+TBKbo6
VI0G1G0kCsAdOAXX4CDchLPNtJvYbBIgARIgARIgARIgARIgARIgARIgARIggTIQwLPd7hz81t+0
vvt/XjXg/pfnr9z46af7j6R/Ji7YcveLS5R01uX+6VhNN/gFT6abMWPGokWLoNFt2LBh165dkOAg
y8UybNv1Dv2JLYADIeLt3r1748aNMIjVd2+//TaqePJFb8Vd1/unq9rRDDQmvbXYC6fgGhyEm3CW
j7OLZc5MEiABEiABEiABEiABEiABEiABEiABEiCBJiewfO32X/Qf/Sf//LtvdRk8dNLKTTv279p7
OOWDJW13Da0qddc/MK3PkFHDR47CEjh81xWq2qZNm/bu3Yv1cnX90mIdEnULQ7vbt2/f5s2bsegO
35mdMmUKKu0z+E00QKl2aBIaltJs7IJrcBBuwlm4DMfr1ssCJEACJEACJEACJEACJEACJEACJEAC
JEACJNCYBJZ+uPXGe0f8yXduO++m58bMWY+nve3Ycyjp8+GWvQ+8vlzpY3ig3L1Pjho1egwW1OHp
c/j6Kr7Him+52jfeSa/TZqEEYtneRx99hG/aYrndm6NG3zvkTf10OzQPjUxqP/LhINyEs3AZjsN9
bZkJEiABEiABEiABEiABEiABEiABEiABEiABEmhaAotWblGvgr2414uTFmzavhtyVuLn+clrfzJw
DsS6zve//R9PQKkb/c477+C1EevWrcND544fd36JQza9ThH77LPPsNxu/fr1kAohGOJFs2gSGobm
oZF4+UWKI9gFZ+GyemksIDRtL7B2EiABEiABEiABEiABEiABEiABEiABEiABEgABLC1TYl2bX74E
/WrLJweSPh9s+FS/VOJXD49/cdjI6dOnY3mbUuqSHk9XF3IevU4Zh0gI1Q7NwGsp0KSXXnvzVwPH
q+V/aDCaneQR8uEyHFeSHVfZ1e0sFiABEiABEiABEiABEiABEiABEiABEiABEmhQAivWfYxvg0Kt
uuSXL02cv2nTjgNJn/Hzt9w0aC5EsOsfmPrIcyMmTZo0f/58fPt1586d+Goq1rllbmd+vQ5VowEQ
DPEN2Q8//BAP0Js4ceKgZ4ejqWgwmo3GJ/mFfDgO9wEBKAAksyM8kARIgARIgARIgARIgARIgARI
gARIgARIgATyEMCrUfG2hf/zzN+17vniuHkb12/fn/QZMPwDtVztFwMnvDb8zVmzZuGNElu2bMFb
X/ModarxUnodWoKfw4cPb926FW+jwLd00dReD01QLYcLSd4hH+4DAlAACN8YmyeoeCwJkAAJkAAJ
kAAJkAAJkAAJkAAJkAAJkEA2Arv2HLhz8Ft/+p3bzun+7Kh316/dui/2s2rT3ntefh+S14/vm/Ef
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
wCPXfjdowp+f94efPDh5xLubRs3dEvoMGrUKOlWX+6fja6GLFy9W34TF2jP84HujkLbwE5W8dI4p
lCFzxowZl156aatWrS644AIkfvjDH/7617+GOJZfsjMrSkrrVkUTyhHzNwRJyJJYSYhvxS5atOj1
EaMBASgAJIQIm0AHgMAImHyKnRlgTJMACZAACZAACZAACZAACZAACZAACZAACTgRmLV43bc7Dzr1
R4MeGr58xLubo59fDJ4PkarfU2OwEA6r47Zv3w4VC2KdetOEKXClC3dKIsND4X76059ifR0ku4su
uuiyyy7r0KHDq6++mqSw5c+PSnNmTqj9evPw4cN79+6Fp1hih2/Ffvjhh++8AwijgQJAopSQA4DA
CJhA6tQFLEwCJEACJEACJEACJEACJEACJEACJEACJEACmsADQ2f8p7N/3/HusS9NX//6rE2hT//h
K6BQ4W0LEyZMxDth8cpU6FdQsfCDL8NC1NICl06Yalg0jWL4bilW1n3nO98555xzLr744iuuuOKG
G26A5fzSXMhCtPZQjm6zTsAj/YNVf3AWP9AYN23ahHfFjhs3/oYHpwAIsIRAYRMAgREwgVTjZYIE
SIAESIAESIAESIAESIAESIAESIAESIAE7Ams3rDj8l89/98vvf/O5xe8MmNj9NPrCW9x3QPPjMFL
Ij766CMsroN+pfQ6yFlK2tJiV2wiJJFhE+vWfve7351//vlnnnnmeeed17Zt2/bt2w8YMCCktjlt
RmuJzYltoc7USp1K4Nu+8FTpdVhih7WFePEEUAAIsERZIQcYARNIAda+F1iSBEiABEiABEiABEiA
BEiABEiABEiABEiABBSBYW8t+Zvv//uFN788eNyHL07fGPo8OHylWlw33lhcp/Q69fC6kMCFTa19
JSUgo2EXluq1a9cOX4nFKrsLL7wQr4u9+uqr8XA87JWV6ZKaofOjLkCm0z/4zi8W16mf6hK78ROw
2hBYACeEC5vACJhACrCMMRIgARIgARIgARIgARIgARIgARIgARIgARJwIoDXIvx64Ni/OP+u7gOm
DZ26IfrpWVlc1/epMVhXpp5cB7FO/UDIUqJWVO/SOVoTCyUgymFt3iOPPILn133rW986++yzW7du
ffnll2PRHXYJ/oTq1Zu6hdGEVupUAksBlViHt06oJXazZ88GEOh1gBMlhhzABFKA5VsnnKKRhUmA
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
IchvBm1mQQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKdIaBpOraaTv8iofcry3/c8/3/dev7f9tn
8R8/TIV6tqSy9XBLSDfCl8jgHFNgoj9OSfnxY59i6h/dNemhl5YhGISEwDoTP/uQAAmQAAmQAAmQ
AAmQAAmQAAmQAAmQAAmQwDeSQFXDiQ3788fN3tlj2KK/ueNdbEf9wQMLfvfizj5L88ceblhU2Xqg
OVjbZhhG+IINw+EEruAQbuEcU2AiTIdJMfXavbk8UeIb+etiUiRAAiRAAiRAAiRAAiRAAiRAAiRA
AiRAAhdMoKDiyOr4nDcWxGPF3b8/NuPPb3xTaHf3z/uXwRtunHjwgYU5cdvKJ2Q2zSo5uaLuzPaj
bUkng1mtofzTWuEZYSigikY8Qgd0Q2cMwUAMhxO4gkO4hXNMgYkwHSblgroLfmUcSAIkQAIkQAIk
QAIkQAIkQAIkQAIkQAIkcCUQqG06eSizcsnmw/iUXN/XVuCbcv/0wJS/uOWtb980EYLb9+6c/sOH
Fv7kqc//eeC6Xw/f/B+jtv12zA4YCqiiEY/QAd3QGUMwEMPhBK7gEG7hHFNcCSSZIwmQAAmQAAmQ
AAmQAAmQAAmQAAmQAAmQAAlcXAJHmk/nljXiAAishZu9OgmC25D3Nzz26hc9Ry7pPnDBtf3nXN1v
9lVPzoShgCoa8Qgd0A2dMQQDMRxO4OrixkZvJEACJEACJEACJEACJEACJEACJEACJEACJEACOLn1
2Mkz+OpdUdVRqHBZxQ0ZRXUwFFBFIx6hAw945U+FBEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA
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
IwNL7PxNinJCmrN3mGXgk3dKo4NM1/CR0TDdqJ9m1H1o1E0xamEfGDXvGzXvGVWTjKp3jcp3jIqJ
RtlbRtkbeukbesnrevFrehFsnI4zXgte1vJf0vJe1PJe0HLHaDkvaDljQjljtGzYC8JEy4uhnJe1
nLFaLrQ7LLp7Xah2+a+HMgaEMgeGxK7Y4ULxq1x4POF1pNm13gujJQESIAESIAESIAESIAESIAES
IAESIAESuDIJVB1YeKZEroirHmdUvSTtRaP6RfEtO2huUO3UvQny3QxRhRYnDFXTRKPZExpdwzSj
/kOjHufMTjVlOih17+k1k/Tqd/Xqd/TKiXrlW3rFG3r5G3rZ63rpeL3kNb14nF40Vi98SS94Sc+X
Ml3eaC1nlLDskcKyRoSyRmiZI7SskVqmstGh7DEhId+9pOW8ouWO1fJeQyGU/kwow1piN0orn3Ym
dybSvDLfL7MmARIgARIgARIgARIgARIgARIgARIgARLoQgR0LVS6dVKg7nOjDntUXzIqXzQqX4jc
ayeJHbJQ3nCP2DShxSlFThTspvpIja5+ivBWZ66mw4K6mncNyHRVMKnUVb4pxTqp1JW+qpeO04vH
6kUv6YUv6gVj9LzReu5IsZUVZ7xmD9eyYEO1zKGhjKGhzCGhjCFaxlAtHTZMSx8eSn8+JBS8UVoW
1t1J1S57TDDt6VD6s2KJXZZcYlf8TqBiWenW95BsF3o1DJUESIAESIAESIAESIAESIAESIAESIAE
SOAKJBA611q2eVywar5eM9GogFI3xqiAjRZW84bQ3GrfF/f6yUb9B1KFQ6EdUxod+te+J6xmkpDp
hFL3tiFkOpiU6Spe18vH62VSpisdq5e8ohe/JMW6MXrBaD1/pJ73vJYjlbrsoVrWEC1zsJYxWEsf
GDr8nLA03AdqsLRBocODQ4eHhNKHhdKHaxkQ7kaHsl6AmhdMfSp0GEvs4kKZg0JwUjC+rWRu2cax
SPYKfMVMmQRIgARIgARIgARIgARIgARIgARIgARIoAsRaDvVVL5pdKDsfb1qvF4xRhdK3UijfJS4
V441at+V9o55n2Rg0Z2/WT3fEQJdNT6F95awqjf1yjf0ygl6JfyP18tf08uh1I3VS1/RS17Si1/U
i17QC6HUjdTzR+j5z+u5w/XcoVr2YC17oJb5nJYZp6UP0A4/K/S3tP6hVGkpT2sp/bWUZ0KpA0Kp
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
W7FVBLaNaG9vx44SuDrKHwzGFEzEdARBKAREWARHBK6sG2efLJZLAiRAAiRAAiRAAiRAAiRAAiRA
AiRAAiRw8gSw8g2uGhbLLVy4EM+di4qK2rVrV3p6OnaOwLq4pqamrq4uj8ejbDc4b+oHp+jEJQzA
MAzGFEzEdARBKAREWC6rO/k3hjNJgARIgARIgARIgARIgARIgARIgARIgATGKwG4avn5+biPFU+x
wwPo8IOHzsFwwy2uuD0WN8lOmTLl1VdffeWVV15++eUX5c9LL72EY3TivlfcSDtt2jRMx42xuE8W
QXCMgDTrxusHinWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmcKgF4a9gSArbbxIkTH3vssfvkzwMP
PPDwww8/8sgj6Hn66afxPDpYdnjSHV5xjJ5HH30UAzDs7rvvvvPOO++9916cIghC0aw71beE80mA
BEiABEiABEiABEiABEiABEiABEiABMY3AdzoWltbiyVzN91001VXXXXttdfefPPNcOFgx8Gve+aZ
Z7CwDmYd9pLAK47Rg35cxRiMvP766//973/DykMQhBrfLFk9CZAACZAACZAACZAACZAACZAACZAA
CZAACZwGAvDZ8Ei6RYsWYaXc7bffftttt9111133338/1tENtb4Oft0999yD9XUYtnjxYkynWXca
3gmGIAESIAESIAESIAESIAESIAESIAESIAESIAGdwMDAAJ4+N3PmTHhxDz744IQJE5544gn4dc89
9xyW1eHJdXh9/vnn0YN+XH3ooYcwGFMwUY/Bf0mABEiABEiABEiABEiABEiABEiABEiABEiABE4b
AayRww6w5eXlq1evxg2wTz75JJbY4Qc3wBo/Tz31FC5hAIap3WNPW3oGIgESIAESIAESIAESIAES
IAESIAESIAESIAESCCAA1w7bRvT19bnd7s7OTjyYDovo8IMDnKITlzCAN8AGkGMHCZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACfyGCbR29FbVt+WV1R/Jqzp0vHJvZknK4SJzQw/6cRVj
MBLjf8PVUjoJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJnE0E3N6+gopGWHCh8Ue+XZvw6qywu6cv
/eeLP1zx1PcXTph1gWznP/jFn+7/XDUcq05cxRiMxHjMwlxEQBxEQ8yzqURqIQESIAESIAESIAES
IAESIAESIAESIAESIIGzmoCvbwBL46JTcn4ISZn48Xp4bhc+8rXhyJ3KAeIgGmIiMuIjC3Kd1Swo
jgRIgARIgARIgARIgARIgARIgARIgARIgAR+JQJY9oabWNfE/PeVWRuvf3E+lsnZrLnrXvlp2sId
oXuL9xQ15TX0NvYONMnW6T3hG/xZNRyjv7G3Hw1j9hQ2hewtfn1hHObaoiE+siAXMiIvF939Sm87
05IACZAACZAACZAACZAACZAACZAACZAACZx1BHCPatiujKnfbbrmuXnnP/Sl2VibsTg+NquqrM3T
03fCO/iz0QyDbqgDY6Q8wNwT3X0nytrcMZlV0xfFm1MgI/IiOzRAyVlHh4JIgARIgARIgARIgARI
gARIgARIgARIgARI4IwQwL2oadllc4OTb5288K8Pf2V4aLe8vix0X3FBUy8cNs+Auf3sGfzZM/Cz
e+BnF177f3bprbf/Z9VUD47FgRzp6ccUc5AT7gF4d4P5Tb3I8u/Xlxp5oQFKoAeqeJ/sGfkIMAkJ
kAAJkAAJkAAJkAAJkAAJkAAJkAAJkMBZQQBuGHZ0/Wx53LXPzTvvAW23iMuemvNjTBZsNFf/CTS4
aqrhuLf/BNbXwb7r7kf7uWd0DSPFeDVRvvbokVUK9Zrf2Dt/ayayK+MOerDc7uMl26GQrt1Z8XGh
CBIgARIgARIgARIgARIgARIgARIgARIggV+SAHywjxbHXjlxtuHUPftd5MGK9k7vYG+fsOaUQQef
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
DqGfaoasakR/jMJYHMCOGgvLsA8v8KX9Xvf0oHubj+o0NHXq3IxNhcWIE9EiZkSO+JEFckFGyEsp
eMhUKXioG1Q1eKCh6u4o2VXFF402SIAESIAESIAESIAESIAESIAESIAESIAEKiagxToU1EGpg1Sl
KuggYZkC3eHDh7VAV1paunnz5k2bNuXn52dnZ69evXrlypVLly5dsGDB7Nmzp0+fPmLcpHa9x9V4
efgtDQZd46t2Skar33PK0JTVK/LLMGsVmht2fDj5zoenzn749tmP3n73o9PvffzO+5/gffb9T979
4FP8VKdox1X0QU/0xyiMhQXYgTXY1BodDuDx1mcH12o3utOA+PEJ0xAVYkOEiBPRImZEjviRhZbv
kF1IvlPVd6ABJiADMZOSXcVfJvYgARIgARIgARIgARIgARIgARIgARIgARK4YAKQoTDlE1VkmAqK
maHQqSDTnTx5EvqV0uj27du3a9eu7du3l5SUFBcX/+1vf8vLy4PwlZmZuWLFisWLF8+dO3fmzJkp
KSmTJ0+Oi4sbN27cyJEjBw8e/Hqffq06vlbvpdfvbtTn5vr9r63nldtpbe32JiPrdp/8+sTlkxbl
r8gr21R2pGgnVrc7evits1qvwzFa0I6r6IOe6I9RGKvtqAPY/2P9/tWe7/9suwGdeg0aOmwEIkE8
iAqxIULEiWgRMyJH/MgCuSAj5IXskCMyhSaptDsQAAfQABOQAR81MfaCedMACZAACZAACZAACZAA
CZAACZAACZAACZAACUQlYBbXYQbohx9++M4772CWqJ7uChVrx44dW7duha6lCupycnLWrFmTkZGh
CupmzZo1bdq0pKSk+Pj48ePHjxo1asiQIW+88cZrr73WtWvX9u3bv/zyy01eaF6vUYtHnmp1T71X
bqnT/fq6fa6t2z+ktp3fKezcWK/vn57u9UCDzjUbt2/84ittX+kAv/COGBAJ4kFUiA0RIk5Eq8rt
ED+yQC6q3A7ZIUdkinz1hFlwAA0wARmW2EX9DvECCZAACZAACZAACZAACZAACZAACZAACZBA1RG4
NHpds2bNGjduXL9+/dq1a1d/otZfH6tz58NP/emhhjc/0uz66m2vq9n1mlqvXVOn7+/rvOG97Sm0
uh19rq31+g1Pdr/pifa31mh5V42mf635XPU6Des93RD24QXaIBRC6nVV9wWhJRIgARIgARIgARIg
ARIgARIgARIgARIggUtN4OLNh+3Xr1/Pnj1fffVVaGitWrVq3rw5VLUGDRrUrVu3Zs2ajz766AMP
PHDvvffecff9t95Z7abb77/x9geu+/ODv7+l2u9uqfZb/Lz1wd//6aHrbnvoxr88cvOdj9xy96O3
3fvInX99tNpDGPooLMAOrMEmLMM+vMAXPMIvZuNiTi7nw17qLxP9kQAJkAAJkAAJkAAJkAAJkAAJ
kAAJkAAJXDABs8SuqvabmDp16qRJk2JiYsaOHTt8+PCBAwf27dtXaXcdO3Zs06ZNy5YtX3jhBSXf
1atXr1atWjVq1Khevfojjzzy4IMPVqtW7b777sNPHKMF7biKPuipBDqMhQXYgTWl0cE+vMAXPMIv
vCMG7HyB/S+438QFf0dogARIgARIgARIgARIgARIgARIgARIgARI4JIS0JIddlX4/PPPodphxTZs
jfrxxx9jr9gPPvjgvffeC20Xqxe4wxar27Zt27JlS2Fh4caNG3Nzc7OysrChQ3p6Oha4mz9/vtox
Njk5OTExEbs/YDW50aNHjxgxAiVw/fv379OnT69evbp3796lS5dOnTqhRq5du3YQ4jCzFT9xjBa0
4yr6oCf6YxTGwgLswBpswjLsK3UOHuEX3hEDIkE8iAqxIULEqTeERfyhDWGRIzJFvsgauYMAOIAG
mHBz2Ev6daQzEiABEiABEiABEiABEiABEiABEiABEiCB//s/JdlhC1RoU1Co8MIOC1CrsDUqZKvP
PvsM+hV2SlUKHnZNVQre6dOnT506deLECbWZ7MGDB7HF6u7duyGLqf1kN2/ejF0qCgoKsBkrNneA
gKb2qoCetmzZMuzWiuK3efPmzZkzBztBYAtXaG6pqanYGAI7uuInjtGCdlxFH/REf4zCWFhQe0bA
JizDPrzAFzyq/V4RAyJBPIhKbfmKOBEtYob2iPiRhVLnkBeyQ47IFPkia+SuIICG2hYWfPg1IQES
IAESIAESIAESIAESIAESIAESIAESIIFLTECpdvgJkUq9IFjhpcQrU8HTNXgQu6B6YRNVLeJhT1Wl
4508eVJJeShmg2IG3Wz//v179+5Vgl5ZWRk0vdLSUmzMCoUNOhte2Ke1qKgI5XBQ3vATx2hRl9AH
PdEfozBWyXGwBptKkVMlc/AIv0qXQyRamkOEiBPR6to5pzqHZP3U/0fTuMR3ge5IgARIgARIgARI
gARIgARIgARIgARIgARIIJKAVqvMg2ginqrEM4vxIIupejw9qRazTZWmp2rzoKRBTztz5gzEPfV6
++23obPhBcFNvdQp2v0up9FfqXBKiFNlcrCMlyqWgzstyumSOVU1Fyqc09KcmaA+jgTCFhIgARIg
ARIgARIgARIgARIgARIgARIgARL4ahLQopY60AVpOBDVePKlSvLUvFoU5ukXRDO8IKDpF+rc1Avy
WrSX30XMV9UvZUpbVgfarx9IUC+H8EKRfzXxMioSIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIIEqJPD/ASCdK3cKZW5kc3RyZWFtCmVuZG9iagoyNCAwIG9iago8PAovTGVuZ3Ro
IDMzIDAgUgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDEyOQovSGVpZ2h0
IDEwMQovQ29sb3JTcGFjZSAyMCAwIFIKL1NNYXNrIDM0IDAgUgovQml0c1BlckNvbXBvbmVudCA4
Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMnAcGmK8AAQpl
bmRzdHJlYW0KZW5kb2JqCjI1IDAgb2JqCjw8Ci9MZW5ndGggMzUgMCBSCi9UeXBlIC9YT2JqZWN0
Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggNTAwCi9IZWlnaHQgNDAzCi9Db2xvclNwYWNlIDM2IDAg
UgovSW50ZXJwb2xhdGUgdHJ1ZQovSW50ZW50IC9QZXJjZXB0dWFsCi9TTWFzayAzNyAwIFIKL0Jp
dHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHtXQ2a6ywL
/fY0e5o93T3Nnt7vwFFC1Bjz1yYtPr0ZgoCAeGKdTu9//0X78Az8/f19eIRXhjfPHjMJ3pRSuXG3
8IWczJwkd7mZjKnuZCob9yZTb6sriWnXZASezvQlChnORUCBdP339xevB2XAT27QH5kBWa5z8PnI
MA8GtZwiIlvTvHTVipJuTbheO+pNm6vMZNzLueE8ezNNO1Sj8zKYNjDx80HIFq5unv6vUEj1/Pfv
AQ1O2upbmpxVAaf4abG70E4kgdgJtJEvbzenT356/kG6Y41dHYHVoVu64DFGXsUGOAGYD8rA6rx/
lYAUNApYG+n7h08/zWeswNrnkVgKO7it7dyNU/jcjP0anyU5OaspUTljwjbkv2Z0Wu1MUKer4VHl
sISAZqJKC+dByBau2vR9OaGFKwCpZfzUZMjqYwi6MHMsEhzaUlTSp8+GjsyS7n34DEJCWI70XG99
ukDnWyPOHa22Vkyo3GYfKFwI1Ba8WBKmBYkhN31OoTeA/WEZWJrvb+JLET8d1f181eGA4wUc/fmx
u2D3kMups317IlRS8on2kn27hKNjpbj643rJZiKojqvsb7Sp2IT5j9sJM4rHuX2Ww81Z/h4mZv+T
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
nzg6vue9ilrJ/klFED+FOVoq8hRV9FZQ1sRvZw5+G7Z+XD+l5/VB/TwJPa2f0a/ooxG+DHRJz8Jz
UR+jSfCwaSHiEqCKgzPUTlRjjQPiKfHytFtkkf0PQBn9ZgplbmRzdHJlYW0KZW5kb2JqCjI5IDAg
b2JqCjw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovQXNjZW50IDc3MAovQ2FwSGVpZ2h0IDcyNwov
RGVzY2VudCAtMjMwCi9GbGFncyAzMgovRm9udEJCb3ggWyAtOTUxIC00ODEgMTQ0NSAxMTIyXQov
Rm9udE5hbWUgL0JOWlRMTSMyQkhlbHZldGljYQovSXRhbGljQW5nbGUgMAovU3RlbVYgOTgKL01h
eFdpZHRoIDE1MDAKL1N0ZW1IIDg1Ci9YSGVpZ2h0IDUzMQovRm9udEZpbGUyIDQwIDAgUgo+Pgpl
bmRvYmoKMzAgMCBvYmoKWyAyNzggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMzMzIDI3OCAyNzgg
MCAwIDU1NiAwIDU1NiAwIDAgMCAwIDAgMjc4IDAgMCAwIDAgMCAwIDY2NyA2NjcgNzIyIDAgNjY3
IDYxMSAwIDAgMCAwIDAgMCA4MzMgMCAwIDY2NyAwIDcyMiA2NjcgNjExIDAgNjY3IDk0NCAwIDAg
MCAwIDAgMCAwIDAgMCA1NTYgNTU2IDUwMCA1NTYgNTU2IDI3OCA1NTYgNTU2IDIyMiAwIDAgMjIy
IDgzMyA1NTYgNTU2IDU1NiAwIDMzMyA1MDAgMjc4IDU1NiA1MDAgMCA1MDAgNTAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgNTAwXQplbmRvYmoKMzEgMCBvYmoKMTk4MjQ4CmVuZG9iagoz
MiAwIG9iagpbL0lDQ0Jhc2VkIDQxIDAgUl0KZW5kb2JqCjMzIDAgb2JqCjE5NAplbmRvYmoKMzQg
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
9ne490uzxj8SBLE3CDhBYPxPKowJJAaCINnlP66xNnaG1TmCnPvl3w//esACD/wPHkBm5QplbmRz
dHJlYW0KZW5kb2JqCjM1IDAgb2JqCjMwNzUyCmVuZG9iagozNiAwIG9iagpbL0lDQ0Jhc2VkIDQz
IDAgUl0KZW5kb2JqCjM3IDAgb2JqCjw8Ci9MZW5ndGggNDQgMCBSCi9UeXBlIC9YT2JqZWN0Ci9T
dWJ0eXBlIC9JbWFnZQovV2lkdGggNTAwCi9IZWlnaHQgNDAzCi9Db2xvclNwYWNlIC9EZXZpY2VH
cmF5Ci9JbnRlcnBvbGF0ZSB0cnVlCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlciAvRmxhdGVE
ZWNvZGUKPj4Kc3RyZWFtCngB7dCBAAAAAIAgf+oXKYQKAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
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
z4z5jN16sfTF8MuMl9Pjhb8p/rb3ldGrn353+71nYsnE8GvR65k/St6ovjn61vZt52To5NN3ae+m
p4req74/9oH9oftj9MeR6exP+E+Vn40/d3wJ/PJ4Jm1m5t/3hPP7CmVuZHN0cmVhbQplbmRvYmoK
NDIgMCBvYmoKNDQ1OQplbmRvYmoKNDMgMCBvYmoKPDwKL0xlbmd0aCA0NyAwIFIKL04gMwovQWx0
ZXJuYXRlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngBhZRNSBRh
GMf/s40EsQbRlwjF0MEkVCYLUgLT9StTtmXVTAlinX13nRxnp5ndLUUihOiYdYwuVkSHiE7hoUOn
OkQEmXWJoKNFEAVeIrb/O5O7Y1S+MDO/eZ7/+3y9wwBVj1KOY0U0YMrOu8nemHZ6dEzb/BpVqEYU
XCnDczoSiQGfqZXP9Wv1LRRpWWqUsdb7NnyrdpkQUDQqd2QDPix5PODjki/knTw1ZyQbE6k02SE3
uEPJTvIt8tZsiMdDnBaeAVS1U5MzHJdxIjvILUUjK2M+IOt22rTJ76U97RlT1LDfyDc5C9q48v1A
2x5g04uKbcwDHtwDdtdVbPU1wM4RYPFQxfY96c9H2fXKyxxq9sMp0Rhr+lAqfa8DNt8Afl4vlX7c
LpV+3mEO1vHUMgpu0deyMOUlENQb7Gb85Br9i4OefFULsMA5jmwB+q8ANz8C+x8C2x8DiWpgqBWR
y2w3uPLiIucCdOacadfMTuS1Zl0/onXwaIXWZxtNDVrKsjTf5Wmu8IRbFOkmTFkFztlf23iPCnt4
kE/2F7kkvO7frMylU12cJZrY1qe06OomN5DvZ8yePnI9r/cZt2c4YOWAme8bCjhyyrbiPBepidTY
4/GTZMZXVCcfk/OQPOcVB2VM334udSJBrqU9OZnrl5pd3Ns+MzHEM5KsWDMTnfHf/MYtJGXefdTc
dSz/m2dtkWcYhQUBEzbvNjQk0YsYGuHARQ4ZekwqTFqlX9BqwsPkX5UWEuVdFhW9WOGeFX/PeRS4
W8Y/hVgccw3lCJr+Tv+iL+sL+l3983xtob7imXPPmsara18ZV2aW1ci4QY0yvqwpiG+w2g56LWRp
neIV9OSV9Y3h6jL2fG3Zo8kc4mp8NdSlCGVqxDjjya5l90WyxTfh51vL9q/pUft89klNJdeyunhm
Kfp8NlwNa/+zq2DSsqvw5I2QLjxroe5VD6p9aovaCk09prarbWoX346qA+Udw5yViQus22X1KfZg
Y5reyklXZovg38Ivhv+lXmEL1zQ0+Q9NuLmMaQnfEdw2cIeU/8NfswMN3gplbmRzdHJlYW0KZW5k
b2JqCjQ0IDAgb2JqCjg5OQplbmRvYmoKNDUgMCBvYmoKOTczMAplbmRvYmoKNDYgMCBvYmoKMjYx
MgplbmRvYmoKNDcgMCBvYmoKNzkyCmVuZG9iagoxNSAwIG9iaiA8PAovRm9udCA8PCAvRjI1IDkg
MCBSIC9GMzggMTggMCBSIC9GOCA1IDAgUiAvRjM5IDExIDAgUiA+PgovWE9iamVjdCA8PCAvSW0x
IDE0IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKNTAgMCBvYmogPDwK
L0xlbmd0aCAyNjk1ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42nVZS5Pb
NhK+z6/QbTlVEs03qdzsSlz2VjmV9UxVDhMfMCQkIaFIhSA9md0/v1+jG9Rj6IsANIBGE/31C/rw
ePfuY5KvqnBbFNnqcbdK0jyM83hVbJMwjvLVY7N6Cn6/r4pAP99v0iwNvmhr1d50exomwa4fmP6z
seNgnqdRNzzzoDsry9Lg/enUmlqNpu8sKHGZBOn9t8d/v/tYrbY4PSno9E0cRWFaFatNkofbKOXj
x4PGlmgbDLrW3X1SBSOPVfP9Pi8C1dXaMsV03ELijCXGYNQ1bTp0fdvvjV869tw22pq921aBE9M+
PT7+tnlW1n0Kxvo7MZCzN81gMC5pjC9YRRA7Dre5XNZp6PeDOh7509M0OOIg7Gt0y2O+sTQLLC6I
+2nQ6ZGYv9BPP/xlQ8c6zsJtloE/lLEV/u93o8amDCoxLNAgB0y1O5Nm3JVRZ9CtchrJqnLmPu92
7YOuSS08SNYXS4WHnQb+/leemy+XJo9YFAcEiY0TeTPLfHEnfBdFdVaF+Xtyiiigxa7hSdWp9vW/
WlYetBm4a+mE6T4OzKieTWtGuvxXnuPLREcfifGzuwndNFp4Nvq7qf1JDh0gzl9MgzS80mLBEn8Q
5WfbwC3MI5LIaib9EcVZ1+Cr7JoJLw4P3GdA+d1fvzzw9j+iPPqq7bibWp65MqRt8PBqR33EqnjN
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
sd0zDnX0PwoVkPjjz18/PxBeXPI7sr99Kr+teZbO0Oy+xac/VX7Os/uNpiUBdk9g4OY9ltNvuSrC
bZlW7k+DJA0TuO80LGKRL1uIO2FWoko+rwlF2I5bSX44ntC1nrUhwiluJvd6zDpOkjIs8xsd664R
lZhz6ZZzJEYr7hM9pyi0g7+rPSpO5ysLX5Fj1pey6EopW+RXpWyRn0tZ9I9n74vR6cDP1VIWSnIE
/hwqpaBdUPHDDJmMHt7QlMhIfDXnnhtBv/1QWsSvnttgp0zrHvZowG+0YLSHw7KyUl5Rb579iEB1
hN/q+F2uFmQ6se9+ebz7+46sO1rFqziFYyhytNswBzrq493Tt2jVYBIfGKbbavXilh7JKxTbFN12
9XD3n7sP7r+oYpUDVqUDTJyWYR5laJOwqsorYKXlxZ9WZQgEErSqSN4ND+N4+undu5OqD9OzDmvO
nUjU/wPDQC9dCmVuZHN0cmVhbQplbmRvYmoKNDkgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRl
bnRzIDUwIDAgUgovUmVzb3VyY2VzIDQ4IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFy
ZW50IDEzIDAgUgo+PiBlbmRvYmoKNDggMCBvYmogPDwKL0ZvbnQgPDwgL0YyNSA5IDAgUiAvRjgg
NSAwIFIgL0YxNiA0IDAgUiAvRjQzIDUxIDAgUiAvRjQyIDEyIDAgUiAvRjcgNiAwIFIgL0YyNiA4
IDAgUiAvRjM3IDEwIDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKNTQg
MCBvYmogPDwKL0xlbmd0aCAyNzg3ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVh
bQp42o1ZS5PbRg6+51fMkaqSaPElkkenMt44lcQuj1LZKseHFtmSuKZIhY+MJ/vnFx+A5lBjencv
IhqNRqPReLa+33/36k2Y3GV+vtvFd/vjXRDFfrpL7nZ56Afb5G5f3n304tUmCtLQ26+yxOuqo1l9
2v/06k2UzRYmiZ/k+d1WVtiBluxSz9S+0GZ3OZGGO5BulHYTJn6+jWTF67KshqptTF0/rbLYWxOD
beaVVWcLMNumXtWswswbbGcKUAqBubTNSeZL+1dV2F6Je5lvWl1NjFusf8SPLXW1Uhft5WKaUtec
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
y6WfwGXDSH1BunDNvTUKCjYLNOqBdxISuQhmPMi3lEu2uh90vHAk6aGo4JwUgcGNIhjz+v1bAbS6
fQJ1K12yVERUukmyAqKgRlCEljH3ciCUzoZhFyp7WWwcM03POOewmJBIWRyW08T73hZGjpBqBE9d
y5nuPPCYWoM0ed6dYO2k1jKSQolpWIwb1HPngvmbWoYQk0uny29aqjDL/RFlFbopF5Nwd1ky9ak8
eHiHydfvhVoifKy1KObZ4AhzMH2loPaBOLh7NqpWsBRG0s2thU5SA+dgt7Q99JNVUaND7Plgiwmr
czmXfCVmOeBTl3aoZisZN6i/QVdPQi5pH48k5qLQ1XSmrE4XJdA186demdHqjOa+7q8Wn984EK21
UewlzLunKO7HxtPJ9oMr4J47uEg1wwu7oSpq+381bZE2bdqnbehu5LE1om5NsgI6t18pK1CD+oif
tvv8vzs4fqQJd9RVtJ1CeK0UCNYeptvp0gFP7z5zArz7IFD0MuSrp2k2LfrKm4vAaunuALzhV6Ui
sBpusPyy+S9Wr01wvHPX4stIHkoAafOtI3k9IJC8YmwKaRZRpqUcmmJ9FSJK3UAG4tj6Ssds3KN8
zM3FYp2ovS3xlPcQAiamGNy0CSExmvLwFHgJyTGPtO7L8A1g9kfiwBb2xVCD5fxyLRNto3sU7ViX
Ava2KR3yAlr8LSE7gjGde+l5Am/Ggzxb7eQpf6Epj3d+nmeuEabqDMfNE6kj8tj7+f6HBWPcbf04
ntpndA9r2aWzA4XO5yImmdU+sXsS+rY0ee5nSej4nvCHEYShWvu6oiRs5RUA/xIkYtj5bAOSVvEg
csXpreABeWeWx7eSc5kURbkfZMltOmH3THaeRGWqgq2MOdJPz3ca8JPENS4g+cYJgzDx02wSoHBM
08zlphxxkNjzkxehj8+H+nO0TfG0dKrID5/1pv/SkBDPb5WQ7tn0cQSw+e5+/91/AEFedJ4KZW5k
c3RyZWFtCmVuZG9iago1MyAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgNTQgMCBSCi9S
ZXNvdXJjZXMgNTIgMCBSCi9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9QYXJlbnQgMTMgMCBSCj4+
IGVuZG9iago1MiAwIG9iaiA8PAovRm9udCA8PCAvRjI1IDkgMCBSIC9GMzggMTggMCBSIC9GOCA1
IDAgUiAvRjQzIDUxIDAgUiAvRjQyIDEyIDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+
PiBlbmRvYmoKNTcgMCBvYmogPDwKL0xlbmd0aCAyODE0ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVj
b2RlCj4+CnN0cmVhbQp42o1ZWY/bOBJ+z6/oRxmwFd3HvnV2JkgWM0Bj04NdIJMH2qJtITocUkq3
59dvXZTkbvXuvrTJYpEs1fkV+8Pju/cfo/Su8MssS+4ej3dRnPphGt5lZeSHQXr3WN199f61KTJP
7ze7OIm937W16lR3J5xG3rE3TP+ltoOp9+OgK175ojsrbLF3f7k09UENdd9ZoIR55KWbb4//eP+x
uCvh9ijD23dhEPhxkd3totQvg5iv/+evXx6PY7PZRVno3T985sHX7JuPo8i7t0yptD2ABDApPBQC
aXUn3NG3LXMPG1h+wj89L9m+GUUuXFdGM/1CB/XW1vtGSPixJHQSLaSOitxPg/AuEG3p/U53at/g
x7/+RMe9C0O/TEXDFnRFioxjr9MgYi4imu/2b0yuaqMPQ3PlWd/hbwLf/LM+aCtEOWE4m348nZlD
Me1iejzw+bopYs+Xr4gXgoWJXyYJiBX7URixWL/Q6btG/9zEkafBBGlUevRxutUdEofXnxhGuR9m
Th2fQdIkC0Co2vLooKze8lCrA0p15hl/DI/N2Am7kgPUYRgViJCkJXpkjB4Jd4PECfpqIhrNnEbN
Tzxao06yEq5XA49QE2hZUJslzQFNdRUPeFvuuYVPj48PPDL6x6jtIPTJGqRNIv0h3n6zi8MDBrrd
kbTBreGdt1bssMVsUJyclQyQDYTSHU/74+CG4PFDfaj/cvvlwIMarXbM/DuchXCu0Tdw1Oq2N1ce
H3u6ox8uBoIGzhim7StyyxcGyULRlgmsSxiI0CIKUlAU/CVRcCA79xJqNQXndZU5xjs3u9B74BmY
cRBD9o3PrJ/6Kbg1H40bzJZ3GL1qgoOePhf82YUdz9gAMSQJPOi8CSFpYGx2TGWnQkbd4r5bawIZ
/DShzImTG00h4aA6HoCz84G9I2jbjwZC7wB5aTCq7uDEFdnn8A9S72sYfqNPzTwDktK3/4DBWBv2
TFhQwtvUw9BoHjtawSzfP/CU9Z9OTsJXRN98ZruvKjAXZNi+Uw0HwnZ5XuYMl0KGPQ6rqidlU8KN
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
mqfuGR8GDDSpr0jL5Ysu/RMg8D7LCkkFv04SGNKnpdyop5gS3MMzNHz8fo/kuXXL+Rmatq5CntuX
99Q9R+OIWs0ccGWlmaD4h83RDPXuTAoGkuldQkzxX2iNPOuZicYadLgPKYKoU2x/5PxDM0cVibIK
MdjPIA56GBmfx1NXGgM6rQcmkv4wfkR/uKfjXzDwVpg3hKljAtkttBey6cdYD3LRWXNIXnnKdkSc
jP8DIXGnUJsoKyG5SBLLyEneaHEWL5BUPd/9+vjuPyzF74IKZW5kc3RyZWFtCmVuZG9iago1NiAw
IG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgNTcgMCBSCi9SZXNvdXJjZXMgNTUgMCBSCi9N
ZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9QYXJlbnQgMTMgMCBSCj4+IGVuZG9iago1NSAwIG9iaiA8
PAovRm9udCA8PCAvRjI1IDkgMCBSIC9GOCA1IDAgUiAvRjQyIDEyIDAgUiAvRjQzIDUxIDAgUiAv
RjE2IDQgMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago2MCAwIG9iaiA8
PAovTGVuZ3RoIDI4NTUgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjalVlL
k9u4Eb77V8yRUzWi+aZ4dLzr2t1K1hOPUj54fYBISEJMkVyCnLGSP59+gaQ0dCq5iOhGA2gA3V93
Q3/ZvXn7IUrvtn6RZcnd7nAXxomfZ+ldVkR+GKR3u+rui5fdb+Iwj7zd/Tb1enNQ9193v739EG8X
A9PUT4viLuAReoAhWe6p2mfZ7V0BolGGopsk8LM0vdtEqV8EMY/42NQXGBNFXq9L3dxHW29wHKsb
2/bcbmDqKPdeUKDtv1nmnhTSz/ijmbO/3yBxVA3TQ8tf/b2r216EunH/1o57Js7aWnU0zZHJA6wI
qt9twsQvkgS+oV+kciL70dQVi+aJV7bnrtbfmVBNxQ3ToKLDfYgqhV7fdqBS7ule7Wstsl1Xm1IN
pm1wI3nqDSc1cJ8tVa0fRM7yd9YXBU5G15UlJQNRL2P1rueNQPjQt2duDSfNjbGpdF9faBfRvAsz
GC2D2sPNkM9Pv3ODNomNrm9xl8+mcvuUsYo/1uCkVzrKEf4bjarwLnRnAxMdXVqLLLpg3R/GmrtE
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
HC4KwOU0co/YpKsPCo+KA0TtvS3phRaLnU7UxrFwMz43dycjgzs1rJ47oFjDsYDifFQkyziP/JFK
OGzt5S0Q2/w8AY1HZNIz9uWR/W+OQqbUPOUiCCAJMiGGMUqzWPzCFR33U6mDc0zndJBlFQvAUTKN
yMYvV7cbkwl7eXYijGuEaGpKrOQRCJL7s+5LoSxU5IKDU06chIkYw+LRiNlDb45HfgfhPknkoM3H
cX0yvHwpgxUzOhZazdDneiCJEqlLouk5U3wXWHA0Zam7AUswklhEhPgKlLBzTqlZMhHJ26d95BB8
wBz20nCt2reN+Zf+L+6QbF3NmeQubiJzOfcDs/aYV1MflXE4gDwJOPhET76qrZNGb6kHLp6TLQM8
jFDHY6+PkL0xe9aCkGlNz1dZRoKQPIIRWCY4/YzllR4YGPbogSF2z/267ej/EOh8NoobGoJ9/cBS
v37C03ov1G9q7/KKB5bl8FR4Ozgr2JPPXHlCWvXVxZtSVBQuzOeSzRVirNi6zo+or+XvVRCIg2CK
5+AQhCaMf/R/CHZTRjRamUVuCfgIOmPDbcWdk8UhsazJSCN89FtNKG/yCTgjh7zRNneGzoR7Z2Ar
R8F5TSCWVo40hV4ch/EAGbqmP9bwVB6YU9ZaNdLmNBnEP/38tKPcFLkYqdeRkwE3SiV8Ryk90JpN
ZXqux6jsBfai3ElfBfYHZo8NzDKMDVgx/32Yzo95UTJjDsnKc2DqUiIUXuR8a/+s8Z8oK6mTZEdM
tJKIqbW0SpIyZd3fMfrCnKq9eS66+VtznrDDP4BKl/YN8iqW4z+iMnlVQVbN/8e8+Xn35j+mHfWB
CmVuZHN0cmVhbQplbmRvYmoKNTkgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDYwIDAg
UgovUmVzb3VyY2VzIDU4IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDEzIDAg
Ugo+PiBlbmRvYmoKNTggMCBvYmogPDwKL0ZvbnQgPDwgL0YyNSA5IDAgUiAvRjM4IDE4IDAgUiAv
RjggNSAwIFIgL0Y0MyA1MSAwIFIgL0Y0MiAxMiAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0
IF0KPj4gZW5kb2JqCjY0IDAgb2JqIDw8Ci9MZW5ndGggMzA1NSAgICAgIAovRmlsdGVyIC9GbGF0
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
PUCT+f8uOMkc1McCO2IqZPipnZ9I5qnevpP/SfFMyJkPAoNdMz+JRcr/EbZkrovAn34grbuTXZdH
LJmaG28gOegtTh2zexx85QoCAtTKHZ0rjE6DnTmUKCWKYuYjOLPqOEwg/JKSBDkx2gOy0PLXgJEq
CVK2vxCkU0tf01NhJM8XBDahw5DGUNTqmURgkVq98bnxHn2SwCR09FeFgWJ5S1ZZ4sdFclNaa90f
/72u9y/rfWNMt67WCTgELnL33fPdn3co42ARLsI48fMsXYRp4CebfFGe7n79PVhUMAh+7cebYvFC
rKdFmvnZJoZms9jefbz7hn7jZosUfC6XX4a5nwYJlBaxXySXf5DifPa/NwdbiNHhikDer459f363
Xr+8vPj4PHyyvukOPPNii5VMzf2rfwz/3/qQucAujoRr/IMxB8DhptI+BGMnmv8CB6Ig2wplbmRz
dHJlYW0KZW5kb2JqCjYzIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyA2NCAwIFIKL1Jl
c291cmNlcyA2MiAwIFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCA2NiAwIFIKPj4g
ZW5kb2JqCjYyIDAgb2JqIDw8Ci9Gb250IDw8IC9GMjUgOSAwIFIgL0Y4IDUgMCBSIC9GNDIgMTIg
MCBSIC9GNyA2IDAgUiAvRjE2IDQgMCBSIC9GMTAgNyAwIFIgL0Y0MyA1MSAwIFIgL0Y0NCA2NSAw
IFIgL0YyNiA4IDAgUiAvRjM3IDEwIDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBl
bmRvYmoKNjkgMCBvYmogPDwKL0xlbmd0aCAxMzQ2ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2Rl
Cj4+CnN0cmVhbQp42q1XS4/bNhC+76/QUQ5WD1LvAD0k3U3TIm3TxEWBPhDQEr0mVhYdilpn2z/f
GQ7ltdfuoWjhg8h5ceab4Qz9enmVvOFFUMdNWebBch2wLI+rsgjKhscsLYJlF/wW1osoYxUPl4u6
CI1ai8Ufy++SN1l9pFgUcdE0QUoa0oJKWYWij1H26nZ5xYCXBixgdRmXWRPkvI7zPGi3V5+v0rjk
FSucxPHaMWdFT0i+3fLgRl/9BL+ZFc1GoyerrzE2IJ3HlqdVXLCGPH2j7uJFxJoq5DGFdYJHxmLG
D2EtNxLjYuGdHKQRPW54uNWLiNdhJ/1er0noF4RLrqKVGOWChZ2XluMo7tSAx6LUjXxQrRyJ2YqB
qO9//Lgkkt1IZYjYCStopQf0NYi8exFL46bwEVlyMgvvhJX7BXgmFrwJHxd1GV4jJw+nEc4nodGK
oROmo93b5fI9iaAD10R8hepWb99PK6+vDXE0nOWXO6N3RkkrzOOBYBGYJmx1PzpsAcYTT78hBxt0
sA4fEYOMhXvASvU9beCAgVZrbUjW+QoEZb2Ixm8aimF2B4h3p6aJ6NwGSdJgoaDPzqVPo6BTkWY9
+eNXRt8TifYzcLD88P3Hi0HdfrHSDK42cg4K0mBceeZzC4u1tC0a3dCW8gWyPr1Amo/J+czNoMpG
SySxI7AhRM+SduNr0J/gIs2figdog5Td6Eu8DhqocF66W1HGTVbCzcnihjOKQXWAOpizag3Q8aoi
N3ABnlfhRgwDZAlILOyJbmQP/nReWj/T0r+nrGz95gcd0yJvYu75a/zCgRsyi+sbYoFm4cxB+q6J
o0BooKWeDImtJtXjJYsOOWGQE9/AfNIyMFakreh76WooD9V6DyRGTGHp62wid2wRBA+t7p9M3C7f
0ubXySgSQjMe3Tw7ghdro2LOnTr3JfKXl8uP0+DEfJ9JzHZMxmk1tkbtrNLDeJ63BsDjs0KrKV9C
gWhUsDSUgvyCXdqEx7aIgog7OZ9oq7AHIQeTh181dOpBdROUsus1dOAJrnQEFIPsx/83+NZbTV4k
u2nVq3GD9+i8eLM6rqrLKPAKbn/f08KV6kmoSLUbzLkTNJIW/jRXMbh3l9LF7886AUAPVAd0S6Fk
jhC5EGdZxTyvZ3dfnMdTxDyb2RcBrbOY1fV/RNRXw+oypHkOE7i4jKlrP73vbaelQ+1GzD3K+KY2
n+VusLt2KKc9pP6sE0zlA5r1xkeC9RnO2VMbuohzU8V5+a9wxlIFX3CUNrF35BUc1cDdwdKZVtBc
3OopGOgSeZrOQYPkHp0SB8cdE9Q0LY1spaLYiADzSkF3y1tBV9wRBRnXk/V7Mn0U77WnGAkNd9aa
8YwbAOIEzgHmoIPstAcgqqvDbMzcvD+0yUM5r3Xf02A88PwTAVZGfp6kG0ogSTP1KEN+Ald+Ar+8
VKQFIM4I8tSPHnr4FLygqoXJ9mcCXTpZ91qbpEtwZpy3xucN/y0My5dkxvkhHj+p3SXBr/Vg5WAj
+7iTXgHGa68oJ8mXaL/fRzBOt9Fkejm0uoMa/mc73kS7QvGvNtbuXiboLZye4NxZifb+E7DOKzI6
BsO/JA4tnMNT2uWRl7V/QEqi+rfLSKMXCJhb/NqNGmlFpQN1SLfF2di7BxZyfS0T2YFf5yEZq0Ms
euH0771VTV8xqx9db6hrczEZ82uGp746WINv4wzexkSdJ+w98XbC4hPKa+hnmj9/eHegPNJqJBRk
666TazJA3Su7IRXUPa8+XqfQBcpDo3M5O08M/GkonnrJThixjeb/NH8Ddq5ysAplbmRzdHJlYW0K
ZW5kb2JqCjY4IDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyA2OSAwIFIKL1Jlc291cmNl
cyA2NyAwIFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCA2NiAwIFIKPj4gZW5kb2Jq
CjYxIDAgb2JqIDw8Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9Gb3JtCi9Gb3JtVHlwZSAxCi9Q
VEVYLkZpbGVOYW1lICguL21lZGlhL3B1YnN1Yi5wZGYpCi9QVEVYLlBhZ2VOdW1iZXIgMQovUFRF
WC5JbmZvRGljdCA3MCAwIFIKL0JCb3ggWzAgMCAzODYgMzk1XQovUmVzb3VyY2VzIDw8Ci9Qcm9j
U2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCi9Db2xvclNwYWNlIDw8
Ci9DczIgNzEgMCBSCi9DczEgNzIgMCBSCj4+L0ZvbnQgPDwgL0YxLjAgNzMgMCBSPj4KL1hPYmpl
Y3QgPDwKL0ltNCA3NCAwIFIKL0ltMiA3NSAwIFIKL0ltMyA3NiAwIFIKL0ltNSA3NyAwIFIKL0lt
MSA3OCAwIFIKPj4+PgovTGVuZ3RoIDc5IDAgUgovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJl
YW0KeAG1m9lyHccNhu/nKeYyueCol1kvY9lJxVUu25FeQGKokmzJjEnKSt4+34/e5iwkTzmxVS7N
4Ay60WgsP9CtX/sf+197N8zO/us/9C9e3vv++r739uf+ur9ap2Hqr2LUX9O09csa+7ub/l3/4oeb
u+ubfz18fvOxv/vQ/dqvW+/4My+9j8uwTL1fGOtT/+Lvn3z/9a3Ntcz2zbT2fvN9WPwQ5m3JXwX7
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
6rS5dffhNy5t9/c3v9zf3vXtzOby0ZWn+bcvdCnplx3+O41fbh6+3N79fHbUjfLvcZFVAVG4z2dE
/ubfDzd3v/APud5cX9/c3/cPt03s/a2h3QQ5tux1Qh1CT0TNpWOhsyqy7P0/3zy8addNf/wvhAQo
ugplbmRzdHJlYW0KZW5kb2JqCjcwIDAgb2JqCjw8Ci9BdXRob3IgKHZsYWRvdW5ldCkKL0NyZWF0
aW9uRGF0ZSAoRDoyMDA5MTAyMTA4MTAwMFopCi9DcmVhdG9yIChPbW5pR3JhZmZsZSBQcm9mZXNz
aW9uYWwgNS4wKQovTW9kRGF0ZSAoRDoyMDA5MTEwMTE3MzcwMFopCi9Qcm9kdWNlciAoTWFjIE9T
IFggMTAuNS44IFF1YXJ0eiBQREZDb250ZXh0KQovVGl0bGUgKHd3dy5ncmFmZmxlKQo+PgplbmRv
YmoKNzEgMCBvYmoKWy9JQ0NCYXNlZCA4MCAwIFJdCmVuZG9iago3MiAwIG9iagpbL0lDQ0Jhc2Vk
IDgxIDAgUl0KZW5kb2JqCjczIDAgb2JqCjw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UcnVlVHlw
ZQovQmFzZUZvbnQgL1RFQkVXViMyQkhlbHZldGljYQovRm9udERlc2NyaXB0b3IgODIgMCBSCi9X
aWR0aHMgODMgMCBSCi9GaXJzdENoYXIgMzIKL0xhc3RDaGFyIDEyMQovRW5jb2RpbmcgL01hY1Jv
bWFuRW5jb2RpbmcKPj4KZW5kb2JqCjc0IDAgb2JqCjw8Ci9MZW5ndGggODQgMCBSCi9UeXBlIC9Y
T2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggNTkKL0hlaWdodCA1OQovQ29sb3JTcGFjZSA3
MiAwIFIKL1NNYXNrIDg1IDAgUgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVj
b2RlCj4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGLgNDCjLAAEKZW5kc3RyZWFtCmVuZG9iago3NSAwIG9iago8PAov
TGVuZ3RoIDg2IDAgUgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDc2Ci9I
ZWlnaHQgNTgKL0NvbG9yU3BhY2UgNzIgMCBSCi9TTWFzayA4NyAwIFIKL0JpdHNQZXJDb21wb25l
bnQgOAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20IX4hAYcCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMDAOzAz
qAABCmVuZHN0cmVhbQplbmRvYmoKNzYgMCBvYmoKPDwKL0xlbmd0aCA4OCAwIFIKL1R5cGUgL1hP
YmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCA4OQovSGVpZ2h0IDY3Ci9Db2xvclNwYWNlIDcy
IDAgUgovU01hc2sgODkgMCBSCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlciAvRmxhdGVEZWNv
ZGUKPj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9tCj+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDl4EBReEA
AQplbmRzdHJlYW0KZW5kb2JqCjc3IDAgb2JqCjw8Ci9MZW5ndGggOTAgMCBSCi9UeXBlIC9YT2Jq
ZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggNDMKL0hlaWdodCAyOAovQ29sb3JTcGFjZSA3MiAw
IFIKL1NNYXNrIDkxIDAgUgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2Rl
Cj4+CnN0cmVhbQp4Ae3QgQAAAADDoPlTH+SFUGHAgAEDBgwYMGDAgAED7wMDDhwAAQplbmRzdHJl
YW0KZW5kb2JqCjc4IDAgb2JqCjw8Ci9MZW5ndGggOTIgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0
eXBlIC9JbWFnZQovV2lkdGggODkKL0hlaWdodCA2NwovQ29sb3JTcGFjZSA3MiAwIFIKL1NNYXNr
IDkzIDAgUgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVh
bQp4Ae3QMQEAAADCoPVPbQo/iEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABA5eBAUXhAAEKZW5kc3RyZWFt
CmVuZG9iago3OSAwIG9iago0ODQzCmVuZG9iago4MCAwIG9iago8PAovTGVuZ3RoIDk0IDAgUgov
TiAxCi9BbHRlcm5hdGUgL0RldmljZUdyYXkKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFt
CngBhVJPSBRRHP7NNhKEiEGFeIh3CgmVKaysoNp2dVmVbVuV0qIYZ9+6o7Mz05vZNcWTBF2iPHUP
omN07NChm5eiwKxL1yCpIAg8dej7zezqKIRveTvf+/39ft97RG2dpu87KUFUc0OVK6Wnbk5Ni4Mf
KUUd1E5YphX46WJxjLHruZK/u9fWZ9LYst7HtXb79j21lWVgIeottrcQ+iGRZgAfmZ8oZYCzwB2W
r9g+ATxYDqwa8COiAw+auTDT0Zx0pbItkVPmoigqr2I7Sa77+bnGvou1iYP+XI9m1o69s+qq0UzU
tPdEobwPrkQZz19U9mw1FKcN45xIQxop8q7V3ytMxxGRKxBKBlI1ZLmfak6ddeB1GLtdupPj+PYQ
pT7JYKiJtemymR2FfQB2KsvsEPAF6PGyYg/ngXth/1tRw5PAJ2E/ZId51q0f9heuU+B7hD014M4U
rsXx2oofXi0BQ/dUI2iMc03E09c5c6SI7zHUGZj3RjmmCzF3lqoTN4A7YR9ZqmYKsV37ruol7nsC
d9PjO9GbOQtcoBxJcrEV2RTQPAlYFH2LsEkOPD7OHlXgd6iYwBy5idzNKPce1REbZ6NSgVZ6jVfG
T+O58cX4ZWwYz4B+rHbXe3z/6eMVdde2Pjz5jXrcOa69nRtVYVZxZQvd/8cyhI/ZJzmmwdOhWVhr
2HbkD5rMTLAMKMR/BT6X+pITVdzV7u24RRLMUD4sbCW6S1RuKdTqPYNKrBwr2AB2cJLELFocuFNr
ujl4d9giem35TVey64b++vZ6+9ryHm3KqCkoE82zRGaUsVuj5N142/1mkRGfODq+572KWsn+SUUQ
P4U5WiryFFX0VlDWxG9nDn4btn5cP6Xn9UH9PAk9rZ/Rr+ijEb4MdEnPwnNRH6NJ8LBpIeISoIqD
M9ROVGONA+Ip8fK0W2SR/Q9AGf1mCmVuZHN0cmVhbQplbmRvYmoKODEgMCBvYmoKPDwKL0xlbmd0
aCA5NSAwIFIKL04gMwovQWx0ZXJuYXRlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRmxhdGVEZWNvZGUK
Pj4Kc3RyZWFtCngBhZRNSBRhGMf/s40EsQbRlwjF0MEkVCYLUgLT9StTtmXVTAlinX13nRxnp5nd
LUUihOiYdYwuVkSHiE7hoUOnOkQEmXWJoKNFEAVeIrb/O5O7Y1S+MDO/eZ7/+3y9wwBVj1KOY0U0
YMrOu8nemHZ6dEzb/BpVqEYUXCnDczoSiQGfqZXP9Wv1LRRpWWqUsdb7NnyrdpkQUDQqd2QDPix5
PODjki/knTw1ZyQbE6k02SE3uEPJTvIt8tZsiMdDnBaeAVS1U5MzHJdxIjvILUUjK2M+IOt22rTJ
76U97RlT1LDfyDc5C9q48v1A2x5g04uKbcwDHtwDdtdVbPU1wM4RYPFQxfY96c9H2fXKyxxq9sMp
0Rhr+lAqfa8DNt8Afl4vlX7cLpV+3mEO1vHUMgpu0deyMOUlENQb7Gb85Br9i4OefFULsMA5jmwB
+q8ANz8C+x8C2x8DiWpgqBWRy2w3uPLiIucCdOacadfMTuS1Zl0/onXwaIXWZxtNDVrKsjTf5Wmu
8IRbFOkmTFkFztlf23iPCnt4kE/2F7kkvO7frMylU12cJZrY1qe06OomN5DvZ8yePnI9r/cZt2c4
YOWAme8bCjhyyrbiPBepidTY4/GTZMZXVCcfk/OQPOcVB2VM334udSJBrqU9OZnrl5pd3Ns+MzHE
M5KsWDMTnfHf/MYtJGXefdTcdSz/m2dtkWcYhQUBEzbvNjQk0YsYGuHARQ4ZekwqTFqlX9BqwsPk
X5UWEuVdFhW9WOGeFX/PeRS4W8Y/hVgccw3lCJr+Tv+iL+sL+l3983xtob7imXPPmsara18ZV2aW
1ci4QY0yvqwpiG+w2g56LWRpneIV9OSV9Y3h6jL2fG3Zo8kc4mp8NdSlCGVqxDjjya5l90WyxTfh
51vL9q/pUft89klNJdeyunhmKfp8NlwNa/+zq2DSsqvw5I2QLjxroe5VD6p9aovaCk09prarbWoX
346qA+Udw5yViQus22X1KfZgY5reyklXZovg38Ivhv+lXmEL1zQ0+Q9NuLmMaQnfEdw2cIeU/8Nf
swMN3gplbmRzdHJlYW0KZW5kb2JqCjgyIDAgb2JqCjw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgov
QXNjZW50IDc3MAovQ2FwSGVpZ2h0IDcyNwovRGVzY2VudCAtMjMwCi9GbGFncyAzMgovRm9udEJC
b3ggWyAtOTUxIC00ODEgMTQ0NSAxMTIyXQovRm9udE5hbWUgL1RFQkVXViMyQkhlbHZldGljYQov
SXRhbGljQW5nbGUgMAovU3RlbVYgOTgKL01heFdpZHRoIDE1MDAKL1N0ZW1IIDg1Ci9YSGVpZ2h0
IDUzMQovRm9udEZpbGUyIDk2IDAgUgo+PgplbmRvYmoKODMgMCBvYmoKWyAyNzggMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDI3OCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
NjY3IDAgNzIyIDcyMiA2NjcgMCA3NzggMCAwIDAgMCAwIDgzMyAwIDc3OCA2NjcgMCA3MjIgNjY3
IDYxMSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NTYgNTU2IDUwMCA1NTYgNTU2IDAgMCA1NTYg
MjIyIDAgNTAwIDIyMiA4MzMgNTU2IDU1NiAwIDAgMzMzIDUwMCAyNzggNTU2IDUwMCA3MjIgNTAw
IDUwMF0KZW5kb2JqCjg0IDAgb2JqCjY5CmVuZG9iago4NSAwIG9iago8PAovTGVuZ3RoIDk3IDAg
UgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDU5Ci9IZWlnaHQgNTkKL0Nv
bG9yU3BhY2UgL0RldmljZUdyYXkKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9GbGF0ZURl
Y29kZQo+PgpzdHJlYW0KeAHdlu1LImsYxp3RcbQZXVMzC920IcKyTApmIwyxbasPUhZFRbEaQUlS
UAuF04cCT4V4EBRasU1ifSk6TUm2br5E/9o+Y6m9aHXsy+E8H4b68ON67tvnvq6bxfp/HAiC8weC
3l4Sg3EQhMtFUZTLRRAODL8Nh2A2B0F5VZhAyBwBVsVDEQ4bflUbgAjKx4QisbSmljk1UrFIiPFR
5BU4B1YJRBJZvaJBTTBH3aCol0lEgqqXYQjmcPm4SCpXqps0Wl2HXq/v0Gk1TWqlXCrC+VxO2VtD
MMLDhNK6j4RG10n29BpNfSZjbw/ZqdMQH+USIYYiZViIjfDwapmSaNGTvX1DZsvY+Pj4mMU81NdL
6jWEQlaN8xB2qW4xpEAsVzXrSOPg8MSMdX7BbrcvzFtnJoYHjaSuWSUXC3ildJnbCiT1ja1dhgHL
tM2+8m3dSW1SzvVvK3bblGXA0NXSWC8pxd6TRBtpMk/OLa05t1x7bs/fHveea8u5tmSbNJtILVGS
hTkoLq4n2rv7LbOLq5TL7fXvB4LBYGDf73W7qNXF2ZHPn9qIejGGcuBHDxNic7FqeWNb95cxq2Nj
2+0LHB6FI7FYLBI+Ogz43Nvrjq+j/Z+0ank1xn3cKhjhC2WqVrJ/1LpM7XgDocjxKX1+cXFxTp8e
R0LfvTvUsnX0M9mikgn5yENZiI3iEkVzl8kCyD3fQfiEjieuksy5SsTpk58Hvl1q+euIqatZIcHR
h7JAVCQndAbzrIPa9YeiZ/FE8jqVzmQy6dR1MhH/J3ro33U6ZswGHSEXPZKFUVyq1JADk4sbO77Q
MZ1IptLZbPbm5gZ806nkJR079P21vjg5QGqUUhwt3hji8D/IiQ6jZW5123sQpRO/UxmGuzvZTCqZ
oKMH3u1V24ixg5B/4HMKbwpGMAkQHZxeotyB8BnQzCkW2CzQPfv53U0tTQ0CWQlWbBSMCmXqdsOw
bc3lC53EC+Tt7W0OZ3TjJyGfa802bGhXy4TFG7N5orqmzr4JuxOI0on8bQFZZBN0OOB22if6Opvq
RDz2/auAOFVihYYcmlnZ8v44jifTTJ057u4D/sumk/HjH96tlZkhUqMQVyH3xUIIJm3Q9pitay7/
0enlda5FT9DM9eXpkd+1ZjX3aBukWB6FEbxG1d47Mr++tx+mr1K55j5Gb7KpKzq8v7c+P9LbrqrB
832CuYLaxg7j2AIoNXL+6+l9c/Vm07/OI6DYhTFjR2OtgHv/y4IG1xJ607id8gSjF7lSH2gyf+aK
vYgGPZR93KQnagstLqCbnmDsBTQW9GyWQytQfUetlXf4Hb/rO14T6+EbjvyrN8x6dXLA1JWZnPy8
TpWf18QZGBxqafrpvN65hL7oEsn83DHjCqb1971LzFmeugS4MS79+II3JejjkG9no4Q3sV5zxLNo
yL9LOWZLOCLjw9IXfDh84NsDHm4p4cOMLHD/lnLuH7hz/36y9Zn7s4qZM1o6czYc1tEv3W2NzzOH
9XrSWfq720HS4U+TjpXPV23pfJ1j8hVk5EvZXDrVp5lUby2T6ixQ7pt2iYcpV4joFzeYFkJZfoMB
us/2JlNxb6qTCrGS+8uddOXbGqMLlsuKdkSgXfFmytwbwJXtwzm40i2cgYF2Zbv/Hfxf/f4BZjQ7
qgplbmRzdHJlYW0KZW5kb2JqCjg2IDAgb2JqCjgxCmVuZG9iago4NyAwIG9iago8PAovTGVuZ3Ro
IDk4IDAgUgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDc2Ci9IZWlnaHQg
NTgKL0NvbG9yU3BhY2UgL0RldmljZUdyYXkKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9G
bGF0ZURlY29kZQo+PgpzdHJlYW0KeAHll99LImscxnX8NWqNaW6zTWOspzLdIgmm1QkMTrquShcR
K0TtRBBEF6IV1IUXkmV7EbiZ3hSSCgWlS6C1a0ku/Wv7jmeysZy3Pa03e85zIcO844fv+2Pm+zwi
0f9OYjGCIBIgKUTsOHhMLIYsD+BIZTI5iqJKpVIlKDAIHpHLZFLAa44TIxLAUanbMY0WSCcodlSD
tatVgCdpRmNJCmUbptV3ve4mekjSICiS7CGI1116LdamVDShiRGpHG3TdOJEr7HPNGi2QGUeNPUZ
ewm8U9OGyqWPSmNRKkyHG4ymIeso9c5ms9tpAdntNts7atQ6ZDIacB2megyrofSE0TxCjU9Mvv/g
8fog8no+vJ+cGKdGzEZCX4PxdkAsAVXpyf5hyuHyTftn5z8xCxAxn+Zn/dM+l4Ma7idfAZiEt52I
DAWoASvtnPIzSyuB4OraOkRrq8HAyhLjn3LS1gFSj6EypF6YWKJQ64h+67h7hlkObYQj0e2dGEQ7
21uR8EZomZlxj1v7CZ1a8VAYIlNqcOMw7f64GNiM7O59SRwkkylBJZMH+1/2diObgcWPbnrYiGuU
D4UhcnWnYZByziwGw7F46jCdyWRzEGUzx+nDVDwWDi7OOCmzoVMtr09SgmK4ccQxxQTCnxNHudOz
88IzOj87zR0lPocDzJRjxIhjqIRbMLFMpSVMlNO/vBlLpE8KF8XS5RVUl6XiReEknYhtLvtdlInQ
qmTcTiIytb73Le1jgpH40cnX0vfy9U0Fqpvr8vfS15OjeCTE+OihXr36fsEQeXvXG6tjemljN5XN
l8qV2+qzuq2US/lsandjaXrC+qar/X7BEAWG943+7V8J7x2eXnyrVH9wumui+7Fq5dvF6eFeeMU/
OdqHYwpu8RFU0z1AuWYDkXj6rFi+rbGaYOq3WF71tlw8S8cjgVkXNdCtQTmWBO0gTGPuueDW/vF5
8fpZ1N1dDXZdPD/ejwbn3GMmouN+IyVKbY/Z5plfjR5k8qUbllUvQeCCLeymlM8cbK/Oe2zmHi2P
RVpsXmZtO5ktXLIsAQLvNsu6LGSTO2uM12YhtUrugIG6SIvdu7C+w7F4/xG85Fix9QWv/U9jXYHj
JTgx3sCPauUKrNfjOUpVOoOF9i2sx1K5AmDx/gG5ZFm5FGD5aItBp5L+83K3ktWwj785xwYWe74g
M6sP/YlnonXvUOve7RZ+c1r5LWzpN/r3eoejoXewPW3o5T3tLa+ncb3W9bJe62zotaKnHiAP9wB5
QQ8gqnkTM8+bHL/cmzzxTPvAMwmaJjAE8UwNXi4IvNxWFO7loqyXCzb1cqInHjME95ghYY8pqnnf
Vw/ed+5feF/WSD9YTPCl5nlyGnhyt8cLMeVer8cNPDnd3JOLHmWFMTYrNE8L7H2bbayWFf5qmhVq
MJBh9C3IMCIAq2cr/BeyVTcunK3AmvEyXwcs9LFjHdDMx7ZKLosqfiWLKqBZlKWJWpaRa7T/4M9P
Wk6jXQplbmRzdHJlYW0KZW5kb2JqCjg4IDAgb2JqCjEwMgplbmRvYmoKODkgMCBvYmoKPDwKL0xl
bmd0aCA5OSAwIFIKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCA4OQovSGVp
Z2h0IDY3Ci9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRl
ciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB7Zj5O1tbF8clEonMkRBCCDGFEFFjkEZNpWmDlhou
VVFDUbeG0qaUmuc2NaQNMTcaQkhEg/vcf+1dJ4PpanHfX+96nhznJCeffH33PnuvtVxc/oubO4BC
oS8ECnXz7/7qTgTpisFi3XA4vD1wODcsFuOKRv97PECB6YbHE4gkMoVCpdJoNCqVQiGTiAQ84IH+
L6QjVIC6E8lUugfTk8Xy9mEj4ePN8mIy6TQKieiOx2Jvy0bZqAQShc708mZzArhBvOCQUCRCgnlB
XH8/NsuTQacgbAyY8isjL7+PYHHuRKB6+/oHBofxBdExoti4uLj4uLg7sSJhtIAfyuNy2CwmsPFu
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
p62+XH4vIZLLol3KsAANSRZkb0BOzJCX17YqByCLXV7f3NoxmswWSA2tkHHaAs4OAbpvNOh1a5Bs
jve/bVGUyKTxkYHedCLuUk7oIJMZ7CBBglT29DmSd09+US+uQNpt2DHumUzmA1uYITneg+wYSb0X
5lXjA+/bGp49yU27w+cCFwy+aATiBqKZ7OHD5cemZheU1zS/6RkY/zT7dXF5bUP3Q7+1bTAYduC1
vaXf1K2vLi2oZ6ZH+5XtjdUljzLFMWEBLOBeNhjhOtygs/xDhYnS3Md/1DS1K/uGx6e/zH3VaJdW
VtfWkVhbWVla1KhnVVNjgx/etr5UlBXkSOIFwRwvpG66Qq+TTKR5+gbxRUg1Vl7d0NKh7B0YGZ/6
pJqZnZtXq9Xzc7MzqunJseH+nnftr+qqSgpypYnCcC6bCZXeVT7YJIMbUDhRPLw5wYJYcXpu/tNK
RcMrqPR6+voHh0dGR8dGR4eHB/p7u9+9aW2qqy4vepQjTYIK0g+Ksd+XvUgljSfaKt5IUZIk80F+
cXlVTX1TS2t7R2cXEp0dba9fNdYpnpUVyXMz0hJikJqXAU2Aq0sxu2DkiEZDR4FM92QHBPOFccmS
jPuygqKS8sqqakXNi9oXNYrnVRXlTx/LZdn30hJjo8KRUppGwl9fpYMd0KwgkKFXwQkMjRDeSRRL
0rNy8mSP5Pn5Bfly+UMo/TOhs5AgiuaHcP1YSPEPdfSFBeJM54UzG9qdRGV4sTmBIeGRQlFcQpI4
JS1NIpGkpaWIExPuiKIjw6AV4uPpAV2WG7Ur7L+AoN3wRAqN4eXj68/lhYbxIwVR0dHC6KgoQQQ/
LATpr3h7elDJ0GC5Xc8Jek0YpH0DrSboNPn4cqAvZIsAf44f28fWESIR8bhbtYQcvtjYSB+LRKHS
6Qwmk+np6QlHBp1OtfWwoEF2i0bTJbdtnTfo5RGIECQSCY4Edzwotff0Ltx9ywtb/9EVA91CR2CQ
NuH/0Se8/PsoZ1z+4L/rax34H8he9PwKZW5kc3RyZWFtCmVuZG9iago5MCAwIG9iagozOAplbmRv
YmoKOTEgMCBvYmoKPDwKL0xlbmd0aCAxMDAgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9J
bWFnZQovV2lkdGggNDMKL0hlaWdodCAyOAovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovQml0c1Bl
ckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4AdWTyXKDMBBEESC0
gQCxiMWA4/z/P6aHRbF9SM5+VcIUtFrjmSaKPg7GWAzww/6unXRJkqQpLgltCbxvJWHKeSZAlvEn
Umx8OYfFCc+k0obQWp1IKUXGU4hDTaQUyuTWlsCCotgvuTFKZnAOWvJUxlZ104LGufqkKm2uoY3j
05bFKZfG1k3nh2EcvPd93/VYXdvUJbQ82EIqVFG1fphuy7LcpovR+9aVuRL8qoDFXGhb98O0bHew
beu6rFjLPA1dbQ3ZHhWwhEttnR9v6/3r8XiQfGfDCb4pn6Wn6zhD+v2vVBV156dlpQo2sNKC6dC5
lwLiNEMHXOvHacbfmsE0z7d5Goe+qQoteHI1dp9AXlK30C4066TvWlfBFI29pNRYoXJb1g5DaAhH
C6MoCyhDA6IIaSGtNjTOfbA0XKIwWuL4YLprMVshj8Togz03lBcKV8hLRHlNEUOevYAHewp/hXR3
fASU7Gco4ezJMuyhr+Wd8PLDbn4AKsEgUwplbmRzdHJlYW0KZW5kb2JqCjkyIDAgb2JqCjEwMgpl
bmRvYmoKOTMgMCBvYmoKPDwKL0xlbmd0aCAxMDEgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBl
IC9JbWFnZQovV2lkdGggODkKL0hlaWdodCA2NwovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovQml0
c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae2Y618SaRTH
5T6AICCCgigJYbIoUihoXlBLwyxNs3BJ09VM09WV1c1LmaamUqRpmuUlTVLXGxbeL5/+tX1mQAVn
uL3f36vhGfjN+XznPOc8nKCg/+WLAA6Hx+MJBAIRU+AGuI3H+XJB3cfhCUQSmQJBVCqVhhZYhSAK
mUQM0BvYksgQLZgZwmKz2Ry0wCqLyaDTIDKJEEDYODyRDNGZbC4vXCCMjBShFRkpEITzuGwmHQJR
+wsEhydR6EwOTxB1SSq7EoetWJlELBKEsRlUsr/OwBeis8IEYplcqVIna7QpKGm1mmS1Kj5OGh3B
ZdIoRDzqHWEt4IkQnc0XSRVXtenZN/P0+RjS6/NuZKVrVHJJZFgInUzwxxlPoABf8RVVara+sNRg
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
i+5U7gPTW7eT0GTAsAHuat+FpiKYZPTMfSSECgjFELKy7rAD7XagJyA8C4FBc/CjaCmEtRCegsD2
53ZD6Qh+tJsVoy/jpciJR0XVrHei2eG1S2rv2+Bi9zzjfd/+6VHYgNeiT7CjW4tUd0j4WfwjNBN5
8Yuwy7AMbgxn4KcPRuZ5m6BpN1oAoR0Co8QY7+72FHqP42wUZDG8E0IeFh/y/rogx/tZQYzgbu/J
cIyF5CceKEVTvCfcz3j/yz3bexzC3mTTngj0OOTd7Z7n3eSJ4ae7vRvpQqfbuyGZ3O+GVw9550e2
eGcWKO1jtsTI3m5vKbRPiqq9JYP83mL3FW9eOCZiKOe4x3gzC37mTYcXoZsPBg1GDV6Xe5N3MDR5
3NXhwRCO4j14G8rE27qDo7wvQxbQPTgyMmhLDH/v4IiMAjhqXBYtGZGxJTIiHIyM8QYjw8NhyE86
K6wU7hLuEAqFLLi0C46dkCqYRaOoF3WiRpREWM7G8EvdFV7+KN6LKoAsew+KvAj29sdQyR7F+5TK
fYdFViQiEs2xxMdwUIIRLPP29oDIYQSZQ7yS42N4H9yToFX7ol6YChixSoMepJDejaAxIlgkaBTc
jnwsxqNV1rYKe4VxqKF0eNX/FTUpLTdj6kn+Hz87dndtgft5XXvcDXAVEjIJd8PNvuBc/D+/xfdD
h5ZKxQk52LZg7izlameguqUJbnh2PdoGV23bp/t8B+YuoA30TmHT9BmtNG1u6VoQaKnqmhuo8h1o
U977RvMs2twWqDqAZlVPrD8wK9pS1d0WbaumV1wPTq9c1Hjbt9b2f2tR5T/4ViUdbBH91nTlvW98
q5E2T6ffaqTfaqTfmh6drnyLkqB6Tl3lfYtBOuH6J1y/zKjrGjl+Sj3ccm6oiuEd9E7o/eh/AI7Y
pcwKZW5kc3RyZWFtCmVuZG9iago5NyAwIG9iagoxMjQwCmVuZG9iago5OCAwIG9iagoxMTIzCmVu
ZG9iago5OSAwIG9iagoyODQ4CmVuZG9iagoxMDAgMCBvYmoKMzgwCmVuZG9iagoxMDEgMCBvYmoK
MTk4MgplbmRvYmoKMTAyIDAgb2JqCjg4OTkKZW5kb2JqCjY3IDAgb2JqIDw8Ci9Gb250IDw8IC9G
MjUgOSAwIFIgL0YzOCAxOCAwIFIgL0YzOSAxMSAwIFIgL0Y4IDUgMCBSIC9GNDMgNTEgMCBSIC9G
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
40td10HEiSkZRu7MQ0bDc31ZqSlfZlx+CAVBEi/82IN06b9mXJBQJXl4nXKBTmIo31JWTZi6MSRJ
KLQsSq6egcJ08psrdYMgxAou8/KrNJdTTbft9pJlXq2/lnmpe1Md/n+Ln04nt+33BpcfBfEfATk6
sQplbmRzdHJlYW0KZW5kb2JqCjEwNCAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgMTA1
IDAgUgovUmVzb3VyY2VzIDEwMyAwIFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCA2
NiAwIFIKPj4gZW5kb2JqCjEwMyAwIG9iaiA8PAovRm9udCA8PCAvRjI1IDkgMCBSIC9GOCA1IDAg
UiAvRjQ0IDY1IDAgUiAvRjcgNiAwIFIgL0YxNCAxMDYgMCBSIC9GMTYgNCAwIFIgL0Y0MyA1MSAw
IFIgL0YyNiA4IDAgUiAvRjM3IDEwIDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBl
bmRvYmoKMTExIDAgb2JqIDw8Ci9MZW5ndGggMjUwNSAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29k
ZQo+PgpzdHJlYW0KeNqtWk2P2zgSvfev8GUBGWgz/P7Y2w52gp0FBthNfJuZg2Kr28LaViLJ6el/
v0UWKVPdiiZOCwEiilWsVyw+ydRr/rS9e/eeq5UlTmu52j6smJDEaLXSjhNG1Wq7X/1WMLrecK1s
sV1bVbT1Q7n+Y/vvd++FzUYqRZRzK4pDqn69EdoU5ZGgr105cOXau26i74Yr4qjAEWq9kcIUXbVr
zvuO+DsAPKxZ0VbrDSsqtLeXc4etQ7nmtvjq/6vQ+xOkaYqqOuPtZ7xtH5r2VO2x76nuDzFQ1XkH
GLzra4xyfEaTonjdV1/rXdXd41BGqZ8KzHDDGHEqFidzghjleY8NTik2oj2a+77ceaxDtSfYtT1U
2OjrU2y11ZdL3a7DnFkRApqib5JxV/l8YWb3aPncNmEigJKnkeeqU67HONUWlgfmVB6PvgHRfRa+
UWHos/fqu2hs0Ls5R6fdsY4eaDiU0fMTVtSvgL89VWV3aav9fUTzxRFY+8sxRS/bCs3dofExn+Lg
+jxV7vf14wUHiEIEbt39vL1j4EZXDOirCVNupRgQ07LV7nT35Y4SKIkVwSVvB6OioXvF4xU63/1y
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
KHf+MCa2u/rkTZdjH/4uEDJqLtAK4qz/y4XXyQzP/kIAo/pD21weD3jzr+32P2srgiwKt172m0g/
idsqywfvM3EbbjKprQ3ynx/xUsKXXqBtq3IfOKuTxgndOLcULar1eiTRovTnfYN6B9a672YOz/qi
Ar3Auzl5AZxb5LDvDeWD8h/DYga/ymftfa5iZwyBuYWF87chOe/4SmIOtfSWX84vXL1a3PpC+t5d
2VX3U4lLGs73wmJk538NDTWr0IDL4VutX+1wbBlu4glkaDEMQXP6xDAqBh9N0Hfg+WLw4OqVx/3V
Jf7e/B/oO12hCmVuZHN0cmVhbQplbmRvYmoKMTEwIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250
ZW50cyAxMTEgMCBSCi9SZXNvdXJjZXMgMTA5IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQov
UGFyZW50IDY2IDAgUgo+PiBlbmRvYmoKMTA3IDAgb2JqIDw8Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0
eXBlIC9JbWFnZQovV2lkdGggNTAwCi9IZWlnaHQgMjAwCi9CaXRzUGVyQ29tcG9uZW50IDgKL0Nv
bG9yU3BhY2UgWy9JbmRleGVkIC9EZXZpY2VSR0IgMTA4IDExMiAwIFJdCi9MZW5ndGggNDc2NQov
RmlsdGVyIC9GbGF0ZURlY29kZQovRGVjb2RlUGFybXMgPDwgL0NvbG9ycyAxIC9Db2x1bW5zIDUw
MCAvQml0c1BlckNvbXBvbmVudCA4IC9QcmVkaWN0b3IgMTAgPj4KPj4Kc3RyZWFtCnic7V3boqwm
DNXtzJd6b/v/z5WrRBFDQEWG1dNx62hQ10BCEqCqNminrq/rdXfZ67vWuleQC2oOtTeI3Xqw7BVk
g76b2pX0vh7bqh3r3rK3RV2QFDyJ1xdMmu1pt7e/yrOUS0SUm6BK0KR3kt6p7nZ7waVcIqLcBFWC
Jr2vhdHW8joO94JLKbgUZNLhH/vD/qV8CyIARSLmJPP8C0gH96s2YGfZ/G2PVdWH73w+H70BO3cc
u73A05tAkYg5yTz/CtLFpwfpjG75qB8GtQE7dxy7vcDTm0CRiDnJPJ+m09llfwtv1o8v/+vJNjEX
cNIP37P8COiyRbTev7KFFzsHNd04lmolS+ImUCRiTjLPv6Cf/pW8ix1P0hNSp9GPNcumkZ9wc7Rz
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
QAwThDKIIZRBzOQMoQxiJjGEMjhBOAbJTP+Pgqo9j2ftXVuPlQRgZlYh0CKE95vpAxEUA53T6oRa
YIFENavRSPV3dRfS0aZw/9VV7emiEwp/v0x2Dcs4jgdGVnirwpEZ6fWoBXNkdLjY0rxuhtWtheZt
PBtmkp1YjZJ7T8eOaKNaen4cclS1Lg0N+r7HqeDyxImYUJs4YqmlPfPDtH7mf2qcpfmRWT+MEq/r
ejwe27Y9n89938/zPI5jA3bgBP4BTZGZbAplbmRzdHJlYW0KZW5kb2JqCjEwOCAwIG9iaiA8PAov
VHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDUwMAovSGVpZ2h0IDIwMAovQml0
c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIFsvSW5kZXhlZCAvRGV2aWNlUkdCIDEwNSAxMTMg
MCBSXQovTGVuZ3RoIDQ0MzcKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0RlY29kZVBhcm1zIDw8IC9D
b2xvcnMgMSAvQ29sdW1ucyA1MDAgL0JpdHNQZXJDb21wb25lbnQgOCAvUHJlZGljdG9yIDEwID4+
Cj4+CnN0cmVhbQp4nO1dCZKDIBDUNXmp9/8/sHIpA4jDrYaurWQ9IbYDw9BA0yjol2Fs22Nz2xqH
3rhV8Ra0FGJrYpvtZNiqeA3GYekP0sd27pt+bkfDloq24lZwJH6/YNnZXrQt/SrHVJKgZkLAm/SB
07u0g7YVnEoS1EwIeJM+tsxp66mNw63gVCqSwpt0+I++OygVFV+G0233E3JccdtMtGDHNQqRLn2a
tlEn/Lle8fl8bDvCT8hxhemEFuy4xptJ/8ATPgSWHeEn5LjCdEILdlzDs04nl/1tT93z4/v3rYgH
b9Kzeu+sCgq0dG0HsGxhER+OF1h6R8C3ux0hlp6xnf79Rine1R2grvvwh/M5O+EudXq37egkTtm2
xOmx4/SW3nW6W0TOJQkFhHFeLEn74La/G3wYNvaKBJnAncA4ZTg4vbjlfoG8o5V3XAFE8Vxi7/6k
u7UtrPgDW4JssCdaWgLqo+3+OvWEzrLdyZBu2GknnO4wwYkOGLp16GVzJH1/WyNSDvHROad1fCgu
KDVwDK/h2ztzCsc4Ti+RJ1bmSjr7jEz5ziknO4Fl2+0WcNzZsJ8fhWMN9yU9tpXrVIdzrpXecI+N
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
XPdlN9TFE/kE8FyoriylKJ3WspUUwRz42z5y86URX/TSkistVjAw/dLAqNMXTxTRShYsF2TLvU/i
tEGLVot903wcKbvSYgXFQuXcC6PBsHgiW1xlEgvzsL7RSe592t+NhfZLDfKRcaJdVeyLCxBDVlqs
iALO5spVDfriiY20RyyiOMur1wjSF/m85tjXiy++Jk8t2YuDC4PY6APT4om0lt8LZLrOllhsi2Gv
0xv5W/offIWttFgRBYCsVid9kvc0bNVU08pqWNKvV1qsSA7F0rXFEUe2iJokvhihobuS3oSstFgR
BUqdrpmwsM+dsmNVPfk0J9LVjYrMULx3bXHEka6suByNrEUVEbmRDlZarCgEYzv9MHK+ZzjIHBXC
3EgX96+uXFHAiJy2OCIfpXuQOSuEuZEOVlqseAj6Wh3/HGDMreIXcCiGK34GNJxeUVFR8TL8A9dq
X7cKZW5kc3RyZWFtCmVuZG9iagoxMTMgMCBvYmogPDwKL0xlbmd0aCAxOTggICAgICAgCi9GaWx0
ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42h1PW3HEQAwThDI4QyiDmEkMoQxiJmcIZRBBOAbJ
TP+Pgqo9j2ftXVuPlQRgZlYh0CKE95vpAxEUA53T6oRaYIFENavRSPV3dRfS0aZw/9VV7emiEwp/
v0x2Dcs4jgdGVnirwpEZ6fWoBXNkdLjY0rxuhtWtheZtPBtmkp1YjZJ7T8eOaKNaen4cclS1Lg0N
+r7HqeDyxImYUJs4YqmlPfPDtH7mf2qcpfmRWT+MEq/r2vf98Xic57lt2/P5PI7jH+zimG8KZW5k
c3RyZWFtCmVuZG9iagoxMDkgMCBvYmogPDwKL0ZvbnQgPDwgL0YyNSA5IDAgUiAvRjM4IDE4IDAg
UiAvRjggNSAwIFIgL0YzOSAxMSAwIFIgPj4KL1hPYmplY3QgPDwgL0ltMyAxMDcgMCBSIC9JbTQg
MTA4IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQyAvSW1hZ2VJIF0KPj4gZW5k
b2JqCjExNiAwIG9iaiA8PAovTGVuZ3RoIDI2OTYgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUK
Pj4Kc3RyZWFtCnja3Vpfc9s4Dn/vp/DLzSgzCZf/KT220+3c3Vz35raZ6UO3D4qtNJraVlaSm/bb
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
b3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDY2IDAgUgo+PiBlbmRvYmoKMTE0IDAgb2JqIDw8Ci9G
b250IDw8IC9GMjUgOSAwIFIgL0Y4IDUgMCBSIC9GMzkgMTEgMCBSIC9GNDIgMTIgMCBSIC9GNDMg
NTEgMCBSIC9GMTEgMTE3IDAgUiAvRjcgNiAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0K
Pj4gZW5kb2JqCjEyMiAwIG9iaiA8PAovTGVuZ3RoIDE4NTAgICAgICAKL0ZpbHRlciAvRmxhdGVE
ZWNvZGUKPj4Kc3RyZWFtCnjanVhLj9s2EL7vr/BRBmKt3o/jBknaFE36WAM5ND3QEm0RkUWHlLLx
v++85JU37qFFgNVwOBwOh998HOf19u7+XZKvqrAuimy13a/iNAvLIl8VdRLGUb7atqu/gjhZb5Ii
r4LtusoDZ/Zq/ff2l/t3abVYmedhXteriJfocb1JizJQfci21aoG06RA043YbpI8rKOUV4ydnQ4d
rKqi4M8PjyCUdaBGVij+jOao2V0cL/zFURbmZTzvPbJJuSrCuoQYwSKF/arVJg6zWs6U/BhWFmZF
vVrYhLzrttOL7UlqzecoTrXTQ3MroDoPi7r4P/HE2cIN2NfJMqDPURTdPH+Y/Mfjxz8evwqTPF3u
1ljntD/B3VeBHVovSbB8NeNVVsAbXGcWh1FWwEZxWOfixemvk3G6RTxkvLpIg8ZpNWrWqUEmW+NP
amzWsF8n5p3YMCJg4VF7rw6i3Tt7fGH46fEjGx7Ifxw8oTuFf87P22G4kcRZzHE22nxDO/SUZoFB
7KUpHJ2/vAVMeDN8IVTfvd3eYdqjVXwpnCzPwhoS2hzvvt5FYVpXGVksRJqa14ni/v0xX72xd3/A
v3lqM/vcLJy+xpJN6xslm8E3ijI+zTtzAPTGdRnkUoBXZZ7GYX7B59vveMd1oJ05ruNAD5iEUfXr
TRbVgdfjBPNZzFePqqNWfnJalJgW1PaQ8KE5s9buWQn3FrJm+8GO2rN256xqG+VHnmKIwfYbxhFH
twFY13nNMVoyaU2j+h7vMS0DCnM6riHyncRPKEuLQPM9Djg3ejZvFNILKni8Q1lc7ZTXLPlRjYZv
vIByy6MH+BOHPMlEgFaAAJGmnW+cgbRJDLIb4RxcQLisQFzOqFucCyOt55Tj2jyXegBBqwZnOx4J
+4BEyIRvQ8UCBvqyUhYuz88qKRX004kbLhUQ8Jxj54R/aQNxCNUvWYKBZAnVkqUbB3qN+QKrqOQw
owKtHTkEnWIVnsWxZuyU2D0ZSlZUzrmcl9uTALQVw04P11ssitezRrEB8waMBzsiZ2fNfL8YzI65
bRrnUPTVkSo+kleU+Cz5Ia9ZOucVpBFAQKkFmVMLwk/IQs8khLmEJ/TGmxhDhWcZlHoRVpUU8aM5
ml45BHxSVoQp/NrJsQDsPPWYWRyYQawwBhTwtA5LDAf6+6XIjoI2nKgh6WPHJh6qHysK67hlVau/
mUb7VzxS/NlPWIJUqHPQS77/ebv9fYNQwcsqcyFsMxx46M9+1EeWG8IrCKNTgz/SZZbwDKhRsV6S
CxI8F7040IO3juVBaIEuHVbSYW5yu/J2ULseqQqKsdW9oMWdWYOAxHOirJClUkhIZ9HmaWC1kS9T
K0qFfN/LDBU7eetkI+C4i9tn8JRU6qgbtG719XMkaewhbXCoJMYCwTQlUVBErDnOM5a/COOSygUG
p8l3lHuQJX/kBJl9ttj1BozctZelidDaTjATsnbbGc+RzFx/I3C+1Jqj4scUBo0dvGmFoWvctNeO
LwSH9FLP+SHNnu4Yp4ApDvyw4JDJET3AjW1wGcQ5IgE3OCCUwGyrTz3d3nmGuw9vRfvbDie/GTt5
AHWVBoj1XPqJBKgOoDI3D6h/wtuzU9/y8HJGHHhzGIRjeEsqXPABNXzAbKMRnQuVL1LseRpoiqeR
o64CIRa6cYJfHz5yf6I8tyfSp6TCfSDAc/uF0f6KTSi3MGH2L1ububhAOUAPj/CnE7svrJy4rnE7
XiGcMZpNZ0/izUrP2NsD5DRjurswXJyESSLUSjyZRTfviycoX1kUMUQGvi1nh+NVmwI1YQczWkc8
g+ZOOY35x7mObnDu7djaicTVhVIe/TupCRGCYVFc2hUeYZ951WOiklCKAtzaqeegCmAx6klRb8TX
JUyQO3PoZq8SVoFA0AtX+kUINwDhNRRbi9QEqHnNRJwJorK8APRCsTiW5QV5xRZPc4awt7BD00+t
jPiRxhWKFfwIkLgkfBx7209X3cGCiIk/ABFUEdTIQcn5CYqmaIxQIyu5/sG0sX2vm5EfkOryOoAJ
EjJqCKbnE/aGrLigGORnFFeCYjRo9KCcsZ4dXbHPjYxKv5FiqLsN55fRf+l5cZKfUpQ6KoqhBbqT
orRSaZjWCX5WzU8wzrm1EODXaZY8d60pJ4yKER8K6RviYsXhJdg5QLBpGiaZ/I4uYH2c5MEb45vJ
e7mI62Yjop/eSSl9xkd7SZFqFV7CeX7zPyEn6p00ACfAMjdQnrsH6BnhZvTcoRg+lj4w0NGCr4v6
BnqMUHfhDMIzajz0NFRf1IhM8hPwxlUgySUJcNvj4/0DbUZOQbOHDFHUIO+AeWb5qE6zqMcmZOlB
3DC7gkDQmyiw3aW8cQIvjgxe4AhNWp5CuBE8cTAzxS0YSX8LPy0H/P3rNdJxhBXD6mcDJmSYAkvB
yrK9zfnRBkPfKadZ5JeR1lzdwpU/qR5WnVk6OWmjJv7PDPxZ+w+Oy7y1CmVuZHN0cmVhbQplbmRv
YmoKMTIxIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxMjIgMCBSCi9SZXNvdXJjZXMg
MTIwIDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDY2IDAgUgo+PiBlbmRvYmoK
MTE4IDAgb2JqIDw8Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9Gb3JtCi9Gb3JtVHlwZSAxCi9Q
VEVYLkZpbGVOYW1lICguL21lZGlhL2xhdGVuY3lfcm1zLnBkZikKL1BURVguUGFnZU51bWJlciAx
Ci9QVEVYLkluZm9EaWN0IDEyMyAwIFIKL0JCb3ggWzAgMCA4NjggNDEyXQovUmVzb3VyY2VzIDw8
Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCi9Db2xvclNw
YWNlIDw8Ci9DczEgMTI0IDAgUgovQ3MyIDEyNSAwIFIKPj4vRm9udCA8PCAvRjEuMCAxMjYgMCBS
L0YyLjAgMTI3IDAgUj4+Ci9YT2JqZWN0IDw8Ci9JbTIgMTI4IDAgUgovSW0zIDEyOSAwIFIKL0lt
MSAxMzAgMCBSCj4+Pj4KL0xlbmd0aCAxMzEgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0
cmVhbQp4AZ2ZSW8byRmG7/0r6mgfWK59OcbOggSYYBwJmIOdgyxRET3aRpRj+JLfnuerblItdpO0
ZMK20Op669uXl3+oj+oPZXQy7Y9aqXcf1ladr5Vtn/W5WhSno1pYkz3/W2uLsjEl9bBUl+20L0X7
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
t/iLsErRdQmajA4pdMmIVTpMwQimh6m0kUUWABt99BIggim0dmKKyJVB77p/VggQ3uOJEI1X08Pb
+JiqeECtFqM0eVhoJMGYvQi0e74oIn5rse6l/F/TqwY5z3cF6NdjGvjMTpZK+B6hq0RVtE4KJjOZ
Ct2w1ev54edc2eC5w/SfM/1KHCEebEphEAEWuLTvQ4ywFIO7fpZT790FX8sXKlC0kLSDrTzrTApa
RrWIrUQvxhanUisiUGxbveLz06LYx/8DeFsQjAplbmRzdHJlYW0KZW5kb2JqCjEyMyAwIG9iago8
PAovQXV0aG9yICh2bGFkb3VuZXQpCi9DcmVhdGlvbkRhdGUgKEQ6MjAxMDA0MjcxMDIxMDBaKQov
Q3JlYXRvciAoT21uaUdyYWZmbGUgUHJvZmVzc2lvbmFsIDUuMCkKL01vZERhdGUgKEQ6MjAxMDA0
MjcxMjI1MDBaKQovUHJvZHVjZXIgKE1hYyBPUyBYIDEwLjUuOCBRdWFydHogUERGQ29udGV4dCkK
L1RpdGxlIChsYXRlbmN5X3Jtcy5ncmFmZmxlKQo+PgplbmRvYmoKMTI0IDAgb2JqClsvSUNDQmFz
ZWQgMTMyIDAgUl0KZW5kb2JqCjEyNSAwIG9iagpbL0lDQ0Jhc2VkIDEzMyAwIFJdCmVuZG9iagox
MjYgMCBvYmoKPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1RydWVUeXBlCi9CYXNlRm9udCAvSkpa
WFBXIzJCRVRILUxpZ2h0Ci9Gb250RGVzY3JpcHRvciAxMzQgMCBSCi9XaWR0aHMgMTM1IDAgUgov
Rmlyc3RDaGFyIDMyCi9MYXN0Q2hhciAxMjYKL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nCj4+
CmVuZG9iagoxMjcgMCBvYmoKPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1RydWVUeXBlCi9CYXNl
Rm9udCAvSkpGSlJUIzJCRVRILUxpZ2h0SXRhbGljCi9Gb250RGVzY3JpcHRvciAxMzYgMCBSCi9X
aWR0aHMgMTM3IDAgUgovRmlyc3RDaGFyIDgzCi9MYXN0Q2hhciAxMjEKL0VuY29kaW5nIC9NYWNS
b21hbkVuY29kaW5nCj4+CmVuZG9iagoxMjggMCBvYmoKPDwKL0xlbmd0aCAxMzggMCBSCi9UeXBl
IC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggMTAwMwovSGVpZ2h0IDY0MgovQ29sb3JT
cGFjZSAxMzkgMCBSCi9JbnRlcnBvbGF0ZSB0cnVlCi9JbnRlbnQgL1JlbGF0aXZlQ29sb3JpbWV0
cmljCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlciAvRENURGVjb2RlCj4+CnN0cmVhbQr/2P/g
ABBKRklGAAECAQBIAEgAAP/hFahFeGlmAABNTQAqAAAACAAHARIAAwAAAAEAAQAAARoABQAAAAEA
AABiARsABQAAAAEAAABqASgAAwAAAAEAAgAAATEAAgAAABwAAAByATIAAgAAABQAAACOh2kABAAA
AAEAAACkAAAA0AAK/IAAACcQAAr8gAAAJxBBZG9iZSBQaG90b3Nob3AgQ1MyIFdpbmRvd3MAMjAw
NToxMjoxMiAxMzoyNTo0MQAAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAProAMABAAAAAEAAAKC
AAAAAAAAAAYBAwADAAAAAQAGAAABGgAFAAAAAQAAAR4BGwAFAAAAAQAAASYBKAADAAAAAQACAAAC
AQAEAAAAAQAAAS4CAgAEAAAAAQAAFHIAAAAAAAAASAAAAAEAAABIAAAAAf/Y/+AAEEpGSUYAAQIA
AEgASAAA/+0ADEFkb2JlX0NNAAH/7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEV
DwwMDxUYExMVExMYEQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAO
DhAUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/
wAARCABmAKADASIAAhEBAxEB/90ABAAK/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoL
AQABBQEBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVB
UWETInGBMgYUkaGxQiMkFVLBYjM0coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOE
w9N14/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQF
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
6i9kB4bP6Slzne303/yv+MToyrQ7FBHbd8vw+n5/X7qsTBFttdLX77rHwS20g2m+5rn10Yvs9lO+
3f8ApP8ASL0v6s/UvC6TXXa8C3Jb9G0tgMn/ALjVO/m//DFn6w//AINbXTOj4fTcdmPjVNqrZqGN
4n99xd77bf8AhbFeSM70GgQI9TqVmtawbWiAnSSTVykkkklKSSSSUpJJJJSkkkklP//V9UPnws8s
rNkNfDOxgz8OF8zJJKfqLGGKARQQT3PeP/Io6+VkklP1SkvlZJJT9UpL5WSSU/VKS+VkklP1Skvl
ZJJT9UpL5WSSU/VKS+VkklP1SkvlZJJT9UpL5WSSU//Z/+0aRlBob3Rvc2hvcCAzLjAAOEJJTQQl
AAAAAAAQAAAAAAAAAAAAAAAAAAAAADhCSU0D7QAAAAAAEABIAAAAAQACAEgAAAABAAI4QklNBCYA
AAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAHg4QklNBBkAAAAAAAQAAAAeOEJJTQPz
AAAAAAAJAAAAAAAAAAABADhCSU0ECgAAAAAAAQAAOEJJTScQAAAAAAAKAAEAAAAAAAAAAjhCSU0D
9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAyAAAAAQBaAAAABgAA
AAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA////////////////////////////
/wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////
A+gAAAAA/////////////////////////////wPoAAA4QklNBAgAAAAAABAAAAABAAACQAAAAkAA
AAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADSQAAAAYAAAAAAAAAAAAAAoIAAAPrAAAACgBV
AG4AdABpAHQAbABlAGQALQAyAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAPrAAAC
ggAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIA
AAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxv
bmcAAAAAAAAAAEJ0b21sb25nAAACggAAAABSZ2h0bG9uZwAAA+sAAAAGc2xpY2VzVmxMcwAAAAFP
YmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcA
AAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlw
ZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAA
AAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAoIAAAAAUmdo
dGxvbmcAAAPrAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQA
AAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxU
ZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZh
dWx0AAAACXZlcnRBbGlnbmVudW0AAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdD
b2xvclR5cGVlbnVtAAAAEUVTbGljZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9u
ZwAAAAAAAAAKbGVmdE91dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3Jp
Z2h0T3V0c2V0bG9uZwAAAAAAOEJJTQQoAAAAAAAMAAAAAT/wAAAAAAAAOEJJTQQUAAAAAAAEAAAA
AjhCSU0EDAAAAAAUjgAAAAEAAACgAAAAZgAAAeAAAL9AAAAUcgAYAAH/2P/gABBKRklGAAECAABI
AEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8M
DA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4Q
FA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AA
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
1+VbVk9Ysbm5FRH2bEraW4dB7fZMT/DW/wDdjI32K303pQFTMXp9LacYH2hoME9z+/fZ/Ld/1yxd
N07oFOP+ku91h58f7Th/1Ff/AIIlSrcjC6Fk51huyJa0/SE/9W8f9RX/AOBro8fpeJRR6LWAtgt4
gAHnY38xWgA0BrQABoAOE6KHmeufV9uTW1m/0rq9xw8sNDiwu+kx7HS2yp/+Eq/6/V+mqXmt/rdI
szMDN9TGyLCzfZWQXe079zTa6r7Ri5H/ABn+j/0fpr257GvaWvEtPZc99YPqnhdaZTTl1lxpfuov
ZAeGz+kpc53t9N/8r/jE6Mq0OxQR23fL8Pp+f1+6rEwRbbXS1++6x8EttINpvua59dGL7PZTvt3/
AKT/AEi9L+rP1Lwuk112vAtyW/RtLYDJ/wC41Tv5v/wxZ+sP/wCDW10zo+H03HZj41Taq2ahjeJ/
fcXe+23/AIWxXkjO9BoECPU6lZrWsG1ogJ0kk1cpJJJJSkkkklKSSSSUpJJJJT//1fVD58LPLKzZ
DXwzsYM/DhfMySSn6ixhigEUEE9z3j/yKOvlZJJT9UpL5WSSU/VKS+VkklP1SkvlZJJT9UpL5WSS
U/VKS+VkklP1SkvlZJJT9UpL5WSSU/VKS+VkklP/2ThCSU0EIQAAAAAAVQAAAAEBAAAADwBBAGQA
bwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAAABMAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABv
AHAAIABDAFMAMgAAAAEAOEJJTQQGAAAAAAAHAAQAAAABAQD/4TlkaHR0cDovL25zLmFkb2JlLmNv
bS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6
a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSIzLjEu
MS0xMTEiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIv
MjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgog
ICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgog
ICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL2pwZWc8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVz
Y3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAg
IHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6
Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzPC94YXA6Q3JlYXRvclRvb2w+
CiAgICAgICAgIDx4YXA6Q3JlYXRlRGF0ZT4yMDA1LTEyLTEyVDEzOjI1KzAxOjAwPC94YXA6Q3Jl
YXRlRGF0ZT4KICAgICAgICAgPHhhcDpNb2RpZnlEYXRlPjIwMDUtMTItMTJUMTM6MjU6NDErMDE6
MDA8L3hhcDpNb2RpZnlEYXRlPgogICAgICAgICA8eGFwOk1ldGFkYXRhRGF0ZT4yMDA1LTEyLTEy
VDEzOjI1OjQxKzAxOjAwPC94YXA6TWV0YWRhdGFEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlv
bj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6
eGFwTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iPgogICAgICAgICA8eGFwTU06
RG9jdW1lbnRJRD51dWlkOkMwQjk1MTNDMEE2QkRBMTFBODIyOUNCMjFFMkQxMDc0PC94YXBNTTpE
b2N1bWVudElEPgogICAgICAgICA8eGFwTU06SW5zdGFuY2VJRD51dWlkOkMxQjk1MTNDMEE2QkRB
MTFBODIyOUNCMjFFMkQxMDc0PC94YXBNTTpJbnN0YW5jZUlEPgogICAgICA8L3JkZjpEZXNjcmlw
dGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1s
bnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpP
cmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlv
bj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0
aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1
dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6TmF0aXZlRGln
ZXN0PjI1NiwyNTcsMjU4LDI1OSwyNjIsMjc0LDI3NywyODQsNTMwLDUzMSwyODIsMjgzLDI5Niwz
MDEsMzE4LDMxOSw1MjksNTMyLDMwNiwyNzAsMjcxLDI3MiwzMDUsMzE1LDMzNDMyO0E3RUNDQzVG
OUUyREVENkE0ODdFQkFGMzJDNjdCMEEwPC90aWZmOk5hdGl2ZURpZ2VzdD4KICAgICAgPC9yZGY6
RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAg
ICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAg
PGV4aWY6UGl4ZWxYRGltZW5zaW9uPjEwMDM8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAg
ICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NjQyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAg
ICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOk5h
dGl2ZURpZ2VzdD4zNjg2NCw0MDk2MCw0MDk2MSwzNzEyMSwzNzEyMiw0MDk2Miw0MDk2MywzNzUx
MCw0MDk2NCwzNjg2NywzNjg2OCwzMzQzNCwzMzQzNywzNDg1MCwzNDg1MiwzNDg1NSwzNDg1Niwz
NzM3NywzNzM3OCwzNzM3OSwzNzM4MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NCwzNzM4NSwzNzM4
NiwzNzM5Niw0MTQ4Myw0MTQ4NCw0MTQ4Niw0MTQ4Nyw0MTQ4OCw0MTQ5Miw0MTQ5Myw0MTQ5NSw0
MTcyOCw0MTcyOSw0MTczMCw0MTk4NSw0MTk4Niw0MTk4Nyw0MTk4OCw0MTk4OSw0MTk5MCw0MTk5
MSw0MTk5Miw0MTk5Myw0MTk5NCw0MTk5NSw0MTk5Niw0MjAxNiwwLDIsNCw1LDYsNyw4LDksMTAs
MTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMjAsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMzA7NTU2QTVE
Rjk5NkU4N0E3RTQ0QjlEQTk5QkY3MUY1QUQ8L2V4aWY6TmF0aXZlRGlnZXN0PgogICAgICA8L3Jk
ZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAg
ICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAv
Ij4KICAgICAgICAgPHBob3Rvc2hvcDpIaXN0b3J5Lz4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xv
ck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9m
aWxlPnNSR0IgSUVDNjE5NjYtMi4xPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgPC9yZGY6
RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCjw/eHBhY2tldCBlbmQ9InciPz7/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRy
UkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAQAA9tYA
AQAAAADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ABFjcHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAAC
GAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVk
AAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxy
VFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykg
MTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0y
LjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAA
AAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAA
JKAAAA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklF
QyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj
ZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj
ZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdp
bmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5n
IENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcA
AAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAA
AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAA
BQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQ
AJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUB
KwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6
AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsD
FgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRx
BH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYG
JwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgf
CDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoK
gQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0m
DUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQ
QxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk
E8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UX
iReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2Mbihuy
G9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEg
bCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVo
JZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8r
Ais2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDb
MRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3
YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4g
PmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVF
mkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1K
TZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVV
wlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5s
Xr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn
6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGV
cfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8
IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobX
hzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS
epLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5A
nq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+r
Aqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfg
uFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvF
yMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG
1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi
2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/
8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////7gAOQWRv
YmUAZAAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDAwMDAwMAQcHBw0MDRgQEBgUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwM
EQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAKCA+sDAREAAhEBAxEB/90ABAB+/8QB
ogAAAAcBAQEBAQAAAAAAAAAABAUDAgYBAAcICQoLAQACAgMBAQEBAQAAAAAAAAABAAIDBAUGBwgJ
CgsQAAIBAwMCBAIGBwMEAgYCcwECAxEEAAUhEjFBUQYTYSJxgRQykaEHFbFCI8FS0eEzFmLwJHKC
8SVDNFOSorJjc8I1RCeTo7M2F1RkdMPS4ggmgwkKGBmElEVGpLRW01UoGvLj88TU5PRldYWVpbXF
1eX1ZnaGlqa2xtbm9jdHV2d3h5ent8fX5/c4SFhoeIiYqLjI2Oj4KTlJWWl5iZmpucnZ6fkqOkpa
anqKmqq6ytrq+hEAAgIBAgMFBQQFBgQIAwNtAQACEQMEIRIxQQVRE2EiBnGBkTKhsfAUwdHhI0IV
UmJy8TMkNEOCFpJTJaJjssIHc9I14kSDF1STCAkKGBkmNkUaJ2R0VTfyo7PDKCnT4/OElKS0xNTk
9GV1hZWltcXV5fVGVmZ2hpamtsbW5vZHV2d3h5ent8fX5/c4SFhoeIiYqLjI2Oj4OUlZaXmJmam5
ydnp+So6SlpqeoqaqrrK2ur6/9oADAMBAAIRAxEAPwD1R2xVuuKurirq4q6uKurirq4q6uKurirq
4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKu
rirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q
6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKuri
rq4q6uKurirq4q6uKurirq4q6uKtBhigF3MYLTTROSWlC4u4baIzTusUSirs3YDBGJLGc4xeZ+a/
zt0mzElvo6/WbgbCY09MeO9Sa/7HMuGnJddl18Ysc8vfntqMN1x1hPrFsTsYgvJQT8kr9+TlpKFt
OPtIGQBeueXPN2ia9bevp1wJOzRn7QNK77nMSUCHZxzxlyKdAjINtNhhjS23XFLq4q6uKurirq4q
6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKuri
rq4q6uKtVxV//9D1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FVtKNWu3YYCxCjc3VtbQtNdOkUaAszOwAAG/fGMSVlkp5t5t/PDRdNV4NJ43d0u3Kp9MfSP8A
mrMzHpiXCya0B4r5n8/65r8zvez84zWkCEhBX5k5nw08Q6bJqpy72MSXsjAAmlNgPDMgQAcOUZHm
tjuZFNQ1D44EgBMdL129spVltX9CVG5cgepGVZMES3Ys0oci9a8n/nrdwKlvr0RntwKJcR8ufX9t
fiLZgZNPXJ22n1xPN7BofmbQ9chWfTryK5HdAw5Akd1rVcxJRIdpHLGXIi03HQjp4jIs21pxFOmK
t4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FW8Vf/R
9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2C0tHJNZLeAshbW+LJo8u2C2N
FTnuooImklcIiipdthkgEcVc3nHm787NC0gGDTwby5BpyAHAH5kg/hmRDTE7uHl1kRyeK+Z/zH8y
a/clbi6kEUhIWGPiqivb4QK/7LM7HghHmHWy1GSZ5pMuiX8qVlYRE7gN3H0A4J6qMdgzjpjIWUJc
aNIr0WUMfao/gMMdVFpOHuQR029a4SCONnmk2jA3BPX55b+YBY/l5FN4/I3mhouclqbdO8krLx+5
SzfhlZzM49nknekwsvKGnwMr6rq0KMx4x2sIlMrk7DiGjVe/82R8dtOjATm6/L67CRmwnljnk/uY
LtUUuCK/D6Xqf8PxyPikt40wpIbPV9W0O/KxSy2OoQMRIsZBUMv8wqV3+WXywxlHk4oJxzsPWfKX
58SoYbbzHCeJHEXsYXc9uQBUdP8AJzAy6auTsMWrvm9c0nXtM1W3FxYXC3EW269d/bMQxIc0ZAUe
HFK12wMubi1GApse+KV2FDsCXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FW8Vf/9L1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYKV1dq4Vpr
c4LS07qi1YgD3xolFsS8zeftN0vlBay29zqX7Fq06IelaitST/k0y+GElrnmAfPfnf8AMPzdqd01
tqjy2aGpNkecY4/JqfqzYYsADqc+UlhM96X7j2UHY5mwg63Ir6LfQQanDJcDjEp/eIfmKZj6iLdp
pPUrLylrWs231+3MEVmf7uaWVajt0PHNRPHZdzHcIC7/AC71sH9zdW9xID9lXVSfl8TZIAMThSW5
XWPLF4lzKr6dfQAvFK9VDggrQE8ar1ywQtqIIX6B5407VfMcJ8xRWltaueVxdxQj1nYkfacnau/x
4ywmrTDLKwzC7/TXC581zxwalfq3oaNHbSLJaWyUHxtKvNOf7xzT4P2MgAXIlNZ5e1SbT7WzsJLj
6/5l8yXEhvpbS4UyW0fN6F2X1Dx/uxRuHHCDTLi2YdrvkTV4NTvY4InlRJSIBLVLucfzrCf3ki/5
S5n4c1OBmxGTGmW+tiyOjrKpIaNlIO37JTrXMsSEnCliMU20DzRqGmXay6VcvaSlgeEZJjYg/tBa
UyjLpwWePOQ9l8pfnnG3p2fmOH0JK0N4hJQ+Fdtv+CzW5dOYuzw6rver6dqmnajAJ7G6juoWAIaJ
1cCu+/EnMcxcyOQSRla7Y02U4YFLeKHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq3ir/AP/T9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVqlT7Y
2rmcKOoHuemIQWK+avzE0HQLeV5Zlllj2MSmprl0MRLRPJTxjXvzc8x+Z717PSGFjZU+N6DlTc1P
Ll/wuZHAIhqEjIsb1HymHtRffpJ55XajzBvstua7gN27ZSdQA2HTkoB/MLQJBa6/Gmr6VN8MM4HC
UePpMvpsW6f33wf8NmXjkZOJkiIoa68nQX0El/5auhe243exkIS4TseoVDQ/ys2WjLINZxxkxQia
KT05EdWUkFHFKH3r8WXRlxc3FyY+HkmWm+aNZ09CtndSRiv2CeSfc1cTCLZjyypMT+YfmYK3C5Ae
nUKtR8tsxJ4AGzHlkXtHlXy35O8x+W4dQvnbWr1EP1gSOyOlKniioYwaV5bjMOUiHPgLRdr5S0m4
tREmkR32kEhPRYGK8h6ivKsaMB/rvkDnLdwBJ9X/AC4uPLRbUtC1ZrLRdheWsv7zgrHiSgkWSux/
1snHIGHAh73W5tOtFksJrewswgZdeuUjaaXxEMcavT/npEv2cjIshSKtNIjtdV0y4t2Ms1wQ17fT
SVuQGNBsW+qqjfFy9P4v+FyXFssqSS20vS/MR1HVZrG1jT629mZYZZhO8qFgKB39AVSOuWQzEOPO
Akwzzl5bHlm5t7dm5x3S+pGAymWOtNpOPw8hXfjmww57dflw0kUF3PC27eop8dxTMmeMTDiWQWUe
WvN2qaVP62mXzWsm1Ub4o9vYhsw8un2crFqeF7T5W/Oe0uPRs9dhNvctX/SYxWE7bVoS3/C5rsmO
nZ4tTxPSrC+tbyES2siyxEAh0NQa7/PKS5UTaJwMnYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq3ir//U9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KXYVdiinYsS
4mmAlkAt5AVNdu9cVY75k8+eX9BhMl5dIrb8UDKWNOvFa75OOInemqeYDZ4/rv5teZ/M9y9h5ahN
tZt8JuZHPIkfEeijj/wWXAxjzDCjLkXm+t6D5gE8gu2E10xLSOzl3Pyrv3zMw5odwcfLp595Y9Dq
F3Z3ZmUESLtJE4ofka/PMqWKMxs4kZygdymkXmyKNeRtj4lVNEr8qZhS7NN/8dc6Ot2/al2raqdR
lhZIhBHECEiU0AJ8AAMzMWEY+bg5ZGfJG6FovmWcm906C4WOE1+uRcwAen21Hjhy58dbCKIaXIN7
knl3qkV6Ei822IaVRwXV4lAmHYs7Ecpj+1u6/wDDZiCd8nI4e8JFqnku/S3N9pMo1bTQatLbisiD
wlRS/Cnu2WcRajAdNmNcwD3HEfFTf7/DLIAEbljOwdgmWkeYtW0a6judNupbWaNqo8TslQRQghSK
jfKp4olmMsg9X8mfnlrd9qcGn6wweKSkazRx+pKz7Dc1B/HNfmx0XKw5Ceb0rzd5I1zW1tntNYmi
SMqZLG4iZoJVVuVGiMgVvuyAkO5vX6n5M8oT6HHaa9b2CrCPiu0iisgreCj4ux/myPFu20HjeuXE
+h6jLp+hTt5h8vhQ4SaL1o4mqQQtWkX7IXf4cyAQQ4uSJY1rXnK/uNKTRobSHS7NJvrD/V0CM0gD
AE8Qm/xnLscA40zIMfl1G5mmaa5ZpZXJLtIxdt+tSeuZkYAcg40pHqvhmr9luNeq9ss4iGuUeLki
0YIPiqo8e2TEgWk4iE0sNXmt0WOYc4vCtR92VzxA9G3HIxZn5b856ppLibSbwxI1OdszH0jToCle
OYWXTV0c7FqPN6/5Z/NzTb0pa6sgsrttg5YGNq96kJTMOeIhzoZgWewzRTRrJDIJI3FVkU8lyggt
3ECqA4Qm28aW3Y0tuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVvFX/1fVPbFWs
VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV
dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdikOxVaTT5+GCldyUfaIA98aKkse8y+e/LugQGS9ukRqGi7
k1HsATk+Br4ni/mn86vMOsGSPRLd4rEfC07I248R/tZfiEerRlMujynUNSv57l3u3kaUliWfYGp9
82uOMDF10+K7KJ0fXoordbS4Z4iH5JJH+yRQ+B8Mxs+kvk5WHVcPNOr/AF7TrnjNdXjzSxikaxrT
oP2qrmJHTSDlS1QLCry5a4vZ7hdhMxYAigUU983GmHCN3T6iXFLZaqSAboaEV2UkV+jL5Z42xjil
S2KX05BJwHIMCFNd6HI5Y8Y2YQyGB3ZVJrjXK2tzaXXpSonpvaSAgEg9fhA8PHNJPTyBd7jzRIai
a3ga6nnm+utcR8Y9OjDNykIPgNhU/wA2TxAhryzijNB0K/0iWO/1i+/QtqQXES/vZmBrRVRBLx5e
MqZlbOGYk7pT501TSNc1MXFpafUwi8XuB/eynb4pACY+1fhRcuxaehzcfJqbPJi9xaTJ++UDidiy
9RXYVByMsZDIZAQy3SvL1hrflOJtHUjzRpkjNd23LiZ4WJPJKkdKL0bl8WYGQEyouVjqtk18lecd
Vm+t6XcazPYX7qP0PI4HpiVdyknJGK8qcfi4rkZ4gGQMmY+UfPN3DrMmkfmTKxSgaykkUGAvt8XO
AEEMrFvtZjmDdCRepanc6smmrP5bsbbU2NCsZMYj3Pjyj7f5WCyG7YpTqHkew806Sv8AifS4bPUi
SzSWrU4UqBvydOlMshmIa54gXzp5o8m3ul+Yb3TLDnqUNsSRcwqXHGpA5FRTl8OZuPNbiTwMeeCR
XCkFXHUHYj6DvmRfE0Sjw7qkd06rSSp7AHDyazJEwzMhJjYFT+y25yYyNcgjbPUPSlVqkHuO2SsS
awSGSWOr+rsQv+rvx+fXllGTEC5OPKQy3y5511vR5OVndc4uhgl3Snt0b8cwZ4XNhnes+V/zV0TV
Stvet9TvCacXBCEdiG3X/hsxZwILmY8lhm6SxyIHjYOh3DAggj55BstssBQHvg4lpvCl2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVvFX/9b1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FWjgKQ7thCCkXmDzhoehW7T390kYUEhWIBNPnlsYW0ym8X84/n5c3UcltoqGNCaC6Ygn/Yih/4K
uZeHT242bPTyTUNautQvY5tSle84uHlMjlhxrVqMa/8AA5lZNJs4mPV+pl+m+bqSGO2ij+qMnFIR
Tr49M1GTGQXb48gISrzIirplxJeSwu0grbIKeorEGorSvhmbpbpozQB3YaHfinMDkBvTrm5gdnTZ
I7r/AFAVrQj3piSGIJTLy/8AUTrFul8BJBRjRwChIUlQQdvtZhayREbDm6Sid2RXWqahdBrZNPit
nV/9HMUKLGUWoUllA7U7ZpTklzdpxRGyQ+YrRobOymuI0ttSmJE0EY+Fl2+Lovi37ObLRaiR2cPV
4o1aZ6H5C1C5tU1HUXTSdJ3/ANNuiUZt+kdR8f8AweZM84OziY8MhuiZPM3l7RY5Lfy3Z+pdCok1
a6RTI3YGND6nDueSvjjwmTHNqBFL9L8yxjWHu9eR9UinXjcpIxZyopx9NmqV4kKeK4cmnIGzXj1N
qnm/UPK92tudDtHgZDJ9ZZkVF4vx4/CpIPRviw4IzpGWULSNJEjXkq85G2YNup/rmVHGerTLIK2a
gnmtboXlnO1leRH91cW7tG9PAlOJ7DKM2EFsw5iN0/l1jQtZiSHzJbfULwMFTXrJFUE7EerEvpKd
/wBsu32v8nMHJgLsceqBQtx5wmszc6LetB5g01E42txccXKg0KlHYSMhoacVORjhTPKhvL/nvzdo
0QTT9SuI4kp+5Mj+moO393XjkJ4bYxzbvV/yx/MbT9XWeLzZq0qXxJ9FGkMELCvcBqNt/k5jyxU5
MMtvT45rK3sp5/LllY3Mxp6qQlY1cGtA8iIS1d92XK+Km7mwXXvyfu/Nd+t5cx2Ogz8Sfq9mokZz
Q/bbhAd8ux6imueDiDx7zr5D1XypfpbX0iOsnL0ZASSaEdiPfMuGXicLLp+Fj8fKNt12y4hxSjI7
X1dwOJPTIcXCyjDiWn69ZyfCSR4b5bGVtco0nGna0j0SRiknhXJGCBOk9hvUenMA8TUVPT3plM8F
t8NRTL/L35h67opQRXDXVn0NvKxcU8AW5cfozFngcrHqHqflf8ztB1mkMjmyu2IHpzUAJP8ALv8A
wzDnjpzY5LZopBUEGoO4ORAbW8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdireKv//X
9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxV2KuxV2KuxV2KuxV2KuxV2KuIwE0rQGSu024im4298ihJNZ81aNpEbTXt0kaqCaE1qR/Ko+
I5PwTJryZOAPG/Of573E3q2+iInpBqCaQMK/Jao2ZuHSFw8mpeYW+ojVr2W+1iaS8lVq8Dty3r0p
jmgYssUuJNdRttFuoo5LGzJZR+8t+57eAzDGcjZzPCFMR161isr6KOGvpyx82ifrGR22p45t9GSX
UakAIFZffM843DjLdzsXZfioBUkHvlhPCLSSCU60Ow0COFbzWpZXR2osMBUbbAVJV6b5qNTrTy2d
npsRCvqS+WGnK2sUyQlwI54yJCpodjxU/qzFx6wguTkwCQ3SG8tpLW7mtJOJeF+BZSKdugqSfozb
Y8vFGy6bJg4Z7Mj0Pyx5qvSWtZBp+mtEed7dMsUYPIfZEhQu3+SuYOci9nOw3W6Zxa95T8t8pNOt
/wBM6uGAGpXQYxowP2o0URMPH4i2EYDIbtUswB2Y35h1rUNUuvrt1cNcTsfssNlHgoFNhmdjhQpo
lltAxo8zUUEnvXpv45eA40gr+jbwf3rCRv5E7fryJCBKlOeeWfiBRYl6DJWhYsZ+0G4+2Nq5gx2H
xY2g8m15hSFPwn7S5Ew4lhkIQ02nwTf3Lem43PvlUtO5cM9oQrc2xKupjU913B/XmPPGQG0ESXRz
ljQkJ4U74AdqbKpmvkX8x9d8pGSO1EdzYzMHkgnV2qw6hSjJx/2WYebBe7KGQ29t8tfmL5X84aa9
tqE0em3ku0trUx/CCN0keqV/2WYhFOcJ7KdxqX5R+UjKwMElyF+IxiSeZiP5pE5Rf8LiAVOVhWte
RYPOtxHe+UNGNnE+73JuYPTYCpNYiVmX6cuhkprlHjYxqvkfzL5flZL6yeOJdluoysqUXw9Mvl3j
cTTLT8KXARNuQOHj4n5dcIR4ahPZwTmnQjLoypqnjWItzbnb4ox+zl4ybOLONFH22ppsKem38p75
GRtRIpnFcKeSt8K9VYeOUmFtoyFmHlX8ztb0RkgZhc2Q29OQGoB3+FgVA/2WUTwdXJxZ3rvlv8xP
L+uxgRTrBc7VglqpqfAsAG+jMGcCHPhkBZMCCNiTXf8A2sYsiV46DevvhSA3kKZNbZKkEt4q7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq3ir//Q9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVomg8PDFWmcBa/qxq1t
LdS8w6dp6yGaSpiQySAdlFev3YxiWEsgeN+b/wA+5SDFoUZJBINxJQLTtxA5cvpzMjh2a+O2D3Vp
qGry+vrut8buTkY7M15qoFQxSgVeR+H4crGXhKnHxc2NXehzSSypaTLNLGC3pkUYgEDsDmZg1YLj
5dNQSKK4cFJonZAd65sTCMw4Hi8BTGDzBqFuxkjkox/aoK+HhmP+RiT+xsOtJSqaS5vbjnIxkmlY
Cp3NSe2XkDEGEbmU7Pky7hsUuri7t05rX0gzFhvTcccw568W5I0RSu806S0hFzzS4tweMkkXxBD/
AJXILl+HWRmKLTPRkbqcTzIQIyrRk14NurD2qMll00ZC0Y9TKO1Mo8sWWu6nNJHo9jHEkdDcTyKP
TjptVvhb9Wa+WAAuaM+ydaboOj2SXN1Y2z+aNZtQ8lzdUAs4TGvJiDWsnFfi+OHJiVCkGI581dry
08xaClxezzX12OTXOl2lIvq8KsVWSKFGjifj+7Vmfg37zKSCJd6SbHcwPULa0t7hY7O5+swSAemS
KPuacGAqA/05ucNSG+zp8vpO2602MSUM5Kd+IJr8u2TqmFu+t8k4RARoKg0AqfmepwgsTJQp8VO3
44UVa1d7gK2yKK/PKmTg/KUqRUHcHwGKqq7Eheo6HFW0A5CnVvtE5YCmg2IFYlQRUnc5XkyiLZDE
Zck4tvKurXNk9wkPqWybFm3FT03zD/ORJrZyY6SY33SG+0Bo5mjjpHdD7ULk/h1ywES5NvCRzS5p
Li1kMMvwsdkBO1coyRLCMhb1n8rdQ/LJmgg1uwk/S4rxuS7GFqnaql6dP8jNfmHDu7HCQ9S8z/lf
5S8wReqsAsJwtbe6thxShGxdFKK3bqGyuMw2GAKA8lflbd+XLlLu51yV+JIFrb19FlIIo1Sn/EcZ
STGFM+eGOUMksSyW5B+CRVZTXsOVchEllKi8k/NXyf5V0uw+v2DLZahIy8bAEsHBcAnc7bV6fy5l
Y5OPMh5grJ6lBsR18cvtxJyVAa79z0JyPFTERvmpS2iSAsw+IdCNjlkZKYB0M11ATyBeI+PUZdGQ
azEI2HUY3UjlXwUgDJVZYSNL2uriJllt5HjkT4gQaHbfYjphOGJa/GkCzPyh+dWvaW6Q6oTd2NSG
5keoop2NN/8Agsw8mkvk5OPV1ze1+VvPXl7zHCH0+f8AeADlDJQMCfkWzCnjIdrDNEgbsjBB9vbK
mdW0wrkrZDZdgQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq3ir/AP/R9U9sVaxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
qMVSzVNf0vToHlubiNUXqWYAA+BOSED3I4h3vKfNf5r22rrNpemamunSVK/WWVvTYDbjzqqiv83L
LcWM3uGnLMVzeSald+Z/L2qR3Lu8F4COF0tfRlQkjZ/sv+19l8z44oVzDiEyTvRP8KecWnt9SEOi
6rK/N9RUiOKUrVWDB+jsW5FjJ/NlOTiHJMMoB3XebtNsNHs7e4dJBLcswWEyLN8KgUb10X0z3+D7
S/7LKYYOM77ORkzUBTE7vzKv1VUtoQjUKmatXG/QEUzJw6Oi0Tzkhj0FvO7JDbK0rMQFjAJY12Gw
zYGcYDmHA8GUzyVdR0zUrRqTQurGh4cTUbdxlWPVC9z9rcdLQ5KFvcPDcQ3EIHOF1dQenJSDTLs0
eMbbuPGZgdwj+Gm6hO1zPctZXTsK8VLAgD2GauWjLtMerBCcQ6MdRt7ix8tW8t7PdCMXlyylIE4g
glnICx/aNeb4IYOHqiWTiCIXTPKHl5K6hdDWdUSnCztCq2yGvSSSkqS+NEdMzRKZ23cKRgEDrvm7
VNVWO2kZbfTotrfT7cFIFAFBRWLb098thgvm0TzE8lDQfMN9pNyBGFnt+Mym1epWs8ZikYUI+Lh9
k4Z6cS2DGOoMean5i1iGSOGGytF0+K1tpHjdAfWkZpFLc26UDMafDmOcHDLfdyhm4o7bIIThbfhE
qqGPJmpWpzNHLbZ18iQd91kkgjhMrksRiWINqUkrgKxpQioA7fPIgt3AFaOQFOWXRLXLZp4y4qOt
cFKu9PiwP0DFV6jf54JEAbpjEnkmllolxdKXb92i9AdiflXMHLqgORtz8Ojvnsm9pa2dlyJZUoB1
2Y+OYZyzmeRc3w4QHMIdvMMSyqkdulxErByJASOSmqnt3yY0RO7jnXb1SJvNSi1dg1zGsclKKE+E
Cm3euQMp4zyLbGUZ9UvvNFkWEx7XMRFSpoSqnwy+GcS57NctPW4Q+jz6z5d1FdR0GdobiMUaCvEl
T1B6bZHNiExssJEc9no9p/zkBqqwoNR0ZJZ0oZJIy0e/cjly+L3zDOnpyI5U2sv+cgNBcKLnSp4N
93WUMPuEeIws/GSvzv8AmrY6vZJHoj3dpOpq7iQBGFOjLwBP/BZZDCGE8hedPPJIxdtzWtT9ok7d
cJgRyartP9L8rw6taRtp+pwm/wB/Us7llgHXs0jKDkeIhsjjBRP/ACrfznFErNp7ce7BgVr7MNsl
xApliHRYvkTzV1GnyH/KG4x4mBxrl8g+bmJCabM57gAn9QweKjwEm1ry9qWlXCxajA1tOwqqEfFT
xy/HmsNE8VFBJcTxf3p9RB0I3zJjJolFe5iuV5IwD/iPoy4TDSYIdJp7O4Eis0cqn4Zh8PT54zwR
kL2WOWUXp3k/89dVsRFbavGLy0U0M4J9RR/w1fuzW5tKegc7Druhe1+X/OXl7zBbLLp95HISAWg5
ASD/AGJ+L8MwpYyOjsYZIyHNPqjINrq4q7FbdXFXYq7FXYq7FXYq7FXYq7FXYq3ir//S9U9sVaxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2C1AWkgEAmhw0klL9R1uwso5Gmk+wKkZKOO2mU63eV+cfzvsLQejpvKeT4hyAAjUjbrX
n+GZEdMWs57eaPruoeZblpdZ1Aw2klT6Y+EUA2FEAqeXjjLKYIEeJA6zoei2y2vG4dopEDK43Zag
E1X7J6/tZH84WUtMCFsOvXei3j6LrSpq2mMvI277txbYNHJRZEYEV4q6rmVCAkLcaUzHZ1z5Rhur
dtR8pzG9td2n01zS8t6mu6tWNkU/DyErP9nGOYg0wOAHdA6P5uubOM214q32mMOM9hcVJp3KyEet
Gf8AjG65lnDEixzaPGlHZWuvKuna1D9c8qSkSE8pdIuSVmQd/TILq0df2ml9T4l/yshHJKOzkYyJ
c0Pp19eRSTW+kJFZ3sYKxQyqGcChqOTq/wAX8nxfazB1IMi5MZUpJZebtRlaa7UxTQMC0j8eLL03
pXx8MxfDk5HEHatpVnqGoR2mixPc6xI/7xbf+63IqPjKqN/8nNhh1EouDqcMZI+Ly15Z0KJJvM10
bu/U1Gj2JJYHt67t6PEd/wB1I2ZJzTm4ojCAQmu+etRvIvqVhGml6WPhjs7WiEgbfvJQBM9R/NI2
Tx4b3lzapZugY0JBy4kKD4Cp/XmbsA49Wio7WYrzeiRdyeuR2U7Nm4t4l4W61O1JG/zOSBaiN0Hf
v8Z5kuxtn37f3i5jTG7mw5L4yTElPAZeBs4sjuqEwLERK1U/aj7k1yEpMoxQaLyAXl1keo7hdqZW
CW0gI3iEUKoqMyYjZxpHdwYA0BJxAvmspdyZ6douoagpeFeMIPEzMaKGAqR3P2fbMbNmjDk5GDTy
md09tNG0a0it/VlLXczOOYFY14tT4q9v9jmsyZ5ZPT0LtIYY4xfUIQ+YmiiMUHF5Kkc6Cn0bYcWk
pryau0paa4uJGM0nxbn8c2eLFTrsmW3NzjHShIH68vIaDJVDMoDV3yuUAebdjkmmk639Wuo3nj+s
wqV5gbEAHp2rmuz6TqHYYtV0ZM0eka2k91NNHGdvqyRKEZSAB8XELXv/ADZhjJLGXN4I5BukF3pU
0I43CetAekydafL4cyoZAebiTxGPJLbnTQo5KvJPAYJG+Sx2QywlTVQR4g9sjw0z4uJUDeOTElpe
pkqGSoI6ODQ/hkJbotlHlrz5qWmzMl3eXE9kwo8dQ7KN6lOZG/zOY08ZtuxzFbsn0Cw8rareGeTz
VdxRSEuLKZnjlqd6UjJSn+zyFltoFOfM3ni/8v2q6d5f0+a3jnBWO/mYzl+1Y+bzeP7YXCADzQSR
yYNYaVrOuaqLnWYr2dZgV9dAjOprsQrMqhckJcJoNZx8W5RvmD8pvM9gTJaRLfWbqCHjajgduasE
Ab/Uy8ZkHAGEXFhc28rRyo8Ew2oV32/4XLYZA48tMFtLiRDE6cx3dqVH3Zlwk4uSFJWzehMUVtl3
PvmYNw4UhRRuna3fWc/q2c8lq/dkNMonpxJnDUGL13yb+fl3CEtfMcZuIyaG9iChgCKfEo4D/gRm
qy6Qh2uHXcXN7NonmHSdatludNuUmRwDt1A+RzBmCHYxkJBMwNx3Hc5ESTwrqDJptvAlqmNK3ih2
KuxV2KuxV2KuxVvFX//T9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxV2KuxV2KuxV2KuxV2KuxVrr3pTrireKu70xVqu5G9cVQV9rFjZxl55VTj9pKioHiR2HvhjB
iZPLvN353WlrKbbSuN1cFW4rA3qio6HkgOXjGwMnl+vaj511gSXN/VIZKBoqkDpUVB9smJAFhONh
iN7DeWwQzK6xvyCtQkClOp+nNnhzAhxDClOx1JrOQp6avA27Rn7PzplObCJFAzcKbx+abO3Zmish
8alWHL4DXxHHplcdICzOrNbJBe3hvLkvIPjf7KqKjb+UZm44xgHFycUkZaQ6/YNFqNvb3MDIf3Nw
qulT1+Fqe2UZcuNEMWQJ7dajomuMIfMcB0jWm2j1qKMrWv2RPGQGb4q/vPVXjy/ycxvEPRy6FbpL
q+g6z5fljumb1LYMDb6zanlbvUVr6qckD+Kc/wCbMrHl4g4YxStHjzJpOtJ6XmVC1zyX6trcO0qM
Ts0oIYycWo320yE8B5tnjcJopnc6bZWlqkms+Zku9MUgQ29i6yXE6EcqSKkjtDRtviVvs5VCJILk
SzBaNUnvdCubbyo1von2ov0ZAR9buI3BFGnUx+q7DYR+j9psIxHqwMwWAXZ1DT7h7bUYJLe5Q/FH
MGSTcV5HkAe/hmwwypwsuK1od56NBF9ZkU8mQCvzJpXJ5MgJtYYKC63uom/erF6kwbiXkFAm3ZSP
45UJgsZQpUlumcNzetPsr2zJgA1USsVgCa9Oor0ph2tiRSjczRFjv/uh0pTbkXUj8BlExu5WPk0l
xI0UZA4kD4gd8Mjs11uvWBpfjYcR4nrgiLRI0ioo40B4jkzEkkjf78v4QGjiJKpFbzzSUjU8R9pq
EjMeecRciGAyT3TtEgAEty4CjdhsP15gZdWZcnOwaQR3K671WxgjaC3r6deQFaiv+YyGLSSmbLfl
1kYCgk9xf3FyGUt+6O3AdKZssemEA6fLqJTKFRgnwKoC/LLwGglERzAMQV6igbthKYr3lkdadVWl
W+WRgbk2nYL/AFkZeO4bsSdsZwNtXiKTyCo4mjr0cdfvyUY97ZXVpLm4ikDo5DV2yvJgjIUxhqJA
sn0bzV8Xo3Y+LYc65qNRopA2Hb6fWg7FkZ0nTb60k1GC6hs4YRSb1ZkADE0GxK9eS5jRyGGxcuUR
LdI7vSJ4uMkqH0Zhyiu0HKJx1qGHw9/5svhlEmiUOFKJrRk7k/IbU+eSQoNHxNANvbBSV4kSNlaQ
goCOUZ/aHhgNrsy3Wtf8rajoUUFtoa6ZdQhQbzkKNQUJ48E/4liMRJ3QcoHJGeW/zevtBijt7SCO
4tYaAsVPNh0+0K4nCFGYlOpfzE1bzPeWtnoN1eWOoXUlHtjOxCoFJJChUp0yqWMN0ZEslm/LzWLp
Ab7zRdtdQn9ykRYIJOy/bPxVGVEtoBVdS0eyiWKy8zQ6ldWoXe/eZpo06/3n7ukQ/wBZ8ICDBjms
/lRbXto1x5T1KKa3YFlj5pKhU7qBMrBa+3HMrFqK2cfLpzVvH9a0PVtHuTFqNrLavWgaVGQH3BYC
oza4soLqc2EhLH5EgMa+9KjfLybceqVI5yuw3Havb5YmIkxJpN9D17UtKuxc6dcvbTD9tCVB+dCM
xMujBbcWolEvZfJ35/qVjtPMUIRyyp9eQnhvtUgg/wDE81eXSEcnb4dcDsXr+l63pmq263GnXUVz
ER9qJlenz4k8cwTEuxEwUcp2B8cAZtnqMmxbwJdirsVdirsVdirsVbxV/9T1T2xVrFXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7G1dirsVdUYotTmnhiQvI6oo
/aY0GK2xif8AMvyhDqi6a9+nrMeLNxegPT7VKYrbKI5opEDxuHU9GU1GK2hr/VbCyi9S4kCrWn04
REo4g8z85fnVpVgz29iWuJ1B/dqNge1Tt+ByccZtSdnifmj8wfMOsOVuJmitnaogQFQNv5qc/wDh
szIgOObY9pepw2+qCWavCjozezinLBMdyYsnN1HcxyNb3ylZKAK5au1Pb2zDlCRLeJRpB69e2cGk
zWFvciea4oXNCfTNDWhI98zdNin3ONlnHvYuQSKsR4HrXNmIgDdwZAHk4ovQNUn3xjRLTKJjuiNM
mjt7+J5hzo1FYfZUnxzG1ESeTl6fLHqnF7J5iupJIllFxalqrIpRCqmvwqDxHw9M1MsErdl4gpZr
EEsWjRWM8v1jVTN/oojHJljBWvKg+KtG/mzM00eG+JxstSGzJPKOm6/pdg15q1zDZ6HN8LWN0PWM
zV6pGiyyxnZv995LJKj6WjESDuwzzculx+YLk6LZzWelmgjguNyp5HoeTe3Vsy8GYkUQ4+qxEmwl
UdwHAJapG2/X+mZEQBycQ2VSBnV3aNWWYb8lJFP8ob9cSCWyBrm1dObuR5bqZp7lqfGfAAADce2G
OMtWTJvspwXMlrBcQ1CRvGZGdR8Y4jpv/rZj54UXJwSJCValqz3l79ZQCLkAvFRQELvWnjmPEi+b
lnGCEfb38E9usfCjgfE/TMiz0cWUAFSUWX1KBYnkN0KiYNTh7UpvkscjbCQFKUcFW3UHfdt6fjmR
wm2HHGuaJijjToKkn7R6DLeEFxjIgoiFGMgopYnoBlOScYhniiZlNbbS1d6XdYgaAKOtD9rNZl1Y
OwLtMekI3ITXUbzQLUTiBHg9EIIOXxeqTx5UoW8W+1x+zlQx5J8g3ceOI5sevdUmndglY0bNni0g
DrMusJ5IEMSaNvTvmYLjyDhEcW5bY06HbEi1sDZsVr7jrkRsgqoaigMd/wBkfPJ0FFrBI6gitVY0
K5UfJs3LTOx79NgMtjdMSAF32U+Q65Elhxlr95SoNB4nDIULZFcnLn8Jo38xyMrrcIiN9mQ6JqOo
w3CS2w4uwo6FRIjdRuhDfqzV58UD1dlgzSGz0q21QTWlvZ63ZfUfXAEMxUsrkj+WPnw9vhXNZIUf
S7QCxukXmXRbCyga5hb0YRsYndW5VNKqAWbvl+KY6sJRYS0vry8LRDTxO368zREFxJzpv1Le3ekl
Lic9AK0H6sltHYtFmW4UkW5vGBk2iSu3QDfbJUSvJHxw2wiEJWlerrt+vHw75sTmpZaS3mlX9vqF
uxWW3flFIvWlCPi9t8x82E9HJxagVu9q8o/m5o+sRpbarILHUaBWfj+7lY7bU5FTX/V+1mtljkDy
c3HmB5Mws9PuYpOS37Xtm9W+qyCN0Ff5WVeZ/wBm2RMyHI3VLDStPsJZXtLb0hMxklWr0LMakgE8
V3PRfhyQF7hkJWkv5jDy1ceVbtdU9I3Hpn6im5k9U7KBx33O3xZOGSUS05oQp4BYfl352vbL63Ho
80cUdDyLR7jtsXrm0w62HUuryaOUvpCRT2U1s5juI2icdVcEH8czYZQeRcA4JDmFKpjehBrTp2od
8vstRoL47gopSn7rrxO/9uVSEeqjvCfaF5s1zRLlbjS7t4Gp/dniyn6GDD78xMumBGzlYtUQfU9q
8mfn3p90sVn5gj+rXJov1hRVGPSpoSa+Pw5qsumlHo7XDrcZ6vWLK/tLyFZ7WdZoWFQymuY52c6M
hLkiAQcCXVH3Yq6oxOyt4LV2FXYq7FW8Vf/V9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxpWj0wqoyTQRRtNK6pEu7OSAPpwEKwHzZ+c/lzRkeOyYX9
ypZfgcCJWXb4nHP7qYQGBeH+bfzf1rWHZJJ34H7NtCxWP6QNvpphpWMWN9qlzcBp4gtu/wAVWO33
kYq9D8o/mZr+hWptgz3VluOLsTxJFP7w19u2CEWJKQebPP8Ar19IVu5WhsnYkCNzxNenIigamZAA
DBlehaV5atIbeS6tEmhuULfXJCrBWp13Xt1+1kJTLZFdBo/ly+0RxqCI9yZZfTniCgCISME/4Xjk
Mc5FnMAPF72xZLqWCIt6MLmMOa7qp65sccb5uDlnS2O2VCTuf5Wr0zIhhBLhyzyVKsg2PxKBUnvX
J5I8A2TCXEd2RXNr5d0W3tnu42v725UtHT4ECmv+vy6HNXl1UwersseGNIfTotG1XUEsfqbWxmWk
FxGacXNAOShV+H35YwzyPJjPFFJJI2ikliY8jC5RuO4cgA1/HNxglHh9TrMuGV+lP9L8panPY/Xr
6VdG0omqXl4fTVian92jcBN3+HnmNnMSdm7EZgb2jrjzHo3l4n/D9o0t1wP+5a9UCapqKxRkM0AH
Xmsv/EcOHCTzTPNXJKtM826ra60Nbmf9IXRUqHuP3lK03Bbl/LTnk5YA48c5tM9X85aVe6PdxX8C
Xmo3iEJGsSxfVmAPxCX4zJuf5Y/s4iFORLJYYKiMWjr8Sc6lumwUimXQBcKUqRr3MrJQEKgLA06k
ZkRDjSmVB3VaFumRlOmUIkqFxOGL8FLs0ZRQvbkO/wB2UTlxOZjuIQVvp6jkZKSyD7QXoPn1zGGM
W3+IjY4xIKLvx7eGZcYOJknaskK1Bfr+zlox9WjxOisEPIDiWPguE5BEbqMZlyTKz0O7nQSuhSEK
PhINSrbFswM2sr6fvc/Bo7+r7kxt5bTTxSpVl6HMCJyTO/E5hGOHLhQOoa1c3J5KxCivx+GbDFoh
zP3ODn1x5D70peVmbk5Ln+c75nRgIuHxmXNvnXLItEjbsjIsowPe49O/0CpxjdLKk68s6E+uX8lq
twlukSlp5Keq7AAmiiqep0+zXKchIb8QB5rtS0OJJPT02WS/5B1aMR+nPGY24fGgaQqD+z/k5R+Y
bjpyeSVGOiGNlMfpkq0TLRww8csskbNRqPNTUEHbr2rl0OJomQVQhfRbmnJ2oFcdF+eMpU1gEoqP
TNSnsvr8EDyW0bem00YJANK9AP44DlBb/BkW7W1KekZgUSUckkk+FWO2xJ+eU5NQCKCY6WYN7vTr
K403TdKjm8p2sGo6tTjd3cnF7i2jJo7xWtHZqKft+rH+037OafNkNu402OJ5pfP50t9A1e3WDWW1
39IKZJjPsUmXjVQC8vEqzsvH9nMc3TsAAmFhZeStQn+vuyi8duEcEkayRLJ4yqSAW3+Go/lyOGdH
dhLDaTX2l31/q5srq3i0S2idhNeBBCJUr8D+jRAFK78vUbM+Oa+ThZMNc0jfQ4bFpOcv18wV9Se2
+JG/ygQTmQBZsuOY1yWQyI8ZaHl6XUKfH3zKrZxZFCHVkaQpGhl4/ar2/XlJkmGO0TDdxzKBGat3
Q9sQSUSABpB3kP7zmq8X6CnvkzhBRHKYomw86ebdFBFjqVxGq7mOOVwp+dDmNPRd33Obj1vf9717
8uvzJ0LX47e11XWbq31gKOcE87CJzsCByYd/bNbIGJIc7FkBTLz1+U8OvMl5pV/LpuqKFaNWJkDc
WrVX5R8O+9GwcYPNnOFp/wCSNG8z6Lp62+s682qs1BEjqSYyO3rtI5/4XIkhcdxRnmDyhoHmOL0d
TskmloClyqqLgVPc0Lbf62W4c8gU5sMCOQfOH5g+WbTy35nn0q3uluYxRlpTmgZVbi+7b/Fm6wao
Ebul1GnrkGN04tQb5liUT3OuIkDyaUsGAQBxWvuT7ZOUAevCyAtP9GsdGv7Z4p9RWy1LlSOOdAkJ
J6KZi49Pf/IbNbmlRquJzsWADdO9P1rzp5Jv0aOWWKBhyVOT/VpgR+x+w/zpmP8AlRPfk2+PKD1z
yb+eWiamscGsoLC7NFEhYcHPTuEzDy4DE0HNxaoSG+z0+C4gmhWWFxLG32XjNQfuygiublxIO4Ko
Kcv45HhSZb0uphpDeKuxSC7FLeKv/9b1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYqtPKvt2phVZNNHEheVlRF3LE0Ap88javnD8yfO+p6n5hv7RLulhbs
qRwpsD8Ck7/M5IFXmeqQTXTKvrGNR1Apv+BybAqulaJF9aiiiQSzyHjHUgEk+FSFxVmVv5RuLTU4
01QCSySn1xYWUvEpp9oAnt/LirK9H8tT6LcXaw+ne6HdoSZZdyNqfZXjJ2H2VwkUwBYzr+j+WDaT
zaPeCS5Rq3FlIGCAb1481U9f8vIiZTTEYL3VLCj6ZdP6VCWiPFlFdqAEVzIhAFjI0FGfzTrUsbRy
ykwHZ1+EDrvSlCN/5syhgiHFGUlUsdDv9ZmH1CGSWR1oxIpWn2jvTfwwSnwtgx8SvceQPMb3jadB
ZSm8gi+sOrFBVKgVBqAR8Xb9rKxqyCyOkBDHb61uraZormMwyIWjKN1NNt6ZscWQZObg5cfByRdt
5hubaAW8sUd3H9mOOUEcQdyQQVOU59LHmyxZ5Mi8v2WtajaXD2dlBo2mlgJtSlJQKoqCaSOXk8f3
KNmDwcJ2ck5dt06sNF0/S7GXU/Ltoury26F21a7cJFG3RjDAWhnYcenqRSfFkxkLXxoWHWLHVdKW
4uIYtR1gM0l5bXfqRVhqaGEqYYehT4a+p/w2Xxixlk2YPrkunpIr6VJJLFJHyImoXjJJBQ0CqRTL
ozLjiilMZuHWp69Poy+JJapABd6a0o24y4RYGa9pUUVboBSv+1khQaqJKjLcU+zWjdKdT8spnkbo
YQol2l2J4kdl+19NajKxu2GIDkQkFQKgndfcZLwmBy0iUgH7fw/5PjlmPC0HOq9eKjZh0Ay2QAQC
SjI7KRz8alVPUim2YmXVcI2cnFpeLmn2njTbCEvHGJLhl4h5q8VrvUUp8W2ayeaWQ7O0x4Y4xuhr
nzJdFy8EvICEwRxOBwFQR2AP7XjmRh0ZPNx8usA5JI0kkjAyn42BrTfevbNnGMB0dTOUz1WUWvcg
bcR1HuT0P0ZZxBgIkro44xyqWaZ1/dJsF67k/RXvlZFtwNKKUDOFbkoNKsCN/wAMlxMJw7kRFb3E
sbNDG8vAcpHVSUQf5VBlRyBYxkpnlwLLTlT4a14n3H7Q/wBll4mOFeDdMdJ0zUL64gh0563bIZNt
uK718P5T1zWajU0HYafSGReo+VX/AMNaetvfyJbIZOdxLMvP1Gfk/AhQZD1/Y/lzUeOSXbjEIjdh
GsW9o9tPqerXit5g1Ah4rG2HwRpXq+zDerfZf9nNvp85HN0+p0/FyQOi+WLzU5qSutqhUnnN8PTp
xX7W/wAsulrQEYtASEz8u2Fzpesvc3enrfQQwyOyE7IiqSZgQwUcB8Xx/wDA5h5dVfJyIaIAsqhs
vKeqSG+0W8kshdDZVSRYnZfhYH1UNW+E/Enw5hZdRIOfDTRS261+ztba50G7jjntIA4LOKsCNqrw
IPbBhyknduy448NUknlc+Xo7m6knu3hu4E52Y+L05d9+ZA7Dl+0v2cyZ4gXW0Yp5c2Oh+eJra2ls
ZWYoUGqwUjZX2BX4vg4V/wAjl8P2srnj22bceormnF9HY6HoV+JdPF88jRqlzbsWhXg6sVdA3rLy
Gzt/K3w5THEG8ZieSD8rxectR09nj0uLU9Au3cR2k0qIqHkf7tzLHIoT4lX1n+zhsA7KY3zRlhNY
3Onyv5OIlvXhWG6tpaC4VVqWf4wsT1Vm/uuX2cyY5DdNGTGAwyT1FldHBWVSfVGwoQaH6a5nxlYd
bljSHktrdjuPTY9x3yPDaITpdFbwwNSOhf8Ab8clE1sshZtAzXirK4T7Qru2w/HMgRa5lqC2/SFx
HDAwDSMI+ZIA5HtvlU8vCwhiJR1pdaz5O8zSelS21O1YpMXUSI6K2xFA3wtSvw5RLTxnv3twzyhs
9R0b897y9uYbNtBN1dScv95XRAwRC7FfVk7KCc12XSGLn4dZaYW35+eSHnkgvYLqylhJSUSLy4sD
Qj4Fb4tv9XKBhLm+KE6u9Mk85QRXtvrl3aeXJxWOCIIplXrzUtEZFX/X+LDQZCVt2v5T+QIfim0s
3s52aWeSRmI7NVGUdMIyELLHEobVvyZ8jXoK20TafKAf95pVb6Sr+o22XR1MgbcWelgejzPzN+VH
mry1dC/00fXbOE8obqIoXSo35o9Ce/7GZ2PV8fVxMmi4eSSrqega5L6etR/o7UDVDfW6uFaTpymU
iT9rf92q5KR+LUJmOyqbrzF5a4w3Qiv9FuNlLfvLeUddmQ+ojCndk+LIglkSDuV/6E03Wrd7ny0T
9bDcp9HlYLKvLesTtxjYD+Xm7/Zycav1MZQselW8r/mR5l8uXINncGW1Hwz2c42r06Hi47d8r1Gl
jIXFGHUzxmi9t8nfnP5d1qNYL5hY34orIwbgSf5T8Q+9s1hxSjs7bHqIy3egpMHXmjK6HcFTX8Rl
UgXIEgVRWr0NciCkuU9j1yTALsWTeKv/1/VPbFWsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV
dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirjt74q1XFW64q1yXuaU3NcVYr5h8/adp3KO1BvLhdj6dOCH/ACj/AGYCmnl+
u+cdW1YuLi49PkQotxIUTixoTUfy/wCrlBkh5Fr14Y9SuuwDKQRvX4QOuWRKLQUGowSOFkNf5cyQ
xRo5CRJYmo8ZDRspoQR4EY2hknlbzEsOq3Z1V346nEIpLj7ZU9K8WIr18cbW2/NPm6y0dbS10jU7
qaS2qJLiR2AcGu3p82ULv45IyDEBii2vmvXre61WytpPqoZvXliBFdz9kKKdt8rNM0f5BFtNrdmL
6ZFjk2WOY8UqOgPX4ie2ESNsDG041nyvod1dS2BlGmah6jvBcyMfqd0SxYIZKj02VTTisb/3eZPH
Jr4AE78v+bJ9C1mytdatxYXsRiiKqBFFcRI1FfYLx5/Fy+FvU/ayE7ZxmGWah5x1KXU7rWZY47OC
yQKJnbiAh4kRBuO6ty58Ps/tZiEcRoc2/i2t5rqCXXnXVL6+srRY4pZT6l0wpDErsx5cgMzMIlBx
slHmhq+S/L8oBRNf1MA+kTT6qhAJ2J5+pSndF+LMsicg4xyY496b+WPMOkeYrLhrs4luo3aX9Gki
O3WFT/dW8IPp+pTiF+BMpMJR3LHjjJL9Tv7fyrqoW1l+v2d9bcZ9Nmc84Vq/wBjzKdOW382XwiCg
ziGKaz5ibVL2KeO3Szt7ZPTtoIQDSlACzAJyb4ftn4syI4T0ceeQFLwgJIUBWPWnh/n+zmRDF3tE
jXJbwIqa0Ay2gGBsoeSXbwHidshKYZRxlQZpDvuvgx3/AAyiUiW4QXLHQVoanoQak/R+zhjjJYSy
UqpASTy+AjfYbn6cujjppOW1QUjFaUHj3y3gNW0k2Ufpuj6hqd2LazheeYqXooJ2UFj08FXMPJqh
Dm5eHRmSK+oyWMvp3UDI7fY5LuflXMDLqjLk7PHpRDm5r9YVZARMvQEHavgPfJYtNOW5qmGTVQjs
LQc88jKQWIQkfCTXixFR9NM2WPTRi63LqZFSALukcfxO5HFQK137ZOU+FrEbZX5Z/L6716W8S3uo
o3teKMpJLlmRZN1p8KAHjy/mzCyZ49HLhgkU+Xy/pdxb3GjarYDSJ7S3tpLS9iAczNR/UbkRGzK3
FOOYn5k250dIKYl5i8uJpNn9YNyJKtxEZXjJTrVdzmXj1Q6uJm0hvZI4hLJAlxVQpqqxndjXoWHj
mRMuMQAyjQvPV/p+mDy7DbW1tHdsI7y/aKNm4OR4rWnT9rNdlu7cvDuj9e0PyFYeXbqex1cz6ta8
l4ED98+/7tY+ZCxkj7X/AAmR/McI3ck6cFM/J+m/oHy9fOsTnzPqIEdokw9MLGKFvRb4ifhMnRVz
FkRk5ORiBgwzU9f1ybzDEb1jOlkwThcEleSjiwo3IEg5kYNGRuWrUahTtDb3etwS6gy2rI6P61Aq
qFbkA67AIT9rMzJjAjs6+E5GXkm35o63rBvdO1RbRLSxCrBBe2p5W89Fp2VF5fBmnzRId3p8gpkN
i/mObyff2bW4tfrVmv1u8ZAJfQuo3XjWlT8IfkOWQxm2WVKNQ88D9B2Gh2lrFDc2LhIhFTflXeoU
Fa8+WXThQstWOZuk10fylomnyXN9rM63N9IeVxHIxbhyqSFDVr/wuCJB5OQaA3Y5ffoa5muDpcUc
EYmES2UgDyu1FJ4V/Zoa5kDMIjd108UpHZNtI0bWbXmg1G506BiWjtoyyIrMa/GAygL9GV+OG0aS
wjNU8xW2gwS2Omhp7+7pLNqLuTC6oeRAtzyjnRwhTk/83+Rk44zJhKfho3QdftL62glsr99BupwV
lgA9WwZ67sYS0cULVH7EbftZXLSzBvZh+bBQU/mnQtBdtN8uRhLtKo+uvGokYn4WEa1bgtO6yftZ
dCBJ3a55hzYlctqMU7ziX11lJd2bfkzGpYk1zYRgQHEOQSVLTUYrgUk+FxtR9vuxibLCWMohYYxI
ZTUHufHJcO7RxEmkj1eBpmcBigatCMuBNJhIA7pbG99YSor/AN3UN6g2Cns1cxs2Pvc3Hkidg9Ct
9T0zzxbQ6fcTR2vmmxQRWV07UjvkUBQjsPiLfCn7Mn2sw8OcwlvycnLpRKO3NjbLrPl/VY0kSSw1
K1PNV3SQDxA2+Ft1ObOxlGzq5R8I7pzeafo3nL/Srd49M8xuB9atnosFzQU9QMKUkJoT+7/bb4s1
+XEYHdzMWUTGzIfIv5o6z5I9Py55ps5RYxkGMsf3sIPw0CsBWP4fs8uP2swjiIc6OWJe2abquk+Y
9PZ9IvWaGZN5LdissZO9KIfg+QbKjs5EaLGNI/K42GuR6nL5m1K5aJw31RnlUNxNeLn1m5KehqMr
sszEAWz1QzHilGFD6kfEEcf8sZIQN2UCYkHz3+Y2gW9953lg8r2wuYCg+tLAtUWUk8uPHxP2s2OD
ViAp1+o0xJ2Q9tpuu+VovqXmjT5H8v3akzQOCyQk/YkiDgCN/UC/Z45ZxiZuP1NMdOR9XJhguWst
Skn065dRBKTaXiExycQx4N8J+B6AV4tmVKHFGi4ssnBLbkyDzNeaVq+jQa/EYrbWFYW+pWihVEpq
KSoq0HR1/Z/YyOAGJ35JzZBMMdjuKtSvxD7LA707ZlZccZBw4zMSzzyh+a/mPQJY4vrDX1pUc4J3
J28FLc+P0Zrs2kvcOZi14jze5eUfzV8t+YEEZkNpd03hlIG9f2d981mTAYu1wauM+TNAy9vv8cqt
yyG+QrSu+Nq7mMlTHjD/AP/Q9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV
2KuxV2KpNrvmnQtDhM1/cpGR+yDVjT2FTirzm8/5yM8s2sjBbV5V68lalR8iMVUY/wDnJLy9IqtJ
pk8UD/ZcmoP0Ba4qynRfzi8ia3VINSSGU1rHcq8fUdAXVMVeewedPLVnquqWl1MoUM0kQFWSVmII
40B/ZbxwFFsVh/Smu3DmyhjjeQO8cVQCABU/CW5ZjkJYX5m0N4LwmYOt0PtIehP3fxy2CaYldTSx
yUePg1cvtiQirHWbi3kVvtAdQfDG2JDI7XUre5WPjKiO53VtqYsWO6pb2kMUt3HP60yXBgdaEr6Y
CsprT+Z274GTNPy+/MmPy7YwaekKGMyO9y27fCzlugP+Viqf/mlZaDDpX6Z0IEafckEup+zIWFOw
p1XEqwrTfMF3f6YumvKEt0NZJGBL9/teK7/srkYzLEi2XA3K6QtvfQjWtAUMrgECe1BAAkhaoCp+
0eaSceGZEJgtUoEJXw8l6b+9+sT66/W0snrHCleom5Inqcfi/u3T9nMuGG9w408pCFl86PfXaDWL
dJtHhVo7fTLesUcXKgBTmWao4/tM2XeA0eMg9e0vTFtLbUtP1AT29zyMVo4/fx0DKVYgKOo/l+zk
4mmXDbH7aWVYkBBQrTiTv+rMgwEg1znwqnHmC55Fgfs13PvU5KOKnHlkttYt6D4VO5r75MyAYUW+
Yp8Arx7+ORORshC2pFmbYigOUyyORHGoGykUeoWp/lHr93XIiysiApiIlt91PU+OWxg488itHGBU
dvHMmMNmgytUSN3NV6HbkcqyZhFlHCZKphjjanISTAgU7Zr8uts0HYYNJUbKPh1CSz5yRspaRTG8
RqQVYUI2IPQ5QMMpltGeMNkFe6nNMkECqkNvar+5jWopWm/JiRmfh0wjzcPPqDLkmflOw0bUNUjt
tTvWgiaRQFXaR6noHKtGn+zGHPmMdhyYYMIlueaZ+YfL2mHVRH5S+s6nCpdJwY2cRyq1OPNURG6N
9nKcOps7tmfT0Nkl0bVL7QdZivYUAuLZqGGQH4adaioOZOWEZOJiySieSa6v5lspW+t6ZbzQavcT
rNc300iMEHHgUiVQpC9H+LnmPmjs5uGW7KPMEt/pWl2Nzp1617aTSf7kNbZl9MyzcRRUor/zVX4u
OaeUJW7eOQU80vdWmuYbsXLK196lYGBpzWgHcnM/FjFW42TJZS/TPrgkcyLxoNlPjkDqWJ0yYIlQ
GkqWO7Dx8PxyiWW27HhpehqOXEg16kjt2ygycgxU52mubKK2Mp9KGQz2+9CJGAVgR1+yoyUZgMTA
ojSdIGqSGOS8WHWJDxWK43tpowenMcRG32P7yX+bMmOcuJkxspvfzHj0PSrvy3c2lvq3C1aCC8QM
FHNWTjJ8Xx+n9tGTivxftYTMtYjSB8k+RBqulJd3VwkNo3J4VkYcOfM7IteX82SGWPVsGGUuSKud
Z84+m3k6B+NlqUy2wmkBXgOXAMHJVQvx/tZVknE8nIhp5R5pzYf4U8uxLpwRLrU2PGXUWqwU9fgC
022p+1mIZkc3IBEtkF5p8r6/eafdatDOht1DyySllV2UAtsrMD0/yclhiZFGaXCFD8v9E/TWo/pH
UblY5bRWCwOyx+r8BEZq/wDxYw/2K5bkxEONizAoHzN5g8xSahb6DMQR9cYSRM6eirljQeoDw8f2
8abjNkMnlk+XIJbi9tbfVoGCxW7cw0NuxO5dFcSNs3wMrceeXQiXGyTCA1G30S2+rjSnq8w9S7jU
MsaudyByHif5szYQLr8hHRKpoYZ0pKu/QEdsu4A1RkhCt/YuDGPWh/kO+30EZAnhbQL5NOlldk0/
c3PXidt/auATB5KYkc1IXdxZEJN8Q98O4ZR4SikaC+jrStKfDmTjlThzxEG0HND6ZIU1WTYo2Gc4
sIwkTslc+ndXhBjeuykHgT70/wCasx8kIEc3KxZJxO4ZTpnn9prcaV5vtv0lYRgpFeDa7h2r+7k3
i4L14mJm+3mFwygdnYXGQ3RFx5OW7tBqPli7TWbJxvFUJeIP5ZIm4SPSlOUcXHMmGqH8TgZdKein
aecrsQCw1eBNTsQpQRTAiSMkdVYFR4dQ2XDEC0eOQkttc3On3ZvtGuHtJuR4Cu4BNaE/ZyM9G2Y9
Yyy1/PL8yYlFsZIrhztynRmJ7bFHQZg5dJQLsMept6/5Cu7zzP5eS+1nVnu7mUss2lQMiwoFYgck
IaU9B/uzMIRMebnQyRlyZfaQwWluLezhSGELQKgptSlaknImVonFJPMvnPQNGT6lf+tezyKKWaQS
uXqegdUKDxy2Fjdj0p5NqP5f6r5q1d77Q9BfSLLdm+syRoX5GoIDlDmfi1YA3dbm0hkdmG695X1n
QLh4tUtWgCdZ/tRmv8rLVT9+ZUdREtP5OQCQSXNaLCP3Y/aPXLTPZx5Qo7r4T+3y3yNuPMJhbXsi
FeR4sPslOv375VLDawymL0jyd+cOu6M6QTlbuxFA6SBiyjp8JBH6sxp6O3Pwdo1sf0va/LH5heW9
fjUw3IhuKfFbSfDTemxYDNXlxGJdzh1EZBlPM/xwUW/Z/9H1T2xVrFXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYq7FXYq7FVoJqe48O+KpVr3mjR9CtjPqVwIxQlUH2m49aA0xV4x50/5yH4h7fRF
ZFYU9QhSxr4V5Yq8Y1nzP5h1yZ3nmlcklviYkAHxOKq3lbyrNrXrXsp9PRrIsdS1E/YQKvLgn80j
1VUDcV5OvxYq3rHmi11bWYLWxgW20mxgMNhBwVHYgqPWlK1Jd6M3Es/HniqU3EPOeo+EjoRt+rFU
PcG5tWhmuS00Qb90ankG37/fkSinpPk3VdPsLB/Ot76ggs54ra1RWPxMzfHyWoVh9itcFJCSXOrH
zJrK/XLlYI3kIiegFQ1SK0Hvim0P568k3OiTrHclZUkUNFKpO6noTUDrXDxKwO7hmt6g7gn4T9GT
BYkIeSZxwIYhvEHJsaQz3k3F4lc8HNWWvWlP6ZFVWyuqTEIStdmOKva/LmpWup+XZ/Ltx6f1S7hc
xzOAeDhDQjbbcLhV5TaXn6O1R0arRxTNbzt2MakgMK/6q4yApMeb1WXyhqEGmoLHWYntdVT1LazD
usrxkbpsvSjU+1mEctFyeAEMUj0wyCSOR+BQlBQbBgehPXNpp9S6nPjFpTqFjc2x4ynZtuZ6Ej9l
fFvfNjHUAuLLFSJsbVeAZ96DbLBC2JnSk6fEwA+Enw7eGZMdnEmSVrsqgA7H+Ubj78jObKEENJLI
70ArT3oB9OY5kS5EYgKkPNf3ikFB1Yj9S9MRZZWAqJLJcq0qOAE23AH4DbLRjapZaWCMEkci3uxJ
y+MQHFnMlTCGrgGgAqzddq9AD3rjkyRDGGOUuiaNoN7HZG9njaKJwGjU9SCKjb3zAy6zudnh0veh
pVclOPwIo3GYh4sjdMxgoPMgYcAAd6kZm4NF6bLg5tYboKEsrIQo3YgtX5f7WZQqLjxBmUun1BmB
Cbs3Su4GUzy25kdPSZGwvIhFItyomZuQQChFO9aZCW43ZRiAWS/lz5h89w/pHSvLjxerMWlkdtyQ
Go3CqNxfk3bjmvykAufCFjdFyW/lewstQtNRe9v9eYMYv3aAxvQ1MjepyKV/1syMOfvcTNp+4JTq
ugajp+m2urSKstjdMFSeIllrQ/CeQXccSMy/GiXDjhkD1SxtRv8A6mLKKSU2LyM5t2Y+kGFPiVak
V+jMfLw9HNxCXVDw6fEkvqMansDvT7812SZHJz4RCOSIH7f/AAQypnHdcVJHuPs/LFJ2UyrEEN33
+nDSAd18dvG61rRh0yBiylNSJ9NiK5KBpjwWhZNPilm9avJl3KeNN6ZkDICKa5YwN058yeb1hsdO
gsIngiiK+sqnioPFq0ANOuUZMZPJsx5Kek+Ur+LXPK1x6f1aS9gs3neW62aixlhwYK7cvh65CGGV
tkszyTVdF8yWWrwm9EsBY+old/3RbdqHqPDMieGw4k84juHsMGpeV08kXsmoSG5qY4LCVHYMwlVw
AYwVTbivLHCOEtkjxxYJH5e8z3ukrqdkq+hKSsESMVkYKd3FB9ld/wBr9nMszBcGUDHkr6TfPDZp
Z6nbRX9vFKXcNGglMikhz61PV2JP7WXDACHH8eQ5qNxezG4YmWQWTGv1ZXaSvgG5EV3yYhwoM+JB
mdhckGSkcnSJhuMmJhjwlO9L0PUdTcxWSgGlPUb7IP3HMbUagR5N2LAZMv07QtO0VbaGaCfUtQma
k8vpRtax9TVmZ+QGwG0Wa055TLsoYIwFliv5nzaC72wsLVYdQEhW6ki+BGBK04caU/a/ZXMzEJR3
aMhjLZjNu63WlSNJ8UsRKEnc+I3+WZ8DYt18xwySuw1BrQJI1eKo6tTfdQN6HrlOadOQIiQej3s3
lvytZWhls11bVb+MT26sSEVKkVbfxRv2c1088nMxYYxFqsnnO+UW0P6O08/WkEgiFrAaBwCByMfL
bllPFMG923hge5JZZPJ+u6jNpNzaHS9TY0inQkxM3UDjUAf8BmRj1fQtM9P3MXvNN1ry5rMq2l29
te2pqJIWaMunUbrT2zOhiGTcOFOZhzSiPULiOTjcgkE713b7+uZUbDizxg8kfFOkgrG3w/ynrmQM
oLiTxEKvqntVW7HDwCTX40hsmWj+ZNY0a6S70+8e2lXYoporV8R0OU5dLEuTh1MovQ9I/PPzH60E
V/HBLA8iLLOAqFUJoxoqAbDNZl0dOxx623tcD2F5bx3kAguY2AYT+mjsBTsWFeua/ISDTscZBCsp
QxtJI/CNRyXkamg9jtkQGy6edeZvzL8s6vDL5f03Q5/MF5L8CQvHGFU1rUPzLrSnLYZkQ23thKVj
k88/5UX54limvktoLYO3NbAySGVAaniPgoae7ZkR1O9ODk03EwO9sL2xuXtryMwXCdYnHFvpAzLx
5AXX5cHC6EsCA1OXanTMjicCUUwsobiW4SOMFpGNAB0yqeYBYaaUiz/y1o/1Vg78pLo9OLEBfpFM
0moy3J6DSYCA9W+q+Z/S/v5K/ovn9tvt+p/xKnfK+Jz6f//S9U9sVaxV2KuxV2KuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxQ8b/Oj817/wAv3P6E0llS7eMPPcEMWQEn4aAjtTBbKnz9c+Y77UjP
Jfs8sv2llkNacqkmvauNoOyB03S7rU79bOyUT3T7sxYIqjfqx2phCvYvJv5IWMUkF950u4HtFQPH
Zo6fV+xq0lXQ7YUEqf51/mL5Hm0D/Dui28V84UCCVd4YKPWqUHXb+bAUCVvF/Kel3GoanxgXnMq1
AGy1FBU1yo5KbRC2U3Xlq/tADOv7xuw7ZKM7YyFJbqem3F1AsIHEQnlyqBvuO/zyVJjyQflSaNpL
vTLm3nv4Yo5JYLWFgKOFJdj8L8vsr0w0pCNh8v6tF5Uk8xTwqlsk9NLqQzO6ybrwB5fCBJU/5OHh
YUp3PmNtdv2utYkIhkqXjStOXXiv2vhP7OVGO7K2Red/J3lmz0q1vdL1GOWKZKvGWRmXqNwKdW+H
JA0h5bc2s3JWCnjU0PQbdcl4qKQp0+WIAyqQ47d/pGTLC1IBuYUttWm3TfI8TKmc20MI0MLEx5RA
k12oKZEyUBB6d5YvtYvbVYkf1peR2QsAqkj4qeO3xZRLMzOLzejWdzPoFoskuopHexoqW9nH8Xpr
0qHUkcj4f5OYtGRbDKhzSu7kWRjKqlnl3YHdmY96dc2OKNB1eSXqRWmxRWKiLXpY00W5Ql7ZhzuS
1P8AdKg8oj8X2njf9n+XMvESEkWGHxXluokiXY8m9JCQTxrsajNrjy7OFlw781BrugAU/G23pj+u
T4urWIUocWLkVFR9qMEAfTXIE2zDZOwVQCCfsjdB70yccdtc5NgNUFvjINAe4+WXjDTQMhHNfUmg
rVCaVPXDxCPNjUpJnYaRd3RoIyq+JFP15h5tWA5mDSE82V6ZaaVo0L3cxpcKtVUsAK18KVzW5Ms8
h9NuxjjhiG9SSW/853LtdzWzySXGoxiK5Erc41UBh8CgKV+23VmzKw6EnclxMutA2AYvJLLM1W3P
3frzZYsAg63LmMnLxG9Oop9+Wnya41W6ybiZ9+8LU+5sxsoczT7lj6FacX2qCAcwyXa1QekflTot
pqclzqerXKmw01GcWYkQTO3A7qDU06bcMxMuWfIWmGOPMrtak8oWepxaroaT28wLNJCXVi0ldmoq
KYxT+bI4sEpndOXPGI2QsfnLzBba2mq2krRzxsWLVLFw37EtKc09l45lnDGHc4Yyyn3oDVNY1TWa
HVJzKqzGaKJaqiluVfhYt/McxJZu5zI4VFIgta79KkbH6cpMyerbGACICLGBxIavXI2Wyx3N14tx
H2DQKPGuRtYClqDclvhPYHG0y3XlhQEmj9vb3xtAFKYZXHI/PG0HdU5hUB4gL2J3yKQaXERMFFKc
tgw2oe2EWjmd0FNAnN4pQWHv3y2Mqa5DuTTTPNGtaBFKdJle3kkh9KQoaDhQilB/rHMvHIFqnjIF
2lv1rVb11uZLznKxoWINVBO/fMvw7GzrcuXeiHoOkaRpukJa69p9zbaw3oTi/huqJwkQIQUUsrcn
PPj9r7OYUoUd3Nhm22TY+WYru6/xFFDaWsKoJLuKJ0WNN+NeJYmm4zHlKjs5WPHxCyxnzbd+X471
Z9KExidC90WBKM1AeUJCj4D8X8/7ObDSTJBtwNTCIOyWo/qiLjGZZWYKiKpYmuw+Eb13zInliBu4
scUidmV6Z5PYSLPf27c6AiLiVda/zVrmty6m+Qdlh03eU8n1Oy0tSpYMRuIkIB+k75RGM5ne26c4
4xsxbWfMt9qLca+hAp+FE77fteObPDp4jmHWZdTKXViGt1e2av8Autee2xqu+2ZU4gDk48JSJ5rd
J+NLhaj94Fkr7ABcrgb8mOawdzaACxfWZIpFDJ6ytQj9lydx93XKc0b2cvHk4o7MzmbRtX0q1sLx
1tNSshxtblhWF4+Rfi3TerNvzyiemoX9Tfi1NbFDWdlrmnXvrrBFdKPs/V5FkqOxohalcxzikHLO
SJGynB5Wu5tSk1DUXSxhlmSZi7qrARMrcQpNanjlY0xkeVMPHERztS86azDquqyTw7pAFSJ61qqK
F/Gmb/Rw8Mb7uo1ebjOzHzGk0RWZeS9OQ65kyxguHxyj5oGXTZYW9S3bmo6U7fPMWeIxPNvhmEti
F0OpMSEuBvWlelPvycMtdGU9KCCbCOjkSQhoyGp3rtloN9XEAPci4IJJOTkDgPtMTRad/nleSve3
Y4lNtC/MXWPLtwDok1SKhlkqY6U6AAr/AMSzXZcIIunZ4shjvb2ryV+dGia/BBDq1yunavRVkJJW
KRjsaM2w3/ys1uTGRyc7HmEnoIkcR8/UAt6VMoYemR48/s/jlceLk3SlEMb1j8wfJmklvreqRTSq
aCKBhK9fCqcqfdlg08iebjnUxj0eRfmB+a9t5ptms7fSkSJRRLu5POYb1qhHCn/A5sMWIx5l1+oy
ifIMK0nRLi7ZG4OIT1cgkmmWZM4Diww2zrSNHSLjDbo7zuQFRRuT77ZgZNRxOzwafm9b8mfl/L+7
vdVXhtVbalO+1a1zFkLLnY4cIejemPbpTCyp/9P1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXyB+dRuj+Y+rfWD1MSo7bAD0kPbIsmE30hksngFqgkUfFcK77rTwrT8MQLRJZP
faTbWtnNp0l0mqUIuWbikdN6fZb/AI1w8K03e+dvNuq26WlxezTwQLwihXjGFUCnWPjy6ft5IRYS
CTNHMXRJDU1AKR7sVr70H44TGkRDIdGt9R0q7W+gmNqpoFRgpdgd9hRl7d8olFyIlkOq+ZJ+Bnu5
ORRfg2ANfkKDJwiwmwnUNf1C7c0cohOygAGn0ZMsGtNe7sm+twO0d0CCrL1+muxHiMKCSzPRfMz3
/wBWt5VFvcwM8kUE29pOzKyksBy9OT4jRY0WNuPJviZskxtLdP8AJ+oX8et3zyR+vbStEmmLtKJG
L0pReFKr2fKyGYSUXc0BS2uOTpEAskTf61ab++QIV6Ro1x5AvdEjtb63W11CBlkdhyaqOCQN2p8A
2ORpWF+ZY11DWWk9QLZSyIico0idFqKkiIU/HK5Zi2QgCn8f5deV59Ri9D6y1rBCs1zeNwEBai/C
tH5/tH/df7OVeNJyDiigNBtNIjs7nUNWm4WQLqmmxVM7VUBW+LiOp/37khkJcWQAKIvfNDtbi10V
Bp1kijiAAZn23q55Ou5+yr8cMYW15slILToZ5pBLct6NutSbmY1G2/T4jX6MyYYHGEyUXceaYbRG
j0mDnLJ8JvpgGHvwU8vCn2FzLx492Egx67muprkXErGV+5ZjQV8MyREMhyUEX45n47pGOJPu1O3z
y0bOPkKHnEkVrGV/vG5Hn3rlkZMYxtVs/q3obgvK396xPb78nbCcSpCdYZnQbqN177ZbCdNYxEr7
S4WV0TlxZ2Cr/sjTJ5NTwhB04L0TTfKOk2rWUd/dJ9dvjxtowGK7gnegp2zUZ9VIl2um0sQGtf1C
PQG+qrHyuR3XceHfDp8HiHdjqcvhjZheoajeXsnqTOTU7KKAAU6bZt8WkjjDp5auU+aHjR5pxFAC
XdgscY6kk0AGWyyCLUAZFNL7yprmnWn1y6tSsC0BfkCRyPcA++VxzWWw4EqRWaT00FSqkt9FMMpm
2vw6KFuX43KrHv8ACVb7jlcxbmYiIpb9W9J1k6xA/H7VzG8MOQcxLIrXULG3p9SYQyMrIEUt8VVp
yb7+mWjTx5tJzSR2g6HPrtveXK3tvbfVFrPFPyV5QpCkJwRvxK5TknwcmUYcZ3S2bUraeV4rUhYl
2Mf7X0Hr/wANmuyZuJzcePhaBoo+eY7kqnIk0HQ9cUq8deFR1BxVezhpCjihFeB+WRZLXK0YVq4o
B88VXrZyP9s0PDkfwxUq5jIVIlQbru334sVGYemyod+m2KrSQJATsFI2wx5pAUrh/VLN+1UUxkWE
huhLy9azQFl9SST9n2xjMhkRYX6VeRXTMscJRwN08flv9OZmLVmB3cDJo+NP9Lu9Ht9UtX1Uyz6e
CBPawbMXJHFjvHt9r9rLcs/EGzXgjwHdH+dhc/WZbXQ74XFjexKTLCzhIkDVMUgIHx/D2D/bX4sr
xYB1cjNnPIK3lvyhrGoW0MIcvbQxcY/UCimwBFQCTSn7WTnkGPl1ao4jPcvTdN0LRtHtxNLCgmhB
LSNv26rXvmDkySk5mPGIsY1g6npYu73SEnmfUDzN3cPzRUbf4ULPTt+xl+nxd7HNk22Yg08sr83c
ue7Hv8s2ojEB1WSUiaU2lTetajDGUSxjhJUbxYJ7eSg+Jk4/8ECMImLpicZiUhsr2TTZCJ46x8TG
WG+xblkSCJX0bMkQYearPapeFri1lo3FeS+wrTJ+GJtGKZgojUXiT0L1SU/3W46feKHJGHCkHjKv
Dd3aUaCdlWm3FyNsmIwKJSmNm5rq7m3lmZx/lMTTLY4oNUpTWxKCwDAEnoSSB+GCQ7mkko++uNOu
Z5ZYIWhmk2jhi+JK+/M5SZkOTQkgTHPG3GSgcfaUfhXLIDiaJjh5KctpbzfbUKfHJHGEwyyQLWl1
aMWiNUrUeBzFnjMXKjMFEahrF1eokbBYoUUKEi25Eda7DIRB6tuyFWoFKU9h1yV9GG6vG7DiQeTL
0YbKPpFDXKpYAWQymKeL5s8xvaCzGp3AtlHERBz0671ysacBEtUUDGskj7Eu7Hf9pifcnJmIi1iR
kaZJpHltSRPd19kPT8MonlpyMeElnnlvy3qGqXcdtp8VIwPim6KoFBmDkyEufjwgPZ/K3kXS9Fi5
Ooub0kFpmqdx4A7fhlADlRAZNTcHqR0UZJkvxV//1PVPbFWsVdirsVdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdiq0+BFR3JxVbI6xrzYgKO/QD5nCGMiwPzh+cflnQFaKCRb+93pDFIONR2LqHAyXCx4nz
t5/80wea7l9QniWC7m24g12XYb0HYYDFkJMU0+eCK3kjllKyP8JDCoPGoFNxkJghkDaa+X/KnlvU
raSTUdfitJlaiJIFjFNv5nHjmOZlmAll1BpGiXl7bW2ojUbZgUPBOSkHwozDJwmWMm4Z7a3t+VpD
HYDvNKR6lP8AI+waZfaIhAT63FCxa1Bkmb7V1J9sn/J74GVoMW97eSerOx4nua1xtUytbCCGjKpY
93OKFWW5trepZgK79RhYkpVea8SSsAof5smxtfpPme+tbkEzPDJsVlUn9nIkLaYyXlvqurRX97cm
eRFZJKmpYcTxB69Ca5EhW7WF49WMQnUQunqQyCgoXoeNa9q5FU5haK4PG5Tg/icjMOFDKbVeEER4
QRcm/aYbkfQMoHNyxltLZ9Nubi4MhZUtlFXnk+GEAbn4yQtfauZkIW0TPVeJorZOVlD9dkHSeZf3
A/1VOz/Q+ZEMFNJy2lWoX17dPzvZWdlG3KoA9lBPwr4DMoQb4EKELSAcuVQ+1MBig81s9wsakHqc
kEFq1f8A0aWXsSB+Iy2IcSfNu9blDGjKTVCQB4mmSkNmzGowadfvD6giKqNgTkREsDMWhXaaGT02
6qd8BsOVAghRjuGRialeR2IyIn3sTC2U+WfzF1TSj6E0rTWwFAKnbf6cpnAFmDTIL3XLDVXLF/rM
UhpyJrxr9+QjKUOTKhLmkVzbW63jJHJSFSpLAVYA0BK777Hpmbg1RI3cXPphezOYxoemaha2/ly0
kv7wQtPp+oWretMlxGFKevHGrNHHzK8lZl/axyy4gwhipG2WiLbardXPnAJaWt+ByigdVspZwAaT
ymsauqL6npN8XNVyiJILdICmP6zoGn6v5hFv5Qima0lR4534FYJHUhaxEDjv8Xdsy4ZqcaWEEWxG
5tJ7a4lgnQpLASsiODUECu526jMg5NnCMTbVvot7qGmXmoLbyvAQilooXkiCqCN3X4R0zGMw5uKM
gkc0MlldKqkOR8Sse4ykyINuSaIpNvLVhqms6xbWOkwyy3crEuIo2cKD1Y8e2+Y+bPbZiwdUDrfl
e907U9SWx9W+s9Km4XOpRIwRHJpuRzArTpzzC4bco7LLHWwU4XABrsZe304pTdJVVkZGBT+UHYYq
reurVHc4qqrEZAhlHGMgAPkWSKSKCOVVr8f243+imKrpgrMqSmjqSQ3iG3xUoSW7JQoorQ7NixU6
mTdzU4q12r36Y2mPNohlNT0OKSF626TniE5g/a8R9PhkwEDZRm1XT9OJhtI0muugAoY/GhUfab6c
JpInSYx2mpyeXBNMrR3tzK0jQyQNCxi6p6bsfjWjdFXMnDLhcXLC2d+WfKum6c1rFfXVpJqM6GRN
LE8Rc9f91VLdFr9nMbPlJOzZiwCt2Tfpm0guobC3RLa6ZgBZsRFHts1WOw39sAhxDdOSXCaQ8k8k
s0w8xWs0unpIFW+MLiCMGnwrUFVrX+85/tfZy/HjapzY5qeqafovmJ7rQ5BfKY+EZlpJ6NeJUKw8
AKZmxhQcSWTdDaFpenCwl1nVGMlrC4C2ykL6pNNgTy3Nf5cxs+fhPC5OngJC0f5p81W+l2Ik03RN
OjhdVeO2uYVnnHw9SR6Z/wCEzEsuUYgMVXzzpUxji17QYrcTCiXVkvoKrHapHB+n+tlsM3Bu05MV
qWu+XltII7y0mF5pl2KxTih33qKgkfCVK5tdPqhkFOuz6cxFsc+qshMtq5STjVk98y5YK3DgQ1G9
FW0o/pPU4NJnWlxO3EN9Bb+GYeXPwc3Nhh4tw9Dt/wAndBjci6vbmaRa+tBaxlylP5nUtw/2S5qJ
aiRkSHaw04oWlvmLyP5KsPTS11C7t7iQUKt/pBWpoGYLwIHzy6GqIWemjTFdZ0XVNCZZZmW802Qf
u76I8lUkVq9Cwj7/AGmzZYdSC67JpEPazBT68P8Aefz5mipOqoxVjKXb1HFWPWnc4ZS4QzgOIs38
sfldqupwxSXEi2cRA4eoRU/IErXNZm1tO2w6MEMil/JjTY4maTWmjI+0v1Ula/63qAZifnzJtOhH
Rh3mD8sLuzi+sWM8OoRLyLpBxD0H80Ss7ZlYtSC42TTmLCHt5YWZZCVdTuW+ED2AOZQje7jHYtqh
O7fQcEjTXLdMdN0y5u3CopWpoJKHfMeeZnjw2zPS9GttO9PYSXJFela+2YuTLYc3Hgrdn/lLyHe6
kwn1FGtrINyK0ox77VpmHIlzMYexaNaWGm2qWlnGsduo9gSetT0yAb6TZT47Hwwpqm8VbxV//9X1
T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7Ba27fChaWbw+nEpDi4UEsQqjucVJDDPNf5peX9BjeM
Si6vVB/cx9AR05E8RT/VOTECWuWQB5F5m/MvVvNlrLDYXhtr+L410xaKsiD4fgelee9aPJ/NlkYE
NficWzx7UJNUlc/XGaIq1GR+pPcbb1+eSTQQlyRGqxipBFQe4ORLIBBfXZEosih1pSh6j7srlJmN
lsd16bqyNyCsG4sBTY1yoi2Qmu1G/wDrV01wUSNmA5BNhtkoilJtQhDXDrCZav8AsVr23+WSluo2
TaOwt4CvqsDIQKMfl4dMHCvEiJLi3hWjEAjfHhRxJTfa8SpSDp4nEBjI7pNPcSuQ0jVPhk+FipES
ndSCB1p2+/EsaCbab5X1nUoBNbQMYviBkqBv9JykzNsPE6K+m29laTy2OpB7S7VqxyDeuwND9oYQ
bZxlaYJJBco0ZbnwcqrLsaVPTpkuFsATLQm1K7u3tTbmWh+G42VAAK1ZiQMlXE6rJglEplcaloum
XAjZ1vroAgwrzEQIPdhwb/gTxy2OlDOINMZ1fUdS1JibuSkXRIEAVFH+xAJ/2WZMcYDMG1G21B0K
xsAUjFAATlwY+AO90jfWZS3ZjSh2GSEWVcKKFlGiBeZ5Hp4DGcaFtfjG0nvFpMQWrQ5XGy5ANhFR
grpzE0HJ/wCAy8RcTJsWr+Rh6IC1CItWHToMJFNkTspJqc6Q8Go0dagVP8MHEWuWAHe1t4rTxxXE
aktNVPTXrVdu/wAsBBKYyEdkPPp97bA+tEVA61odvoOVTxt8MgKEZgPsniD4b/rxjsz4bRFtf3EH
xRtRQasvjhO6OXJl3lzV9DurqNdQQhW2PGoYGmxG9KZi5cVmwzhLvZra2lta6ssPl3UXGtrbmUTO
g9FoiKmNiVpVqUqP+CyoZSG3wQUQuoaVqjSL57uWN7buTBbgFbcII/hZfQAZmZ/h/eZlYTxFxc8K
YYNT1WV5bXTJGhsmncW0cewQSMeNHPx9B+02Z3FGAcCpyNAbJpF5YOmapbXnmWJ59Iljczeg3KTm
UZUL7g058K5iZtVewcvDpSNy1a/mDHHI/ltJQmhh6hUjUHia0BJHM0DZrstnq7OBACn+ZGjeTI4t
Pn0S5lu7iXkLyTiVjSuy8KhT168hl+CZIALj5cYu2NeWfMGveWbq4m0m+S2uJUMLSlEdkQkNtyVh
+yMypYQQ0eKYs2tbnQ/Mul2Hl+yma1ubq/F15gv5+KRy8mj5kcfEI+wVf8nMDJiLlY87HvNnky1u
bnXtW08wafoWkmG3gqZClxJ6cYJQkOxJbn/LlW7fswuQX+nSBLiJ4jxVhHJsePYj2OGwxopnZ6hD
c0IHFlHxD+mRspTu2vI2gWCTfh08MNLbZu1VggUMQDxJrtUEY0toQyytIPUNeIoMaRbakj4exxA7
1XshIBXbxrhoK7gGFRU07DqcjVq3LJb2qpNdMQhGyDdq4kUzBS17nVdUeSLTIHEa/FMkYqwQ9Wc7
02H7JyAkVMQWX2fkbTNEubI6zJBqKavbNJYvE0gSGVWb+9I4PyrGy/tZbwMTUd1vmLzRd6poOn6b
qjpHqeitJAhRQvqwvxWgMYp+7EQoX+L48y4x2aZStPfId/5oSNr2ayW7gt1al23pB1SlKCpVu+Y8
oAJEyyuGHQfMMRmRlaY0dviKyIzb7GoG2V+Jw8k8IlzSvV9H8w2doLKW7aTRy4aV2+LjUgEtQc/h
oD8OZuLOA488NqOueWvKtt5bhvLO/c3rpI0CuCTMyvT4Qq1A/l58fhzKGfi5uPLTgdUFo1+kdhc6
PqnO2tb3e3laMgLIoqN6fZrx6Zj5sYMrG7dgnwiixzzHoPmWMqZIVuLHb0rqNgyutNhSvqg/NVzE
yRI5uUTGXVC3NnqGr3OmRnT5P9HYco24oh3X7RqDTbKiL2DKMojmU91IJpPlS20a4l9S7SVp5AKE
JyZyqKRtTiwzZ9n4CDu4OqyxuhuGISuWCkAId6071zeEU6SYs2pWV8dK8zWerPHziicM470IKGlP
Y5qe0sRlHZ2WhygGi9Tm1W9ga71bR7j6zpurEzPIvxPF6hL+myEcqryK/CP2c1cYGIqnbiQPJJVT
naXDX1ZL2YfAT2QUPt/lZTOad1WOygj0G+lvlK6e1qwBetDKCoXhXvTll2EkrZ7nnumRtIjRRKWF
aRju3yzd4ZiPN0efFaLAMRHNCwU7p0NR1GXZomcdnGxemT33yxrthJYWeomVRZLHWdKEmIqAdwAT
tnOZ8RjLd6LBkuNIm984aLqFx9Ts72F0Yb0Dr2/ywMkIBlVPN9Qv5rPWbi5tZ+IgOy/aVyCaChqN
6ZEbFMhYU/Ofl0TXEV/BAIkuLZZrupoofmV+EE13ov2c2ODUnk67Ph2Y7pfl5bl2nk5LCg+GPbkT
/TLMme3Fjp2XaPpFzcOlpZ2/OTpVei99ycwck3NxYqep+Vfy+trFUuNR/fXRFQh+yK79qZRxOZEM
1Ea/DQUC9Au34ZG2fCjLW0LvyYUr0wLSaAUwUlvCreKv/9b1T2xVrFXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYqWvfFhTiQKmlT2xplbFPM/5i+XdDR0kuFubtBU20TAsD/lUrx+7LIYiSxlMU8Q86fnVrOppJ
FDKbS1LUWGCQ1pv9qVeP/A8cyI4KcczeaTXF7fOGlkKo5orGp+keP+rl8cYDUVqxm2mMkbFZV+Iy
jZxTavjHkpxBDEWE7i1DTPMNv6GsOlnqqj/RdW5BUmNNluSePLen71nb7T/DmNKLdEliOu6NrGn3
T2+pIYn2MMighWU7gqdqjKSG4FJpFK0D15d69/DImCbUmYdh7ZHhSCoOw6b1xplaaeWrVJZp7kuB
9XQFUPUliRtiGY5IjWpUZUKxn1F6kdge/TFqkUkubuWVw0jVAFFAOKIlDoGdWYGijc+2+TiESK9U
FOW4O29Nt8sAYGSLt47NoLh5ZSkwp6aqNj09xkSGsyTzQ/PGqaXafUo40uIallWTrXwAIbKjFro2
hNUt9T1K6bUb5BC8hAERFAAO4rTGm+ESr6dYLEKnduQKsOn04HJjBl2n63az6GfLV+0lpZzPzTUb
cnmDtQXCDj6yVSnqPIvH/YZfGLjZsgLGde0C/wBIljEqBrWaptL2H4oZUB+0jgcT/lqPsN8OZMSw
qwg7e5LQGJ1DjpyPUVy0NfCpSWrIpkjBZOhYdMspAkhhcMsm/bwOKnddLqM7KVVjx7jvjbAwQrOC
Q1TU9zg5N8eSZ6eguUaCckRfaBGTiXEzc1a5jhtl/dO0is3H0j1oO/fLSBTXjkbQV1YNExPXbkY+
6jxIyFhyN6XRSFbaKSD4pYeRZa77nDbjyibXyawkhaOVXaOUfvGYkn8cEt2YgQgntFerWtGA6Rft
fdlZDfDJ0QnShbYnqMqLdQbDMGqKc+isBvT54ButcXJkWjeZ720iFvLPJ6WykqxFB0691wHTgr4x
in8NwlyhYt9aqdyRzPEilO/Q75UScaQRNEWuq3ekaDqOm21il2bhxcC5I5Sx8OZCr8LH9v8AmyuW
QzFtuPHGOy/yr559VX+uQm5hgZUnhL0dvUYInUNT42GYm9uQapK/O2hpb+ZF1F7QadazspRVHQsK
gdErmXDHbiSnumGsa3oltoUdpbwG81fUVe4uzG49KD1F4KgADcWQpz4/D9rLIYiCxllFMJjsgQBJ
SSRBuoHUHcl29umbCI2cGc90WYzJHQVYKo9REakajvUjbISxBEZlPLTzH9e06y8vazLHH5ftbgXJ
SBRz5KGoNiPhJep/ysxsmBzMedlPmS20fX7TzF561KGabSbeFbbQbdgVIYiXsahU/uuFM108ZBc+
MwXm+v8AlXUNEexE0scl1ew+utvD8UkaFjTmBuNhjE0iUULaas8fw3AqgFSfADrhQnEUkbrzRgT8
8VXAmtTvXviqooJbbfATaomGEurOSFiT+8d9lH04AFQN3rFtAOFh8bH4vW6jbwyywAhMtE8gahqt
6W1y5bRo5rV7y1muQV+sqrqvGMMUr17Fvs5jylZZxDLdAmFtYWmq+WbYaXa29o1t5oQ7zusqcZHC
gIXMaiUpy+xmTix96ySfXD5dS/ttP0K/mj0q4IKXF3F/dSOayUYv8YJ5n9nj/scuJFNBJKfa/wCQ
fK+mXllbfpF4riQJLbarcwD6jenY8BO0nAKKj/fnJZMAkwOzDvMGra5p+o3Ok6iZbEuQZFtpGSLc
DiVACgq1FyOSBpnAhn3k7y9pr+Vrw2omXX44FuIYnrHzXiTzQ7lwSV3p+1lOLHd22SHcr6N+YlsZ
Vs9V/vd1kkZqqBTaqnrv75bLTkCw0eNvStrtlogazv01CPTb25l/3Hniro7UPX4o/TU0r+1lUchG
xZnFe7tcbzFrmsK3mWE29nZFWg0yJ2VJEdqclagHb/ff7OXHUwgNyFxaSUt+nuUT5cvA8j6RPLaR
neOFpGA+RcUr/wADmP8AyhAmjXzcqWiobfcxTWdQ8z2jNBeNcRg1AlkZzX5Vza6Y4Z8jH7HS6nHl
if4mPXE1zN/eEk9gd6ZtseMDk6+cj1X2yWzQypIo9fbjMT8IG9cqyTNsYUVKe3P1gx27LcwDYydR
uO3XxyZII3ZmJHJqym1TRpy2l30tm5PxLGzIrb/tBSK5iHTW5EdUYj9rIrP8x/MUUfCax0u4YVrJ
NZxSNuOvxD78xp6D8cLdHtA/grw3mPz1dLZ319FFaQJ6v1NP9HsURaLXiCY/2v5ciNPwuVHVg/2p
3ZaLonlbzTDpmpQSXqxKt3a6jZHiRGC1SUUN6sf7s8v3i/DyyE8hn9LARHVb58/wjqNl+lNLmhg1
MTU9CFERpI6NV3RT8L1Cj9rMzTTnHYguNlGMdYsU0bXNQ0mcy2kxWJj+8tpKmKQdw6147+BGZOXT
xyC9mqGpIOydya75cu51mu9FUTPsXtJRBVvZVjOa+WnpzI6q0ye90PSnT0dEknu2AkEF1NzC13Vn
iaM1GYs8YDkxykrL2bVNUufrmpzcwAFhtxUQxr4IteK/QMjdBatkXlfyNqmryLJRraxBHKVlIJX2
6dsrMyzGMPWtC0DTdGt1itI/iAo0vEcm9zlZsswAm0cTMSBvXf3yNMwmNnYBfiff2OFKNAC7AYq3
WuKuxVvFX//X9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KtMF7npirTE05V7bDvipY75i89+X9Cicz3Cv
OBUQx1ZvpoDTJxg1ym8Y85fnJqupI1tAy2tsWNFhrzI6DkWLD7syIYh1aZZHml7e6heylzIwVtg3
T9e5+jMgRpplIoeO1iWQkVllGxqO/ththZWzxSxVS45RmNqyCQcSCPagx8SmQBU7e21G+d/qEPqo
N+clEjFNqgsVqfbITzCmyOMkoxPLOnqF+v3Ul1dv1SOgjQ/PiP8AiWYs8zkwxIxCsFm+mauGvNJJ
paSDeeAneqkfs8uX21b7WCM7ZSjTFfMPlW60lkkqbrR7liLe9Qqxof8AfgX4kah7ouXEW0gsdltp
UQNHRlXpTooO1cgQyUFiu5ZFhhiMsj/7rQVY/wAMqIZJ7p2n32nSk3XFPVHBoKgsANxWhPfIswVu
p+nC4epUMKnuMUGNpTb2rXM8a/DE0zBVLdN8WiZpNNV8p6jo8aXN1GskEhChkYFTUcux9skC1iVp
be3MV0Y3ihERVQCB/tnLLZc1KK0kY1YcR45ElPAjooohIiwKZJQBV+wP4ZQZ7tggE5hieVQ8785R
t7AYRJsGy2a+tbc0dgzD9gZJsEm40nuLq09KNpJLsovBKcncvQqK7D4af5OX24mSAt6TrHk6+0bT
JLi1iOq6SkSSaxol46F7eZkBBDxmL4t34+nIy8W+P4sMZtgApgnmXylHpmkW3mDTJ3l0e8bjxuKJ
cRybfC6ERl/tL8caen/lZfGbjkse/SdOSrHxUihJ6E7ZkcTSQvmks72JBbL6dwigSA9yO++FAKAf
iriMjiw+0cPCzPJdFG8gLQqxQdSRkaYcaLstPvbmZY41PqP8KKB8Td8eKkCPEjr/AE290eaAalY3
EcDb8gACwFOXEt8Nd8ry5rFBuGADd6D57ufyzPkm0utGhC6pfP8Auo19TnCsdGb7Xw0bi/Ll/scq
jKVtnCKeTs8VwSwPCUd1+zmVAuLIbrZFSQiK4HCY7qw6HLJEMZWoSJNA9SeKjowyBLYKVBJDc/DM
PTn7OOn8cgYsTMqMsE0TUZag7hh3GR4WyE6C0MB8J77HBxkNnACj7G8ubVg0T1TuMeES5sT6eTNP
Kur6Lf6glpqkz26yUUyJQdTQ7sGGY+bEQaHJtx5B1TKe18v2cl3q1tBJaS6bJG0InkjeO5AdT9mI
lv2v8n7OUY8JtunkFMd86+bNY80aobu9VbS1mEZgt46U+FOPQlmGbPHjoOvnl3SRHKQGGOqI/wDu
vqx/1jvTLjABxpTJWsBThsTT+7U/CPdj/wA3YxLBUDuHLcuR40BOyL8ulclINkVnqkP8LMzj7R47
fqwVaeSLs9XuLZ0EbPIVYNHEw+AMNwQNl/4L4cpyYQW2GYhmujecbe5n1LXNduOfmIWf1bTIIo/h
NWVKH4Sg+AtuWzW5NOXPx5wUn138u5IrbyzYWqPL5m16P17iIPEIU5CI9TQLxMvxcnyltYWYr3TL
qSBlCywErIo+JK+HIEj/AIbFUxg1e2kiHrP6bHZxQ0/UcVR7X1hFbrM8pmd9o4FB29yafxyQpVGG
x8y+YkuDY2xmhtV5zIlAI0FBU1ILdf8AKwSKs60by3oOiyWUpjXWtP161aCDUiSsVrcSKUT/AH2U
ozo374ZUIyJRdN+YI7bSkex8x3c15rWlxr+hL60aJ4BHIyy8GChugfj/ALHMnHp2BzUmmnabZ+et
Pv8AzLrl4bSW1428kVkj+rxXkTJ6SrJy/wCAy2Q4dkDLap5kmurC0sLHzDAuq+WJwG0zUoFEF5EA
SpPF/T+LkHU84fs5TAElZyoWxOTWNUil1TStGvpJfL0ytEjXqqWCfEq/soyvxPUDjmZDA4OTMxzU
Fu0UfWuN7aOaCSp5mg+Y6HJyguPKzb8uNUhjt7+Aas2mobb0lvSA7xIw3jCFHdm2+HjG32PizFnC
iKcsTNJFqvlq0iv7trRZ7vT7YqEnEkbO3qHjVmWiCtacTxf/AIXMmM9t3GPNOPLGpaj5f2eZpIgO
VtayBHCVNdjSvf8AmzT63IB9LstKCebNdF1XT9UJlnuP9LZqtG1RvTttmhnkmeZdsBw7BNpUJ2C8
VHSnfKhEkpsBSurW1nQw3kYlRhSvcVzNw6iWHkWnLgjk5hhOv+QpBGbnSB6yrv6bEAjxpXjnRaLt
jiiOLn8HR6nss8Rrkwe6tmWbhcq0cin4lbbpm8xZozdHm08sZRVu/wC6KMaQ9QO+WzASJGlS00u+
1idbfToWmfoFWg9ty1BlWTUxiKcjHpuLdlEP5NecigZ4Io9iSGmhqNvDnmF+esuYOzwgb78u/N2m
xSGS35xlSHaGWJqqd6cFcyfhlgzxLVPTGPJEQfmJqdtB6U1hbNqaQG0i1CRZPWWIgilOfp/tv+xj
j04EvJonmkQxKSWWRmZ93LEu3Q7mubMCNcnW5OInmitO0m5vpCLeP92m7yuQqqO5+IjplGXIIjZu
w45FkNnHbWQMemr6tyRSXUpAQo8VhVuJr25MjL9rj+zmoy6p2+HTo3T9PkmuUjhje5uJCOv2ix/m
6AZiSykufHGA9P8AKv5axxOl7rFfVFSluCKdKb0r+vKRI23GI4WewwRQxqkaenEooqj2yxqRcFrL
IQCKYLZUmkFoiDfrgtICIFBsMCWsVdirsVbxV//Q9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVo9t6Yq3298VU5J
0iQvMQigVJJ2+/EoCQ6x578t6ZavPLdLKynisMRDOzeABIwgWkvJPOX52alcq1tYg2MfxLRG/e06
CrAAxv8A6pzKhhFbuNLIbeW3msX99I83qMeX25mYk/S/XLhFqkUPHAijmxMjMejDr8l35VwtYJKc
6N5bvNXsJr1J7e20+ybhLc3TlFEhp8FaN6deS9P5sHiU2ximVppj6DJAmo6OutQzv6tvf2tw6xKN
9jIEq3XKZ5y2iAX+eIfLOo+ZZ9XtjJcrP+8NqTwgEpJJAILB+3wlMxJZS3CASee6laMRIqQ260/0
eMCNQafyqAK5AyJbYwCbaH5O1TUYPrrqNN0haepqFzVIqdfhNKMaZAhnyTeB/LdtY3kGj2q6jJ6Z
S51q9A9OOrAfu4z6q+wbkuESphIWxXyx5avbLUGtb66U6NqDc+M49SGWGvxsnPZOCuPjX7HLL4ZS
WmUAFSHyJ5H8zTrN5b1P6pYwArNZTKPXIQlmKoHPqA/zM3w/7HJ8RLWWOeZtVsPLhnsND04WckRH
qahcopnZKGjrUMURvtBg+EC0gsEhuLyS8Mtw7ySP1eRix/HExZpil9BPSKc/Gh2LbinuDlRtlxJj
atAlvOJbSO7Eq/unFFKGh6UBpiCwljB5oO/v7+70+HT5ZHWCGTkEJLU2buf9bC1+EAtisIo5WECr
JsPjYDbr88NshEK0WmiQkyMWP8g6YtgVGa1tFNeK02KAAE098q4N0Wlk+rzSvwiHpp/KOuWiIVDF
WYFyORG5INT9PhjsimdeVtKe48qJqFnK0WtWd/UTGqxQwKsRqWB2O8n7OHGSebCcYp7qX5iskNxb
w3H6Wvm4/WJUVYYXIFPjClxcU6c5BmXHEGkzrYPPNS8w3+suU1KeSVFP7sVIjir2RK8VX/VzKhhi
07pZPbyRmqkyR9j2xMExs81LePiakHqOJ+I+2ItmYBELKJkVJl4yD/dp+HbrU/qyRlQaTxMt0nyr
5h1DSi1naniipLCoBrcx0JZ7cgfvduP/AAaZAZosTjkgtI1S90rW01C2UyXNuxAgI5hfhoaqdh1w
mIkyhPhZH+YP5l6n5vsLO0ms4rGGzTizbM7OVALD4V47r45XjwgS3bsmYyjQefXFwkqRRxqUjjHE
Odq1r+uuSnQ5IjaceTvKkXmDXl0tr2Czg4h2mc0Vug4A/wA3xZROUhyZCIJZN+bn5a/4WayuxcRl
riFeVmCeaDm3x7+Nf+FyGHJMndsyQjTzmOcj9249WLc9K136VzOhXVw5xA5NtBaHpIy+xUH+OTID
HjKvFxVeAYyg/svt9x3+7ABamVclCeyIq0ILfzIftD9eQlFMcxUkjuV6I2QEXIEgqRWty5NV4oNz
I/b5ZbEbNU65hMklkEYVnaaNfsySsSB8lPIYRGmg5Cps/Ik1O52kcVb5Kp+yPkclbEtnmCagqW3K
BiS3+s/XG1AaQgyBOO5O8aDiv+yI+19IwxAY5DXJMzpIEUXqycpnUmKEfYBptt/ZglOkY5XzSl5Z
Q5BkIIJDKDtttmPHKSXYHEKR1tA0llJdS3IjC0CRjq1a/LMkAuFOgdnMk1u8ccNXnn39XwHt4dMr
lXVtxAlknlrzld6NcXXq241TUZrdrW1uLpy31XbirJzEnBTt9nj9jMPJhgOTlwyyPNOdS8uadceX
dF8t+XZ4daudTn+s6vfpGrXMClqEsw5vx/d8FHNcwpOXF535l0PTrHzNd6NZ3Ze3s5WhaedQlGQ8
WVvifoRiBabDI/y38l6Fry6nFfal9Xu7SOSWwWnwTMsZZF5cgR8S/wArZGUCGY4WU/p4WKR32imL
T7m3tDa6jp8REa3BQorzHiBzKsnHiy/t/ay3HjHVpySrklFxqVhLInl/RHex8o3jw3EMVySQG57M
XJNUXghzKxxcXJlIChq/ly/smaZq3FjXhHeQkmJiRyG+3SlM2EICnBnOZUNO1XWNKuEutDnlUrRb
owOyhh7leo+1lOTDEpx5qVp9R8xeZbmHTLm4lvJY2rCpZiYeRJ5U3/mp/ssolCMBYcveXPkr675S
1PQo52/SEN0Ld1g1KL1DIY5DUKpDD/Jk+L/Jw4s55NeXTiknkiuLq2SOL0zHGeYSDdqnbqAMObIA
xwwAO67UvJnmHTdNh1q4tZLSG4cLBM3JKs4LKajttmN47nAAjZkXlC2m/wAD3kd3IkCeYLmC2sI4
/gZphLEfUZRTiBt8Q5fZyM8thpGLdA69ZT6TqUmnTXHry2R9KSYEkErtQMd81eaMXbYOS2F5I39W
NiWBrzViCD88wMosubx0KZNpHniWFViv6vENi/dcx5Y7YAC2Z2d3ZXMYntXEykbjqR+vICPDybuJ
eqGQjgSBv0+Gn0DAAeK0ifRj3nTTtGuNKuHkVTfwxO6TKAKFVrQ50PZuondOo7RwQIt5WXYFetF2
r2+7Or/ht5Qnenrv5Ytb2/lae9tol+sLKVnmAAdRVqU+7xzn8/FxG3oNMAYhnk+p2EVqKgSyFa1e
jsTXrybf6MqgA5U7HJ5r+Yepapp8Ftf2Nw9vc3E1F9IlfhANBsRk5EMYb80q1e3i1ry++si2W21P
TiFvY0AUMjEAfCABy3bfMrR6kk7uDqtOByY/FonpxR3l+zQ20w5QJSskp8KEjYdK1zaZdSAHAhpL
O6benO4Mcii2swtVtY9qjwkcceQPQqwzT5c9uyx4OFP/ACx5P1bXCqWiFbVTUzMDRQP5RmITblCI
D2Ty95R0rQ4R6SLLdEAyXDAFi3fc1OEGkkJ4qcjvVj4nc42tI21suTBmFfY42tJisaqAAOmRpla4
DGkOwq7FXYq7FW8Vf//R9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KtVFad8CuLAKSSAPE9MVSXWPNWl6eOBkEs3ZFq
f1YqwDWtb1nWm4gCK33Hpr8J3/1icJKAxS+0DU+RkEAmipR4eamo9wDX7sMSksP1zyzF9YNxawsa
bSwMRSOvtsSuZUJuPOLHI5/WV3X4Y4a1Y9duwzJBDjyCkbkCza8KlY1YBU/nJrufHp2yEysIs20p
dU0zypcWerQRXOmamRKLQAtwccaNyRqD7K/azByTcyEGrSNJdP4vKLe0hQ+jaxmiKxbr8XLtXvmM
SW0RTDTdIvr25eSwtlt7Kp9S+u/3caoR+zzMfqf88+WRAZgL2fQNEI/R8Q1rUyxBvLuqQRtuaRp+
5cU/mZ3XJ1TJD3l1rPmGcPMpvruKgcSghEDfsow4Jx28WxtUw0LyDGJ0S5mifUpKsbWVlEQSh915
H2V8HBbElDfmJqa2HlO50S7sHiin9WG2ZEeNUkhHAOGcGgHLav2syMEObTkLzfRvOWi6d+jtQksJ
P03pVvNawywsFt5BIsgEkqsGcyr6x3WRE+BPg/myRjaCV1/enzxa2r3twtr5iWMw27khIZwtFAJe
oR9l+JpFXCY0sSwt7Ga1SaK5t3gnh+JwwIJrtXfqDTqMCSUGz8wHBCmnQg1+kdcrkEgujuJoaem1
OJr9GVENgKvFrE68qqvInr4/jiEq416WlSir3b6PpxQV02szzQ8VolenHr+OLC0ACWZXckttQn3y
fRNIqw02+1C7CWkDTvuKINgad3Pwp/ssjVpuk9bQtI0lkOqT/W74p/vJAw4xtt8LyUZGPb4Wy2OK
18QKepa/f6lZxWVxIILOEfubeL4Y0Ne1eTfjmTDFTiSKUsl11jU8VoFK9P8AM5kCLQZNtwuDwkBj
nA2A2B/XkrpeOl62d/bCrqHiIrxqKgfKuS4mHjWhpreNlE1sS1ftIR096bE5VORb8Zem6F+W97o2
m3HmiGCx8x6VDCpltEYNP6cnEOeKyBlaORv2kzDlkJ2coVS7RvOFt5UENx5Y1P8ASejavzR9Iu1Y
XFnxpQ8wIU5Ul68eP7vIjTyLE5QNmM+bfPP6e1+fUvqkViskYjZYagvx25VZnBPyzOxy4BRcKeMz
OzH7+WaWGEiF4ouJ9GRwR6g2oQTSv0YfEEkxxmG7L/y4/wAFWtzKPM8LtcSuiwAsOKoCCzGimlF5
9TmJku9nNxyFbpV5+n8qy+Y538uBltVkYRkVA+A8eQBCt8XXJ4werDJIdEq1TUdU1eb63q1wZplX
0lkcivFSWC0+bHLxQad5PQvLf5M3Wp6DDfxapBbetE0oXmjcVDU3oTT5ZVLJu2DE87ubLU7eaFJT
GTPGs0ZV0b4HrSvEmh2+yfiy3HZaMopUvLG+gZopOEvphTIoZSByAYUINOhzK+lxgbQodWRWBLBT
sBQOD8zscrMgsYqglYdpPvX+mEFlIGmy5cgMhan2S5FAfopkkQlstUAqZSeRH7bbU+S7NhpacQKh
iSobo7bufoHT6RjSXKtUHwcUP+6wRX6T0GAgMQd6R+naBq2rM0OmW8lz6I5uIhVVA23bp3yieQRb
o6cyWXdlqtj+4uQ0EnElFkBFR/ksfhOGMhNEsBitTTGFtHK06iVyfg4lvHuMt4B0YxzEc1H07yBu
EPGpbcVG/wB5yEhIN3HEsi8ueRvM2vWc2q2VuLmKJjHz5opDAVIVWYM1B/LlJygc14T0ZT5Y0fyz
qckeh3dhNYXdqI5b3VwRHIGP96HEisCvIfDxTMWUwXIjEsQvG8w+WdSuUsWnh+s/uo7sKaToDyHx
U4/D1/2OCMAWZsJL9TtVuXuL1jNdSkyNuDzdjydmI2ryPbMgYgN3HJNo+CaQiSa0taTBebCMFuPD
4u1dtsxZkW5UbZZpvlT9Kql9Z6vBd69c+kJNK4sFEbJXdiQpbZK0kwk0FkGbXuq6v5h02TTtU0VL
P6sSryWxBa3nUA8Ihyk/dA8eVQ/w/t5Uc3CLZxw8WzFtbg0y10VrIXbx3IIc2isrRyvv8TAKWU8T
/MuZOn1HEWnPh4QxaN2kUo7F7Zmo9epZOvT55uBEEOimCJKSNcQX0mpQztbXMIH1X0yB0AG9a9q5
iZYCWzlY8hOzJNNu7TzZfNdeahdXZS2jTT1taCNpVUiSOccJGLV4BWDRr9vNeRwl2mMWFTTvLvmu
78xzaXo2jx6eRbCWaCR15+iHJ5BjIFLHj9j7X+TlM5gt4xgBINQebUddFhfNc+vYyNbm1PVkRuBE
fw7cuI+1kMkapjjo2y/zxoNr5d0G11PyxNLNpdzHW9S5IaJ25EcFVVidHX4W+I5IQbaDz9fNb3cN
vbqFUQtyIowmoa7K5Pp8BX7JXn9nKJ4rZxnS5dTtWu3jhkK0YiLmCtVHT7QGY08NN3HaPW4RqCSi
uejdR9OY04M4lHWF7d2M6y28nAht96qafLMaQbg9Dsdaub7T4XYBJHqHYA0NCR+rICJRe6hdWsF5
ZXunpKsd1MrCORiACaEcan4RWvfNxoNi4mr3DzC90+6tJHSVSQGoJBup+kZ1mLPHheWzYJAo/wAv
+Zr/AEK9M1s1RIAJ4n+y6DoABQ9Mry4BLdvw5jHmyb9J+XdRm9SG6k0+ZwC0MlZE5d6FV2+ls1mT
SEOxhrAUZPoNvqtssUurxusPxIyKzEfMCtMxzjIbhlRV/wCYtMtbGTS9DiN5LKyvcX84PohlIIoo
EbFvh6145KEOFhOdpJEtzJf+uwe4v5qcnI5PsKAAL+yAKdMryztniD0byn+VU9w6X+u8o4ahxZqy
1cjerfaplUYtpk9Lt7W3tYUggQRxx7IF7D3ySouGBnOwrU74qmMFoiAEj4vDFUQK9KUGKt4q7FXY
q7FXYq7FW8Vf/9L1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqkuseZbHT5XgB53SAFo/AEV/iMgrDNW82apeIyBjBHu
Bx2qPoxVIFHqTDkxLdSzEnFURLOeg2+WKFiykMCHKnxySUl81RtGtvdQUW4P9+vaTpt9OHjpeG2C
a1oy3FpJJpqiOcfFdW/Si13K9cvx5ba5YmvKeh6PqYeLVZW9K0QPFapUM5P8xBWmTnLZjGCJsfMs
2lXBsryJptLkO9vLuyqdqqxqxpSvXMEndyYhlGhyeU1h+swWranqEjlobWRilsiVO54seZG32o8S
toPVfMGtavL6MI+sIG9IQIBFAPbggCqf8oLyyIK2r23liwt3gk8yXnoQswH1eGpcE9ASeFR7k5Z9
SDJNPNesf4SjuQloRbRPxtnRF/eAkhGYn5ZIY2PEw/yx+YTNrTXurWJu4Qpa3CNTg48X+FsujFhx
JT+aXnnV/MlqJ5rhV09pX4WigVQk9OVAT9+ZGOLXMvMnL8Nz0PxL45kxg0ko6/gKQ6bAp/eTAOPT
J+GoG7HYp1/ZyvJFYl6DoPlvVfNugXB1WNPqlqphttZJKS8kAcK4UfvI6t1dm+03w5g5J0acnHGw
8z1vy/f6TcMlwQ1SVjnSpWRB041A2xErSYpSwZeuAhgStDDIpElxoRTxxSi7W0nn4JEpkdjRFX7R
+nFeFl9v5PsNGMM/m24Nus0Ylh063HqXMisAwDBzGqLQ/bSTnlsYWwM6Ur3zgn1L9HaXAukaep5F
IQDM1dqvMaStX+UvxzIhiapTSRXtS9GdgrfFJX4mFf2qk5eAA1GRUL2N1A35KO4wkolJXjv42t1j
IYcO69/nvlsWk7oU3TG6WcJQqR1yMuafDsIxtXUuxCkuwoa9MlxBhHTkIG3W4knVIzSVjQEdB88I
otpNMlt9V8waIko025eB5oit5AjExsppvQ7fy9sZYRVtcc3qpL/Jnl/Uda1pLLToDNdGMkNUha/t
HbK/FjEN3AZMnt/y7aGZdLupPqvnJZDPa2Vyo+pzw03VH+JuRAk/3R9rMDLl4js5eOHCN2Vw6r5J
TSF0TzhpQ0vULOd2ntyeUkZDED6uSVLB+vpN6ca/AuSxxlza5zEtnkUsD3V7ObZnkjqSGkAV+K7/
ABBS1PkDmVEDq1SiejrVbb63CG/egmkzrsFU9adMlOq2aYg3u9W8x6N+VQ8kT6pYczMswhtGcnk7
AoX25sPsvmHEm3PjVPNdH1fWVMum2V5LDbSBurFeKcq0FCcyYY7acmYBCXVrcW4adXDiFgoIJpsf
1ZlxjwuHPJxL7y7kWVkQjiyqW8alQd8hllacULCCjFBTfkTlDfGFL19QMB8VWNK1y2LDKQE2bTbW
OaCFpmeZ1EjL+yAQCO/vlgLhiW6XoxH1qaSjNCq+mOwq1P44bcitlSNeU1nH0kud2LbgdOnXxxti
ovLJRgtEQ9R3O+Y85G26GHqnHlrzFd6VbX2mwTTQRX8fBpYWKSLUhtmBDdvHMfJilNyPEEWa2+jp
rGlWJ1a7RrCyjkNrE5ZrqWSRAFDMRX7Sr/u3Kbli5s4ETYve6F9XlcW8jCNTsrVNK/fmdj1ALiZt
KY7pj5btNAMV1DqEKyajOqpYTSuyRo7Bga8a7sSnH4cvlZDjQoHmyDSZNZ8vahDYaLfw3dzcRGS5
s7ZmaOIEkV+JV4NxA3Vc1+WLnY0w1DWre0tr271SAx6gojWERgFJQA3Iu5Ksf2f2WzAhGTsPSGJe
bdS1W+8vaZfymRLUSOgtiqg1AJqhB+xv/wASzOxYy0ZcsQGLx2Ia0W9klRUdvhQkhid+lB08czBj
NOuOpjxMm8t67p2n6RdaBqA9D6/WSPWIESR1BABUc+B4/B/w2YWTFUnLjlC6SbR7fWtNsvKU09jN
HFxvdUnReTyPxYNGoaRadf5chmFRbIysst13V7DTWistHvZrt4g5vLomnqzSDi5LcizbAfazX3Yp
y+E8OzDbq/tJ3dJ7ajsd51Yl/wAaZkYZ8LCW43QpjNtFErN6+m28nNnj/vFDEcvU6fFRf5m5ZsI6
u9nV5NNZtl+oal5aa0sdM0PT1v4JYCLgyooufXZmYEEFzsKbeplsbG5a5RAGyTPb+Z/KtnZ3k9rL
Z2UMlCVVSTI9Chep/a4nlmPPEZORDIQ7yneX2t+cILufWp4ReMY5ZkdlYAqVCrxI2zXZYGJdnjIM
Wa65onkry5f6hZapJNBK37yPUpGZ72YrWv1fk+/PlyNZU/Yy2IM6a+ERtgOv+YbzUvKv6Ktrow6I
03rxW86qtyzHgAPh590Un97mfHAacGWo3p5xPbzRyGN2KOD8JXwyg4jbkCeyNaZyFS6HqIAeM6bO
v3U/XkZ4EwzIy0vbm2VDMfrNo2yzDdlqf2q0+XXMLLgciGZmCadeWGopp2oQ+kHZQysdglaMynr0
zX5MTkxyss0meK401LiOUJEjsiwr4KStfwzJw4RwhoyTPEUvv9Z0iHUDbTNLDDISEuxRlVyfh5At
9nxzYww0LDjnLZZH5Z8pway1za3M0bLGnqIu9GXY8+VOQyrxZAspwiQxvzT5L02Jbi88vX8Wo29n
RdRjBb1EYg7JUH4V4uPtLmzwavoXX59LtYSnS9BmaP67dOLbTY24ySuKNIaD4YgNi3xDqy5mTygh
xMWI2nHqwvCbWxhaysT1PSeT/KkcEstf5FdlzW5CC7KMCE10Ly5f6pOLbT0Chv71z9hflsf1ZicZ
LkiAeweT/I2jaHGlzMgur8ijzOKgGvRQT7eGRMCWzYMnllDmnRj0I6YKIQaVbWzZzyPTFUyjRIxx
A+nFV/U1xVvFXYq7FXYq7FXYq7FW8Vf/0/VPbFWsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV
dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVWHnUioHh3wLaG1DVbLT4DPeTpBGn2mk
YIPx65IBgZPMvM/508JGs9BgE8jkIly9QOTGmy/CT9+WDG1mbAdI1C8Pne9fX5mj1FolZkfZXVwj
L1/ySvfKTFuDOWSqcgQQdqDcbYKZsT823t7YNYypRImkImPtRqV/DAml0Pmm3I4yqFr0IyWyKRCe
YrVqKhAI8e+K0oXd8NQaKg5LBIJCfcdsdlSC5gMVyJkrHMlfTPSla7fjhG3JgbSjXrI3CnUrNjBq
cIHqA/YcU7dN9t/iydkoQ+harp3mHjY35+rXteKOTQk9diciYJ42ZWPkpbGBv0jdIIgp+rorLGsj
E1BcsWH2a5jyiS2xkCnury6voGlPerZxyWvpidZ7NGkWklQUZ0LqxQLy5/5WMIHqidPOrLz1f3+t
xyXNos9kx4i3WvP/AFi+4VgR3XMyIDSObKPOV/rvKNL+eVbC9pDDp0ILxSxt8McZkHJGdg3E4JKQ
xjX9astI0+30L9CT1uiJrh2arIeVAsLBOP2FBb7f7eQ4itITzR5b0eTTbePS7gQQur3Fx668PSZg
GMfI8FkpUhuP8uX4pFjIBg2jaJfarqkFjbJyJb4Xb4UCrUnlWlG2PfMvxwA1nFaY+c/L9xpOoKry
xTk0X01ZXpwFOLIp5ZDxgWPhEK9r5+1OO8hml3sJpB6tsD8IpSvH+Un3yjNAE23YpUKeiazqel6j
5Vb6j5XmmtlAkubihkkowJojqgCdf2lbMfk2EE9Xk+r+TpEjN9pEhv8ASixVp6c5IQtDSaJfjRjX
7TBeX+xy+BHVpmKSafR0VOaPU02XxPt7/wCTlxhGragU90ryDIsKX/mGc6NZHiwWWizyr1PpxNSR
f9fiy5V4d8m0SRU3mK00q1lsPK9qbKBz8eozn1LmXuaMojoP9hl8MAHNjLIkEtxHcOzzc/VY1fxY
+J2y6MQ0EEm7U+duprVlr1r/AA2y0QYk05I43HwK3DrX/MZLgDVKarGjRRlgOcLfahP2h8v9rIGK
VGazV19S3+JB1jb7S4NwmNIVjUig+IdQeuQNt4IbJ260GIUldbPKlxG8A5Sg7UHTLYuPkjaZPcSe
gRcNux3RAQfpO+Wg97i+HRu1XR9b1bTL+G/06b6i0ClKpXdDSoO/Q0zHyYxLo5uOZCd69+YereYt
NSwvY47u5hmD2l6FYtEgA+BNzxBbkf8AZ5WNOAzlkJREPky5tZdP1rzlIbfSb/gTIkiSXLR0BVhC
vKVkVT/JkZZBEMoRDLtAiXyrLHdzQJeeVzOfQ8xWqlp445ECejccefpoSaFHVP73/KzHlOR5FsYv
+asfk2OGLUfLt1Gt3dXEn1jToaPGI2LESfD9gv8AC1G/mycOLqWFB50zEKVWvENVa7+G9RmRQYkt
2t7NbymSMlXIoWHWhNaZOMqYHHatcX9zcxhHAVSQCq5bxEtZxAIjUKfXH3JbhHsf9RcrmC2YhspK
gZ1Qcmcj7K75ERKZTAXSQSJVShSPxcU3+mmTES1mUSqI900KqZDHCuwJPX5ZINZgL2WGSNI5I4if
3go7HqQDXCGWyJtgRLpyVpyapGSYkITv0p7ZTPm5eO+FwA3I2PUH3yAkQicLTLSPMFxZSfExoT8X
vk+CMuYtoPFHkWYW/mK2voOF2glVqfHH1FP+CzDyaeUNwXIhqRPaTdzo0Ew52EolUL9kkA79jk8O
rI2kwy6YHeKjouq6v5Z1ePU7T9zdKhidnBWN42r8LbivX+bMowjkccSnDva1q+0vXpZ7nU5hBctJ
RYYxReJJqory26ZGOk4eaMmrJ5MblQukcUczKsXwxJIf2a126eJy+OE9GueXbdEelKpFZCQoHw9f
+BAyzaPNphDiOwRUGhC55zXrmP1SCr/tEjfMDUZo8w7LDhPVNYfTjQxQxtCtAHcfafiKVbbNTlzk
9XZQwgKcyBUogoBuBlcRbYbAS+f0FQMlSzHfl45IhrIdA7JIXjYrN9nl0BHcfI4xlSOEIm3ne3uR
f2EpsdQjI4lf7o9vahb/AFszcOpN+o7NOTACNuaZ6fcaHqnmkT+bna0iVhLP6KlucytViho/2jX+
bM0zsel1hJhLdMNT8sabr3mWG88l28kWmvGwuJWQpDG8KtJSVmCDk3Fe6/aXMYw/nepzoZrG2yB8
4+atY1g6bb63aLAumQta2J9N0WZFCIz/ABk1U8EK8f5sydLCIvZo1WSUaoscMVuikRtQMasp3T8K
ZsOAEbOuOpA6IW4tIJrhpAd2UKtBxUGg8fllBwtsdQTyKHvdKktZDD8MgUeo/D4gF+YJFdsEoBtj
M96DhRUfnAeDHoo+0fozHnjiejfCUh1eh6JB5gutMhtngKWxX1Rat8SUcDcIKNF9n+/f93+1+xmu
zYA5uPMyC38uCKwtrP1poLqeRibYRtOPRoxPCeMCInmP+NcrxgRbjK0mOkabpc9w0SGadJCsfqsK
IpJozbD4v5sv8S9g1HFW65Z2mnSVI3acfDG0e7E/5NAdsr8IoOQckZquoaxLpEmmCZZr6U8Z6fEU
TccXlB4K4r8SN8WWgRDSTI+5B2tqUWNbh2uJkHCEndgPBR17nBLIe9nHGAzzyl+W19qPG51NWtrJ
hVKCjmvjWv6soMz3t4Aer2GmWOnw+jZRrDEOiKKDAyRSJIzUC9e+HiKpla2NPibBa0jVUKKKKDwx
VvFXYq7FXYq7FXYq7FXYq7FW8Vf/1PVPbFWsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs
VdirsVdirsVdirsVdirsVdirsVdirsVdirRNMVdXFUv1LXtN04f6RJ8X8q7nFWGeYPzX0u1SaOBJ
UkVQwZ1X4qmlFoTlkYMCHlWueZtV80X5VEJonIQO7DkNv2R8NcmBTAxYy9revdwcFMJkdVVZCVCM
TsQRXYZYJMOBrzTc39nqkjXEwuLxUjBmHcKigAGgrsBlJDeE/wDIv5kLeubS8XjxIHPalT2+jKpB
kCzm9s7TUbMiWMTwSdCeoPtTKiyt5zrPl+5sbuRYXLQb+nXrhVRsrO6LxiRtqmrV6bd8VZLbhYrT
0/soTyLjrUYFQmtyxWenPe3gKxKQFYjrUgDp88lFSwu4852DxSBIpfW5FEUqvGm+5+Lvl8GqTGzK
kytcQD0pYmqGQkUb3OXCN7NZZTpnnnWZprFbsepaWpHrqFVyygFduQxOKkxNPQvNPnxJfLEFhbsb
FI6Rxw0VmljJAdJVPJVqu3wZEQTLIkN5rPlmXy7aRWMsOlSQyk3y8Od04Kuf3XJXQ1YofidMthia
Tlph+g+dLzTpP9Pk+uhJPVtIJySFcGqt/k0IX7OE4WYyqPmDzxcXUUTzyCa9clldVXjEKkAJsK/7
IYBgU5UX+XuvaSmqB/McAmjVWmee4ZxCiAgsERDxeWTsrp6fw/ayOXGY1SBkBRV5dxeYtasJNAh+
oyRxOsrXCmBrhv3hUhYOcandVXjx+z8WQMWcciB8vWHl9tbu281x3AktJGE0QYk81Yh9+a9xlVbt
olfND/mV5XGieZJYrOB7WznVZre3k4tIFLEV2Lr+z/PmZihxR3askgDsyLSfzc1TSPKdv5f0+G3t
b6duM19Iol4oOVOSSLIndeiZXPDux8UrWk8u+TNZmtpBPNHdLK7aqeJhnKISESHnw9Nv53iWVeXw
5WAnivmlF75g07SIDrWlaD6Umo1WK8u6SQQsDQ+kheVWL8OX72P4fi45OMjdMCGE6rqep6lcmfUb
h7mYEBpHOy1O9EFEX/YjMuMK5NZK20rPFOJtxAKxv0O5A6DbvkxfVpNrdOt/rVyInfih+0+ARNsT
lPJG3WnWMCvIjvII6bN3JIG2/vlt0w47SyS4ndiq1jANAFAyuUy2xgCqwXlG4SHcfZk7/T2y5Egi
Hi5Ossf7uXsx+w3zpXf6MaaiVCWJJW4uPQu+6N0I9qVwGLITIU0siDWRl4jsCcgIs/GtcbxYWQWy
BRX4nPX+OSYSJKNj1GGSAKpVWJ+IsoqfwOTDQIm1C74PIZZn9KH9mMDdvuwSFN6mjF0ICiC3+ZDH
5Ee/vgJQDuzHy5+adxZ/U7TU4E1CxslWGGeSOOSaGMUFY1ccHYBRRZTxzDzQty4ckv8AOHntr/UL
5NCWTTtCvo1W5040KzSq3L1WUlxE20fwwsq/u/8AWyMIUzJYXt71pTl3y0liS4VA2qfHwyCA1Wpy
UVOSkRa2csx5j4UBryPTLolplO0Veusl28iGoIVQT/kqB/DJWuMGl+n3C2tyZCtVYUJ7j3FcIk1z
wkog3kYR1AaYsa/vAKD7jkuJrGAhC/vrhuIIYdgNlAxbRGguXhGTGi+rL2p0HjkWKoixwyRXNw/J
o2qiJ2++mC2yMUIrNT4t2706ZWS3XTiehwUnjaI5A1Ip2w8Som1uZbUqyMQDsUPfJQy8WxaJ4a3D
0DyTPM5WWW15wfaoxIqRuOhzE1UIDk5Wm4jzTrV002WG1iu7W4vJ7uRhNJCI1ihQBqftxttxH7OY
uLUTB2b82KJG7B760t7e+ubOOYXUFtK3oTUo3EMQOWw7DN9CZlzdHlxiJ2UlsDcSh4l5bbudlHsK
ZLJnEAiOAyTS0tlgZSg9SYHq24B9q/xzS6jWE7B3Gl0YAsokii1Zqkb0zXTyEueIAI/R7A3d6qlv
3fAu4HXqBTfvvlQFsjJZr2nQW0H1iByokrSB/wC9FOuwqv8Aw2ZMRW7UZWlVppt3NAbqKBp4UYLy
FAvIitNyMjKSKVrfTjePOiusWpQuSLSSqh69kIB8P2siFQmo6bdabfvaTOjSAAyxqSVqyhgKkV2q
MlwsTKkOJlqy3S/WIuNDXZlJ6lWFD95yzDnkGGTTxlunnlzzHr/l+GWXTZhdafMS01sVWqtxABcE
dBRT8JzMjm4ju408PANkp17VL/Xbhb29nE0w2RQqoig9AqoFC9P5c2kICtnTzySJopP6jRnjSh7w
9W+e+345kQlTGWGJVo5EfdTWJKcqfzeG+WkgtAiYlF2drf3121hbLylnbotDVe4q2/TMfINnKx5N
2ZaF5X8q6XcPb+ZdMuFuLkA28hJCsFUVCFJAedR4Zq5ZaLtYwsIzQ4vqfmZ7yyP13TliAtTO7oYf
tfA4T4XaP4eSN6kX+t8WUZsuzZjwG2QSeYbXSElhtaPdO3JZpTXiHFW4r8Sruf2RmGCZOUYiIYZL
bS39zPM7gQK4M101QiEknoBVyfDiy5l48XDu4mTOSaRMMoETRaWphQ7S30gHqyAdfTT4o0X/ACl4
NkpZAmGK+avoukXl9Ottp0RllLksanep+05PXMUzckQeueVvy2sdJ4XWohby+O9d+C+wHw/8RxtP
CzJVAXivwjso6D5YoV7a2aU7igxSmUNrFGNhU4qrbYq7FXYq7FXYq7FXYq7FXYq7FXYq3ir/AP/V
9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KqNzd21qhknkEa+LEAGnzxViOsec3kV4dPHEGg9Yn37dMVYtL608hkncMzbkv7+FcVS/ULAsn
MKGIIop3rTfbD4lItjmqXUthdNq0NvDE9svIAR82Mi0ADAEFV6/Fjxrbemz2vnmPnfatb2SQkp6U
0yKtaV+BXZa9e2RtLDtTmsbh7nRL2cTRwOyW2orT4eLEAA1Pwkf5WTtgwe5tdQ0e8EMpZHXeKahC
Mo6cT0b6DiUhnXkb8ybuCWOy1CssO4BBPj9ODhZPUJm02+hidZYWMy1jXkpJqB7++QpklFzY2lop
llRY0UH1A1N/A40rH9B/MPQo/NK2mo2BntGqkFGHBpAQFB+BhvjSlZ+aX5nNrNjNoa2kdnYBo3QD
r8LqfBf5cIiwt5TdGKQqsZrIzgRU61NaAf62WAoZFH5b17/CNw62rGWG4P12yKkXVuqiNgzJ9sI3
Q1Rf2stxzosSKSrS/MN/p6TRwED1kKyAitFDD8dsyfqayUDeand3REk0j8gaodyFOTGOmBFom11c
SoYbshZiOK3I6+wJ/tyYNNOaNBKr62ltpaSHkrfZmA5KfpG2PExgFunyQQ3cUk1Sqg7ffkolMwmd
zrds0U6I7SiVeCxU2XqK98nKi0USWUaX+Z2u3ljpujS331BoJFjh1FGKlELVJY1HQFv2sxcuNzMU
qTnzPpXlCw03V9RkufrOpsGFreG8jnmvLg1JmaAL6giZhy5c3+2vx5RCNFnOdsF/SWpapbKBIW1B
Kp6Qqz8AKgKOvdsy+OnG4STaBi06YahbRasstrbTNxllmRgyjxo3HK5ScrGHpmoeQIfLmpRavBYp
5p8rvEa3KKJEUGoZyVEqqwUhsxJTbjjtJte1CWby5+hI3tYbG8m+sm0gUOUClgi1VvhPA1b4cRmH
JiYVsxF9LtSCDyA34qD0J9ssjqOFqMUx0byfqOrw3Nrp59S7A9UQUqxjWgO1a5KWrEmUcVpGunX8
V0YfReOWFzG8YB+2poR08Rl41AAYHCGXWf5Z+Z77TG1C9VrWxQO5aZSinihOxYqMiNSCxOBhTyJG
SkSqQPsyg1Bp8svgQWowIaFxE/7u4AIPRumG2EnKJLVgwrJbNvxP2fv6ZMFrpWklMwBVo2A6LKRU
fIk5JNLfTmpXhCwPywUxjki4wPuwt49vCmBnxORLjnxSFYtq+oeg/ViBbAkodnhhBP8AfzE/aO6g
+3XIzPC2wFoeSeaUn1WBUfZA6YPEBZGCnyNNhT2ynkbbYtcj3w80l2AwYFdHDJKeMYJbsBkscbQZ
UjI7e2tl5XLBpP8AfQpX+OWGLUY23Lcyyrxb4U/kTIlnDGogqNl6DBzbeArl+JgtK1NKD3wgNUsh
CIEMcYrcyUH7MY65IBh4pLfCWZasfq0C9CNiR+GWDkwMt2jeIi8LZONdjIepyBbIxtRoSx25E7k5
US2VTlG2ANnBYtfQ9u+SYGKtaWVxdzCC2jLyHbYVymRZxizTRvJtjZKLvU39WVeimlBXtvXMfLqQ
RQbMcN90+utXtbSAC3KrtyXcAbdsrxaWWQ2yy6kQDHL/AFu5uyyKCgbqqN17ZtseAYxu6ueYzOyH
ttLCKXnUxrXeIj4m/wA/llGXWCLbHSGRR0blCwQCOOu0ffpmqzZjMu4x4hALqLQmtCfHKGwHZfat
GtwhlTminmUPQgf7WAhhxJ1qms6bNpSxWUSW0rOD6agbAAj7Qp9rrhBpeaDgsSz2VxePD+/KuIWl
WNmUEEqGatOXT7OWcVik8K6TVWsLptNu7T0tO9X10i58itVNDz4gP9r+XKyFU/MmpW2qPaxQMvq8
ypvZF9HZioVPiOy/7LADSpLqOkanZTqL1HUuR6bsDxbbbix2YU8MtE0EWg50JYqm9P7zGZACIwJZ
r+V/kfUNe1KO/cPYaXCrrLqDAhHop+Fa8Q1a8ftZVCVlnwVzZB5l/Ki1vLbUtS8vt6J00KXWg9Of
Y1cEcR1X/K+1mx0+oMdi4+q0omNnksMtnfTJbyyJEzGju7BeJ8ammbiMrFvPT0shJc+j3UQu7gyK
sFv8NpckcfWPcKpP71dvtKcYS3b5xAG6rYG8E0ElqGju0KtHxrUPX9kDdAO+W5y4WIWWdN5j1O5t
7WHX5vrsdvIJFljJ9RW4sPt/HVaNxOaPON3oNMdmT22qWt/FpcVtNY2VgWSCe09NVmqxUP8AFzXg
GBpy4fBmPw25RycLDr3/AA9DrV5GJ21CK2fikcI5+qzAHeReQCpy414/s5lY8HCLcaeTjK2X1Lho
3uSGjiPK3sk2hiGx4oNx2Adh9rjgnl6MoYwGYeU/y+1TXXEkytaaaDVndSpPsleO2YM3IG72HSNC
0zQrRbawjCigEktAJCQNztlgjstoupdtq1O2GltHW9gCOT98VRyIidMCF1a4q7FXYq7FXYq7FXYq
7FXYq7FXYq7FW8Vf/9b1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq44pDsKuwMStbrUdciTuoClcXMNvDJNMwSONS0jk0ACipOTZUxLUfPDSgDSviQ7GcgU2/
lr/TK08LG7rUru6b1LmVpjv126+woMK0h3k4ruONRSn04QqGeUk5JV8T9S1SOlMSqXTx219LMkS/
vIiEMX81fGvyyCvOdV8pvYahHPaM0dpzDXsSk/Ctdyld/lkgq3VfLtrrWpRJ5aimS1CA3E1yVROQ
ADGpNfteGSEWssfvpLIyyaLqNwLhFASC6StI2NRsaBiPs1+1lnCwY3f2t/pFz6TvSg5QzrQq6ncV
P+bZAxZhFz6tq0aaZcGaSNgGlikU/DX4DSmEotGXXm3XNVsliu7wtx3qAq7A+wGQ5JpIvUnjuo5Y
ZD6yOJIpOp5A1G39mS4woiVacz3ayT3TkySbBvl7Y3ayFMt/LjzDHpNvPHDp8EurGRSuoTguUQcu
iMTH/L/uvKZRLKJD0XV/LP5gaFqWoeaUhj1FpUEdzNVKR1qHPpJxRvgf9pGzIxdzCQeL6rbzrdSX
LEH6zI7NxFKFmJoRQcczIYnFnkpFPpNpCAs1ZHP7YJoo8dsyCQA44kSVSz8lXN3Zz6pJKtlocT8H
1OQlqvT7Kooc12/kzGlOi5UI3zUdWshpH1O3mnjvtP1GFbiCeKp4qwBUsGCupWu4plsMoYTglFxp
io3wzI8R3U1Nd8sO7XagdNuNyrKab0BH8cceNTJeun3VBwQyM25VSK5YaCY7pppMq3F9Z6ZqLcIZ
3WIXDA1iB23r/TMXJmAbo4yWW+afy417yXqcOpWDfXra1EdxFdKA6tRz8JAHt3GYxycTdGFMs8xX
nk7X9As9W8x2NzYaxdRAolmYiDQUDcS7Bagd8rJKWBf4kvv0NBo9s7W1nGpX0FZm5AgD4yxbw/ZO
QKUrLHbeo8R/bkSm1eGyv54XmghaSGMVkkFKBep/DAqnFJKjc4pXjJBUMjFWp3BIocaVmPlHzFoW
n6Hei7V/0sAptXVEkqVDUkYvX7JpX+bLQqvquh+d/MAs9Q1nU4Us7lmjjlLelGnFC3xJCoXddvs4
qkXmmy8g2uktpmkvPqGvJQS3MYAt1oCJAvLgx+OlPhw8RRTD7ry7qkEKXVxAY4JNo2k+ENTuv7WZ
sJ8Thzx8KisF3EhRaMDQ/ERmUI04/NYqzFgJbYEHYkMP4HJc15KNzayxxlo2LoW6DqvXK5BkKUU9
X4yCWQD4wK5Vu2ilNnkWg5HkeoNemT4kmNqZc8aUqSe2DmgABdJDJxqVZV61ptgMGJmLU6jl79vl
gAbJD0t4OqxCItLQ3Akl9QRwpRXJ/wBr2y4cmqc1V78RoYrNAkR6sdyfvqcgxhCzuggWdzv8XcnA
W2yETbo80ywKaySGik++TjFicnemMuhXELiOSVQwXk9NyF+7JSg1HNWyhFIA5gs/3kp29Zh2+X9m
TAWQtazQQOedZrnuOw/VkZMYQJNKbyPKSWNfbt8sqJcvw+HZpRX9npg4CiwjdNaRL+KVBVB/eFgO
NNstjGnFzy7k0vZ7CVlEcapEE9MKtSxff4vxGWGAAtpx8RLtN8qXUsQuLsmG35U5bVINSNt/DNfn
1A5B2+HHtuzu1TSNL0m1j07TElmlnX6/NK7B4oqrVx8Y/Z5nMEwlJvM4xSvW/MdkZZrexb1YY2FJ
SNgadN/nmxwaLk67UasMeuLiWSQlm5M1dx/L3AHTNmf3cXWxPEXovkzyTbxaUnmO6kExUsqW6/EF
DAoC4p4mucxru0iJU7/S6YVaR+Z9GvrWVriICWJiWLA7Hv8ADlBnblcLHhfmvxfCf5e+WR3QUQl0
gAJG57ZA497QCjdOtbm+WZ4lVI7YfvHY4yZ2E5tdOZdMAhhhnu5ieLs5CstTsDUBabfa45ABbb1t
IoLXT43tEkkkPFbPkzGMrQ7MjV7/ALT5YeS8SXagf0lKst8FsVhARAQ7KQBShIDnKyUWnzWdjZC2
lrDcI6fWvR+INGVAblGW4hv9WQtiGJDHL/Wb7UpptLsSdS+sMPRHEB1O3TZeNOmWg0vDbO/KH5P2
llEL7zdKH+BXi0tGPIbVPNkpXt9mTKTkAbYxpmGs69pen2i/WWFhpsQ4x2sYAkl8NhUL/suLZSZS
kaAWc6eW6/8AmFqGtXMel2LfUdKaXj6KdeINOTseTHb7XxZnYdOQ48tQAN2NazZ+U7HW5pdL53iU
BiR6gK/7RP2ainTN5p8O27ptTqLOykLe8veU0r8UFCB0Cj2XLMuUQaceI5Eyto+EMyWyha/7tG8g
H83xbUzV5sxySsO0w4BjjRR9vZLIsYgb1JCKTM+yKP5idh92MYJlJfFdpar/ALigXmJ4z6g42X/j
AjfD/wAjE/lyRIDEQMl9hpTSSLBYQGW4karN3JY8iTmPOZJcmEaD1Hyr+WlvalbvWK3E44skINAp
60NOOQZvQE4xABEEaAURR0H0YqiIYpZG8fE4qmlvZKgqeuKolVoKYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FW8Vf/X9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuwFVpam9D/HEIJczhV5E0HjkqYsO8z/AJn+XtE9SESLdXiiogjYEV8GIrx/4HJRx2xM6eO+
YfP+ueaoL6F79bKOK2mkFgr09SiMfT2K8y9OHHjlxx0GcZpj5AvLaXy9awvOzzpzLxFqsnxtsBXb
rmLIbtoky5F48X+1SnXrt45ElSxO58xNFrN9a3I/uXAjJalVKK1aU96YgoVP07YcWbmKjtUb5MFV
ya5EV5iigHxr0xJVfodJ7u9vW2WQhQK0/wBvpldqib/TYbhCTVX7MB38cmCrD/M2la3I0FraK7Qg
EtawgiJh/PwX4S2/xGn2ssEmssP0vylNc3K3trCt+9q/G601jRlV6AMzUenRuPwfs5Pia0N5nOj6
bqDaRKReaZKA8saEM1tIQCQG36E/5GQMmwJZcQHTYreO+b6zosvI2F4oonFqUUncA04/tYhiGMTE
eo0duXKgn0yaj338MEm2L1nyLpnkaw0iHV3tH1vWJIRJcpMoSC3ooLcq+sHAJ7hPs5jG7bNkrm0r
yxpUgnuZF1rVZnLx6dacRbRA7D419QPTdiPTXM7Bjtws2RJLlryPWH1ERRQkgLJbRAJH6YoAvECj
NQb7ZkTwhqx5C9Z1r8+YItMMOjaYiGaMmTkwRVkYcWLIE/efCF68cqhDdyhN5XoEeo+ZPMD6eqRm
S+LTXBYcEG4+x1/myc8hiGBxiRZ3pGgaT5eaWHXoDNby0SZphxfg1VAhVg3KtT0OYRzyJ6tgwRAY
3qtrqNrY6vZaI5PlxpEkNhdkuYi3E8kQ7BviJ5U+y3HMmMCQ1ykByRul6B5G0LUreabU/wBMpdx+
nLYtZLI4J2MMdZX9F25cFYL/ALH4cNEMCbYhr3krXLJbrUDp0lrYQPyljZW5Qo5+Dn8I415J1/my
6GRgcaSadYXOo6la2VrvPdusUQB2Jcgdvnlss3cgYmVar5R8y+Q9Xs7zUYUkWF0d41YsrrWpUkja
oyiWYtkcdPQfN2neSPNflhddjK6Bczr6gtfq6Dk/H9iTlFUf5XDMeRtyI7Mai8+azZaFHoen3lwY
1Ui6eWZ5A/IUICn9mg8chdLI2xd5pHYsZDyrtv8AED338PbDbFVtLG5vJhBaQySs52RAT94GKstt
fJtjp2lnU9dcvFuPQjWtDypu9fb+XIkItk/ltNHh0oTaawfSbpvTuIWIJXltv9DY0tsB86+Xho2q
loXU2d0OcJG1PEfgcaW2PK1OXAlag8COu/6/lkrZMlj82z3Wj2nl2+9A6Qj/AL48Fjm68l/ebn7f
HfG1ZJf6f5Y8uNZXGnaKusXNzCrpFDchmhYqpDMgif1Odd/sY2qAutC8/fmA0FzqNpLDpdpzWBY4
GW3iopO5FEFOXXLuKuTCr5sN84eWtK0K+htYdUivy6VlljYOsUgpWNiGbi1Sfh/ycy8WfvcbJh7m
NT29zE9V5OoNAygkgjxHbMqweTj1XNHQwzxwwzSlI/WJCtyqK77ONuPTBza7pbdWb24k+ryBJ5BW
VAfhJ3+wf2sgYs4zSeQyNL+8L8yKMDX9WQkNm8SXW4RCr7MQd0Phjja8l0nUmp2bMrO49BFoIaDf
6a+J8MvNOGBK+qR3Molmdo1CxEniAOn05SebnRut1LKzzbTyRiLw0aTl9l512HybLhycI80FRaFz
vxGwrTplcnLiBTqg0IPUV265C2RICtDI0brKjGqGqt1y6EnGnumQvru4rwA5sKPLXtl8TbT4aiJ4
bbmIf3lwyFHboACKfD13wSLPhIRMOhXL2q3TypGJDRVY0Y5USyGUBBzW01vI0ci8WG9fEHvkOrfx
8UbTOyubNbJk4KZ2Io7UoBUV6+2Xig4BjMnqqCxuNRnFvYIfSA/eEV4D3qMqnlAcvHppEbsp0TQd
FsYzcOVubpDtUCiinQfazX5NVI7D73PjghEdE0k1nRYrSb6xykmfaJAaBPo3yWDSymbLTl1AjyYr
c6lLclgC24oQSat8zm5x6SMR+x02bVSJ2+9CUQKUVQtTUhRTL4xpomSVMTWkd3D9blMcTOOTIKsF
qK7VGY2pyiqcjSYiSnvknz1r2k3TQ2R+tWs7MjWrElJFNaAj4gDWn7LZymrwxkbelwxkAz3y7ePr
19c2MVkbXVbZWM+g3HxfCCR+5JVT2ptFmGOKPNutJfMPk+Cd2lsE4TIPjhK0daHeo65fDUhgQxAx
ywy+ndjiqmiudgafPMgSsWxpfZatJaepC1Xgm2kiJ48h89/1YKRaZNrNoNKk0+zsvQSchpXd/UG1
acRxXj1x4VtZpeq3Vi9xJbgGSROHqndl2PxV67VxVPYL3R7KxuJbnVX1X1kHKwli2VyAefMySfZ6
fYyEgyAU9B8reZvPElsQBb2FsqQm8EZ9MAdaD4Vd6f5WVcTMB6x5T0DRvL1obfR7KG51mMH19Sk4
+p13LScWZPh24csZTPRkAx7zb+Y9hpUjRwOupasOQac0ZIJf+Kx8dG5ftAr9nDDTE7lhLJTyrVtR
1PVLlrzVLhz6n2mkJYnw2Y5tdPpgen2OvzahAiVg5jtF9NSAvqdXY+NdimbDwo4xu67JKUjszXR/
y8tjYvqd1ew2mnwKFEl2wgZpK9gx/wApfir8WYeXVmPL73Kw6QS5/ct1Xy5PY3CTXMkYspUVobqI
84HUqCN9l6ZjjLKfNy/CEOSm1tbwKHuVe0t5B6kMXGk8vsvQxo1Kcvi/azJhjADTLKSXXU8l7bxw
usdjYx/ElhEAAxG3OUjj6rGtfiT9rISyANkcdp95Y8navr3GOOMw2ZI5yspoF/yRt298x5StyIxA
eteXvKmk6HAEtow83+7J3ALE/Pc/jkUlPKknavyxQjLSwLtycHiex3xVNI4Y4wAopQYqqb4q3XFW
sVdirsVdirsVdirsVdirsVdirsVdirsVbxV//9D1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYqskK0odx3GNIJY15k/MDy7oEZ+tXIaddhbx1c9O5UMB9+SEbY
28Z8zfmlruuz/VopBZWfRkjB58O+5LCtMujBjaXiz0fU9NNrpUUk8teUt2x5Pz3qDT3P8uV5J8JF
JjC0isdCLanc2WoS/VJrdGZIiKM7AGicqFQzEcfiOHxbDLgASWDzDe6BqJVYyITIQUenKlK9jlZ3
K3T17yt5sstVtkZCBIyqWj3/AGxt1yuY3ZgrPNnl231BGvbeq3iKC9Ngd6fqwJecyQ3sbcDXkCQf
ow2qa6TDcTOqsTUmoGElWdaTEYogT8LnbjlZVK/NPnaz0E+kUaW848liKsNq0708MmFYB5k/NC4v
xFDZoLcxkSBzWoanxd992y2MWuSZaJrOq+bWktRNFYstvK5jQcXndELD4jVSzUptlnC1qk9udM8p
WmoQWa2VxaXRi1OG4Us8yOz/ABLua7Ffs5AxZgsehmtJNd1mz0Oyl1Hyof3l3bHcxoxf95EDxk2X
kePxf6uEhUJe+XfKGjTpeWuqJqcU9DBYcJQ/AmjByUQBkbl+1kaJW3tnkKDynHYQ3kDLHbPGEvLX
rUkCqnYlafFh8NIk8t/Mm18vWGuB/L7ojSn95YxFnEVa1pJ8SGo/4sbMnAaac0LSTTLbT5rsxX9w
1pHKAXuGHM7bUAQN4/y5blyMIY1HXbvT7mOPS9Ft2eINSSVgfUlrTp0p0/lzGhk9TZKOyc+XPL97
BaXN7DGv1uAKqRNIiNGtN2+Jlr0xyS4mcBSReYNS1rVVtHMjzloUX1TQGtT8hx3yePAGvJmSTVbm
dZ1hYyJIoUfEQQxoN/h6jtmXGLjE2ifKuq31r5j0+9sYfrOqw3SSwW8oLK5DqwUhabkinXIZIhux
hm2teb9Zs9Rhsta0ePTtGvZRPqscZdnuF6CpaSXjxkVNhx+xmLLZyQAmvnf8vdCvdKXzP5OuYEt2
X1YoOfpyVpy4UlKmq9KjBGaGr38zJB5Zi0W4EWsTlKT3E6MoU8tkWnptyWnLl9nK5FWDXupXd4Il
uJCyQAJBFsERadNuvQYAFQwDyFFUVb9lV6n2yMtihlGm+TGMK3mtyjT7RhVEHxSP7BVEh/DEJZRo
GraHJeTaLa2zac7oVt5JBSRyQQD8VQPuyYVCaXfnRbu88veY2pZTMTBKw5bN8darXuTixKVX3mXT
7LTJtB8vRl4piY5rkg8gH+E8Qab0/wAnFUmTS7yW7gOr+pFYP+6+sNvwNCRUCpFT/k40rN9M8n6e
mn3NnqCxS28oL2uoRk8qEGnfwI/YyLIPPdZ0+HTtQa1hnW7hVeQYdTU0pUU6YpV/Lurppuqx3Vwr
NGAEdUNWEbUL0rUVWgpirNZbi+86319b6VfyWNvKQ4sZioeWlCzK8Y9NRxXozfs4bpFWgEtvIfli
zWbULhtS1ESsk9hCrArwLAhzIgU7jqr5OJtTsw6Tyrruv6hcXOiaa8FncSEw24ZSqL1rUsWH+zbM
qGbh2ceeLi3SGRfRuWgeYGWFzDIhB481NCK09u2ZUJOHkivJShHH4urJ/vs92X+b/hsyQHFsqVxB
HPEpavL9m4Hf2YdvuyE47N0ZpZLbtDMUl2PVX7Zj1Tl45CSkxGxAqR1rgMyylAOLlvAewwRNlAaw
dVkUaeS6RHTcPITv7chlw5NHCiNDt7KRZHnT1HUniladvemShG+bXlnIVTd3Z2pVZai2bkV49dt/
Dl4YyxhMcp6oUQ2MZ9Uz+oB0UAj+GREWwytZNeyyDitFjHQDb764SaWMe9QqT06D7R7jKjIuQQCE
2t9ZdLdIJAs6RHkpNQR+rDEuIcG6heXpuJWuJDVmAAA7AdMm3RFClTQ4bS51a0t7x/StZXpLJ4Ch
I6A9TlU5ltxkA7h6+uk6cb06Rp9pLb6fDbrJ9f8AVhKuaL7lv2v5c1ubJJzBMdGKaqk8CLJCn94K
sw6daZlaTDGQBLgajLIEpIZebEs3x/LN9jxxiNnUZshLhyH2jVu2Em3GVoXCH7Na9cbZ8TdhYaN+
m7S61UPJp6zJ9ZRa14lhWm3hXNdqsRPJ22iyAc3uHl/yR+Vk15Br+mSu7xj1EgBJA4gqAVK8q8s0
c8JB3d0MwrZhf5y6/wCZLbV9NvJFS0e5d59Pu4V4yKilCEkJJWvxJsRgy4QQoKO8r/mRovmZYdP8
wlbLU2+CDUI1YKQNwH+2NzX9nNTkwEFsCM8weUo2eRbuFSHUrBfIwaKQHoRxJ4kj+bjl2LLWxZmO
zzvVvL19YbGMyqfsEb7V9szIkNFJeoZlozUC7EU3B8DkytJjZpLchdOsLdri5nIChBU/T4ZTOVMo
jd6R5Z/KK2tLeLUPNc3BlUmKwjIO5ao5FQwO3+XlByNlM31vW7W005PrbR6VovAtHFF/fSqBsAo5
sm386q2SjG2BNPnnzj5yvdS8zfV9PllNjEwEMPRyCvVitKipzJxY6PJpy5uEW3xhtQHlPr6gfiNu
TWNfYt4/7PNtj0li3WZtUS0lte38/Jk5OOo6Ko9t98v4owDTGMpMk0hLHTYpisK3V1PGYj6gagr1
Ipx3GYGXNKZc3BhEQbTHSpb4xtbwBbsTAK+ny/YShryZ6qqj5yfs5AYr5tpnXJS8y69ql3c2Wj6f
HFFZaaQ7XC/Fymp8UaElgUQs6g0/Z+3h4BHkw4zJDwQzXF0PWV7y9lJ3G5JPsKKuRllLOOIPRfKP
5aVMV9rSUWhaO1BFeu3Klf15RI23x2ejwW0VtF6MKCOJPsIuIUlFRQNJRQtD3wlATS2sEQAyCpxS
jOIAovTFWx0xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kt4q//R9U9sVaxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2FDsFrTRp9+PEtNbDYA42lI9f8ANWl6Ori4l5zgchaR
UMzADchSRhDEyeXeevzA81vp1vcWEb2Gm3Cik6klmJYg8nopVqdqtk4xtjI28+1R9Et7H63d6g15
qVyCzLGakE7/ABfFvkxPhYcLHpJJHClAYYjWrN9o0FTk/EtlSl5V1vWdE1qaKxuHFndfG7dBUU25
V+1XtkZjZkIsg80aTql3dxa3aXElwl2kckqzMwljnqTKStW+GKqtXllGMbsqSLzHpsupWcZZ1/SM
O4mT7MtKjj2+Lj/xHLJBaSPQ9fvdMvQyFopIW/epUgih6ZEhgQ9v8p+crLWbVQGAmoQyNQknK5RZ
RTK40TT52MhiXkPtlFH2vfplRi3Apdqsuk+XbP63NHyU/YUKA1TttkwNkEqPlf8AMrQL22nC2DNq
MLcYhKRwoSfipv8AFsO2ERY2w380dVgvLmLULuZGv+PoekqrGeKkkbDr9tsmAxt5zb6featdm30y
3e5vGBYRRgkgAgEUHTAJ7pI2Zxd+Wr/TNKsNb06UtBFGv1sR1WW1nFC4YDp2/a/ZzIE2kwRWiR3X
ml5be51mU6so52EFzIzxyAUqPiY70J/ZwEshBkNvpuj+W00zV7yWXQtWg5Lf6bbjm10kfCqzxloh
FX4l6SfbbIGdKAwrzdpKXkt55vsLaHTtDedYraDZGZ+ChioUANVuTZZDKkrfLFvdNdRm+uprHR7o
r6s8btEsjnopZSu27fH+z/LjKVtXVM/MdrocEkVloVvGeaCS7khb1uL8iKByATUKtWwDZsJtJtc0
PUtPFv8AWojF66CS3kIqGDAECpp45Lm1pl+X2uRWGpxLc6VHc3fqofsK78SQDxVl32rkJYmcJ7oD
8w7iIa1d32mXhU3jss9iqhJI9+jopon2cuw4mOWdpFHqMkVisRWWOVE4UqSNh+zvtmcI066cbUdJ
Sy1rzDp1reTG1tGJSa4f4mXqRSpHf/KyvLMgbNmmx+pnPmn8sNd8n3tvrugM9xFbSpLDeRg/EwYM
CCK/DtvvmFLNY3dgIMs8/axZz+VLRPNWjQnWJ41aOeCT7PxkivwJ9oD4sxzPuUh5Brfme4mWGzUJ
DFAoSKOJFRQKAV+GlSab4gnqiKD0++M8jIwqU6sdxhZMn0LyrqOsRyTx8IbOM/vLtyQijf7O1MVZ
bpel6ZErwaJaR30yik2q3Kj0oj4rtJuP9jhVO9PntdQQ2sjQ3l9p1OFxIq+nzp+yfi6Vpiry291f
UbnV1v7iUG+hZVWRfsgK1fbxxVfqN7rGsubu85XBSkYpVgo/yR4bVP8AlYFZDH5TS0ilvbC8M99Z
xR3NRGDG8j8iIlPI/HVKL8P7WEKj3806YbZl1JWgmUg3+lzqJGc8aKQrn4P2D0ySsPk13VblzZWM
kiQSzO9rZKx5IjtsqkdlFBkSqVMHjd0ccXRqOG2atO+BVqueVcVTXRdc1DSLkXVjKsc6B1JIBUll
K9D88KxZn5Og0DWotQu9Vit31hI/WdrlhGrmo+yOLV64ttqFzr/nHWbsweV7CTRLK6VYj9WJAckk
Eq6KlBxPTFiUFqP5V6HpWlyXnmPWBpl8FeQWk4/fzyF61CMw61rzy/DlN7tWWDzm3PKFHoxC7oW+
2K+Hjm1xyFOsyYyiElaJ1I4lW2PMAxvX9llO1cmSC1CKhKsbq8bxAoPtRNu6e9TuRgpbpLLmzaNS
yEvCejdx88pnFuhlQopUVG4HwkdxlERRcm9l2ThuWU9wmN5LGNIsoabgyMfpbLJ7OPAbpcjuDVG4
semCUtmcha53mdg0jciMr4mcYLSAOmDjZENrU7YDkLAxsq1vCXlSIGhchQT0FTTLoxthlnQTmXQI
gQgmHKlTQbfrxlicWGXdJzGVkcEg8WK1HsaZTLbZzI+o25TxycN05TQZXovmKeOL0TLKylBGVZjS
g22qfbJTw8Tjx1HCU8tdUg6So0kDinEmtB9OYBwnHK3NjlGQUpXeiW81biwYDryhp0B3rtmfg1fR
xNTo+oSRhwqr15Dx65s4EF1EpGJaTkeRBO3fDM2wjaoGowBPLxJ3XfxGRFMrTDRtb1PRroXNhMYT
WpoSEPtTpmNm0Inu7HBrjDZX/Mzz/N5i0WCyltDHMkjSvds5dQWoSIwR8P8Asc1uTSU7LHqbec2t
7NbkRkM3Ho1dwP8AbzEnib+N6d5I/NDV7COGwvFGraU5CLaSmvEeA5B6ZrsmnFuRjyHkynQtXtNc
Lw2of6zFvLpc4AmjC/FWPdjT/gcokRFuWaf5V8sajrUkdxJJGhVpJViJ9XmGAoUDL4n9rJx1QOyK
en6fpnl7RZzb+XdPhMifbvEo8ijpyll484wo+Jlq3LISlXqCgMa81fmFpGkNJErHVdWoVD1H1ZKn
lstWXkOn2cnixce5asmQh5ZqOp6vr1w17qFy4hBNZHY037KOg9s3ODTU4OXIEu+qehMotovRkkYD
6wVDSkHvU7qPk2bGGLh3dbPNxmmZaZ+WOqXCz3ScZLFaSG5cngzNU7PQ+H2sxs2urZysOivdEavo
2oaSiW15DFCsa1inUURlJ+00lASeozCHrNuYTwClBGi+qetI/wBUtGUKbx0DNI1P90qSOZbrXkuX
x9LTL1KE+oSzRLBbR/oywYFXVWJlm8fVlortXpwblglJMYpj5c8sXurzJb6dH6ca/amI+ADptTKj
JtEXr3lryRo+iD1FT17qtWmI3rTsTXKy2BkaipLHY9lwJRdpZSSNVvs4qmsVtHEBx64qq79cVdir
sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdireKv/0vVPbFWsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVa3rsKjxxVosakfdjS2lms+ZNG0e3abULpIFX9k1LfQoqxwxxksJzoP
JvMf50/XbhbXTwYNKba5uaN65AqaxV2Hb7UbZYMVNXHbCfNUumLPp13os0t3cSs8szP8chJKlPU4
qvxbmvwrkxQZgWletax5jv4ZkubRreGd/UuIooZVR32FTy5/yrjLIGyMaSPS7qW21y3e6iju7NRT
0ZukfTsCrZURaSGY+ZtU0zWfKlnIzWtpq9lLIs1qivyb4U7lmX8cnGFMCwbTmt31G3SdjFA0lHdd
iux+KpqKVyzmEcTJfMug2OmxyzW+oPdXTzHjHzVg8RI5EcQKcx9quDHHdqORjetXj+hHHaxJbW0L
iSMR7/vOFDU1bxbBlFFMZpdMY9etQvH0dcgGxqFSeg6fF+3UfzftZWC2Wg9B1S7tNbhHqNbyISJF
oQUPE9a+OBKf6Z5/8x6VdXzwXCyBrl2kSYEigdqcaFfHI0ytKvMvmrXNauWkvXVFH2UXZV9lBJOC
kpZp+pXVnI8tm5jaVeEx6nt2+jJCTEqN/wDWCnNpD8fVT8R+e2S5sXrX5c65fXOiWnl/y9Zw6deX
JKXF6uzzGrH4i7cR937OY9bttta/Z+cPJFrdWPoxx6frLu8l2GWWR6inEtG5UKK/yftZlYw1TLCv
5eFVmG8kQ2Vgd6r7/wCyzMjAOOchZr+W2p6YranFLNHDrNzGo06+uQzRRsQ4o1KUapTqy5j5MTcZ
Jt5t1/yzJYWY1hRq+tWC8GhhDLZM3NmUyAgsxAbl8Ey4IYSwM3nup6tPql19ZuCgC1WOJAfTjXsi
ipaigU3bLhi3QZInRvMs+l6VdWbLSG5f1VlWgk9Q8VG5qOPwL+zhyY0RkzTT/K0t9YibWNQ+u3Is
/rFlbFlijDSBWH79x6JO/wASc+WUAJlJ5ndxSWd1Jzuauhosy7HbqBX9eZUBbQZUp6XHHezmJHMa
GvqXT7tuanp/zThmaXitVvLW1s4Lu50+6kkNnKUcSiiTdKso4oaH55COQlPCx66vLFpOS2xR3oWY
MONaV6dcv4qUCmQ6F+avmPTrZ7UOr2rxNBDA4LALIvElADXkBTjmJm4S3wJS2fWr+KK0trx2ljCu
5Rt+BZ2YUp88xOEdG8SU5rW2vlEqNUk1JXY1+nCbQTapaWqWyuqVq+5Lf5jwwKyLy5qFul2ltfRv
c2b/AN1ao6opf/KLfs9e+Ksz1bULSCFf05OgVQTBo1kw4Ef8WN+9+7mv2cKsZv8AVNb8xvDZ6fb+
laRH9xFACFAG3xsxYd8VX6R5UtLmN1vLoxN9YFsYYHRiGJUcjs/Jfi/ZxVMbPVrjRa6fdPFDY2ge
K2meKVhOGk5mvE/aBLLgVLNQ81NbX17FoZEFjdoqFWVq8hyFYwaEV5ftcsIVKLvRdWS2XULqNiLt
9+hkNAQCVG/H4f5ckqvo1lqVlAdciMKtakiJJWFSw3rxDK37ORKonVNe0zWtIee+g9HXI6BJYtkk
XkNmB5dif2sCsbUfCo/abrirYoSd6Me+FCJWtvazSyj4SuwqAWPamLISegz+d/LMXlGHS9PuLk6p
dFWiiDKkEMiEFX+KME8SK/3n7OLLohrXyFoUd/ZX3m3W0e2vfib03WSQMQWPIKJCvQ9VwxJLCMq5
pL+YnmfyWYJNL8vWksxt5B9V1OYgMoJoSE4xn9kH7OZuGB6sM04kMBgvhIxVgPUb7VQeD/2/TmfE
inU5IG7VlEfIqQQqbgdXT5EbMPkMmCwItaHYjYipNDX7D/PwP04TFRshrqwDB5LcHku7wnt8vHKJ
w2bseTekJBbSzzLEn2m6g9sjiju25clBNNQ0q5EESKAzQr8QHgd69cllGzRhyWUnjcROGXi9Ola0
yinMkLd6nKV3I4seg/Zw8KRsq29s00yRJUtIaJ9OHhQclJhceX763IDAFu9GXYfKuCVBEZ23YaFr
F7672lpLMtooeZo1J4jc1/4U5D80Itpw8QTfQdG8zatMsdhbmVt1FaKCw7cmKjJDWAtB0tIPUtIm
ivLqznjMGp2rtHc2xI2dSQaU6/ED3yYkJbsaMSlsUax3SfWE+FT8aMCO2SqmMzaeSPYOEPJFRlpt
Wo6ZMZHH8G0Fp2rmPij9AfhYV3r44Z1MU2DDLH6mT2N8J2XhJwc0NOxptTNZl0hibDl49YDsWVz+
SW1PThfpc26L9n1XdYqNtt+8Ycuv7OHHqzDmzlpBPdieoW+o6Wkun3VmFfq0x+yyndSjg8NwRmxw
6gSddqMPClscfIUFF4KWLEgbAbDfqcypBwAWkDeis7IwVzxCkb+FRgjMhkcNprp3l281PTNRvIYv
WsrJf9LckD06ht2UkN+y3TMHUamw7TS4Ciz5B8lzaTbR22oTSag7j6zcAfukQkVAHp8j/wAE2aHL
nJLuI46DPvLP5G+WRJaala6k+oW8JEjQgAciOzVQYIAllYCSfmz56m/TOnSW1kttd25LWmphWV5I
xWqEk8T+3+z+1kM2nEmUZorQPzQ8jzrFe+ZNKFzqAIUyxckBIHVgeR7ZjQ0e7KWRT88fmpf6wW07
SI1tNMNVWJA3JwP5yT4f6ubCGm2apZwGBH0Ld+V0TNK3xJGp+yfetc2On0fV1mp1Y5Nxw3WoyI9B
yX7IGyID2Ff65nSmMYddDHLIU6tdM9EqYfimG5Lb/wDA0pmtz6m+TtsWkERZTWxvTHayWd9bi7SW
QSG0PIlWUncFSAv2vtN8OY4wcW7ac/Dsu826ncvqVno+nWyiyso+byPIsy8zyalY2HSq5kgCIccy
MkCgkluhPOpubzjxjHUKNvhRR0HzynJJvxRZ15O/LG9vDFeayHhhqSsNV5MKd9jtXK7baeq2Wn2t
lbJbW8axxIKBR3+eRZIuON3NFr7DtiqZ2dhQBnGKpgihRQdMVbxVqm9a4q3irsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVdireKv/9P1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXVwWrR6YqgtT1XTtNt2uL6dYIUBNWNK0yUYksZSDyrzX+d4T1LfQ46ivH62/GnT9kfFX6cuGJp
lN5PqeuaprN8Dczy3U87FUEhNKseirUgZORERbGNksitPK2m6dpc2t65dpbrCRGqtUpyagCAHbl8
XhlJzW2CCU23nmztrh10vTIk4tRbiRVNaftUIalcgZW2Bl2leZdVvLczS+lJUVaNoY+Py+zkaZgq
d/omh+Y4WrZx2Goj7E0IorHpuBx/4jlsTSC8pvrW5trqe2ukC3UJ4zD/ACjtWvXMmNFqNoTihYqw
IUilB9/XJyjQREK8V06M6yVfmOCtUkqDtsT0wQ25tUoFN9J8s6a/l2bWtSuZLTTJJvTVYv378h8P
JhIVCioP2WynMbOzKEUR5t8lRwwWE9lNHZaTDD9Yt74k+pNK6qxINCeXwrxXlx+LMei3bMcaxk1y
3hlMQttaHIW8oULHcqlSSSv+7OIb9j9n7WC1SWaG3mgkjdjbajCxE0b9XcVBp17jJDdCDsFS9v4I
ZpfRjnkVHnO/EFgC3E7YJNsap60dC8k2mlS6Lo0UVxeyqTca7fMyRr4mPj6u/Jv5VzH9SaYtfSeW
dKBh0uP9J3XpmOfULgBVBNRWKMF0PX7RCNmZihLuYEhb5G8xLoOtJNI5a3YNxl4r+7ZiCSF6fzDD
KDATZfq+uzebLqLSNBtZrhKENNcOTse4WsirsP2cr4qbKBQuofltrFhbfv5oVnAqkPJvV/4j0/2W
TjqKYnTksUnhnilZQojuEB9eAfZkp3B7d+2Z1guJMkLrm5MhTgSR/vmgrWnc98uiAGiyUtTjF6lD
WR3OymqihPWv9MjLyZiTawFkaSYlkrTYmgGVy3SZIp9cvUt4bCGaaW3rRFLEoB7AnIiDCylN4PSH
LUZibj7Xpj32p2y4RrdSLCCbVZUcfVj6C9gKGuNAsowKHur+6uVYSSsQTXiuy09wKYjGGZ2VYNKv
JITOVCwdeTfd4Yaa+MMn/LfTdAs/MUd1ryLPHbr6saEkpQb71p4eGYGfHbk4yCmXmzSL3zfrZi8t
aE1rHEhmllH2TGtRUUr3pmIPS5Igwu4ttT0S6FvexNA7KJFjbrxO/L5HLePiYyjSY28q3CeoO29P
ljTFerNUNHQEGtK0of8AJOKp55XsLTVtUePULghuNY4zuZTueFSarXxxVNtVvL3y1cRR2Lx2xD8h
p6jkwWh3kdhyKmtf2sUpdqOt6XHeWmsaOslpecuVxasqtGDUGoqWqf8AY4qgNRv9U1b1Lu4Jkgja
vwbRox7BRQAkfEdsCp/pPlnQL6ztQ1w73V1bPcG4BPGEogbf4vfwwhUVZ+ZZLOGG01tGjZK/VbkR
RyNJGrH9l6DffJKxPXtRgv8AVLqa0V47SVmKQkBaVJoSqkqPoyJVLkBDornkAD0HffAi11vG0hYd
lqeXhithQuNStrXaFPVuD0P7OG1KChe61K7SKZzzduMa1IUMe22IQAWeap+T3mu2sdO1FOLBZ1dl
3BEYZS0lOPxKi1Zq4W2jTDfNOuyXutXDhvShjKQAxqB8UaBCwUUUcip/4lmVjpw8nElwmjuwqXP7
qWlFdSSfYPWmZgILjoO6gkgajVBBorKTRgRXbHwyN2RkCKVYLzjxWVqfyyruR99OX05ZCTRLGegR
1Q1SAAD+x+w/uD/Nl4cc2ObnNFFWIKgmn7S/63iMaQTQ2bjZFmWVeKyMKK46McgBRZk2Fsup3jSt
bFQksvwl/YZGYtEBW6pPounR8IY+R5g/H25AfPBwbORHKbSRg0cjwkhihoPGmUzkA5MLKZ6RbTx3
MdyTtEQQh67ZjSyt3ggpzdP6shlLEPIRt1oAKfwyieQlMMQCO0vW9W0yG7g0+4eEXyBJgANxRh1/
2WUSFt8TTOh5h0y48kWumWM8drrTzJ6EigQSq/qDkzel9sceX2shwlJorfMPkHy/obPc+a9SebU9
Rjlube/gLESS7MRUtH0Mnhl2PKY7MTiBFvPT5a8wXWkTahLZOY4ACtywA+EsF3p88z4Zokc3CniI
LHriCWEhZEI2HE9txXL4i1jQ5qQJ4kUp4HwwEcJTOXFsr2eoXMBKo9WA2Ydt8l4l7FpGnA3ZloPm
tb3TIdL1aD61aWsglhIdo25Ch34U5fZH2jmFm0vFybRqRFP9V8x2+qxRw3UdLSIAQqabUFPt/aOY
+Mzgdw3ZBCY2LHr/AEp0QzWkiyQeDDp7HY9f2c2MNWKdfLR7p9P5btdN0gf4gumt9VdPV0+xhAZ1
QnYyBigo3xfzZLxJHkGyMYAblj2navq2m2N5aWUjJb6oKXkNA3JjWgNf9dshPFGQ2K4shjzFJL5Z
1nVodRS1RWl+JnMZpQqilj8tlzVZtMQeTsYZhJ66/nLzXZ2un6xo1uYoOIEtmiII3RAA7Hbx/bpy
+LDjxnlTaSKSD8z/AD95Q8xeU1htreVNVM5uLIenGBbxtwUxswfl+w/ZvtZZ4J6tInTz7QbCG+s5
frkskckJDRuFHA/M1B/DJQwElpyamI6pz9Zanp2QAAUhp26nlt8HXNjjwAfVsHByZZSHp3RumeX5
7hkaY0BqatXmf8/nkcupjAVFtwaUz+pk9pp1rFEE4BKfCyHYkjwpmslllMueMYgFGRkKu8cixWsB
/e3DEhQf5aip5b5ZHEBvJqnlMtooVJLiUE27NDbSdbhgPVlX8eCf6rYyyAcmMcRPNHaLoN9ql4bX
TY68vtyio+8jKDMlyBjAeu+VPy807R41muVS5vyoJZqlVPUjf+mRtlEUy0AjiSx4gdPD5YUom3tX
mbbcYUJvb2UcQ3FTWuApCJ7bYEtYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
W8Vf/9T1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7AUBSuJooInmkYRoi8nc9KDf
AAkl5n5q/OazszJb6Oi3Ey/C0rE8R+r9eXwx7tM8mzxfzD5s1TWJ3kvpjMakqhJAXvtXMoQAcbit
IpLmWQ7tWv8ADBI02QjbLfIVgONzqbqJER0i3IHFZOXJx/q8cxcpsU5MYoPzZ6/mHXY5ZYePpgQW
lsvxMqipII61NWbKBFsplnl38p9QliSW5cadbFQw5gFyCO4qCD9GTAWmQy+WNGsovTiuJZT/ADmn
H6BTDyYSQVvprRagjROHiXc1xG6gvLfOV3BceYruSCjRl6Fx0O+XwNMJFImDAgruO5zJErYW0VZy
OKFmrsB3ORkFtOtF1y/0L1jbShEkA5wNU7mm7AEfRlJitpje6LqF/eWGoTtJqtheBfVuLYcpI2bi
XRwOZXhy6MPiyNUyCNnh03S9OvNFkmOqCVw2lWsAJmjb4W+KnOlCH+HguQMGaD1DybL5hsIV1eL9
Da3FAFt7q5pDFcjiBwkMnEcxRf2/5sHJrkUJ5S8u+UYPMZ07Urxbm5h3tZ4yvoSMQQVJ+If8PgMb
ZxOz1uTyv5UufL0+h616dkicp7O9lZFClyTQFqAj48Yxpnb531ax9PUJLa0n+tQxjgLlfst18K5l
wlTVJq2sSgFT7LtUk9xtkJleGnrH6cbRdCt9K0QRQ390ircMD8XFvh7Ef5Wa/NkpzNPi4lkemW/1
MMyCa9JrNI4r132zXzzl2sdPSQa3pguE9T41dKgGn2fntmw0er4i4es0EQGL3Ecxt5LRqi4Y/BIf
21BB4/hm8EgQ6CUOE0jfqcP6Hha24yTlGFxD1aEKBWtMHEjwyd0puGSW7V5jxt1WgVtgTv0xq2PC
hL69u1QCCIohJCbGuSEaWkse1u0Ys0cjFxvUEj9WEy2ZR5oRw4FHXi6nocQGfGsKsxPQ1HwjwwE0
irZTosWpaxbwaRaWL3c7mgSJSdqk1Y0IoMqlmX8vbMvM3k3RfLeg3k0moxXWqxrwmtYypAahHEUL
fCD9rMXJktvhjpKvJHnzV/Lfk6Us5InkYwPIDRAx4nw5L12GYpFuQCmFv+WDeZNMPmfzB5kiWS94
raySAfDb0JStX+EBSvwn7OGPpYyNvMZ5I7S/lW2kE8UD+klxGPhcAA17+OWWxTe1uo7hOVeLeGSp
UQ7bdyagx8eoYGtcBCovUdd1LUoYUvSrfVlCoR1oBQV3OBUAGr1xVmXkjX9NsdOv7S/cLGzK6IQT
y2ANPvxVDXuv2Wmaub3y2SltNAqyQSA0qeVafZ8cVY/f6hc3s5mun5SnZQOijr74qpCFWoEqfBfH
JUxtfM1lZxiW5k+IH4YB1qdseFUskvLrUZvq1upRC9EjHVq48KOFUbTptIu7U6tBJDbTMDK7KVHG
tO4+LplUg38LPPPPlHQJPLGm6x5UlaS5ndUltfURqgq1SEAVo91/byUAjkmVn5o1y2+oafdRR6x+
gg8yfVW5MWjXkvqcTJ8KMnN/8nJ1ZYmRp5r5lu59c1i71OWJIb24fkYIvsKKU7k+GbHHiDhSyE82
PyD0iVcEU2+nxy0xpA4SrQXQ9MwzDkj7V7jvjx2KaZYyNwsuLSRT6sbckP8AuweHhg5M4zU4ZzEe
B5GNtzH/AByyOVE8XEmcEqMtY5AB1DDqtOx9suErcWWOl1NjWis+xp9mT2wtawxxsBERVV6qP2D/
AGZCUqbIi1FF1CWMiCX1kBp6v8OuY2XO5OPEi7XTUjcc/ikYVY5r8uW3NxwpHRqqigygSbZNkioB
7nJEsQrEBWp1qO/TIslWGV43iZacom5J/LUe2KvQPLPmu31vzfp8vmK2tWgtohDbq37mMBeCuzPI
xWp4rkSyBTLzCfM3mWTVNC0y9B8oW7+rK/qLI1IwsnGqkLxDKp+xjGVKRbz3zNoWm6W+nwaNenW4
7qEy3dsg5NC3w7fDX+Zh0zY4c9OLPExi+0iS3fiKr6i8kVxQ09waeGZHGC0cXChf0dcMBuCKV7f1
wgMDnXpa3cX7xKCnbJXTUQJJnb3szRBbhGUD9lfs/wAccmIEMYTILL/Ls2m3DRxtOYmaiDatOWxp
msyYjF2OPJYZR/gvSrPzDbC/ura8CD1JLCOWNpHUqeJZQzMeJIbjxysaqUdmZ08Zbojzx5g0X9Hz
aXGjX11PA0MVv6bQW1qiLxjdYXBfkwP+/P2MzMEjHm4+ePFyYPqnkvUdJ53Nz6ZW24C69KVHeEOR
xDopZlrzXr/NmVMxmHEjKUCjLzzvrOq+X4tFtJ4dO06wZt4wQ7sKgHdvtNuz/D9rMcYSJW5I1TDr
fT7GELPdOZDy4LEOrHrv18cvOLiLVk1B6JgkE99II1iIjQUWBAeI38cmeGAcWMDMs88raP5fivIo
teQs1vE8kcakKrkKSF5EMKsRQZqcuskTXR2+DTABFX0WktY3Wp+g+nywvx+qSOsgaLopVlVf8k4I
R4ubZOXDySK71KOZYuaJOQQYbSNgeS7UMz7rx/yPhb7WXeEItPimShJHNJcLNdLz7RQKDxTbog3y
nLOxTdihRtmvlb8vdT1d0ur8NbWmxVaUdlO+wPt7ZS3PWdM0ey0u1FtZRiMD7VftH9WKoxUJ2QfR
iqY2emsw5Sdt8VTOJI0FFFMVX74q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FW8Vf/9X1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7AVSzzHZy3mkXMMTcXKN
T326ZKJYyD5n82aJPazyMilWDESx/wDG2Xxk48osPbkQxr8Q65bGdqMa1CBQ9z/tZIi2Q2Zn+Xer
W8a3ulTuFFwQ0JbpUcqj6eQyjJDZshPdnflnStM06+l1C6RZbpdrdHqaV2qOx6n7WUcLdab3ur3c
7nlJx3Pw9PwGCltK5pZiGZqhR9omgAHjhAthLdimvecfTWWw0pud6es1AeP4EfhkxSgPPDaXXrra
CNpLlt2iAqw/1icsBYSCYX/lLWdNsobzULc29nN/dtXk3Lf4SASBWhOTjKmshLvXCx8YE4A7B2+1
78utD4ccnxIpQkQlqk1J6k9/nkqWkztb/UNP02WOC6kiS42ZEp2ruP5ftdsJhsxMqLPdH0GPS9Ys
NW06Fb3Rr22aO9u3erwykPVxyNaj4emYs9m6JtK/0ne31rqnlu0ifWY2u3FhezUqqc3HIOTUdVyI
FsuFheu+TtZ8vXCTXcLW6S/FG/Kq13p8SkmtRlgDAmlt7eeYr62gGoXDvCECw1bYqAAOmS4UcSHj
hWFKKKewxpIeh2Ok6XpnleLXtLt11e9eiTvJ0tq15HhXg1CtN1bKJEtsixfW4Lyy1iLUPW+tWU/I
xXCAAEruwoAtOIK5g5Y252jmAnWla4LiMEMSP2vozBlhdt4wTC7vtOjsTcXkdQwJ4qTU7fMZfgx8
Li58thh9rd+XtV1mG2LSW9s8h9aQ7tHRDQipOxbiubOOcjZ02SAJZfHe+VPK+pKs2m3jidCkgKQv
FdRmnxBjKXT1BvsE+1l4mSGAI5MWvvLxvUvNe0yykTRkmKiKTeSIcV3ZSWHGrfzNk8eVrlAMalLO
kn1ReRWpE79P9iDX/iOZcZ240wl0h1a0/frV4qAuTRgTXwPT6MkQ0gm25LaDVoTNaELeD+9QkhfD
CAztf5f0qyGq2664/wBX013X1ZF3ahO/0ZVlb4F7Unnn8ufKhWw8uWZ1K4mQJGkQYUqA5YylllBq
KUU8cwZguXGQS7TvKGr67qc/mDzXbrb6fccp49Fjos06ir8UZQq1NePxzJ9rKSGRY1+ZC22uWdha
+WbH0FkrDLa0HrKiOxqygvGvxqByR+eIY0x7XbjUNOt9M0C+5m0WNIZoASvF2VVahFG2ptvgmrMP
ObflZoWhW2n2OlyXl66EQqjPUSOCAzH1AfhbfAFeW3Oja9pyxTXcDWwkVWLsNhUVH0nLQVRNpqEd
woBO52DdCR9GJLEo0qvCtKce/jgVbxqKjpira1NN6U7+OKtqTuKbUpTrXFVdbTjAJ5SI461IPU9s
VQl1qqkenYLxpUFqAk0+dceJjShpWnHUdQgtrqURNctxR5Ceo38D4YOJkAynzr5E1jyLJpWrW8sN
xbykSqY+TlWoGoeaivX/ACseJkyLz/5m0/zT5KtbS5tfRurCNJLqbgiNyEnKg4eIFMZBeJJvy+0w
ea2n0zTp/qDm34WiyM1fWBUKf2/tDk2SgkNeTxrnkPzaI9ctArkATwSHkf3vKNjU/aRhs1Tkj3su
EJ1+Z3k5Jb4aroOmSW9jcIsklvUVd2QEtEwdvhrX4Syf6uW485cfPjBGzy6aBZ0PqAMeiSdCD4Oo
oKjNhGXE6kgxKUXFvLE3F+o3qOlMBjW7lY8t7NxXTwELWsZ+0vUfjhG7Gcd1WW2WWJrm23UHi6V3
XbtgMaZRkhoXeA81biy1oD3HgRkYzIKJi00hvoZa0rUj4owBv8q9Poy3xWg4laOItxZt6/Z7EDwN
OuY+XM248SLjjSOqIOI60GwrmCZW50IgLlB75AhtC7gSQVIPiMAigl1GYnpsaCnbEsQiBU1cL9kU
YbkA+NcDJE6Xo2oahP6NpGJGBqak8FFK1LdcVTLWNKsbZ4bWyuxcXrKouIxWgkoOQQkfzVxIY3um
flbzWNAs9StJ7Nbl7hGUKzyRlWdQtTwK12ysxbYsk0uGz0byZb+YrHQxJdmZDO87grItGLRKA7EC
o/lX7OIkQpCU3X5d695s1mfVNZkg0dpFM3pE8I44VBNUCLvyoy7jMjHmLXPBEh5pcaWi3k9tDclz
FJIsTVIR1RioIPXfM/HltwMmABLZPrMUvoyllnUjkvbrvmQN0RACZRabqaIJw3H1PsAmuw9jUdsm
0Gl9rKZ7gG0lNteRnZTUhmX2PIbnMfKA2Qt6H5d8xz/WBqepaSJL63T02viSu3RagEL3/lzW5MYt
zoSNIuHXtRm1v9KusLSLUFGjjYGImvGhUjoPtfax4z1ZCIKW3lhq2talqktqeIuVSd7bkayIjLsK
/aK8OXxN9nM7DljTh5sJQ2r+XLG28vR6nChsbxpAklk5LLMaHlKhJdhQj4h8H28t8S5ANfgjhSyx
0W7vI4luVEUUT+oCo3J270r2xzagY9k4dPxc2X2lnFaoFtwFLChkYbb7nl1I/wBjmsnllkLsI4Ix
Cy7dVkkSMB3jHNpiTxQLUn3PTbbJxwDqxnlrkl+oXra5pdvp8ZfhDKZJrlvgZ1HL4QFNCtW/a/lw
yPDyYxHFzVNH0me6nS102DnI9Ae9K7VJNTlJzEtwwgPW/Kf5bW9gEu9S43F1T4UJYhDXw2GQLMM4
jQIoRQAF6AbUwJVYIGlfYfTiqb21hHGKsKsenXFUXirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVbxV//9b1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7AUBo0JoRXI0WTC/P/lGLUNPku7aAG6X+8RBUsvTtue2TBYEPm/XdIntJJX9JlUE8qgimXwmGHLm
klXB6fP5UzIBYkgrVYB+laGqt3HuPljzYgUbT6w8+eYLWONPXE6x1AExMm33jAYBs4kbJ+ZeuHf0
7dGXavH+3KiAm1fQode86XskNxqBjt4gGlVCeNK9viyqbOL0vQdE8m2B+p2Eay3yJ+9lopJpSpNB
4nMaVtgIQ81tarPJJaKYbiZCsl7GKOgII2mHTr0wRnXNSLYLFqZ8vXl3Y6pL+lNAvH/0iJ/ik5kV
Dqfi+IfF+zmRjnxNMo0lPmLyoukpHcW9x9a0e++OyvloykClEdgSodeS9/2sviw2Y4fhcoQadtuv
yy+IRxBUWWaOnGUx71rWn0ZImmBFlVsZ0jnj9cPNa8uctsG4kilOtGpU/wCTlEiG2MWWwXd1q2nz
i3kg8v8AlpG4tGjBZGpUcGFY/Xaleir/AMNlddyTaD13zRZt5ft/LemxM1jBJ6pnnPJpCaVASg4D
4fFslGJapMZumccSjl4KALH14EjcU8Mvi1qXJt6joaYTG22MwE00zzDNpPNbV2kSUcZ4Q3BGGxNR
v0IyqUQniRuq6vcWOly3mlJ9f0uRZOVsTyNszLSqoK0DdzRfsZizAbISLCtE8xen64mFHfdVrQGp
BoPHMcxcuGQou+19r2SprGkRosYbqT7fRkhAhcuYHkznyD+W9lqAGua9OljC9Vt7eXjzan7Q5FaH
r+zg4WkSHVleo22l23GTQLL1JFV4/rF6nIOVoOaIQtGH7LcmzIjIU1zrol+naz5rnj1FIrq1ttGS
sd7qFxH9XjYsoHAM7hZHqy/BywcYDXwksN8yeQry30iLXLe9Go2LsyInp+gQd6FIy0hdPh+FlzIx
ElqnGubGDaahZNXlyjKVlg6Eqag/d8szsYJLiyyx5JXd6fWM3mngyQsaPEv2ge/T3GSkeiYkIJLK
8mdwwaIACrSArSnzpkTEpMwGS+UvNcPlHV1vreCO/mVPTfnRUXkAeS/ao21OWQONYT3Z5pmr/mL+
ZcFzDFePp+g2wpdLGWKlXB5ApVfW+Fe2YeSNF2GM7J3qUnlj8s9Ea00i/g/TkqL6rUW4mcs4biQj
K1uOPxfFy/4bKCGzjBY9a+RdX856hH5u1aU2cUjfuYrtuBmcGokrJx4xj5N9vK+IKY0xPQtQFv8A
mRHJEhnit0b67vyUuquQUIFKfY+LJgWx4gn+u635n/MzVpND02VIdLikV7jk3Jl9CsY7r15NgOyg
2wrzl5MuvKV3DFPPFM0xIjaJ1ZiVFSWVSSowRmFkEBY6kJ6RSsAR0IOWgWxTANtRdxidkWqxQSuu
y/D3Y7AfTgBW1k+o21mjKg9eam3gD898bShbK21LXrhbaPlNOfsQqCTQe2+NppMEsH8ra7bJr+ny
xwt8TCRGQOtRUpyX49j2wccWzg2Zz+anljyZdJpVz5YaKN5Av11g6MkYqT8ZXjwNeP2skGBCAOqe
YNX01tMt2bW/0KnCzRA0/wBgceaBee3wj7OAyARwlr8sf0ZfarNp3mVnaC+DxIGFaEoQrVb+VskR
abDXmXy9L+XnmRrjS7h7u0FDBdRGimoDemzLyCuOg/1Ps5LGEGTLfNVlYfmbYLq+lTtcajGsdu1r
X1LqGj8t0H7x0PP+Vf2sZARO6DJhdl5/8y+Smu/KutQNd2lq6ulrKxR42YBgY2YNwqrn9j9rLBAH
k1Akc2GeavMVvqvmG81OxtRYWk9F+qcw9d2PIuAgZ25fF8GZ2IVzcbKQUJdyQoIo5d4pFrT9pe/T
LSbcXgPRA3lt6QjkWhil+w33dfvyuWzfjl3qSPJC/qRsUZT08dsYG2yceqIvkVrSG6ClZpK+oi/t
E98GagGvEfUnnk3yDq/mT1bi3dILdC0bXErBUDInM1ZiB0OYE8lOWIhJhcyaff3NpI4ljtpXhMy7
qxRitVIqCDTKDO2Ygm0ModFKmoO9cICaIVSfhBG9fDAZIZBp/lxZtLW+vrn6lbyuYoqLViwp1FVo
vxD4sG5UFTj0W2g8xfoq9uUS2HH1LxCGTi6CRdwePcD7WIBHNlb0W7sdC0mztbCLTmvbK++EXVuP
UfkKBWHBW688K2xTWLa78syS2mkX3qWt6OVxaR9UJ/36isafZH2hitrraTy/baPbT28cbXkIH1pJ
XVZPVpv6dRWhYNxyQYkIm70m91+0/SYtlsXjVv8AR6Vnk4qTXh8LsN+vH9nAaZgsTjubiIRxPIyx
wtz9MHhRz1bfvvkSEkvQtZ1Py3511vS7aa4u6emRdzNV3enIiMLQFv8Am7K7ASBaA8z2mipb3nle
w8uyS3ycGs76nBo04/aZfTJX7Y/ay2GUBEsVpDrn5aeZ9J02C71lGhSFlJumUkuCRsK05ffmfjzh
wMunLH7Wea/1GGzs7WW6upGKW8SBmZiK1ooBPQE5bk1EaaoaeV7sin8tXWgrfeYLhLLUorGkd5Fb
XEcrWkjcuLSKnMrurfa4fYzBll4js5sIAIXUvNep65pi2cNyj2q0MscWzSb1FaE/Cu2/+TkCW3Zk
1h5M1O18qnXruQR20UfqIj7GRQvL93U/H/scgDxqBwusDHfJDJagSycv3fpjkyt4ilcTjMVM7RF/
5R1RLlr3UoZ5pH3HqqzNx9gRWmI1PQNfgE7rD6EEfqSOAlNlH6vnkhjlM7spZIwS691RyQGJRX2W
3T+8YduXdB81zKhAQDjGcpnZCiD1UQ3fwrEax2seyKe3tyzGy5b2Dk4sXey7yv5G1XXlQyo1tZ7l
2ZSKgGg605ZTZPNuoDk9d0Py9p2jwenaR8XNOUxALGnypjQWympoSAo/qTiqNs7AvuwoMVTWKCOI
fCMVVMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVbxV//1/VP
bFWsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdSuKqcjxICGP0YCryr8w/JcFzFLc2Iq
jBmlT365ODXJ4Pq+mXFpO6MtFU7HMgSYUlZqr1P2RufoyQkyq2zGygOUKczVa98Bmoim+l+V7+9j
kvpitlp6irXk5ovyVRyc/wDAZWZMgHoOi6Rp+l6M99o/Of1143M7GjcezKtQKD/VzHykswExstOl
hura+N2scJi5Px+01eJAO3f9rKRbJDeYvP8AodtOLRHCNMNtidvA8a/FkhC0cTHzPPqNtPPBax2G
lMvpz6je7ktUf3aKXft19PLscaQd2rCN7zQrzy15Zha5tUIa4luSC5JqKx70UHj+zxy0SYGKV695
C13RrGKW+iBR6FZEYEp12O+SGViYICw8r6rf6dPeRIrxQkDiTR2413Ax8S0xgh/LlzcWuoyN6CzQ
OpSfnSq032rTvkDJsAT7TvLkGui7NoGt5UPMBmIt6GvxVYn4vlhBQQknmDQNR0a8+rXgUg/3FzGa
xsv+Sfvy0FpISwc1YhDv0avf3ywFgQ3PWWJkU8XDCh8dxlgLGlFSxqoA9Vdih75AhPiBG2M19ps6
SxBTHJ/fWr0Kun7Q370OUyxs45Ql/mjypbvCdb0Sr2kpHr21fjhfoaA9qjx/aykwcmOYUx7SSh1u
zjuto3niEp9lcf1wSYPfF1i0uriOYDjwAhtYekZXj1Pvy5ZVSoi78wrBFHpkhjNxGylowNwP2qN0
/wCGyYCqF1qEEXliTUdKtI9a0gSeskMpZZLS5JVCZEQx+ooARvi9XJiNryeX6n5l1XUdR+s3czz0
JJiQLHEtNvhRQnwjttmbiiAGnJuh5Le41G7W3sgFlkZY2kkagHM08ffJyycLiwwXJf5t0G38t6fH
bw6ks2rFgZ7eMVQBgW+0VA/l75SM4tyzg2SRrSZyVlJkkp8EQNPoNKZnRkJOBlgQXXEd7C7OYYxE
oXlD1NKDv/bk5bBhAou11TUre0ll0G7lgjmWtzbLQdAelR7nvmPkxAhyI5Cz/wAiW/5c2+iW/mHz
BqAutYLsbm2uPVbhQlV4BBRjQL9v4c184EFyoSVte82ar5x1SCw8p2LWyWshaK+uCEHAkULKGMXH
b+TISADfE2ra95d8t+WNCvbSBi/mW4iW5kvGBBkPqAMqBqIF4If2ceFBi8+8iyaxo41LW1QwSXx/
dKwoGFSTxrkSKUCk58haB5b80Wd35l8wXcxlid4FtidwyoGqKfDv6njlfPdSw3zZZ6SvmS5tvLaT
SWMKpV2FfjZFLio8H5ZaJMSk76hfQHgNiP2Wx5sSjbe/1W+hSJailahAPHGwNmYGyceUtGsdT1YW
N/Otu4q5Lk0PHenwg7nHmrIvOnlTV/y98z6XJpd0k7XaCWEIKkKwNQeSjwODgK2jvzA8z23mPTNO
vtUsw0+jARtHESPUZgvxOQw6+l+zkuABeND+S9Hl85aff2cc0dqSoaGPkRWRWUhN6t0GRY2r+Ur/
AFb8ufNMkN7Ckc6uEuEl+JeJNfh41+E5aIAswWSfmtokz30WvaHAkFvcRo9bc1WRw5+Nak8f2ar8
P2fs5EHhSQEDb/mBoutaUlj5lYWmo2gWJrlY6pLGg4mq0NJBRd+C/tYREncNci831XVLfSfMN7/h
a+lGl+oyW0oJWQoBsW5AeOZGPHfNqlkASO4e91K6eaeQz3EhBkkkJLUUcRv92ZIxU45y2tYWtvGA
T6023yBH3ZcA0EtFJrlzJIeCAU5nt8seqW7iUy28VpAvqCM7np4D2ycgKYiVHdcIba1INx+8kH2U
G/XxyMCAzkJS5IzTfL2seYL1IrGFqgjgwpwWvjmHqs4OwcnBhrmyTzfp2p+Vbe18ui4KCY0/ckfF
LJ8J5H5Bc15NuXGDeqL5G0DyzLpaWMmoeY72KNEn5MVjmZOTftqPte2RpkQx268teY/L+lW2rXtu
YrG6Zo4yxBZmQAttXwZclVsS3YXkNxHyQ8ZB8QU4iVMSzRPNt9f20emRrDA14zRS3hWqn1aJyKkH
h1/YRclxWxRt5+i9EhfRrO3Op3kyhru5YlkCkBvgaob+XEilCE0/XPM1lpzwW5eOxJ+0yqWjQ9eJ
cE9MCo20vppxKNL4wQIym4vrgB5CxpUBTzrWtPs4qv1LSmurifVbZRAlr6XEMv8AvRLQ8mC0NAzL
WlE+1iyDVl5k13Utaisr+6FnzDo4RI1+FULca8duf2cUq15p+lWtrdnUrWOKAq4tYldmmZiahiVY
jcf5WKsUsr+4trmG6gk9K4tz6iuADv4UIIyJiokz3yH5xkk1G/l1bVUtZ7yKv1uWFWoqlV9NQsb/
ABHY7r+zkOFsBb0vR01O0TXvMWsm70azmEUMAZ/U4KQS3AKqnjyqeeWRlTEhIvMP6OTztBq35ewv
JDYx8mcg8fVKBW2f4vss2WxlaOBD2N1r/nCaXyxbrb6akkwnv4jVWno3xcmep5x/FxWvxc8Mo0xI
Uda0HytDPqNvokr2+qaRLEsTty9K8VkQyDevEp6j/wC+/wC6/wCCERbC2TaZ54sLfyT5g0bV7lzH
6MY0yBk39ZkkDlDSvpseFORyyOOikl55Z+Z7rTtWbUNN/wBFRWDJbH4h0AI+Ll/rdcyPD4gwMwGb
WXmvUNf1ZNS9Cb67HGPUXmghI22AL07ZSdOAWBzJNZ32p311LIIlCM9FeTbgKCuy7YJSAQImSZ2F
jKbkw28RublyaSdep/V4ZjSzEuVjwgPTvKX5Xxwlb3WB6kvUQ8tunelO+VtheiQxxQwrFGojRBRV
UYUKyRPIw4jriqaWumqo5t18MVRybClKDFV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxVvFX/0PVPbFWsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiru
3yxVBXF9xqE6+IxVAtM71Lb+5xUqTBXDo4qjgg198bpFPLfzE8iOFkvrZRJbtQyIqfY2p1BOSEmJ
i83svL/l+Ozn1LV70PFAaR6ZFRZZCa/Dz5VTpTl6bccstEea67uLjzZfWemWWnW2mhAxtDVUdwqs
eLMEUueuLJMZYbjzHYf4av3+q+YdJHoWccn7uOdY/wB3wKmm44pxb4uWCkWkcHmDVbV49Iu3kspb
XmJPiaMMvEni526fa3wGKYyZOb+01PQDa6LbXM0jpxn1q4la1tLdj14NxkWTf/LjwcIZEsfsU8tW
GqpbaesWva3OSRf3fGK0D/s8Yz66ua7/AG8dmJZlpX5c6vrdqlx5lu5YrhZ6xx/EYRFRqLEhYKq/
Z+zgMmUGe6Ro2jaND9X0u0SALXnIFAlO3XmBWntlZkzVr2wtry3e3nVWhlG9QDv71yBJZcLzHV/L
+q6JLJbWCzSPdsRamLlUUNKCnQfEuSgUEMfbTbCxul/SUpvL5jtpFo3wcz3lkFen2mVosuiGuRZA
uj6lrGnlZbtLKzoyQ2VjFztI3j+H/SOLRoje7J/Pk6YcSR6FrVheWX+HPMKiXTpCVtr4tyktHr8A
VmHwxcwPhDJ9t8IKCEm8w+Xr3Qb82dzRkYcrW7A/dzxGhRkPT7JXlQtlkSghLGAIAPUbg5YCxpqR
PVYEmky7hx1I8K5IFoONZPKJxzK0nQbe3vkzFiIKumand2UgljPJWqJlY/DIPBh+1lEg3Ri35i8p
x3lquv6MAbUHnfW8Y+OD9osOPQL8X8v2cx5ByGcQXH1TypaNbw2+p29AY9SjCmXkXoUagc/Cf2ue
VUqf+WvLHla9tZdU1u9VpiV9WH1AkcKtUsSxJ5MKfZ4rklX6Wuj/AOOdR1TQS1v5dtLIyahaqtIb
gkOm6KQjfsbnliJbsZF5Jrt1Y3esXl5Y2wsbOeRmitwQygEk7UCAV/lp8OZuOVhpJS4xyvG5UAEf
ErNsOS7r+OCcSWPHSM8rW+kXFzPPr9u8wCVQRnZ3qPbwrmHPHIORjyWN2U+dNJ0ZbSz1rRY7dLdr
Ym6ghkVpOhIduKjg+/2P8n7WZemmRzacwBYAwvLmOSSGN2BHKUsT9kbA9Nh0zMOQHZxPD3ZH5A8j
peXMF7dXkZ0kx/6TLHJR4GcbcgD8VPcp9nMPJmIOzljGKS/z15bTyz5hS1vwCRxlWSPZZI2+IDj2
qvvhj6msGizSH837Ew2umeWPL0QneOOFbZ41lUycQvL0/THMs2RnipyuMBOdJ/LvzN5h1n9M+dJJ
rqW2A4WXxiJUT41V5WJ+rxoTz9P02Vv+emY04lmJWkHnTXX82LN5W0myia/tblvqf1MBlVIS0bcZ
UUcUJKdF+LKqPVLHdV0C88kaElrfEqbiOSVJN0WS4dSigfzUKp8OG0Mu8lavodn5NtoU0WGbVZoy
14VVQzsx5Ek8CS9TkgGJeL+aNZm1PWri7u7CLTp5DvZxIIUUAk0CgLw/4HJDZiWQ/ll5m0mw1Qwa
lYpLbz7Cc8aJuPFT4Y8F7tkTsyr80NG8sP5st9a0KeGy0dVSSZo+IBkjbl8CqVFT44RGlQWoDzN5
i8vy6jZtNfGxcK16xeSRIqU4o25Vfi6cskJ0xIR/5STeXrp7jRPMdoZjqrRwpMUEjihZQy8vsP8A
vPtA4DbIRa1vSJfInmqS5sIZJ9Ptph6c6sVShQVWRwGBffv/AJOABNBlPmi10Pzro0XmGymaeV1W
O6DN6k9tIV/bavJoVKtRTwyyILAzAYXof5h+YPKv1jST6V7apICsN0PURGFCSivyC7AdMvGHjLjn
KxnXruTV7yfU4AgeeRpJIkAAUkmoAHauZcccYimqUyk1nbJcXKR1ohqX70UCpAyUI7tJJburlgDF
EPSjWorWhahoAOm/tgzTATjgSrS6bPY2kN3fQuvqn9zFIpXl0+0T88rhktZwpAXNzJKRy+FK0W3X
YKaVr/mMsJZRFC1ew5C3vZiCOKURh1rRu+WAEhx50TapbaWzwG4mk9Pl0HcgmleoyccVr+Y4Wf6D
+ZqeWvL8ehJpiSSMCy6hHILeQuPsF5QjsVHL+bNbqNNRtz9Pn4mRSeQ20myTzJ5zmN/KtJwv2o1E
p9NebMWAbkfD+XMQwpzBJgVnot7eeZLrzBDZyPo1vIZooWqFah2KmhXp7ZWUktWeo6t+YGtGPW9V
e20TT+MvFmJiRXJ5BVLKoai7nIm2NJZ5rsNEh8yva+ULl7yGONSWReRYhVDU4s37RwgjqikNYaiv
OSKf93chv3iON+X8u+TsdGNMz8r+ZLfTUmt5oVeC43a4CjnGQB9n7vHHfqxTvTYb+4EN5ezT6lZX
bTLaWyszjlHx9L1FqwCnn9nFVPVdLlt76zl0q2Y3I/e32nxEuqMKgbqPhqAnw8MVTHT9afUrq5sY
g9rfS+pPcesTO6SKfiS2iPApRmP2T/LiyCjfaXYXcAupo/TsHQs97OeFyZlJ2oRyfon7fw4pYRK/
OSQqeaoxVGbc0GwxVbVFFK198kEUpT6lHC4JNabEdcBitsg0Hzj9U0O906K1t7kXalRLNGrNHUU+
GoNMqIZiT0ODVrvSPLOkah5Y020hmlk4Ox4yNI/xhqqEX9oY8VNhS9/y5lu9Xvdd8xapBpN6rtd3
XBhE8ZYl14LyQ8iQ1G/Zy6GS+bAhivlzV9Fl12ca7AW091b6vdPTi0itRTMWFJK8f2j/AMRwyO+z
WYr/AMytR8pTNytF+u6xLbwwmWOQLawLCnErDQMrpU9F4fCq5kAFqnJgcNvLKwRBzYeI/hvmQMgi
HHollejaM8EP+kTtEjDkYRUKformJlzXybYYu9mXl3yhqetSJHbIYLMGjzcSFp38BmKZEuWIh675
a8naTocKiGNWmAoZWUcySanfrTwyNJMk+AJNSPp74VRVrZSStUig8cVTeC0SLsK+NMVVu+KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVvFX//0fVPbFWs
VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqycN6fw9cVSmRGDGuKqR8D0xUtBRxod8BULmgi
mhaF15ROPjU4AFLyLzx5Mj0bVrbVYLX6zZpKJngJ+E8WDcTuvXLBJgIsduNU8walq3p+XdSlFuV9
W5eeOFFtwvVeRjTb4f8AKZuWTElIbvtCW8t7nXYtTa+1GBQZLuRfQjYoDQIHSJmpTYrkgWBY1pet
Wh5X3mO1Oq62XZo91WDgVCr6gUoxbly+w38uQyFMIkpzZ+V/OHnXj6oFjpatyQ7RxIoqAEWvqNt/
Nzyqy2cBeleWvIfl7y3EjW0PrXo3e5k3JNPDZf8AhcDLhT5pGapbZj4dB8sBTS3gOx2G9D44ErW8
B361xplaW60sT2zW1xHyikB4vWlDTfcb5HioqTbyTzF5TazD3lq59NugrVj9OZEMgaJRKlokV1r8
BsptRSxi06GscLh6PUCpqoNW+Hxy8btdEL9TGhLoS2UEiXmqrIBE0EcyjhVaiTmByP2/sZEx3Zg7
IrQ9Xs7u1PlzzKCtkCGs7pgecDjYA0qxiox248vs4QgljnmDQL/Qb76leKCG+K3nUhkkStKqwqO2
S4mBKWEBW2r88nEsCStlTmAQaSJX5EHxzIBY7qSq5UFkNB9kdsqnFfFpM/L+sT6VfJew/GiMDNbv
ukq1qQw2NDlUsbcZvTdEtNDmL61oWpQ6ZYXSkanpc4LqkvSqJQycDRD8Bb4soMGQlbQ0Ty67td33
mKB4lqaLDcJxXrxUNGB0/m5Y0klC6jDF5Y8lavYWtx9f1HVpk9GWBWEa2/KKqszAfF8En7WCt0cL
yyWARSNFKS00SgiHatCNtxtmdhhTj5DSTvJc6rL6Sn0mU0aLpT5/2ZcSDtTjyNbogWN3ZTCOGcB1
oxHUdN6H6cJxghiNT5JzD5V836pam80uwa4hlRphOHQQgBat9p1/Z/ZOY0pxj0ciEDJmflW21S/8
i6pp2oiHRLWaP0RdyqVUhZVZ235Oz8lZRw/Z/ZzGsyOzfKPCEk0rRbSO2vbryBqMl1PYnhqNhNxW
SUR1pLAJFjDKaP8AD8T5bEjqGJtgmtSSXuoPdXV20l2w4lZgeQpsQaAAUzKxwHRxpypS0rW/0JeQ
X2mN/p1u4eOcg0V1NfhVvfxyycR1QJFnHl7UvNX5ia+9pf6mLaFgXuHJ9JGCKWPShrRcwsocnHN6
Rp91+Wv5f2kltPdCS6uY/wDdIaW5YN8RJdVaFVNenwvmOT3uSCwOz8qXfm+0W+1nlpulaeSVupG4
yzA/slX5fDv1WNf9bKp89mXDsxv8xbL9HTpDo9y8kDJG4aBWHBEQLvzXvXr9nMjHC2mUgELaQ6V5
xj9DVpY9P11ByivGqIZVG9HA5Gux6cftZKWIsBO0Pew+WvKU/GxlGraotBPKOX1dAwrQAhGNPh74
BAgUnjZn5O/L3/GvliaCK6A1dX9azhdlCuCKlB4fZA+M4JCm2O678tPMd/5J80jQtRaOC0MjR3az
qXXkykgHhX/J3xjC2R2V/wAzvJ13p/mCTXdFUxiaZriBYyHShbmJI6V23rRjkuMcqUK0H5r+Xdd0
F7PzVE8epCkcjxL8M0akFa0D0cN/q/ZyUcBLTky08wvb6az1G7jsHaO0ldxCpJFYmYlAw8QuZUMN
c3EOW2tW9Sa/9OMczxAL9+9cskREbJAtEafZrAxZ2YyEU47UA7ZjjPvu2jAShLfTdQ+tRrZoZJST
TjT7t8t/MCxTCWGmb/lzZ+XX1xbi+j56rZuTLpkhCrIKcS8btSNWUkVEkn83w5XqNzsyxbDkv83a
3Jp1/rvlrW2j1lbtA2n3sVKQli4/Y49PhNKZHDCuZRL1cmCT+V9Yt7CHUWi5abM3BLlWVhWpFGUE
unT9tVy8T9VNeT0xRC2EVtAbYcn5mkpqKDtXfr/sczeHZ1vGSUFNfzW0rWq8ZY0ICsa9OuVjIQ5c
cIkLQVzcyXMnJj0JCqOgByiciTuzhUGR+VdZiuNagh16Sa70aL47m1qRXgCygd6cwuVS05k5AzgP
SbzzRJr8q6Z5DgkfThGy38UygRwKSOPGoRz975rs0DAuXjlxBhfnDylp/lfQY4LO7+salcf3qqeo
NBxIoDUb5ECxskmlvlXzYvkDQVmSxjl1mYkl51JCo5LdKqf5cjXei0PH5B1zVdE1Hzbqk0NmrI97
EpdFLkKZOKpUtU0p0x4q5J4WOabqkkYVLnZGB9OWnavUZO2EhTI7DU7m3RjZTlFkO5FaGvU0PQ/L
Cimb3Gp6Td2VvcxXZtrSJQJ7BA3rPMDseRVuvw/tZKlpWv8AR7vUbRNRDG31VVWS0hFEpGBVTK7f
AWb4eXF8BCQxDV7jUpLtlv5OUwPRWUr/AMISMCUAXFem3tiriqcfmNsU3slUtpcLKWpy3qKf25MG
2BCN0q1l5MTX4uqZCYpQE1S4NlIjyOxMDBoowSeNepFPh75QAW0Fl17rXkfXNWspbl7uKONP9yN5
JUq5alFUIvs/7P7WTGMqZU3r3nvyc3lmXRtP0cXN1XjBeykgL8Va8QyN9n/JzJx4j1apZg88sNIn
u2URgkKKM/hXr1zJlkAcaNsv0rRYLcCOK3M1zIKKV3Ncwcma+TkQiHpflL8s2mMN9rFUWgKwV/XS
uQjJuI2emW1pbW0AghjEaL0C9MkSERBHNWSNnYKvxUyCSmlpptPik+gYVTFFVFAA6Yq3U4q7FXYq
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq3ir/9L1T2xV
rFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7alDiqHubdWUlRvTFUseMoSG64qtxVwkC+wB
oTiqnf21pd272twizQOKMrAE0O21e+KvH9f0678satcSQxRz6ZdRfvoXUcJDU8eYIYVDKuEFBDDo
7fzZ5qvFtog3oRbLapWOGNOgHFBxXiNq8clxMeF6F5b/ACt0bSlWbVAl/e15KCoES+xrXl/wORmW
UBTMWZVRUiRVjQUWJfhUD/JA2ytsbqSN8VWihr7Yq0TTFWqVFcVULuyju4SklQoBq3hXK5DdKXP5
btXsXtJ2EsUn2SEHIb9jWuSiaYl5X5s8q3ug3zGMt6DVMcq1Hw9aHLRkprIV9D8xaFYWNupgVL2B
HErGGOZpS6kKyyMQ0O5/Z/l/ysyIysMGMzyXeo3jSMDLPK5CR15MBX4QPemJktMps71ZLMeWPNa1
tuZi07VG+J7eVgAo5NRuHLjy+PK+NlwMW13Qr7RNQl0+8FaANBOOjoQCrj/WU8ssjJrJS4hiwBIJ
A65kwLCQVmcmJCsqqF6j78t4XFlEoG2WaS5kcbK/wRDt3yBDdGVc000uKaTWLaCBedwz/EqDalDW
v68x5hviOJl3nvy/arpYlt74erGeE9o5NGYjc0qdlI8MxuLem8Cgw0+bLq20Z9HivHnqwYP1OxB4
g1J/ZzLhja5ZEraPULmc3zbHiBI4/wAkUGXcYi1GHEoxv6k/1i2QR3S7Oh2Dg9fwOWRyjm4+TFsj
9O0LXvMF99W061KS0/eUqQq7Ak0GM84YQxPQdL8x2PkOwXy5BqEmu6pIRHDpkJ42kcjUT95Rm5cf
2qxfZzXzNlzobBKPOEWoXkMM3mvVSEduUGj244wg0NCkYZE+Fa1PD7WQ465M4R4jugNC8r2Usjan
5K1mSHW9NUzGxnX05WEQ58eKu/JfhpvlonYQYUV+o6Po3n/T57/SYY9P822n/HS0sAAThNmeILTe
lGb93+y2SjI2icRTzZre3tpJFuCWeM8THShVl2Ktv+z0zOxjiDr8oILk1LUPWH1WRoB0AhYoxH+x
phlEJhOmf/l7L5Hto7q781OZdTSn1aGQjgymp+LkfiYfD+zmHkxW5UMqc+fPzSsdR0yXRNEtANPV
Qj3l2QzVVuVIlIelNuj4Men72U8rzV/M90kckSTNJzi9B5ZDyHCoPEA14/ZHTMuGMBxpTJSe6lWe
d5QnprX4Er8S4yiGUbWxBA1WUNvuQNt998iIMizL8uvNcmh+ZrO4QyNZhqXCI5RuFRyKU7ha0ynL
jZwyPSfOXlLQvNtvJq/l+6WV7keo1y55NGYhRkc1bf4PHMcAhtlO3nuh/mz5k0myGnER3kMBKW31
kCbgOnFeYb4BQUy+GHq1eJTEhE0jPfTkIjyGRiAONSeijYZmRhTj5MltCb67qsJFWTkAtemRlKmk
IiLU4mu5EccGY7NmFkyEubGNJ1C8b7ha7CjfLKG0F1vPNZzm4tJKTRMGUe4O2VykWVJtqb+WNR0W
bU5Z3stehFFitol4TsTueYZDy/m+DMnCT1SaAd+X+q6K+nX0GpLa22qXHEWmq3sUc8SstftLIKLu
w5Nls8ZPJxY5BayHzb5nvby48s2FrZ38Nz8Dx2VtEsclCG5pwUciKV5Uww9PNlmqQpBa55H17TrO
a7guor9bMkX0MLGR7Y+EikfD9lv+By8ano0DS0wcE1JBrXueuS8RujDZNNFSx4M0yB37A9j45k7G
NutzWJLriRoI0mAWO5BNFUbMnv8AjhlQC47KaeVfOGt6HPcXGhTmCa4AM9ufsvTtT+zMHJh4nMx5
uEs58p2vljVbOXzLrWqW765I8rDT5wqxRCOMPvud2qQn7v7Wa3LAguwJsJHd+XNT/MHVvrNvAsGn
WtVklRakohC12A+Co23wfUhjuv3GoXnmG00O6u2+owOiTIrH0/SDUYUqB9kZEnh2Tabecr7yXc6T
Z+W/LOlyPq0cg5X1eVVoxKjqaVbIwCDukOqaR5g8rXFtBq0TwtdIXjWSoqoArSv+tliphZX/AKhj
nhKl1PNifiUEdKjJAqnF95m1nUD/AKRdPwoAEjJVaU8BQYlUucsyhiN23qPn3wKtABFMVcI2HXoO
mSPJVaOGSUfCNhuT7ZWLCtT36W/7u2XlJ/NlnNV2gaVeeYdRksLadFvXUsiSsQrUpULSu/0YIyFs
Sh7ttXsY5vL93F6UscgV6oBJUGnX7RzKiQ1GSN0ry67qLi6qAp3A+0dvDE5QECFsz8u+XdQ1SZbb
T4QiAgFwPsjp8VBmNOdt/hvXvLHkXTtGpMwW5vOrMwqFqKbVrlFMgGTioX2Pft8hkxHZmr21o8rU
HTAhN7azhhA2BfviqJrirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdireKv/0/VPbFWsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVcMV
Q11bcwSOuKpbKhTbFVLqPfviqHmmWPc9QdsVSfVbFNUi9G9FIa19Ne4H34LTTdtb29rbi1s19KFA
BQ9aAUyPEy4VpkrQn7PQDBaapslSMCGyFPTG1cqEGpwhXcKLT6cKu3xVtdjXvjStEHwq3YZEhUDq
+mRalp81rMAQVJQd60yBC08qtfJEvrxtdpKOZp6MYoSew5EMq/6zfDlsZbMDBnegflpfxyrc3Ese
h2ibp6bI1wfAvNWSA/JUXDuVpifntfJkH+4vTEaSSWWN7y+dgx9N3Cuz0ChmCKacMPAUoGDUfLl9
z8rX909xoqAHR9TYFZo5afErVWnCrShax/yfF/NkCLSYBies6Df6PfvY3QHKo9Gcf3cqk0BDAkV+
nLYlhIUhpoYISIXdhLSpVRUePWhzJjJxpSKHeZnEiQ0WJTuT9v8Az+jIks4xvmm/lzUb7RJ/rsaM
tpJ8Ny/EgFT2qe9cx5lvieFkkXl6HzD+kLqW7/3C3ppaTx/3qTty4I4oTx3/AJP2ftZimO9t4PEE
hi/LPVItLuZonWS6hfiqLRi42+L4TtSv/C5PxywliUfJ1/qmmtdWl7betpshKywtRX9VGKkoSf8A
W/ZbI8XEoNImbSPKZ0573WzNa6m0vqRQwOh9RPh+FouEki1owNeOXRYHdAaz51vrvSjoVhGulaXX
+5hSTk5AO7sxYb1J/Zy6MQ1zikHk+SDRPNNvPqhHoFjEkpqQGk+Gu3zwzxbbMYSosn85aLr19r76
r8N9ayxoIJInTZFVVpTl/k5gGJiXLJBCj5ZsY/LupSeZNRlWJ4YpPqtipDSSNSoB48u/HJwBJYSI
AYkb97PVTrAnaC6WUywqu7Ly7GgO2+bCOMU4hyG2XiXSvzFt5JIUgs/OcYL+nIeMV97DkRSTl0/e
/wC7Ps5XKfhn3to9YYHMmoWtxNam1NrOPhkWRWUqe43I7d8yMcuJx8kKQ5aytRym/fz/AMnYZbKg
1C0Jc3txM4LmopQDwHhlXHbdEIaqk1PXHiZCKoGwEtg2Xxmr/wAPHGPNhkOycaPZ3EUn1qaMorI4
QeO39uXGFuGMlFAPd3CGValat0BOQGJyIztqK2nuC4C0iH2nOx+jLohqyZEfLDG9tFbs3G2jJZpD
9omnSn/NuGXJx4gko/yleeV4dcSLVlIsytI2FfikqP73Y/D/AMBmHkLmQFJR5ltLu31qf67bLbPM
xMQiIMTJTYqavvsf2sxZhzgLasr+eECK4U+mRVZKHoNhU9OmQiQy4U7tpPt8dwwoD89sjIdWNtmM
SKefwsgoD44RO2ZhYUIdGk1K7gtTL6UUjLGCSAAWNCd8yY6nhDiRwboqaTzB5XjudGimNtYahIrT
XyqSZEAAIVhUfs+H7OVSycRbTjpEzedNL8v2VzpPlaEML5DFfarc8i7hgVPED0vg+Jv2MyMWLq05
Mh5MUjtrK5l4wSNG7kkoexpv2zJOMFxjlMV1zo00ToiOJHoPhqPDJnGRFhGYJtLQXO7VZ6kU75VK
y5AoBMNOhMEqXNyfTjXdVPU5KJoONIWUKt2y3ImUHiHBKdiAQaHMecLLnY5UHrcH5jXHmq3s/LOj
6TDb6i8aQWt3UrR1Uci3JwOxzGy4eHcNwkq675P0vyjplydRb19WvImQO32C9CB6VB/M38zZjcN7
ltAtguhWus+Xkm8xyQMlaxws9Kgk1G3XoMQbTSbeXrC4/MHU7jWvNWqm2sreiGUUHFDXkQCHJoF8
MJVi2sW9ta+YbyHy/M13ptuwEcoBq/wipIovj/LkLVG2OpRyjg4CSAkEZMFiUfTcHthVujFgF+L2
xVW9FEBeY/Z+wmAc1QtxfIY2MnwAfYXpvlppVmgaDr3me8W10e2LoSBPckcY0r4sxVfxypXpWl2P
lXyD8Fio1rzbxpNPWsEPLfYqFFVHFf7zEY6Y8VpNdPdalqb6jfubvUJyOfEbChqAo+ZyxIjbO/Kf
5cXmosl5qYaG0/ZTYE/RvlEhu3AB6lYaXa2FsttZwiJEoPfbJItGBS3wjdvHDSLTC001mAaXYYSU
JnFGkY4rkEr8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdireKv8A/9T1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FFuxW3V
PfpitpfqKKimQkAeGLJI5r4VogoPHBa0hpp67dffBxLSgZX5VrXalDkeJlSzc9TXIlILRQbbbYgJ
JXgKB0w0xaMYU7HDSt/s7nFWwCTy/DCrhQ9sVaenHwOC1aqaVPbvgtVhWMVIFCe9cCbU5bdJlJBo
wPNfmP4bdMmBstsZ8x3fmKOJ7iJ/rNzH/dRsSsKIP+KQDE5+z9pcIyILxy5lmluZGlBM7bvsAPlx
Hw5kwILTKVKdI1I9XepHGNdidvEUIy+URTSJksr0LWrTV9PXy95iKlpW46Vfn7cMjAKqORRihbh8
Xx5jmdFsq0j17RdU0vUG025X96KLG4APMNQqUJFSKHLo5Ws41PUdAbRYqXUsP17kvKxDMZQSdw9V
/wCNsJyWkxTsapBq3lW1s7u7trWBbky3cYUJKIwhVQpVfiq4X7TLkOFQaY8NUm09rmKynki0lpWC
Kfh5gE8StCeLU/aGJhsjjNsxttVfVzb2WgO8DmMyTcmIoq1LfECzNsvfKJY7bhNIfM+pz+XZPqtv
bH65KBJJf3Khx8Y5D0425pTf+8+F2wCPCmrRuo6bpHk6xQajG2qeZLkEr6v7zgadXLnZOvGi/ayJ
nbPh2STS/wAyLCTU4tL17RIJbSVhE0tuiRyIWFQQVEZbbxbAJSBQYhBectAh0vWb7RmPqQxmtu7b
sBUgbnuOObHDkvm4k4AMT+u61bA24vpo7ddlIkbYVrsK5knFHm1GZ5KlpNf6lfQ2NozTXE7rGrys
WIZjSu/Kg3yE5CI5JjAnqzS/8k6H5fhiXWHe51abeK2G4AO55EsD49s1085ty44wOivoOg+StfvP
qumSTaR5gtqyQV2R2Q/EEdXLKeXHomVyybhlVNy3+m+ekm0O+4WHnG3Jjsr0gIlysY58ZeHRyvMK
3pu32MywSA0zgC8u1XTL7TNQmsL2Ix3cDmKROvxKaGhPaoyyE75tHBSCY7mhrTLQO5B5tEDlx9q1
w0z2cvKtDsSK4gsbRNlKkN3HJKAyJuwPT6MlE7onyTx9WSaRPTkJRCeEVACeVNvwzK6OvI3Qgt0e
d5XHJjv6Q7fPERboyp0l3FGGoeUlKBV+ytO3v9IyB2LDgsoJpLi6lUE1kNQqjZentgJbYnhVGsYb
fgZz6p/l7BvFj1OY8oA9WwEyTzS/L/mDzQtpZiJpVjmHKYkmkRp8Knr45r8sw7GEWd/mVF5T8veT
l0WGwR9Xj4J6g3ZQUJYsx+InlxyqDORp5JY6nJbGrsWiJ48j7f7eX00kWnY1OzFr6zyV3+FB1Pzw
GDIZKVfLkE+u+YdPskm+qR3NxFH6tTRRI4Wo8SMpIKYyD0nzhf2vli/l8r6vb2+u26W/+jPQI0TO
A/NnChv2j3/azJxYSW2XDV28MdviUChoSASAQKex2zL5CnAkbN0ut5/QlWVRUg/2dcnikQWrLASG
/pTW11BXuUlWL1JBStSQop75meJs4UoUKBUJpbOzkLf3twxJU0+Fa7ZQS3QiSEtuLmacn1W5DegG
wH3ZTM25EMQitBYtUdqmnTAJ9GdWjNPlv7e4S6sXljliPISxEqQemxBGHhtj40Y9Wc+SfMuiT6rJ
ced5bq/itgJbEO5kVW3P2XdRsVXMPPgcrHmtPfMsdz5z1E6R5eZpdFjCO126LEASoJUrHyHwluOY
f07N92xr8wPLreVbO1061mfjdKwl4khC4CjY1qftZYBbElW0LzXovk7y+bdtOivdUuEZS0qqxBkN
AasD0GQlGlBS8/l35nHl6bzNIqQ26r9YkWrcqOC+w40wxOykJZpeq82EM3wFvss/8uSBtFJ7JdWt
soEQ5uer9hkpCmBKWX+pKj0r6srbKe1T2yIky6Mp8rflfe6jANd8z3A07RAKgGpeQ12VB8I3UMft
YKJazNk175nt/qDaT5VthpGhEFZJgAtxN23I5Fdv5ZMuxwA5qJoHSNFuNRcWenxcnY1eapqfHk27
HKzNRj83rnlH8uLDSkW4vUW4vvhJJrxWngOn4ZAlsGzM1HEUAAA6ADYfRkaTarFA8hIAO/7VTkrT
SbWljHGoLbsO+NrSM9u3hgS7bwxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVvFX/1fVPbFWsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsFopo42tJPq+rPC3ow0LnrTenzxtICQXF1cOau+/hgtnSgZOQ+I0wErTSlv6ZFVrNvTv4
YFXJWvTFVagOEK01O2SVp9zirgW6Dp3xVzAfTirlxVz0p03yJVYpofEeGBWiu9abeGKrqAqGVfvw
kqoXNqtwvGnBgRRhkLUl5n548pCNxPBJS6f/AHSKcmFf2V6tmRCdNRilul+RUa1a51CZhIoDDTLZ
fVuD7tGnJ1r/AKn7WWymVEAz/SPIGlaipkurN9O0eNFZ0kHGSXjUtz5AceA/mXKd2zZjmo3fl/Ul
m0ieeRNLil9PTdWJHOKRRXgSVpw5c9/hy2IKCAkeqeYdY0uO40vXLNL29LA217NUgqCfjXf416NV
Wwi2khg0zuzlyqkliWABCmvSgOXRLWQm/lvy3ba9rlpZzXq2sURUSLTlK7zEU4KCD8PE/stlhOzF
UsLuXy9rf1+3j9bToLj0vUdSY32ANCKDn8WUg22BmnmbXdI886FNY6aiprlo5ntEY8WKbhhGWpzb
kyclX7WCULbBJINX1Lyz5paK41K4bSPMFuvpTrxPpuevMgiqn4v58oOIhnxsajTyX5c1D9KTXL6t
exN/oyBSqiTxaobbr3y6GIlrnNjt95ivNZvri8lRpb+5JY8AWAr2FK5fGotBspPd6bq4DyTwypUi
nJGA6e4y05hWyDiRnkvWrfRPMtjf3SFreJgswHURuRyO1fiCjIy3DZEUzvzD5c/Smt/prS7+G6Sd
OrSIWTalCOQIzBniNt4mFmmRaT5YmfWtSuoZr63RvRtI3RvjO4PwluhXDHASWGSY6PNr6/mutTlv
ZG/fSv6qDsGHQ19qZncApqtnen63pXnfTk0XzFMLXXIEC6bq52EtBxEM5b9kfDQ80+zlVUnhYLrO
hano2oNY6jA8N0oqwYGjdfiVujrt9pfhy2BphOCtomm2lyOd01Ig1JKdaZkwALg5chDtQsLNYHmt
yQFbiofYn5VphnjXDksoO2sWPxSfulPRT1b5DIwDdkyJmktrbWjRCMRVP2ju5p29q5eS4wFlL5r1
3HCNQsfhXf78qE27wl9tYl09WZhFAdyTsW+VcfNjy2VTfxQoY7IFR0EnQ++MpheAlvSr1LXUre5m
hW5WM8pIZPsvuDucxpkuTjoPqDyr518raj5bnutMSKKWBDz087ESAA8hWm265gTwlz4TDFPzA17y
UPy+n0qEwXXmHUiZZeJHwO/JqFtxVeXGmMMZCzkHgI8u6yNMGrCAvYA+nNKg5GMrQ/EoqV+11OSk
SGoEFW0fRb7VEf8AR1o97Mu9IlLkCtKsFrQZUMhTLGjta0LW9C+qNeyRo86+pHHA6vSlD8RVm4Hf
9rM3FG2kxISeTULgtIA5PqbSVNSdvHuMuBrZgSeSFSNiwUCrHoB1OTpjxiITe30KZLL9IXitHaq3
EVFKnwNe++ECnGlMyOyGvNVHH0LVPSi/aHfbxyXEzjiS4GgNNq9R45EyboQprIEthdQEEdzSmCLS
ZUyS3vrdtKS3gkFvKv2j0r1zLhVOBPFK7U9VVJbW3nj/AHsi8hcFNwAQPCvvkMsQQ36fIRsU88sf
mZr/AJb0RtHsTHJaSyGSTmG7122YZrcmLd2IyM70PRdKi0YeZdS1G3v7iRTfvYNNEiwLT1GUKxLM
4/k+18OVGNNsTbB38v6p5t1+bVIYDFYIPV5cSFAQbbnbtlZZpZeanq2uarBpE9yyad6oiZQduKni
a126YKY8Sc+etP8AI+j2FlZaZK0+rhq3Exoyqvh8Kjw/my2MGPEoReT/ADNqVranR7Q3kdzT1Joh
zVKj9or9n/ZYzKQAWd6X5X8qeRONzqTLrfmelYbFCrxRP0HMqHpT7X21yMYdWsy6ILWdU1PWbwXO
suJST+5tE+xEKUAUEtuFyzxAEAWybyt+X2qaywe9Q2mnD9kj42HyP/NOQlK+TYIPWtE0HTtIthb2
cIRQKE9z77ZWzpMlDU40A8MVpG2untJu1QMVpNIoUiFFGKVUVxV2KuxV2KuxV2KuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVvFX/1vVPbFWsVdir
sVdirsVdirsVdirsVdirsVdirsVdirsVdiqlNdRQisjBSO2QSlkvmK29N/SB9UD4a9K4rSQ3moz3
QB4qr1+MgDcfdikBDEilW3OBmps6cTUdemRKqRkfjyrRV2wKVSMxyGtd/HCxRSqAMVcRTcd8IVY+
3TJKpveWqvwdqOe2KqgIoCOhxV1SdsVb4sO+KuIJ3JyJVbVQduuBXI1a1xVqp7YaS4uFBLdPp/hg
4WCC1nSIb7g1P9IjX91KOoP04WYil/k/WdJ0X61YX1i41dWZpJ9nJjLVDF3aoBBTZctBYSCW+ffz
U0u4sptN0pnk5xuk8ybJRhxAUk8q9eW2XRAaiXjk8zlOBZjFy5iME0Jp1O+XcITbJdG1K21zT10f
XGKlSI9M1NhvCx+ERuRuybJ1EmUgqUV5X0y10fzI2naxp63EtHeKZ2PAL6ZKcdwGq/8AOuSDWUj1
exvvL+rx64tzENUuriSeO3T7MKo/KMH4eNfi6fZ+HJAMEs1jzFe6pCkMnpx2aN6iwRqq1kP7RoBl
giGSX293cW04uYZjBcxHlHMvVT/HCQtspeGw85WzyRKlr5mhRjLFTilyFBaq8dg32v2Uyq6RbzHU
be+XUzZygpMjhZEf9igpv45kRmKUQepa1Z2HkjSbXTrG3juNduuZlmZQ3phQAG+Lbry/ZzBzSst0
YUxvSPzJ1OLWYdN1aKHUrKZxHKnoxBviFaqyqjbH/KyreO7ZQKWfmZ5etNG8y3VpZ0S3p6iISSRy
JoDWvhmywmw0TFMQjvbuDaGd4x3CswGXGIcYkoixiu9Tv4LVG5zTSKoDEnkSaAb165XOQiNmeIEv
Sb3yz5V8q6bEL0fXNYuaGOGpIEZanLcjwfMOWYlvEFbSLXyR5jnXQ7mwbTdTlqlrexO/FjWgr8ex
/wBhlPim2YigrvULe7upPJ3nJx9chk9PTNcpR4ehWOTgF5ozAj4lk/vMzIXIWxma2YrrflrXPLmp
S2UooJCGhlWjQvERUSBiOVWqp6ZkYZ0XAz4rS24uEgj9N29WQ7gdgczZS2caGMgrdOkmudTj9ehU
bgDoKCmY4lu5BgKQ947veS1NV5nj8icnI7IhFS7bdSaZjtkiQmurER21nAOojUt9IGXk7OMBvaV8
d6VoBlJBLmQIpOvL+ixXzM9zJxhXvvX8MsjjcXNkpXV/q9jNf6VcyxKv7uZK8anYdKn+bKjFljzF
IXuJXPqGRjIfiLHemTjiDeZksg8p+ZrnT7rjStvOaXFrL8UUynZhQ1oSNqjjlWTGGcbZZrn5ipb2
R03ytpcegW7L/psoAaWUnchHYysoqezJlEMILLxi85uryacxRPJJKRVF5mpFaChNczYQAap5VQ6C
6Rq7yhXY0C799/DJeD1cc591WX6jpfEIpluSCanoAfsnc4CKY0ZJfPqN7LG0EszvAzeoY6/DzpQb
fRlfE5UMYCEbl1Y7mpI+eCXJN7tZDiZcTsbRba4QWJCoMmCU2ETZ3ksD8uJKH7a/s5aAWjJw9EbL
bQzwm4taE1o8RqN/EYJQtqhMojT47qKSKS8Y/o+JleSIk/GoNWT6RtlMsLlY8r0e786adrmjw6N5
csZYNXf4aR8Vi4A1PL4/D/JzDyQpy4ztBz+TdE8u6LLc39yP0zc/Yjq5KyKDzptx+02VRgSWZIAe
d6gDd3hcchyFHLUJJ9uuZscWziTmzHyVe+aNJtng0+6e1glHxoSDt7VDUyqQCBkKd2GnXl1eiC25
Xd7IaGdt6E+JOVGXRsG71Xyn+WdralbvVwJrsp9ip4ipBr2ysxb4hn8caJGFiXgq9BkbpmrRRySM
Ao+eKaTW30+NAGkFSemKo5QFFFxVvFDsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVbxV//X9U9sVaxV2KuxV2KuxV2KuxV2KuxV
2KuxV2KuxV2BKx5FRSXYJTuTja0k195jUMYrVC7d3/pja0klzcyyN6krAsx2DdfuOQZUhTyI6Ubv
irQdAOOwbxxVYpYkk7gfRgTbRKsQSCD4YFtctq7mo+ye2ICkolIgqcQBXJUhumwB7Y0re1CCaeGN
IU5FPH92w5e4rhVQ/RVs7+u4YyD32xVEheIp2HTFIaJOKuoD3xVplHYnIlXMpXft3wK0qg/Tiq7i
FG+G0rW5UPGlMbY0pmjciSant2wMgaSTzFoFnq9mySuonI/dTlK0I24tvkRIqTbyi78p662qnTI7
aQ3PYcWChR+0TT4VP837OZMZlhwhNdP8m6fa3iW8vLXb8rvYab8aKf8Ai2eP1lXj35J9r4cmcpTw
hlF5+XF7cWclxqMlpp9nFFSPSVClzGqn7UnJeTgf8VZTGRURCR3n1W90y20nX+MNpfEpomqPIvqR
8GJ9OUN+wzo/H4k+0uXxkWuYAYDrmhalpGozWd1G6TxkosnEqJI1NA8bftow3+HLIyJ2aqFJXMYo
KGQ/a2Cqfi65eIhqMi20dvKlATHK32HY1pX7ssAazMoe2vbq2u0WRmjuoyGglBIJKmo44JxFJhM2
yx0sfO8ASThZ+bLcAxOaBbxU+HhQ8SJB8H7T/Yb4cpunLjNfqnmfy9rMixeZFm0rXbUelO5QgsO5
YMFK78q1yg4eJMppFa6z5F0C9+uWkb6ndRVMbPRV5MNio4t0r45ZDS3zavEI5MT1XUtW13UprueN
p7m4PxFat9on4e+XioIMiUPLoGrxResbWYRd34ME/wCCpTD4gLAgrvL+onSdcsdRaMP9VmRyK1Hw
sD19qYTjBCccyHo/mfR9O8x30Wt6TqULOI1T6q0iF1AYk78gf2q/ZzXzjIHZy4zHVbpFhomhSnU9
RvoJLiE+pFZRMnIuN6mjMf8AhcshgMubVkygcmEa3eNqep3GqagaNOQY4q1NK+GZ+KEYxouHLJKR
tknlzz1YXVmfLHmdS+hOtLS7rSS1bxFQfh3b4fhyEzEcm+AvmxnzX5N1Dy7dIshF1YXHx2epRj9z
OlaVRgWX7nbEZr5qcYQuhxkXE7kURIzUnpWoywAcw48hulTMT8atWpJriZFQKKpbIS8f+U4wxDLI
aCP11+OpOvZF4j6NsNNA3QCkEqQwqd6e+ESbhFMtI/SbEpbpyDHeoJXJ3JxskY9Va71C4EPoXkNY
GNWZNh+o+GSYRiByQc1gDxmtSWhc8TQcigO9DT5ZCZAciPEyv8t9E8v3OpWz6vHPM8kqxwWESmlD
T43NG+AV+L4f2ftZgZJkly48mTefx5T1G0tLHTxDLrxumgaGwjAVII/UUckQufU+GPk2MLjzYmLy
7U9O1HSdSMF5E8M8ThkWZWiL0PUBvlmTGcSwlitfJrCyms0VGUg9e4FNtst8SQDhHERJDavqcmpX
SXDKkRSNIQqDiCsYoKjx8cqMyXLgCgSdwQaU6UyCS0SxG5J+eAyJDZ0a3yLExDhywrTYrXqMNWiQ
tFwxRGJGZwGMgVv9WhP8MugaasnJk06ofRjsoo5bY/bYkHbMgG3AAIKV3dtYRXTgTcG22X4qbDwy
VBuJkVjpBIgVrslB2K1p+OVykyiCm1jf2ehejeaZKLjUK9abLXboCcx5YxLm5EMpCJ1zzV5j80SQ
pfOHW3PwRxghatSu1T4YiAgNmRmZI7T9Ajtm+sXhCtT4I+h32yjLqJKMds98reStZ1zgQjWdkKVm
ZSOQ9q8cwyeLm5MIU9g8v+VdL0O3MdpEOXeU0LE/MZFtEAnCk033wMwibSylmO4IGKCE5gtYoQOI
371xTatTFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq3ir//Q9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuqMVdirRYDqaYq
lt5rVvbgpGfUf2woY7f6tLKSZnIQVIRetMqkWwB5l5m/MPUyzwaRGbdF2aeRa7+32sgZNnCxy1uf
NEtzFc/W5Z7h2rw+HiR8qDG2t6xbyz+kOYPM/aPvjariKH4TUnG1VwrzABhxA8O+FVZYUXcD6MVV
ByHT7sIVtV3qTkkO77Yq3QgE7D3OKVvr2Ue0tzEklK8SwrTFabWVC2x2xWnP19sVUzirhUdcVbBq
ciVdyIqGG2BW+RHQYq0HqST18MVaNakjv2xVYOFeNfjPbFWhGnxIfiJIJ8OnbEhUn1jR7fVhzDMt
7DxZHBKhgh5GNivZ/s4BJWLaJ5l1by3q17PLbQx2ttEYTC43q7K/LkPjYb/zZdEqWEa/5yu764u5
Y5GjW5dmCgsVQMSeKVJPHf8Aa+LMiGJxzOmPO0rxJzkJjj+wJGYhTWtV79/+Cy/wmqU7ZroHmDS/
MenDy5rzlHjUR6NqjijI5HEK5XqmyfaVvs5XKNJiwvWtBu9E1F7S7jInQ1V2+JWU9CtK5ITZmCXu
ORIXYE1JP8MujJrMFOdI7hBFKSp6pMOqkb5bHctUhQQBmvreRQ8jRPC/KK5SnLvQ/jjPGiM2aK2m
fmJA1pcMtn5vtUJt5/spfKBXiaVQSmjDpH9vKa4W0Seb3mk39tqbadcRmG5SQRcH2K1+W2+DJn22
ZxFvX9X0/SfJWjWen2MKT61eIQ7vU+maAc9/h2LVzDnO26MWI6Z+Z/mDTrhLK49PUNNZxHNatDGG
+NtyCFVtq/zZUJEMjELPza0HTdP1qKTTlMcN+hnWLsnKjEb7/tZm6eZlbRMAMNt4rsDmjGJF2LBi
K/fmbDE40pq8c/75I4R6sz0X1GLHc+xP8MjlkIhYx4npf+F/KvlLQRqfmEvc6hclls7ZTWsgUGlN
qAVrmslnsuZjwgBK9G8w+U9SuFtdc0lI7SU0+sQlg8denIB/DwDYTK0mNMjtNA1Sw1PVPKl7bvrX
lZAJ5ZFp6lqHLKrxH4HoPT5cPi+z9nAEUwzzL5On8u289zbSfWtKuzSzulNQw7q3QqyMrI3IfaXN
hil6Q42WO7BQFC7D4QOny65YBaxFBPNB0Yyxi9mNEiq6rXqAaZYIOBly7qGswq5N8Gqs7E08K70/
HJGLZjKWxI5bjGPiO2QEHIlPZP7O4+pWSIz8JT3Ar+oHMmBAdXmBJ2QGoXkMsAiiJ4qfiJ775Vk2
crFFEeWtWsdNupJbuNpVaMrHFsV5Eg8jv7ZhTkS50SyHV/O6Jp62ek2K2wmA9S7FTJWvRd2pXMKZ
o23xiCE8/LK2g8tSXHmrXBLHEYWj2VJCwkdW5AMGp9nr9rDHLxMSCkf5oeeNI8zy6dDp9o8UenKy
G5nCiSQHjT7BIIHHvmVDGwM6YHyNAPCo+ita5dxbU1cW60jx3yBZktHxAoPDENR2Vksbt09RYmKU
rX2yRinxgdlIqRsRTI0kG3KCDQ9Miype8UKhSjcyeo32yUUOERZNvsg1+nJWgi1ZbiZUAViKdOJ2
w8bX4Tl7s9Czd98PHaaAXojM4C9cNrsnemaFPOeYBWM9XNMrnlARTMdI0eJKW9pAZbpgAO9T8zt1
zFnmtvxw2ep+T/yrUMt7rQMkgNVhJ6eHTMaUrb4welQ21vAiRwoECAKANloMYtoirIhY8Fr8sSqZ
2emDiGcYFTJUVVoopiq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FW8Vf/9H1T2xVrFXYq7FXYq7FXYq7FXYq7FXY
q18Xc0GKoS81S0tk+JwzHYKD3xVjmoa1dXAKKfSTslf9rFUra4+BabDua75AyZiKVG416PVVEUKX
WnSAmRGPFhQigDUanU5EsgpXNhcax6kM2lwaXbdFkjp6hPjzCITkaTaN0jy7YaZCqQfvHp+8nlHx
fRWv68NMEz48duVR2rjSrRHEXBKb/wA2NKvC0O3TFV+KuGEK3kkNAUNcVS7zBqBsrNJShkiMiLLG
DTkGcCnQ+OLIMUtdATWPNtxrF9YfU7a2RY7OzHxKQQvx/ZQb8f5f2sU0zFIym/KuK0iI5K7HFBXk
AEU64oU348t/tYq3vWpyJVp998Crh0xV1UIp0IxVax2oO3fFXB0K1K0Yd8VUwlDVzUt0wWqwoyv6
a1DMDQKaE40qTeaPKltr9v8AspcxrVJOILmm1G6HHipXiWu6PeaVfPayxkzgkohFBscz8eVxssaS
mSCR2DzA7mm24H+TTMg5dmqMd2UaR+XeuX2nT6ncRfUNNt4zL60oIDqBX4a8R0zEnmcgQTZpra+t
o9B8xXETesKaJrfMPKrjcQSyH4grFWX+8/3Z9nIxkksF13SNR0i/awvkaGYH4diEZezKTSqsNwcy
YFrKUXkrLCSnbanvl9tUxYd+6uIUgn2kkHwtk4yLQY0k8gvdNuIT8UckcnK1vEJFGUgggj9pTQ/a
xkLTEs8t7zTfzBsI7a7eKz84Wy1g1BiAL1I2oEkJ4tzC8f2pP7rMeWOnIgUfeeZtE1WJdO82RSab
rViTAbkipY/Z/a9M1qvw75jTx9zbxpTBc+RNLuxdWqvqlyv2C6gAN4n+86YceAnm1TzUkmvapcar
qbXt3W5u5Cfq8Ckv6S1+yPD9nt+zmdDhxj3tXEZ8kqu9I1+aP1HtJBEN6cW7fRj+bijwSl8LSWtz
HNQ+tC4fj06dsjOXGGyMTF6n5mi0jzvaW19Y38cV7ApDQysKhu9BUfsnMKWnNtwyJZonlfRtNuo5
dbv4EhDBiCy1NB7nBLGQzu2ZaL5p8yW99qeu3tyugaLfwrG0lwKSyxrzPKCNjFWof9lsMMZLXI0w
nzr5ytbvy4miaPB9W0aSZpSshrJcMWdmk6LTm7M37eZ+PGQHGlks0wS1spJKNJvADRnboFHbfMmM
aap5a2Rcms+in1eAL6CfClO/fCZ00DFxbrXNzeoDKPRiG4Qd/l0w8SQN6UhcQxUS3SgrSRz3wcYb
uAsgs4rU2cSJQPL1lam1clwkuLPZItajtluIzB8VdmVfHfwyORsw2OaES1lMqqUIVzRqjplYxW3y
zAIuE/UdYigElbdZELyHcKOW5+jMPUYm3DlJe3Qappmt/lXfy3sXomylESXkYHpypVqcug/4Zsxc
WOnNMovCL5LdLl1t3Dwj7DAUFPxzPiSA4mSQQpw2CURAdgkmwvicJNGzfYrvhg1ZQSNmXi8NwtvB
bTpGhpvt1oOu+ZBjs6+EZCdlJ/OEGmwayY7GQSoYx6zClPUqfAn/ACcqIc/GUl379e+VFuLYxiWF
ruTD4R3ySiTagkA/hgpMpUjbe3luCoVCQNthkhs4xJkWV6T5ZjiCT3fxBiKLTKZ5G2MWceWvKeq6
0Ft7W3MVsG3uip2A+gf8SzFlIlyI43sflnyRpehwqFRZrogcpmUVr+PfIAN8Y0GRqp4+JXqcFMwr
29nJM3Sg8cDJN7ayihAJAJ8aYsSiPl0xVvFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq3ir/9L1T2xVrFXYq7FX
Yq7FXYq7FWhy5EdvHArgwNcQqjPdwwJymcL7YVSC/wBfmkqkA4ruOXiMrJ3ZAJLLIatIxqx8ceIp
pCXDSyKoXcHtjxFaUIWPqcD1HXDSbTFGquwIXAQtqinbArYFOmSQ2oGKG6VFMCu6dcaSt5Guw2xp
C4E+GNKuGFXUOKqN5bxXNrJBIgdJAAyn59fo64pDGoRqGj331VuU1i/9zId/fjtvtim095Kx+AnF
bVo42HxHAVVi4agwWhY1cbV1D4/RgVottSmKt/FTFXcEZQSaE4q0RRetB2IxVtUc/Ds3z2xVSb1W
WifDIp7+2NJbmIZeUhKk/aIG5pvTCqCv9QtdPtmlvH9G2pvMSAwFdgB8/wDJwUryvzp5s0XXGhhj
VklhmMZumFKq7ALy/wAn4T2y7lyYkA82ReXfJSabwn0mxHmHVSOTSLIi2kAYbKebRszftfCzfayP
HJjwgKPmvWtZhLQ+bLkW62qs40SyKFpVH7LsPUVUptTmj/FiI7tZkXmmpeb7W816G+u7GP8ARUSs
o0eDnXdWCMzFiaiRlb4X/Zy8RRab6Jrtj5ltx5e8yf6C/Njo2oMDWJCT6cTn4vhCFd2X9j7WWCwh
jeu+XtQ0a6ksb6ExTqSQKhgQdgyMpIZSR45OEzaCEieGRHV5qjj9kLmQJNJivE9vdIbKYAAbRSHq
MsDAhLHs7yyuAVBIQ8opl617dMJAPNMJUXothLpnnbTodP8AMEq2nmVFEenXo+ET1FAkmzIPiC7/
AAfazCMTbPiYLrltfaNfSabNA1vMh4mu/KvcHcEFcyDIAebIQBem6TZeXPJflCHW72FbvUrmOCRL
Zw7BvWQv1Wn2P9bNXlyTJ3LdDEIsKh/NLzNbXrSoIzbq3J7UoCCp7eP44BFmj/zM0/TJ7DSPMVlG
LY6tEJLu2FQVdlViV5fs1LZl4b72vIDTFfLXlrXtbuVh0yIsd/VmJEaRgCpLO5VOnvmRlmIuPC73
eweXPy30rR7VNQu7qKe6C/Fd3ZYWsbV34J8Ekh/yk5pmCZyJ5uTYAYd+YXl7zZa3cN3r8gvfW/3k
khoYGWuwXhsNz+1mbhIHNxp8R5MRu7aSFka+QhvtRQKCAB9P9cvnqIgbNEcMuLdlTeXvL+qeXxql
jdsr+kBLakEESldv2fs1+1vmF+ZlfNyzgjW4SW+8k3Gl3NpbrIl9eXcZmWGE8gu5A5U9h45fHMOr
TLGeiVrdX2nazCdSteSwNR7Vgd6EVA4n28conqDdBuhgFWRuzLXdH8mMttPE0sENyoknRQQUJJWg
5KfAYI5Jd7OUAxS9sLw2txPp8TSaPbStElx3PEkAuNmXkFruq5nY9TXNwsmAEpbpjxfXFknFRSoJ
+yDv4ZOMr5sJihsnM9yHvBJyT0AoqF61AG++XiQDhk96UWumXV/O7KD6bsAZ3+FR9JpmNOid3Kxy
IGyceYby0stFt/L1jeNclXE1zSoQNRj1ov8APlcoAcm4SkxgfHJ1NCepwhNWtlXhJQGoysgWzDWJ
TTVBv79cINKuVmHQkZMTPViYAtkk1qa165GUkiIC3vle6bXU7YZRPRBpUjQlt9yMnHzapJvpehT3
jgAERgir4JzARuWb6ZoENtwjt19edxso3OY08pbccA9K8nfldcXCx3esVji5KywAj4h1oaVOVE25
EYh6rYafaWUCwW0YRE+yBgbohEBSTsKsTvkSUlMLXTWajuNvDBappFCkaUApgVdirsVdirsVdirs
VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV
dirsVdirsVdirsVbxV//0/VPbFWsVdirsVdirsVdirsVWO6oCzHio6k9MKUlvvMK/FHaAs3+e+RK
0kUs88zkyuXr2JNBkCUqKq1Dx5b9BkUpPr3mbQ9DhMl/cLzH2YVILV9wSMVebah+eshuv9EtVjtU
JHMkBiPkB/HFXoPlPzNp+u2AvIFHImjDbl+GW0rIjUgb1XtgKtgUyNK3hQuHTFW8Va+eKtcTXalM
VXCuKtjFXVOKu4g96eOKVkiqylJEVlH2K70xVcqoOiAH2xVupoa5EqtUL1GBWmoTiq0jfFWiwUVI
6YqtjmMhNCKDxxVfzQniw+kYq6hB+E1B6A4q03qB+LA8/DFXKC6VFGmU0YeA98ki2Lea/wAwNO0h
kt4/9IvZPhWJCKKWPEFvp9sVtgPmGLV7y6tZ/MUroJ2HoaQrMZJUoSGCHjtQVxW1l9o/la0klvL0
MLaaQS6dpCnlM8dSeEzkhl2KL/uz9rCgFK9L81a/Y6fcW1nPLplojFre0tnZHIJrV3XgxPv/AC5O
EUSLHL7Ubu/uWuLl5WmlBM0ksrySufAu3xCuZMYNJKceRdJ0lkvLiYJPqyN/o8Fw3CMLQbs3x1p8
R+xhMaVdrlpY6lcrbWsiXutykCUwqEgjCjjwQr1K7Ly4L9nIcSpzZajBrSf4S8zq1trMA46ZqM28
qA/ZjkZqPxZgy/a/bwkULSwvzBpF/ouoTafqMZWaL9og/Gh3V1r+yQRhjJiQw67EsbDbjvsa7imZ
UC1kNjVr4IqepyHSnXbLJbtcooY31xJKspdkkjP7viSCp8QR0x2YgPR9H1jTvPemxaFrsgt/McSn
9G6swH7xVJIikaob7PKjfH+zmLki5OOSaJrWljTB5T85xvaXWmcYIb1VDDgg4KeTFDxAUUb9rKTj
4m8ytI49O8i2d4kn11tQL7RxKoYyewBc5E4ii2TN5Qm8x6nYDWVa109VCabo0QJuZIwAFrH8HFeI
XcFvtZCpBBlbKNV8taffq3lLSNQj0q9kXk1hYgcSU+Kk0ymN+RCfY9Nv+GyQJPNrI3Qk9qvmbSU8
lasz2HmLS/3WnPKSIZ1Sq0AqK1BVq8cMVkkPl7U9aL3flPWE9aw0xl5fWmLSQlTuYuYY8fgH7SY5
L6JxkWp+ZrnyprmmmMcIJrKUD62FVeSKCtKg++RjjJFltMgkuj/XpZ7jTNFs0iea1f6p6yis6shF
UWjVfpx/1smIUxJVPKU8GgW93fX7s2sJyiEUg+OM8gaEEniKYDFIICI8y6ja65PoBs7a2Os33GFF
UhnEjemC8o47DkevxYRhI3XxA3q/5deaItN/Sltcx6nLp81JrALU8iorxX4gyBXrkwWuRZDoHmby
dF5dX69DFbSS0/TekrDG31h1qKIp48Du/I8f2sl4Jk0nLTxW/tJJL+d7O1kS2Z6wxU6D3zLiGueU
FNbby9BZwpea1KYYXHKKBa82HfYlcscbYlB615nkvIFtbSMWlgh+GGOikmvViAMrIb4AJHyC8tqc
up7k/PBzZz2bFWClQTx6kdseSxNtblix7iu/XrTK+rJ3IYVdXFWxiTSQ3gSXAVyYDSSibe2kkYUW
tTQDvkrpjbK9F8sH++ukolK0pvmPPIzEbZx5f8u3OpP9T06EekxAMpFBQ+4BzGMrbo43sHlL8vNK
0WOOaZFmvabuwrSvYVyJbeBlq0Wv6uw+WC2QCrDbySsOIoD1ONsgm1tp0UVCd274ClGdOmBXVxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxVvFX/1PVPbFWsVdirsVdirsVaJoK9KeOKpXfa7bW1VjPqynw6
DFWP3uo3NyxMz0Q9FHT+OQMt2YQZBfsAo3+dMFpVEiZ2AVC5pUqDxVR4knDSvKPPf5rT2F3dabYo
i+kXikmrXcbVUg0yJQ8P1bX7i7meWVvUkZql2PanzwKlYNzO+26eHbFWe/lr5kvPLupoWatlKSJK
9BUU7Zer6U0u/tr6zjuLd+cTqGBHuK4CqLyKuGBC4Yq3irsVbGKuxV2KuxVwp3xS0UU98VbxVo9a
ZEq0dsCrcVaLAbYq1x70qPDFWhGiVYLue2KuVaipFD4Yq2V5DjSv8PfFVDU7+x061M9/IsSoKhSR
yb5Yq8s82fmNq2pWko0AR21qpImc19RlU8dqsP8AiOWMWL6OgV/UknURMlZr+bYoACdum/0Yobbz
PqTapJJp0v1hUURxapcKeSDiK+mP3e37P2WxVJJbj9+0hmL3Lf300pGw/wAinH/jbJ8KAg2v4VlC
20hYtsXYEV++mTiESWzVDV5fEPtEZkxLT1UjLwVlBIbu56nfptkj6mTKY9b0WbS9Pt7HSIZNaHwS
81kbkRsrKFZfiP7W+VHHSq82k3/mW/u7rVA9hqgQtaIUZIWEYL7u1VX9qnKRcgJXsqppeqaf5qsh
5X8yy+leWtRpurdODqePpuSGUpRj/L9j7WTEUEvP/M+ialo+pTWV5Gp9OtHQhlPUVBBYUy6LUSkC
WTSyLHEjNKd1C5PiQCpvC6MQylZAeLA+OAboK5VdCsqtShqGH2lYdCMmVD0TTPMGkeb9Ih0XzNcL
ZaraLTTNXUH4gQARLs/8sdPsftZjnGejaC5dT0Xy7yh8sxpqGpSjjd6rODwjP/FY/dfsj/L+1koY
yxnOgk9lr+r2OtLrEFwbnV1aqzyboN68RTjRdv5svOE044zbvZ9K842Ov6HO2l3thoOtO5GrSOG5
MtFq0ZZ6VK1X9vMTJiNuTGVi2G/mb5t0nU7LTdN0ydpLnSGDPrD/AAtI4UggVC1FW8P2cniwOPlz
083u/MMwvJZYG9R5t7qdq1eldh0zJlABjimSU6i0D9N+TJ9bsWdNQt7hY57NKcTGVb4qEcuyftZi
GXqpvlsyPyb5zHl21m0rzHcTQrcQqLC8CH1YQFYDjRWHdf2cJxErHIkX5i+c9P1nVbeTQ4NreMRz
XT/bnO9WI+Hff+X9nLMenKzkxWD1reeC8knaKaJ1eEigfkDXlQg5lmG1OMMlF6EPz01KOwV1sIJN
XjVohfuHI9NgVJ4q6nlRm3zHOnpvGS3mU99c3E880j0kuJGlcjoS5LE/5PXvk45BFBw8SHM8qkcn
Yg+BGDjYnEHPLJIQGYsU2QOQdj4Upg40jGFNmIO9CfAY8TbQAZL5ftLBLH61MvryNX4PDc/0y3FG
3W5s26IGgwXGlTau8PoR2pUspIHMHelDv2w5It2CdsUcVdyBx3qB/k+GUEOXa2mRVsLiq4rtiVJp
csROSiGHEmWnaNPdsOCmnc4nZDNtG0O2suMrIZpBsIxuanYdMx8k0xi9I8p/lvf6sy3Wo8razb4l
i2DUrt1rmNIuVCL1vStIs9Nt/RtIxGvj3yINN1IpEBqFry98TK1pH2ums9Gk2GBaTWGGOJaKMUKm
KXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FW8Vf/1fVPbFWsVdhV2BWqA7fjgVB3mp21qDzbk9Nl
GRSGPX2t3NwxoTHH2AND+GNsqS8tU17nviqw77HcZDqq4Cu3Su2WdEsc88TatHpqNZzvBHLVJwho
9BXuN9+I75jZCVfLmvXF5Lqc0TBiVdlox3698tjLYJKDh02rVY7dSp7HEtaPSGKMCgA+WBsi2JZS
Agaqjw2yzjRT1b8m/Od0moJoVyzOjqDESa0AIHf/AFsNoIe3VNeJ6DvixpvAlcvTFW8Vdira9cVc
euKuxVulcVQ88sqsipF6ik/Ga0oPoxSrAcQGC0U+JJ/XirYFd8VWO24GRKu4nx64Fb4HFWioAr3x
StrtTFXHmxHYDFW3YqVan7tR8b9h88mAwLFPM/5i6XpN1DYafS71Gdgqjbgu3Un/AJtxpDyufX9V
1HUY7nVnMzs5CW/IlARv9k0FN/DGlUNTvtGje9hXkdRAVoYbYAx/EASGqU8d/hyZLJIxZzh6Xswb
lRvqis3GpPRl2XIWq+4u5ktpGWIcVIVYl2p92TBVLIIZL4SGU8WU9umTYrZ5rW1BRY+clKAnt32y
BV6DpOhaXeeUIdWURma2hP1iJhu5Cj8fhwcZG6AAw/VdKJ0+XULdTEYWH1iMkmikgbVr45kYs9sc
gpKbW7mhdLm2lMc0ZDxSg0IPXtmXzcfiTjWfM+u6rqHqPPJCkihXhRjRgCT8Kii98qkAGzh2TzTf
JmoxaHJrV9xtbT/dLTEh2ap6ChHY98nEhx5xKXad5R8061o+pamQbiGGJnEspJ4IiliF2OSllHKm
MIG0Z+WWneWr68sUs5jb+aIGkKLcxrJbS0ZgVIYuPsn/AH1mJlB5hyqoJj+ZX5f6ZfJf675deMy2
PNtbs0rSOYVYsgpxCVV9vgwY5m2XACHj5CfZUUkO3HNhE2HFnLhRkOlRwxi5vJBGhoQg6nvTtkox
pqlm4gjG4mLm/wDotoekY2Z/f/M5KrcayTzQqNdXkhtrCJgkdCGTqfmMgdQI7Fy4YCuMKaWSZ+T3
KihQbb+4wxmCGM4SuktuL6ac/GeKE1EfYfRjTaIgc0Xb6YUj9a4kEVuo+z1Y5IDvap5AeTIPKPn8
eW7qb6vai5s5YjG0DhSC5YMGINR2yEoBMNuaX63q2qeatRa8ueKLGOKqqhURBvSigfqyMY0zllHc
o2kdqlYrNPWuDt6h6KfxzJi4c8hQl7pd8GZ5X9R13aldqdcgSyhkCWl6k02yBLmRkFhJFad9jlRU
kt7YCla1K175WrXfLAqJtb+6tjSN+K+HbJwLCcB3ImfV9SuLX6rLOTbE1KqaA/MCmW21iNIPitdg
fY5VJtjzW03yFthbA+I+AyVNZKIhjZyAo3O334nZjdsk0Xy16tJZxSMGhJrlUsjKMWc6doC3rx2W
jw/vCAHkpsD0Pj3zGnI97fGD13yn+WlhparLqAE1yKHepAp88qstsYhm6qiKF2VAKKAO2BmviieR
wEFRiqa22nIoDP1xVG0FAB0xVvFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq3ir/AP/W9U9s
Va3xVrkPpxSFG5vbe2TlM4X2rvgJVj2oeYZpax2w4L0rWv8ATIkppJ2Lk8mNXPU4EhbTr3J61wq4
Ghpiq7Iq7Y7HJK1NBFNA0UlSjDfffKpRtXiX5neTBaSC8iU1+Is4Wpboa7ZXZDJ5o8ZqQiFh3IG9
cmJLwoeRCq/GCo8TkrSi9D0LWNcuY7bSrV5Cx4tKFPAd/tdMhul75+Xf5XWPlmIXV2TNqkgUudgE
PWnf9eWxQWfKDxoxrljEuyLFcvTFXYq32rirQbFV3virVd8VdQ164quYKy0I+eKVqKFHFdl8MVbp
9GKrGIPbfxyJVwU9ScCrga98VWsCT127U3yQCCV0aBgQQQR440toPWdf0fRbf1dQuUgWnwozAM1B
4dcaW3j3m781dT1r17XS2Frp+yqpqHkSoq25H/Ef2cmGLC/rGmiSBp56QxvVmA3LeNPvwqhGnnmu
m9NvQtlBCykGrAimw2piqYaZHED6cTCJCtXfqWPfpkCyVbjUbWz0yW3aHnNIQ8UtDUcNyPpyCsfs
dTdpbhbiMqhHNSQR4Cm+TCrVmnuWaK3XipO5XLWu0fbadbswWYGSQbjv9HTGlt6F5DbR7OQC+g9W
1qOUH2d/DcHHgvZIKZ/mt508oz+XZdK0O1Q6je8FeRDsirIGIO38q+OShi4UTPE8n8veUtU1a442
sLSJEQHlIpGtNviY/D+OZAk0GFM1g1HyZ5TTlEV1bXh8KkikKP0G9DX/AIPK8kZEMhLot87aJPca
Ymr+Z9aSLVbmMXFhpyDnF6ZHwhSGb4uJXvkITI2LIRC78u/N2q3lxdaJq96Yrc6dNBZwSHgpcwyK
gYMf5uOTlvuz4Ax288rzeWNCi8wveC218XbrFZqwakRL0f4TWhAX/gsgJ9CgxtkFp54k8zeX57a8
vxa3AQ/XYoTxMo4mobkWrX4siOeykGnn+s29tpMIltqSvIdpT2qfAZsMQLg5Bvuo6XErwyXdynO4
NCit03qagZlwHRxssaGy2/iEsHItzc7KD9oGuwA645aiGGEHieu/lro2rWvkGR9BsGi81K3qM91G
yq6HkdmPp/5P7WaWdyNu7gRSXfnHo1lqGl6dqkqRWnmyRVS6tIWV14czRzQnfd/2v2cuhkrZgQKe
X+lYaXC7ufV1FSKoVJA79BmdjmHBnxWl13Pd6jftNx5M9AqJuBv9OGWQBRitNx5UuLGzTUtVhlgg
k3tyyEK/UbMRTscrGQWphIJXe6nNNH6MVIraPZY12P8As/uy0yCxhfNdo2px2pdZhQN0K7U/XjCT
VmwdyOt9X0u3jujUyyTBgO1Ca+3vgkWuGAhjhNfi9zlZcuEaWkVyslmtrilvi3D1KH0wQpalQCd/
4Y0ruJo1CAVNBU9ffFVw6UIBOSCkLw23Qe2SEmPCvA5AFj9nDVsbpwjJO2RMaTx2jbDS7m6kVY0J
5dwCcrM6Tw2zbSfLsViqPcLzc0otN6/LKcmWw2QxbvQPLPkLU9b4NNGbawRqvVdyBvtXKOJuEHr+
haBp+jwLHZxcRxALHqfupkbbRFM+NRQH+uBJCKtbOWRgSKKPEYoTaC2jhHwjFVb574q6nhirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVdirsVdirsVdireKv8A/9f1T2xVTkkijUs7UAxVI7/zHGOUdqKvuC5A
+HwwFkAkM9xJKS8sheQ9+2RLKlAs1KgUyKtqKDrWuEKuwoW/tYqvwK7FV/7OEBUv1bSrfUrVoZqG
qlVB9xTK5xZB5P5g8gX+ns4s9PNy8h+DgfHxqRmGZFtUfL/5Jarfzpea+6w27UItEJ5UO9NgP+JZ
fjLXJ67ovl3SdFtFtrCBII+4Aq5/2Rqf+GzJ4GNpjShpQ0HSvXGkErhhY21gSuXpirj0xVvtirlG
2Kr6bYqtA3xVx64q2MUtL1xVzGmKtbffkSq0g4FcqnFV32AX5CMU3kboAMmGJYL5r/NzTNNkbT9K
lWW94nlcOoKKQCe9fCn2cKHjerecYdX0+9fUvVutXmkYqxNI4hVvsgMo7/yYqkcGqyXEAhjtzJeB
34TCgURlAPEDry/ZyYVXt7NIIxJOwmm7D9kDvtthVS1G7UR1jcO3tsFxVMfK+rw2rKbqMTJQ1p8/
oyJDJH+YdcsJE9a1tOChDu1NvxOQpWGHU3vJgoIPPbiAB+oZMBWYaHoLqiM9FJpU4Q02j5LnTNJk
ZVIlmY8hXfelO+TAW0nvdavby5EduzIGNCkdAxJ8Mkqd2flnT9NgW/8AMlwsSfaitFZjK/YVIp3/
AMvCCSwukJqPnS7u6afo6/o7TVb+6iAEjjxdjVvi6/by+Ia5ZGLSiW4upXiiYhSfelBX55YZCkR5
s08v+eWuY7LStZsoL/0DwsZ7n4WjArseH2gP8rllMsPFu28SL89ajo2sXNna6cqG8tWrd6jCoiRl
qNl48T2b9hcoIMUiaG1qbS9Q05tMmDXV7Gi+jMCfhAANCSVrtkCLZ2wRNShs3SPT4QZNi8r9Gcdj
1zIw4WGTPQaLgssl2fWkkaiWo6cj08MzJS4Q4fHxlnNj+Wtx6Ftd6/qkGlC8AFnbMW5HmAQPhQ9K
r1OYf5s23R0982Iea9B1zynrwhvVrcRcZbaQUaN1rsaEUPT+XMmOXxAiWARZPY+ZvPfmWfTtPt9Q
aO8vmEa+kqQqibD/AHWq+I7ZRkjwrCTN7680zQNRfy/pekPrmvtQSXtyS8aN4fE52FK/Y/azEMt3
IEUt/Mzyzpeo6TZcYIoPOjAetp1qDxdadK7L/JlscpCTAFry15I0LyaYZfMMA1bWHHOLTbYk8W7c
zWIfa/ymyM8xY+Hw7p8jeYfMTT2nmXS4U8szj/RbaNVWS3K0ClWUK2/xFv3n7WVeMbbRESDx3z7+
X2o+WLurUuNOmJMFyld1B2D7DffMvFltqyYaYewYdBQe+ZRNOPx1zWmlOo9xT+zJXsmwp/qyBRbs
rKreBxildWX0TDWkTMGb5gED9eWUrdFL1pXwyB5q3QZIpDYSvTACkq0UTNsBUnLboNJCfaR5ZuLk
iWT4YxQnKZZExgzbQ9ImE8Vrp0IeVtuRFf11zEnJyYh6z5R/LOKEi91mks+3GGpoK717dMqjzbg9
BigSNeEShEUbBdhkyEqqI7kAZApTO002nxP9GAKUxVVUUUUphQ3irsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVdirsVdireKv/9D0/fzmC2eQISQD0wJYTLqM145EkhqCaKciWQU2Yk7gCncYEtYU
L8VWN1xVvtira4qvGKru2KuxV2KuGKt4q7FDsVdiq/FXYq7FXYq2MVdirsVdirsVdiqymKtqo5VN
APE5CQVfSpPGrAdCN8RFUr1/zJpGgwereTJJN0jto2HM18QKn8MmArwrz/8AmvrGqXDWdu31SxUl
PQDGrVNN/s+HhhKsAurq5EqQSKGkqHCJuxFfbAqZR6Jc3Ekl1dL9VtJaMIOhbvvWn6sCr5pba2h9
G3FAooMmOSpPNevUgmpJ2GFioWUctzOYwCX7HFiyi00+3tIQ9wauN6HIRFFnaX6pePeqbe3Xkr1B
C7/qyUpIJRGheVxBH9ZlWjCvUUyUI2xt2qeZJrdGs7Zg/XiQanw7Zd4QiWCB03R9fvZfrYtZxETR
rhY3analQMOSYpRBkGr6ifK8cS6fYyJduoE+o3CsrVIG6EqPir/lY4iCkwYfNf6lPMLm4drkyk7t
VjUinvmQKixpOdBjtjdh9QmFtDUAyOtAD9JHTJGTRIPQvK/kq80vUf01Y6naXWhkMl5dyOnAoVIZ
ft0rxbbf9rMSci3RSzzx5Pso4H8xeX2W50iV+EoUDhG1DWhFR9pGxgUEMMtYriedIYUeWRipHAF2
Ir02GZE5CkB6f/yq20XTRrN/ePDAIOc9lbrWZWrxHIA8v+EzEhP1Nh5PJL9YrTglutDJyYM2xEe2
7f5VMzoScKcN0+8hw+XNR9TTdRc22rtIJdLv3ICcloeDcqdaMPt5DLu5GLZl/wCaukLPp1lqN+yw
+YV428mnRkOJgAAskQHxfFTegf7S5iRlwtxPEhtX8seafNsWmya3cWuk21nEIbWO7kVGO7HpI0f8
+WQlW7Gcdki1yw13yXrmntEWheAA294gPpy/ZNY2GxQ/5LZZLPezQMe71yx1HVNV0MzRQw+Wpbg1
1PXJiIGeMgVCF/S7bfbb7WYktm+OND2qTeXdQiTyzZJfwuhkudblo8k/IgkKyj+Y/wAzfZwDMA2x
gu8iaYLJ5Yrsj608nqNcN9ptvs7/ACyjNktvjsyzU9ZWOGO3jiVlDULKKjep7ZiCVJKF1TSrK9tX
sr6JZ9PuhSdKD4AdvU7/AGK8syMWZBGzxDzP+VEumagbuKQXOhymsdzGAVU9OLkEgHbvm3w5nV6q
DFbrStNuJ7m1s1YSQ8gWpsaVGZduDGVFjLIyuyn9jbIkOXCTSjfIU2OQV3psdguVxRKVJhHomomH
1vq7CJujFT/TLwWk5UI1vIjcXqGBrQ4CWcZLhEtanviI0ylK0TZ2E88qpEhLE+BwSlTABlml+Xre
2YSXZo/8pzFy5LFNsQz3yz5M1jXpOEUD29ihHKR1IBB8K8ewzFbgHs3lnyfpeiWxWCNTMftSkAEn
FtCd1Gy0qR3xZlXt7SWY0IIGKE1trKGH/W74qicVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVbxV/9H1HcIXiKA7HrgS891u2ksL/k4pHIdjkSyDcZDLUd8CV4p3wocTirVanFWw
CcVXBSMVXAYquxV2KuxVwxVvFXYodirsVb5Hv1PQYq2zBQC5CV6liB/HFWlkQjkrBl6ArvirfJT9
nFVw6Yq7FXYq39BrirW/HkRQdwSoP68VaVlIJBFO1N8VdXw6eHfFVsj26RNNcuIoU+0WNPuwgK8z
89/nPZ6aDZaGRJI0bCSVlPwkigK122xV4brXm/VL2c3Es7SXBNeZ9/b7P4Y2rtF0fU9blPow82ry
knkNBU9cgTurLItF0jQ1Ern63qB+07VKrXanbCFSy/v5ZpObniqigA6UyQCpHcNyJIJp2ySoFk5S
VHUYsUx0q+tLC2kuJx++JooxYpNNruoanqPpxmiE0Vdh0275dCNrbK4NUsdFhAu7ULP1JrWv3HLJ
YWJKXXnmzUNTn+r6fCakVMajsB4k0/HGMaY2yf8AK7yna3802ramnO0s+LXFDuqbljuetFzGyTNs
4hnflrQ7vzBrMlvYXf6O02p9FioJZVFa/ZdeoplcokhyBFAearezvdVuPJtrcLq9/cERQy8QhSTd
COREa/aODECCpYt5e8v6FaXH1DU5zaarY3K+rC45xkfCR8Sh+tfHMgklx5Jp+YvkbVpria60q2Wa
2uAkgERUUXjuQGI7nL8c65tXDaXeWfNMWnaG2gXdl9atXl9XhycMCAux4sv8mGU4tkIbsouOV3pQ
n1WRdK8vChi0qGpeQju1Q5/m/bzGlIE7MpRRHleTy3DHdeYdBsvrESx+nPZyk+rGVBPJQWp+1/N+
zlkAWulDT/zLvbvUJbDy9o6reXAKTmUu/wAPU1V3ZB0HQYJ0ElKbnyp5IinRvMetCG8uGIe3tlYg
VI2qUoOvjk4SY8LzDzImn6drNxDZXDSwQsPq8oqGNQDU9PHLCWBZd+VvmnRZfOFtJ5jllmaNQtrJ
KeSh1IpyH3dsolG04zzekHyZLNrIvfM0z3UgYyafplu1DIhBCsSvFFVTyY8nVvhyslnxJ15ruNOs
PLcF/rsEeoLbShdP0iD4jFQHZ3BVzTiB/eNkbpnGKXxteeatcW7v42tdIihHp2A4qpkqxqeJJp9n
9rKM2S+TkQDJLvVr8wQaVaxRpaRAfGijmVApwPtv2+LNechttEVC90y5EbNbpxuOJaJ67bb0zKgL
YyFIXy3rkFwXtrtljvYmIlhboKHYg/5Qo2CWNAOzJCVmkUIS71A9JR9rfxO1PHfGGI2i3n/m/U4/
LerS2si+po1/xN5ZGrCFiAOSsfi6rXZs2OIU4uaLCPPvlibR4Y9a0N1utBv1ql2PtpUA0cUFNm8M
2Ans4ZwPLXR+bAipJ6/Rh4l4aa9Jh1FD2w2m1eyCLdRmX7IO47ZMQa8rMp5rq7ggWB1S0j+FmptU
jvUZPhcKilvm60sotTENo3qPCgS5I6erU1C+1KZAhyockJpeiT3DryFAfHK5zDOMWX2OkCKaOCzj
MtwSB8Irudsw8k3IjB6n5P8AyuMpS+1oE0+JYaih7CtMxrbhF6jZ2kFtCIYUCxgABRt0wsqVglXp
SuLJMbPTq0Z9lpilMkRUFFFMVXUGKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV
2KuxVvFX/9L1QB2wKlHmPRE1Sxli6SAco2p0pgpkC880q7kWV7Wb4ZISEKtsdtq0PywUm0341avb
xxVxBxVypXc4qvBoMVdX2xVcDtirqjFW8VdirhireKuxQ4Anpviq13VE5swVaV5HYbYLTTAfOH5t
2OjcrfS0S6vlNGIYEDbtQNjYV5bd+b/Mmpzm5uruWh/3UrsAPorg4gtMq8gfmIYb4aZdzhkb7DM9
d+tN8NrT2SCeOSFHUg89xhpCuCAOuNK7kPHFbcWUAsSAB1OC1YN52/M2LRSbPT4TNfAVMhOyinXo
dsHEO9NF5ufM/mfWbo3FzeTIeJKxRu/EUr4EYiQKmJemflnPrFxprfXVeiE8WepJFTvvhtCbea/O
uj+W4Q08iS3VKiEOOX3b4QtvEfOf5pvrV1Gsk8kcKSU+qRyEKycTu1Pf/Jw8ledyT32oTpBCrOal
REpLH4tl6dciSrM/LP5Y8il7rTlU6rBx+L6QTkCSrMp44YLb6vYoLWBdh6YoT7mlMG6sbvYAxNQD
TqRuT88mFSC9j3aooBXLQqVSJUmnTEkKh3jAIJ6V3wWxQmoRt6QP7KmoHjhYoCXgrRtH8EoIKldi
SR02y+GzExKe6fYfpyV5r+7Frb2lPrLSNV6b7ICV32yRyFgVS+8x2NlA9h5ehEEPSW8NBK/juBUb
/wCVkoFjbM/ylVdX0HVtE+smG/dQsVGp6iyB13FR0/42zGzxN7ByYUzPyjZfmF5LgeCe3+t2Ic8L
gozxguKdSCO+VxlLubjIUln1bR/Lutaj5nv76ObUpneaysoCGBmkYyAUB+FQdvs5dCJ7miU3nNxc
3d7eSzSsxuJ25v17bjf6MyYR23aZStmtpeecddm0/wDQ0k1jDawCC7uVLmN+IVe3Efs+OYeedcm7
GGaeXvJOj6TBJc3VJ5wKtMyitae5OYcsprm3iG6oIdO1ISSyWyPFEeIWSh6bbAjIQym0TixnVtO/
wxfR6zppJhccpbVWorqNyrAbdD4ZsceWw45BT7ylNoL3Nx5j0yNYzewmG8t4wPUgcso9QUoafB4L
9vJSDGTF/Otr5B8u6bdwmYazrd/G/p3B40h2NCGrIeVW/wAn7OSjEoMg8Tu0ZZuQBIO5Y/1wkENX
Mpr5O8sajrerR/V1YQQyLJd3IBKwpWpcntQVymU928AU911Dz1Gn+4/y+Gf01SK71iU1kCsQDRty
i78f7zJSGyxjuyrydoGh2FvJcX0X6ReX96jgCUMW+Lvy8c1uTJK+TlxiKRcyWcUomUCAv9mA7H7t
snjjcd2MjR2VbQRxrIyHjK/j1GY8se7dGQRSN6NqLbmRwqfU6lvb8MugCxmXnXm3yxeaP5hXzVdI
Bpd2oDR14uGAChunfhyy0RPUNJtNdD886jYSSmzEepWEkfqwXkhp6ZQE8a0evaq8lzIjFgJMS1PX
NZ886lNDZ2YmVhwnuCnKGPiRv0otMnuGM5BI/MRm8uWEnlmy1X9JWkoH19FbnCsigghCGZdiz5fE
mnGlNgVyXD1CCh2Le4yYk1G+5FW0EN5YvyWkidGp88mCi0vsrK5vJ0gt0LyymiqBU5kCSyFsy1zS
p9J8v2+lS7Xl3IsjIuzqiqwNR16suA5Gvw0Ppnl41M122/2t+pIFSWr45RLKzjAsw8t+VNX1txFY
wenAPtXHE0pXxGYksjlRxvZPK3kXStEiDBFkux8TSso3Pt1yq28RDKAdq/fX+GSoUmla3tXmbatM
ilN7awSIAt8RxQUXQDp08MUOxS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq3ir/AP/T9U9sVWkFgPx+WKvNPzD0iXTbuLWbRaxMW9dR8wR+s4CkNadepcQowO1KnAlGYq2M
CXYq7FXYq7FVy4q3irq0xVrlireIKkOHpghpJFijB3kY7D3xMkB43+Z3my/vdUfTdMmDWCgCW4Tb
kanpWnt2ygzbYhhMGmhAXJ5OesjHKzNlwJVq0gAMcMlXpuf8xgEl4UgWWWCUSK5WVTUNl0ZLIbPd
vyr/ADCF9GlheSD62nFVB7jpl4LU9XjlWRAQdjhLEqg8AaE9zkEAJZrmpajp1rHdafbi6eNx6kfi
K/NciQyASm5Gi6lc/WbzST+krpQ6vMGaNGYV40iPQV75VKFsxJCv5YthJ+lfMBgt4LYEJHBVVoPY
lm/axhCis5sc1/8AN7TII5bDR3W3ghWgnoTWnz/pl4g128D1fXr7UJOc0rSv0U98PFwrSa+W/Imr
63xdh6UJ3MhIH68iZ8SgU9X8veUNM0ODhBD6lyftyvv93TAlMZ0L7k049sVSu8YhDUUxVILgU5Hx
ySEkvYuXLJKklwhSuQPNiUBK9etaA12/jhAVMdD8taz5jlW3063Zlc8XmNAij5tTJK9n8jflfpfl
23D3KreXxB9R5N0G/QUA6ZeJNkuTzz83PJJ0vU11WyRvqV0ayqPsq1f7ckC4sgwOyjtzLx9MEuwG
29R3phpjT0yPyLZ2Ai123uHtNFZA8imvrKQOVKAV/wCFyPES2RQOp+cdYlWW1tr6ZtOJHBH477Df
oDkoxDNIIba9vrpY41M8rNQIKk1J8egy0SAa5MwXyrpXly2+u+YrkNIRyhsIzyck7CvEN3/ysEp7
MYwT7y3rV5PIL2UCHTAALe1jG4Hi3U70zV5zu5UAzSK4aVQXJPP7KU2bMYRtvukj1TVNM0cyG+uU
iaQ0SIbnx7A5dDE1ymxGeDWvM2rejpcfO0QhZbpyFRFJ+I/EV/ZzNxwaJSR0uveW/IVtNDpz/pHW
JEKXLbmMBjWnRRt8OZMYtM5PF9Tv3vbye4ckmVjIynxJrxXMmFBokVGONHYcjt4ZKcQUAsy8i+Y9
Q8u3ks9mFa2lVUvImFecW/L8MxZ4B0ZmTJfMkNvFAPMvluT19IuOIvrRd3jIYVqpAb+XMaVt8Jsr
8qefvLw+p2i3QUXSgxijD032+A1HauUyxt1p1JaXd/qcd9KzJwPpsKjiQN+Qp/rZUDSQn1xouqah
pc6WTiCWMcork0Ar78smY2m2F2vnrVBJA0sKzXDTrFccNyrkqOgPvk8UN02yXzx5w8q201rBqDy3
s4RGlsuDfaZNhQKP5stkgliVt5YtfLWqSa7qV7HZ6BMjXCaW5LSMrgngAoZht8OCIJaJlg/mr80W
uw+naBbJpulOxP7sMHfrWpYt1OZ2LCDzcaTDIrpyjBmJ5ePXLziDjcdFQ+rSu+70U5UcTPx2R6No
dxcWxhjHo2rf3l05A+6v9MkINUp2ncFzaaVztNBjE85H7zUnB2rseIPHt/k5AzbgpW9u0kpkdnub
2Q1YEVJPtQbZRKbdEPSfKX5Y3l86XmrfubdSGSIEVNN6GlcpMm6MXqthptnZQrBaxCGNdmI75W3I
wKxOwqe3yxVH2umPJRn2HhiqaQxRxLxUb4qq4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq3ir/9T1T2xVbTeuKoHWdLg1LT5rSUVWRWVfmRQYCkPKbVZ9KvZNOlrW
BvhJ7g7/AMcCWQRyq6V74qqA1wJdXFW8VdirsVbBpirdcVaJxVrFV+RpkUl8121xPpTCAEsp5MBX
dQDUHISQHjmrQQRXTTSIIoXHwxqANx93XMWZbohIb29Mq0jPpqDQKMpjJuISO94qGdjxp3OXBgUm
nla5cCBa070yyJ3YEp3oUV1p92t3E5WVGUqwJ3oa0zIiWun0x5Nv5r/Qre5mUq7qdj12Yj+GWsSE
9ZahSfnT3yBWPNeKEVH0jsMUlj/m3zxoPlex9e4YTTbhIkIBqBXJUwJfOnnv809W1+Z1M8kUDD4Y
FYhaV70pkhTEbsLt4L+/k9OAO7sKMoqRT5ZXKVMwHqnlD8po4WW61bi3E1SEj+uUk2zD0H6vBaLH
bwRrHGB9lAF6eNMlEUiSvNuFYHp1yTFBXJUKeIrXFUj1AyN12HhiqT3CkigFT4ZIISy5hAYin0ZJ
Umvbd2ZY0Qu8myBepOCmJZV5S/J++vmS711ja2bDktuOQZwelT8PbCAr1/TdM03TLYQWECWsA2VY
1C1/1qU5ZKlRRrSnbwHTIptL9f0W21vSp9NuVDCZSI2O/FqbH78tiWJi+cdU0e+8qeZHSWFedu1Y
mdQySAioorCm1csEmshk2g+Z9c1bUfqwK3f1/wDdtZyGsQDGlQCGC/a7Lk5kBMU6tPJnl19S/RU9
6zak/ImK3QOkdFLUPxL2H8uUcbNAeW7+18teaby0uOD2ZeSKW4oA0YV6chX7J/2WWiOzWUJ590u9
0nVxfTTHUba8QPZ3DkuONSP2uVKUPTJBQiNI82xW2m+q8dVjADKtBy28PozHyY7ZCbJb7zhcxWbR
2IKSzxj6lGP3jciSDudxkPC2ZHIktn5ORP8AnYvO12aPVhZOzEmvSgYinwjJwg1mSB1v8w57yBtN
0BBpelKpBeKiM4pT4mQAnb3zMhFgS8+u7syO55Fj+21T8WX0GBFoIRNK/NAxI6KMgZBeBXS0nC7o
Qcj4gXgXRXV1buVqVBUggHrkxkBYmCN8u+cL7RbzmD6ljOCt1a0HBgdj8P2a++QyYxVshsn2saBb
mCPzH5fUyae7erLEuzQu3xEEivQ8s187tvjJ6h5R8w3sfliLVJpV1G0ial0if3iEUqO+1CMiMe7a
E31b83bHUdBls9LtTbmQFDccqUA7cQPbLuGkEsFstB1y+vbfWfKxMlpdyr9YckqIyrAlvh5b0bri
AwMkz83+afJ3lnVZbtYTqvmYrGsvrv6yI4iUV/ec67Afs/DloxWbYmTyTzJ5u1nzFetc6jctI5rS
IE8EBNaKvQDMiIAa5FKI+Va7/ecstpKJt4ppZEjRCWc0Wm/4ZPjaJRZZp+gWunw/W9Xf95X91aL1
f51pT7sjKTWIbpnJJc6oic0+qWCbJBH8O3+VTjXbKTlpvhjTXSPL9zqcq2mlw/Axp6ijYfdmIZOQ
Mb1zyn+Xen6NHHPcxpcX5A5uw5cfYcq5AltjFmSqoFANvDtkG4KscTSNxA2wqmtppwQh23xVMNgQ
BtireKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVvFX/1fVP
bFWsVaPUDAUhh/nny79at/0hbKfrEXUCgqB88FJtiejah6g4MQH2qp640tp2GDdMBCQWx+rFXchg
tW6jFXYVa3xV2+Kt74q7FV+S2Z20UDVB3UjceOVzCLefeePKytCZbZDwI3Oxoa5iTxlsjIPINRhn
gnNv6RMgPbf9WY8IFuMglF5ot3PNWUEJ/KKZkxayj7LRAQscaEMPDc/hha6L07yX+Wb3Mkd5qSND
EhVkjJX4qb++WRQS9VggjgjWKFaIooAPAZeCxJCrI8MEXrXDiOICvJjSmFjbyv8AMP8AOewskex0
mRJXFA8oDeP0Y0l4JrPmHUdZupJJHLB2ZglD3NdsgTSKTnyv+XWr6wqySq0NvX4magNPkcrlK+TK
Oz2Xy55T0vRLaOOBAZQoDzNvv9FMQD1ZEhNbiUKpNaU6HLKDElLPVq5duuAlURDKzV2quKqVy4C7
CmKpNdh3BNK++HhLEpXcJQVO1PHbJUVtV0nyzqOsScLWFvSr8crUWgPhypXDS29D8v8AkTSNFAm4
me8O4lelB26UGGmKesjD/W8T0+QphVbQklmG9Nj74bVoCvzwIC4J4io8MWZISDzp5NsvM2mtBMPT
uE3hmFKinbcHG2uQeIWK6z5I8zLeS2oMkJ4SRPujKDuVKkf8Sy+wWIZhouvX+sLePoVrDYI9TfXz
VqtadKsP8lemDhTxBEeXvK+grDdW2rX8E8d50uFdSwdq1JoT4/y5EmXJiDulmn6jp9vNc+VNXZbn
SpH/AHV0DUo9AV4sKrTkq/s5KNszSHP5e65Bfz2lsVOnyUdLx2QL6bbggkgdD0xILAkIiTzR5c8n
2rWuiL+kNUNed5LUqpIp8NAmWQHegsI1PVNT1q5N3fSmSRzUr0VR7DLTEIU3il9JYEjDIx+0P1dc
qOQBPCWU6L+W73UcU16hjRvjRBStOlW60+nKcuSxsmMGSx6boWkOFhtw7r1ruNvcbZUG4UjIb3Tp
BSSz9QHxIFMOymlOfyp5R1pjAtLa7aoUfZFW92FMQa5MKDy7zp5EvvLlzxkRntm3WQ0pv8sysWW+
bXKKA8peaLzy/f8ArRqJbOQcbm3IPFlr88unAEbMBJ6HdaQlrGPMnlVmutDuKLfWa7uh6FeNFY7M
v7OYZ9J3b4yFLIfK8V1D+lfMDDRtAWrxwAj1panpw+N99z/d43bEyCTeZvzQlFkdD8uR/UtKQEV3
LN2r27D+XL8Ue9qMnn0tw0shZ6sTuWJ798tN3tyY25QG7UNQPCv35YIhgZJ3o/lu8v5ORBjt13eR
iFH0csTE9GszDKLZrHTYhBpKeteHZ7lweK022+zkOMDmx5qtvZFZvWmLS3Mh3J3H0AZCWSLZGL0D
yr+Xeo6s6XOoA21lQFVFAWB9jy7e2Y05hvES9b0nRtP0q1FvZx+nEN6HdvvyFuTQRopvQYEUi7W0
kmI+Hau5wIopzbWscS0pviyVt/oxVv2xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxV2KuxV2KuxV2KuxVvFX/9b1T2xVrFWjy7Yqsm9IxsslChFGBxV5N5n0z9F6xJd2w/cTMSFH
YVr/ABxVH6deJLEvj3wFIRg6nwyJS3tkSrsIS4YVbxV2KuxV2Kr8KtHjUVyJVSkhSaB4ZFDKwI39
8iUhgut+R0juDc28avyPSmUcDbaSt5EvruRRHGIwxozH/ayQgi2Y+XvIej6SoeVBcXNKkkVofpyQ
gpLKY0BACDcbBBsAMsEWslJvM3m7QvLcBlvZgZlX4Ykp1PjUjJAMC+e/Pv50avrjtbwO1tahiFRa
Co7dMkoDArGx1HVbvhEju8h3qSQcrlJk9Y8m/lba2saXeqEPPRWWPc0rvTemQ5q9Hht4o4lESqkY
2CqAP1ZLhpVs8hpRcVSxpZG+FjiqmdzQYCqJeRY4wB174QqDmdmO3TJKhXUyMIlqWP2VHicmGJT/
AEnyILho7jVCAg3WAV+Lwr0woZpb2ttbQrDAixIgAAUUJpiqr6bP1Fa9Biqaaf5bmn4tJ8MfWm+K
t67oS2wEkI+ADfFUiMJ64q2qeOKt8BirG/O/lG28waRIioqXkfI28oG4amyGnuBk4sHi2laxqHlP
U7mzvLflbzfBeWvZmoKMK+wXLLYlNNE0Oy128utWFNM0Wyq0oqSTuTT7lPfIyQObI7Py95av9Ku5
TZvaW5Ym0vZCfiZQDX7R8MgCUyLz7UvM+uG3fTUv3e2gd41Cmmykjr1y6LXaSKm/FzuN99yctpla
Ii4jYZJIZz+XXl6PULiS8ul521swEcR/akPT7jxzCyc2wJ75m83pp9y+j24AeGhnuAB9pgGWMf7F
v+FwAJkaDGpdZNxRF+En7Ve+S4WHEsfzXaWSenKOTDwpjwrxJXqXmtLmNXtS0UymqODQg9uhx4Uc
TPNP1SDzz5Ml+vIGvLYGOViBWq0ZSKe5GRiaLYRYeG31s9rfz24aphkZCD7Ej+GbDGbDiTFFOPKv
nTW/LErtZSc7eQfvbaWjR1pSoDBhXBPGCUxlshvMnm7WtduDLfzt/NFEDSNV6UAFB+GEYwklI+m5
NScsFIVba0lnkCxrydumJapTosu07y3ZWMS3uquH4UKwrWpPbwyJlTAm0znNzeqj0FrYdI4k2J+d
P65E5GJgj9J0m6vbhbLToi0pIXkeg7e+Y8pbt8YbPYvKf5Z2mmiK51UC5u1+IRblVr33plRLfGDP
UjjUAKAi0osaigGVFuEV6KztQDClM7PTAw5P9AxVM44o4xRRTFV2KuxV2KuxV2KuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kt4q//X9UAnFWiwAq21MVQU+ogEhBUj
viqXtO71BPwncjFUDqenpe2jRsPiIPH2xVhKiexueDAnidwfDxwFIT23lSSPkprUfdkSlfQZEq3h
CXDCreKuxVsYq3QYq3hV2RKuBGBLY2xpbWuz7AH5eOEBbU7ia3s4zNezxwxgVZnYA0+k5IBSXlX5
g/npDZQS2WgAGYhke4qSfDYimFhbwPVte1TWbtpbh2llkNdqk5G0sg8o/l1qmryLLcRtDbChLkUO
/wA8hOWyaez6B5Y07RLdUtUUn9qSm+CKpxyUGo6+OWUFWF1ANO+RJVDS8gvIHAqBlbfbf3xVoKAp
cnfpTCgqbUO3Kp674QEI7TtFvdRcLGhji7yMKD6K0yVKy7StBsdOFYxzm/amP2q+FfDJITBaNUV6
4qjrPSridxRSF8aYqyTTtCgt/jkHN/ftiqaCgWlKDoBiqldWyXFu0TbBthirDb6weOUxU48SaN4j
FUCyEHbFXBfHFXcKGo2PjkrRTDPP/kO31+0a4gATUol/dtQfGAalTXESYkPKfLHmW98qT32n3dmJ
rZmPrWkoNFlUtuB4btlsRbEoLXfNeq61J6ryMIIz8EAPwqPb78tEA1yKTXMBZTc2Y5Mf7+HsKd/p
yYi12pFkcBhtXthIZgqi8VWoG+Bsev8AkaYWXlrTrqIcmM7M1OzcUzCyc2wPKdYv7i51W+uZSRM8
78ieuzED/hRjBE+SUm7nRjRyAeuWNSnLI7mpJJxVqMUYA7Anc+2AlIeoflbbyW+kaheSHjDI1EB2
BC8ST+GVAbt97PK/McsUuv38qHkj3MjL8i5zYYtg4eTdK6sN+pyyW6Ih3FmBFAK5GlKZaZoNzeMH
KmOFT8TtsKfTkaLAzZLbmz07jDpsf1i7O0krbqK77EU/Xh4qazuUbb2SGQzXj+rcHdT1ofAZVKbZ
GDM/KfkDV9edJple3sV6lhQkDwrmPKTeMb2fy95d03Q7QQ2agMQAz0+JqDqffI8TaIpstRQdAcFs
wiba0lleoBpizBTm30+KLc7nAxRW33Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq3ir//Q9P3V0IRQA1xVLpbyWTqdsVUQT279cVdtirid698V
SHX9M9RPrEKjl0f5VwFISSwn9GZkYngdgPfIlKbBgRXxwUq7FLq0wq7kMVbrirY2xVvkMVa5DG1c
SPGmBWwCaHse+ClXgHqfhX+Y9MNIphnm78z9C0FJIVf1btVLKygFa9B1I8PDJgLTwHzj+aWva/cu
ryssBPwItFBAHelMSKCkMY03SdV1idVgDPzYBq9qnK+JAD1ryj+V9lYhbjUAss5FQtSafPpgZB6B
DBFbxKkKqiDYqMRFNri4X29hhIQpM+RtVOUtxqMldqphzw+LfAlDspDAAVDdDhpVSKFmk4Ihd+hQ
eOSEWMk/0vyqA4n1DjyqCqKT86N0w0xZEiIiCKJQqDoBsMkqtFDJIQoFT0oMVTzS/LwJWSYDj3G9
cVZDDBFCgWNQAMVVK4q4gHFWiKgVxVA6lp31lOSUDjqTirGbqzaNiKUpiqEKGuKuK4Sq0oN9qk7f
L3HvkQimA/mH5At9XgbULNFjv4QxcCo9VadCOnI0ywTpiYvFLyxms5HAFCuzoeuWxnbTKBUY5in7
xBxB+2PHMiIajGlG9jVAJod42+0B1GTq9ljLdUiUGMGta+GRMabhJ6L+XOrRmyuNGuCBKretaV6b
jpXx+DMLJHdtBY9568tTQX7XdtGfTmILp3Dcdz+GV8VMiLYa0DcuLKQR44RO2PhrltyxAwma+GU8
0XyneahOihVEdRXkSKg+FBkPEtapPvNmtReXtKfTbR+JK8URdyCxo1a+2ZGLESxlN5O4YkvWrMat
45m8NBx3W8Mk0vCJS5Y/ZHXK7SZiKfW2jWtmgmvzVuojWtfp6ZYIlqlkBTOJru8URj/R7YfsDYkf
R/XATTDwyeSZaXp8kkv1ayiMkh2AHXfrvmJPJu5GPCQN3rnkn8p7e1Ed5rNJZmo6QAsQD1+L7OVm
bcIU9MhhhiRYokEcaCiqgpkC2BWVSWFBU5Gk0mNlpjOQz023ocK0m8cKRgBBhSvpgVvFXYq7FXYq
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FW8Vf/R9Nan
CWUOOgxVLMVcMVbxVo4qsKgqQTs2xGApDEtc0+S3mLIvwMaqad8CXaddLKvAn4xiqPBJG+BLeKu5
DFXDFVxxVrFXEg9MULo0JbtTwOKoDWPMOj6LaST3l2ilASIywH6ziFeL+f8A875blDaaWwjUb81b
rt7Uyw0l43PdX2r3PJg0sj7dzvlUpKzLyp+V99fFJr8NDD13Xt9OV8SvXdG0HTtIiWK0RRtu9BXb
JITKtBv1yQVaWOFVkj7YCVUGJyJVp3YIad8ACVNJFVavkwFTDTdEu75y4DW8LdZ2Bqf9WtMkArKd
O0yzsE4xJV/2pm+0x8ckxKMAZvhpVu5PhihMNP0i6uWFAVTuaYqyaz0q3tgKDm46nFUbuaHp7Yq3
irsVdirsVdv9GKoO+09LiPYUYV/HFWNXVmYXMb9sVQvAYq0UxVSZWr8P2u2KvPfzD8hRX0b6lpyU
uY1/exAV5b7nb2OTgWBeJ3UE1vNKWXZSVdPAjrmVGbTIKKOF+JByjatU9ssjLdqIpTettSSM1t5D
18DkyVBRkNxLDJHLC5BRgysDuSCD92UyhbaJMt0z8yrO4U22sgfu9jJX7ga+2VTwWz40VJJ+Xt7+
8W6iUHryZBlRwELxoeW78j2Q9VLmOZF/lKn9ROIwErxpHqf5lxxIyaZHWlRG5qKfLbL8Wnrmgytg
2oX1zfXBnuZC0zfM5kiFNE5LrHSp7w1oUjHV6ZIhq406ge3tKR6egkuO8g3p92RoIJtGrYmRlmu2
5yncqe335VPLSYwZb5U8lax5hZRDG0FmrASXBU0p332GYs8tuXCD23yv5L0by/bqlvGGuCPjuGA6
k12/28qtvpkQDEbnp3Pf5YrStDbySmiDFaTmy01YgrP9qgr88Uo+gHQUGKuxV2KuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2
KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVvFX/0vUzxiSP
icVSSeIxyle2KqZO5HhirsVccVUz1pgKQoXtpHcxFH+yRQ4EsOuYpLG4U/ZYH4vliqbW9wJYwwIN
cCVUcTv3xVvFW8VdWmKtipxVuQxQxNNMREiipdjTFDznzx+dOkaPaSW+lsJbypRmpUbeFcVfP3mT
zlq+t3B9aZip2KjAVU/L/k3WNYloiFYzuXY9sr4kvXfK35e6ZpKq8kQlmBryJr2yQFqzAIEFFXiv
hkuBW6jGkNFt8kAq0ttgnyVRY1OQVYV7ltvDCrUMFzdSiKBSW7HsPfJUpZNpnliGArPen1pKfYHT
+GFCeKBTiBQdgMkAqJtrKed+KKd++EoZDp/lxIyHnPJhuN8Cp0kaxqFQADFV2KuxV2KuxV2KuxV2
KtHpiqGvbFbmKlBy8cVY3d2b278XG2KoYr92KrClTTpXFVJ0HxM+60oRgti838//AJfwTRy6nYJW
Zt5IhtUU8MnGbEh4xcwLbuSoKxd0PUHMiEt2ucdlEbJ/NC3VfDLwWmliW08TMYT6lt+yvcDJgpS6
+tb1ySkFAT1r1/HDdIJQq6dqIIUR0De/9uRJtbdLpl/H8JDEHttgCLUxZXIIUxN7E5Im1MqTODSo
LaMXF44fwjHX5bZMSpqkUZHFcXgRUT0ID0UHen45GWQMRFNbfT+MyW9lGZZX/YAqSx265iZMm7fD
G9T8lflE06pfa4SFI5LaA9PmR/zVmNKRLkxxvWbSytrSJIraFYYUFAB3xiG0ClbiSdhU4lkmFnpk
krAvsuBaTq3to4VoAK+OKFbFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FW8Vf/9P1QR9GKoS+twycx1GKpTXcim464q7FXHfFVtKG
uCk2sod6nY40tpN5i0k39o/F/Tlpu4Wtab+IxpbY5pkstjL9XmJIXZSdq4KTafpQ79K40tt13pkW
S4bg+2AFDcaNIaKKt4ZYIraUeZvN+i+XLUyXkqGYV/c8gDt7/wBmAhbeAfmF+cera8zWtq7Q2lAC
EkPY17AZDiQ88tbPUdTnEcUbSuTsaFuvvg4lek+UvyrjQpPqH2gamMr1p8zjavSrOwtrOJYreNY0
XsAB+rDwptEjiDXf78kFtvl1rhtVhNMCFrGilvww2qxnqB74JbqomUB+IHI+Hf7sjwotNNO8u3V/
8dwDBB1C0qWB99qZIBbZTZ2FrZxLFbxgfdU/ThW0QE3K/tHsN8khOtL0GWRw83wAHoVr/TDaslgt
YIVARQKdTTAqr3xVwxV2KuxV2KuxV2KuxV2KuxVrfsaYqh72yS5jINOQ/apirG7q2eFyrClOh8cV
Q3Dx6YqtMYoR28MBCKUvS+I1Wop4bUxAWnk/5mflwxjfU9Lh5RUrNEi9N9ztlsZ0iUbDx64ge0BJ
BCE0II3B+WZMJ20SFJcmpPbyMob4Cd99jl1MLQ9xq91zbjISCKAVO2RJXhtQ/TF6OP7w1XvU5IT8
mPCu/Teo0r6h+84TK+iKRNrqGp3DBA5JO3QnriJcLCSc22mCOQG7b1HO+/2R9+UznaBC2TeW/KGs
67c+lYxkQ/7/AOJ4gV7Uygyb4YnuXlD8vtJ8vxiTglzfE1aZ0BIqKUFeWVSlbkQhTKyGp4DxyLaC
uiiaZwACRhtB3Tmz0oKA8h3P7NMCjZM1RVFF2GKbbpih2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K
uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kt4q//U9U9sVWkBgVOKpPeW
/pSVHRq4qh8VdirRxVYRiqw04lT3xVjnmDTlDLKo6n4SO22KobTrtmrE/wBsYEpmq1FcgzXTPb28
LT3kggt0FWJNCQN/fCAh5Z55/PPTtPilstFAaQHiZiD4e9MlaHges6/q2uXrS3UrSySMSFHTc5WZ
Knfln8vNT1KYG5Qx2/cmgPT3wK9c0Dyrp2k26JAgMgAqx36YqnJqDWlTirXKuTV1aYq7liq1jiqm
7ig3274qus7O8vH4WyVP8x6AfM7YqWUaX5etbOkkw9W5/mPQYWKbAVrvSnYdMVRFrYXFxIBGDQ98
IVk2m6Bb21Hl+OUjvhVNgfAUxVvFXYq7FXYq7FXYq7FXYq7FXYq7FXYq75Yqhb6yS5Qgj46bHFWO
T2skEhRhsDtiqiVxVYQaEqdx1XFVWK2RgVIqjD4gelD1xSA8n/NH8s/SSXWNLiMkUjfvIfCo3NNj
1GWRlTCcXgWs6NJb1eh4+2+ZUJ24shSRkEN/DLTFAlTYhL9MjSmSZ2WjSSAM2y++PE1lkVnaRwhU
t05TmgFBU1+WVZZsoQt6d5J/KW91N477W629tXkIQRVqdK05ZjmbfGD2bTdKsdNtFtrSEQxAUCjc
7e+QMm6MUVvQbU8BgZUirWxlnI/lPXFU7tbGKBdh8WKontirXfFW8VdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdireKv/9X1T2xV
rFVG7hEkR8QDTFUkZShIPXFVmKuxVx6YqpnFVKeBZUKP9lumKsOvre4sbksP2TVT7d8ilD6z+YOi
6HpjTzSc7ilBHUdfpORZvBvO/wCbms67I0MczQ2/xAKG7H5Uw2hielaHqOsz8I0LhzvIQTlZKHqX
lf8ALSzsEWa8QSSqAQCP65IBWcwwQxKEQUwqqEADbFVh64q6uFWiRirXy3Phiqkzt6lFJd22CYqm
umeWJbgrNen0YjuI1rv8+mKsnhtoreMR20YjjGxUClffFSqojO3BByJ7YWKd6b5cklpJP8EfXjir
JLa2ggj4wqAPEYQqthV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVxPbviqhd2kVwlHHxfsn3xV
j15ZyW8hFPhxVClR26YqqxMR0FcUgohhDPEySrzjccXU4lJ3eI/mn+XMWnI99ZxhrBqlowPsfwyy
EqaZxeH6h5emSflEeSOfhPgPDMqGVw8kUZZ6JHbqHlFWxlkREJ/oXl7U9buEtbCL1CagvQ8Fp8so
lJyYxe2+Sfyu0rRIo7i9jS7v9i7stQhG/wANa9TlMi2iNM8oRRVAC9gMizAbRWduKjfGmQTWy0om
jTb77fLCgpvHHHGvFBQYoXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq3ir//W9U9sVaxV2KpVqNtxb1B0OKoDbvir
sVccVWlRiq1gOmC0Wl2q2AuYGK19RRUfLvhIZh4f+a/k6W8tTc2oYzIRyQUpsCOmY05kcm0RDB/K
n5Z3V463F8rIh4sASBsd++IJIazzeq6ToVjpduIoEow2LbZIRQmG/jlo2VomhrTAq3kan3xVomuK
rCT4UPgcVaqTvTYfR+vFUTZade3j/uEIQfadtqffTDSsk03RLOwG37yVtyz70PtSmGkWmFW8d8aW
0fYaTeXRHEcR3Y+GNLbJ9P0a2tFBILSdyaY0hMKD6PDGlbAA6YaV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxV2KuxV2KupirsVUbmBLhCrDfsRirHbu1a3Y8geHY4qh0+fypiqoHIBA2rjagtXccV3ayQXC
B4pQVZT77VxU7vD/AD75HOkXL3FujtZSMCvRqMRX9kdOuEFrljBQHlH8s9T1qdLrUOVpYVBrQBmU
7/DWvb/Jx4mIxh7Pouh6bo1otrYx+mi9W/aavjh4mYFJhWvwjp2GRJtkEXaWM00gIBA9sUp7Z6bH
CKtUn6MVRoxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV
2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVvFX//1/VPbFWsVccVU7iMSxlSMVSOePi/HofDFVM0
7Yq7FWsVWN1yPVC0A1/XlgZhjnmXSo3jaaNP9ZTlcsdsxJiCrGvwgBR2C7ZDhYls7bY0hrJKtYjF
VlR44q49Pn0xVTVXlcRxVebuMKp/pvls7TXp5NXaIVAp+GKp9HCsaiOMcV/ZFKD8MQpVLeGaZuEa
hnJpkmLItL8tcSJbohq/sb4qn8UMUScI14qPDFV21On34q2OmKuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2Ku264qo3FtHMpVlr74qkF1p72zmm6+PhiqHocVcQaEHbFUPc28Nynp3Eay
pXo4BH44q0I1RAgUCNNlRQAAPbFFLuBZgoGK0mthpDMQ8i0G1K98Up3DBHEKKAPfFV9D44q4V74q
3irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVdirsVdirsVbxV//0PVPbFWsVdirsVS3Urao9ReuKpYMVbxVrFVp64KStatNsNqp
TIkkZVhUN1x4kWwHzHpkthe+oikwyEmvYb40yQG1BvU9ciQrWRVa9KYqplgAfDxwqjdN0a7vTUqY
4e8h2qPpxVk9lplrZR8I15MP2zhVE0J7V9hiqZadol1dULApEetf7cQpZRZabbWqAItW7nJMUXir
sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirgO+KrJokkQhh1xVIb2ykg
kNBVW74qhSlNvDFVhWuKQqQ20sxpxOK0nFjpSRfE+5xVMQABQdMUN4q7FXYq7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq3ir//0fVPbFWsVdirsVaeNWUqRUYqkNxD6MhBGx3GKqJPh0xV2KrT1xVrBSrDsKdsaWkH
qunR39o0TKCaGnUb09sbW3n9zZyWs7QydVOx9sCbUQWq23yOCltuK3uLmQRW6F3Pftitsh0zy1DC
RJd/vJP5Kmi/qritpwAAvGgCjoBt+rCtqkNrPcMEiHL8MNLbJdN8vRQUe4o7dQKnbGltOEUAUAoo
6Uw0hcNumKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVZPC
sqUIriqR3lhJC1VFVPQYqqWmlPIA7Gg8MVTaG2jiWgAr44rarTFXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FW8Vf/9L1T2xVrFXYq7FXb9sVQeo2/qRFlG4xVJypG3cdcVaO2KraV3xV1DiqwgnFXfGB
75FUh8x6QLiEzRqTIu5oKnwxVI9O8tXdzSS4DRQ+JBr9xxVklrp9vaQ+nAAq9/5sVX0J+ELyP44q
mtjoEk5DzjhH4d/uxVkNrZwW0YSJQKftd8kqsFHff3xV1DWtdvDFW8VdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirq4q0VU9d8Vdxp02GKt0pirsVdirsVdirsV
dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVdirsVdirsVbxV//0/VPbFWsVdirsVdirTAFSD3xVJb23MUhPZjtiqEbFXDpirj0
xVbirRyKrCAdsVWEfCSx+Ff2RirdvYTXMgCLT/K7Yqntjo1vbnm4DyeOKpgQB2+QGKt5JXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq3ir/9T1T2xVrFXYq7FXYq6mKqF7biWMnuOmKpEykOQR
0xVrFWj0xVbirRFcVaoSaKCWOKo+y0mRhymPFT4YqnMcUca8UUKPYUxVdirsVdirsVdirsVdirsV
dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVdirsVbxV//1fVPbFWsVdirsVdirhiru/tiqU6hBwfkBscVQDUB2xVa
akdKYq7ifDbFVe3spZmHZfE98VTa3sIoRWlW7nFUVQUoMVdirsVdirsVdirsVdirsVdirsVdirsV
dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdireKv/1vVPbFWsVdirsVdirsVcRXFVOeJZYypG+KpJcWrxMT2xVTjillNF
FTiqZWmmBQGlNf8AJxVHqoUAIoAGwxVd+vFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq7FXYq7FW8Vf/1/VPbFXYq7FXYq7FXYq7FXYqpXH92en04qo2H2D9nr2xVF4q7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9kKZW5kc3RyZWFtCmVuZG9iagox
MjkgMCBvYmoKPDwKL0xlbmd0aCAxNDAgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFn
ZQovV2lkdGggMTI0Ci9IZWlnaHQgMTE3Ci9Db2xvclNwYWNlIDE0MSAwIFIKL0ludGVycG9sYXRl
IHRydWUKL0ludGVudCAvUGVyY2VwdHVhbAovU01hc2sgMTQyIDAgUgovQml0c1BlckNvbXBvbmVu
dCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4AdS9BXhUWd7uu2JVcVdCQgIJcU8q
7u7u7u7u7gFCcHfSwSEhSHC3YIEQQxvo6YbGJcTqvpXqZnrmnnNn7vnmPB/fftazWbVrV2XXb73r
Xf8lezMz82Nt9Gk6EvOapulT39MMffrL+GfGuzN0+hTjHMZ+nE6fpNMnZtO3PzN4yTyIE3AyEn16
ZnpycuLLt/FP0+Of6FPf/vg4TkCapE9N0icnGCfic18mJr/gJfIz9M/f6PjWb/TJb/Txr/QPX+lv
x+mvJ+i/TdJ/nWakVzP01zP0dzhxBmfN4CsmkJmhf/0zIY+EgxMzM1Oz6ceizbwaBo3/FfOpmcnp
abxHn5qYZhCZRhnMnD9xoaGqZePqredOXHo6+uLj718nPk8hjX+ZnAa3bzPjX759/vz129dxxmdn
4TOAI01MMcoLpQPms39xfBzfO4OSnWIkxuGpGfrHr/QvkzNfUV70qanZz0zSP36jv5mgv5qmv0Oa
oX9gAgdPFCzSLGEm6r8A/7GZ/791wJT6+DgYMbYvX74w1fv53Zeq0uoAP//Q4JCYqOjE+ITszKza
6rq1q9ft3r13ZPjRs6cv3775OIECmmF8AmIe/zpFnwFaIJye+TY9PT4z+WXq6+fxL58+owpMTH78
Nvnu8zhK7uMMQ+az5Gf3yDMT48PTE5NTX5m6ZXJmlhqz+BjXzxT2P8ibKXLs/2dsTObfvqGWMzYG
/Nnf//urN7ExUdl5yVl5CamZ0fFJ4ZExgRHRQbEJkYnJcYFhQaGREXFJyQUl5R0r13T39t0eGHn+
4tevXz4BL0PL+BIofParZqaZxvSFTv80m5AZn5r+OjHB+FuMKjNO//aFkVBFGGzxqT8qwz9nQPwf
sTI5/w9jzvwJoA1/mJrdmOTv378fmxAekeQVkeoek+mdXBCSVR6bXR6fVhSXlBuTU56ZkpccmRwV
GB0cEBkWFh+TkJmRkZdXUlZaX1+7Yd36vmPHB+7cffbk6fu376anYMWT9OnxqW8fxj+/+fLx9bcv
7/GSUSmYbFE6f4WMl6g+/3Rk1qNmmTNM6s+Ey/+nUvjHMvmBX4Hz5OTkd4d59+Ht3v17EjOjaA7y
qlZCCiY8KpZCxp7ybtFGoemOUdmeySUhmZUxRU3plUvyq9tLy1oL8mqzssrTiivzC0tykYrL8vML
srKy04qK85oa63/q3HHq+LFHI8NT47MtLExkfGLqy/j0p8/0L1/p36YYhCfoU5/oX99OfPwd7eqf
2BmogRUVBwUHPc+6Fz7OTH+H/+OS/x6oIPOHwmf1A+bQ+NdvX1DXv02Of/r2sXFxQ3xumJqtkLID
Rc2ZS89byCJsrn2solOcimOssn20kn2UimOMmluirn+WaVSpU3q9b15zRFF9anFVRlltdmVDXllV
ZklFZtuSup2dW1YsW97StKi6tL6iqK6urHnl4nU9e47dunLr4+uXX9+8mPr4mj7xlRFG4WL+Qd64
HLTEX+n0z3T6B+wZ1/wd+PfM38n/iLL+3zGfnmRcLWhP0Sc/T3yapE/kludE5wWou/Gp+XHohPAY
xwrZpki5ZMt6FSr4lyoHlKkEVaiEVaqFV6kjhVQoBZYqBOSrROaZxec75dT4li+KKG+JKG+OXra+
fF/vppu3L169evn82UtHD5/auv6nxupFJXkVpfnFpXkplcXJjdX5q5c2Hvhpx/WLF188fvrxzYc/
yDMUzmT+8X80c/BkkgfkP3T1p9QnplDJ0aB9HXx2LzQ5KDDTVdaBmKYJqoYS23xxhwIR01RqaNsC
9zJh21yOyHaZok69qPY5ccvnlOzWzNw8v/wn/Zqt1sv2+lWttUyqUUqtVUuq1Igt1E0rd6xpS2xf
Xd1zZM+RY70dHR3V1dWtrc2trbVLl9QsXVy+qLm8rrqovCS/OD+vtLCorKS8trph1Yq1Rw4fRbPy
8pdn796/mpqG1Ce/fv2GAInRyDLMcPrbt8kpBJ2MSjozMTHx6RPa6B/LZIAawL8z/3sMhurMqJ6M
OO3L9Odx+pe+q0fDM0K90+2MkyS1ktk0Ell0U1lN8ig6KcS2nMOtjit6rVTLOdP9fws/+Fto2DIW
72aSv1e06vC8yi75toMay47prj1jvPGcRUePcWOnyaJOt6x6K584ba8I05hM/+zS2Jq2vLaVpTWt
WfUtBS2Lyha31yxaUtfcUlPfUF1bi1Tf1tqek10QHBIREhqZlp5dWVXT0tK2ZMnSM2fO3b599+XL
l1+/Ip5kbGiGvgddAP7+/Xvm8R9k///NHBcP3X/49h7Ml25dEl0U4ZhkqpMoohBP7BulaQWczi3i
5pXsxiXEqJB4trOuH3M6MR278YlVzfl5cTtJ9BZS0stV38dTcZA0HmdbeVW447xAy3HBxX3zV5w0
zlqu7JosYujDZ+o3x8Jfxi50gWuskluUWmyOf0p+XEFlRkVDYV1bZVN7fduy1sXL29valxSUlCal
ZuUVVrQsWtmxfHNT44rS0vr8/Pyc3Ayk4pL8lpam7du3njp14ubNGy9e/Pzs2RPGT/jBNibzCfo3
SB2X9g86n6ZDLQzmU++/0D+mV6XEV0SbxeiYFc03KBN2aJWbG0OMKrlMqqnh2+cHrBcr6FOvuaJb
eVHJpJpk9/In7CZZPdS+KYdld/jrTpPG86TtCqk5QZrPkbW3pFdfUwtuZHPMZrNJ5rdPlTSPEtT2
ZdEPIjYx4kY+C8y8ta38dBxCDD1jbEJS3OPyglOLoyrbisoaC8sayutaGhrbltQ2LKqoaiuvaly0
pKVtUT1qRENjZU1teVl5ITM6qqmtyMrKqKmp+fDhww9FHcwB/B+Yw1VmI2HEYggUmWb+y+fngRl+
cZVRBuFq+nmyelWSOmUiC3M47BbLqOaTlB7DhP3qa54Gr3zsFb9X2rKJGFYQtw6y8bltH92n8hSp
PUuW3iUd90hrP1k7Qt3ySLblwpywpWxOJSzGKSzWWYKuJXPs84XMM9isM3kNw0UNgiT1fIW1vfh0
vPh0vfkNfISNfMRMfeY4hWqEpTlmlEYW1GRUNZW3r+zYsnNz86LKxubS+sbihqaS1kVVS5c1rVy9
aM3ajtKywtDQYGNj499+++1/BvNZ7NA5mGO46fLQRd8Ur4jiEN1wZfl4Qek0jrmprHbLlEN+MpFJ
Ia5r5nutl9v3reQYvVKriDTctAvaJCQdSzJ65JaPmOZ0k7oLZNFNUneVVF8iS+9TFt8SyjnIWXBw
QcTqeSbZXKpRRC+FQyeFRT2e6KYSszROs2Ru02SKaRKbaQKhRRO9YKLlS3T9iLY70XFi1Xfi07OT
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
5MLC4ujoWHt7Rx8fP4ZQ/QLwuLbc3HxVVXUNDS00o2GhwY6O9jY2Vq7ubnZOziZWVp6BwfmV1VlF
pTEp6YFhUcHhUfEJKSnJGfgef39fjwBHzyBHD09nZ3sHNxt3P8fgAJcYT4doO6tgc0s/Iyt3I3tX
Kw8P1AO/GH/XLHvbVcbmu9Tse3WdzunZX1G3uLbA+JqE/nV+2m1+w1uchjc5jG+wm1xhN7/AYXGW
zfIMu/FhYnaYmB8lFseI5TFic5TVoZfXtUfIYy+P5zaOsK38tsUs7pkL3MIsExLLkmMbMV7EdHLI
769hwz8yB7fv6e/vMBbbM54jybiph5lmV7UxHjaNxwZOYFR4agZLUJDHFBoDOGZbv4x/w3I8bDP0
J0+erVi+BiZgYmxhYW6DfXxcckJ8SmZGbm5OYX1ds5mplSHNVE1Vy83Vy8c7IDEhtaV5sZOjG+DT
aDT4T1RUTEhouJGxqZe3r52TK273y8rOLymtTEvPTEhIiotLQEJIn5ic4OBki+AnPDQiJCjc2c7V
3gYVwN/Oxt3R0dPeyd3MylbP0MjA2MjO2d4rxNs7zss91dmzwNm3xTlos0tIt73vWRO3qxpml6SM
rwsCu+4tVq1+onGNqF8lepeI/hFi2kNo3URrL9HcQ3T3E9o+FloXRX891WazpFGTmF7enHne4kGl
4bbBAY3L12NF1N8h/m9z34H/08l/p/0Hdsa0NWOgDEhBG3iRkGGMksweQUFg/dXTJy86lq4ESVAF
Q3c3n/KymsaGtuysAg93Xy9Pf2+vAFh0gH9oZkZeYEAYTtDS1JebpxgSHJmRnhMeFp2ZmY2IEfBV
VNRMTMzi4xNRHRQVlTw9vWNj41NT02tq6pCSk1PDwyORUDqhoeGoNdbWtjgzICDIzMzCzc3D1tYe
HzcyMjE3t7SyssHexMjcydbFycEVTbF7tJNXvrNPs4PnWkvnnXpuR7Uczi20ujLX5IaQznWq2jWy
8ApRucToWOkeZdPoJgv3EcU9RGkPUdxO5NeQBUs4NFrEFmQJy4SIyXvK++eHWwe67jx0AA9Z+i9v
/0R+5t27D0ANtt9pAzhD3jP0+/eGly9bHRIcYW5m7WDvgrkSRwfXqMh4QA4PiwHzkuLKoMBwC3Nb
fT1j7CvKa/Gug72rn28wkouzp8ICZRRTQUFRUFAIWklYkJ2dg5OTi7q6pq+vP9OUNDW1HR2dw8Ii
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
Zvv0Zj63RS+19PyZx2f7oMxjMustPT7zvZn1bOdhMg6TFRHSiK5LS0t1rB7GPoY5JqTmz58vSWv9
Fbtws2Q7T+ZnZdazHd/S/ZnnzKxnO09Lj/k2x2e+N7PezHdLej2C37Bhw6pVq8SQs2bNkoCl85yc
HF2tUzXvFZmflVnP9rkt3Z95zsx6tvO09Jhvc3zmezPr2b5bBDP61khuGz8ay3uwFGuZ3nrrrfiL
kQcOHHC2ZvIkmZ+VWc/2uS3dn3nOzHq287T0mG9zfOZ7M+vNfDf2EsEM/hGEBH874xaw06midZo5
T+bHJfVsx7d0f3LCJpVs58k87L/qli5QCmVuZHN0cmVhbQplbmRvYmoKMTMwIDAgb2JqCjw8Ci9M
ZW5ndGggMTQzIDAgUgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDI4Mwov
SGVpZ2h0IDM1MAovQ29sb3JTcGFjZSAxMjQgMCBSCi9JbnRlcnBvbGF0ZSB0cnVlCi9CaXRzUGVy
Q29tcG9uZW50IDgKL0ZpbHRlciAvRENURGVjb2RlCj4+CnN0cmVhbQr/2P/gABBKRklGAAECAQBI
AEgAAP/AABEIAV4BGwMBIgACEQEDEQH/2wCEAAUDAwQDAwUEBAQFBQUGBw0IBwcHBxALDAkNExAU
ExIQEhIVFx4ZFRYcFhISGiMaHB8gISIhFBklJyQgJx4hISABBQUFBwYHDwgIDyAVEhUVICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIP/EAaIAAAEFAQEBAQEB
AAAAAAAAAAABAgMEBQYHCAkKCxAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKB
kaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn
aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT
1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgsR
AAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJ
ipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz
9PX29/j5+v/aAAwDAQACEQMRAD8A+y6KKKACiiigAooooAKKKKACiiigAooooAKKMiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA6Vn
69rtn4c0yXUL6URwxLkkmrzuI1LMQABkmvj39rj46nUtWi8IaNcfuIpALhkPU56VLdtEVGN99jof
E37d9hpOrTWlnohmiicrvL4zip9B/b38OXsix6hpM8HqVINfGGpnfczMecuTWdb8SHiqUB8y7H6V
+Gf2nPh74lCiPWI7d2/hl+Wu/wBN8TaRq8avZahbTqemyQGvyiilkj5jdlI9DW7o3jvxFoTh7DVb
mEr02yEU3Tkthc0XufqirK3Qgilr8+PCv7WvxA8P7Ek1D7XGvG2Ybq9a8Kft2Rvsj13Rfq8L/wBD
Sakt0HKnsz6torynwx+1J8P/ABEFU6kbORv4Zhtr0HS/Fmi61GHsNStp1PTZIDS5kDhJGrRSK4YA
ggilFMkKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo6UVFeXMdn
ayTysFSNSzE+lAHk/wC0v8X4vhr4Plht5B/aF0uyMA8rnvX5+zahPq+ui8uZGklll3MT3r0L9o74
myfEb4i6m8UxaytJFghAPHGcn8xXm+mjOoQ+xz+lEF1NJ+77qIL7l3PvVC3XLmr93/FiqlmvzGtE
ZdCdE7YqdYjjOOKI06VoWGEjnfapIj2qSM4yQM/WtCCkidOKlWP2oOlSJzBdOvswyKafttscOkEg
Azw+04+hp7DtfYtws8Z+Rip9jW1o/i3W9FkD2WoTwleRsciucXVIoji4hmhP+0mRVu2u7a5x5U8b
H0Dc/lSsnuNScdj2Lwr+1D448PlVfUXuY1/hlG6vWPC37aaSbI9Z0tT6tE2D+Rr5RiTnkVaiXmod
GPQv2r6n3v4c/aN8DeIAq/2j9kkb+GdSv69K7vT9f0zVYxJZ31vOpHBRwa/NmCSaFgYnZcehrf0X
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
rKyg2nZ1WZVtW5XSohhn37qjszPTm9k1xZMEXaI8dQ+iY3Ts0KGbl6LArEvXIKkgCDx16PvN7Ooo
hG95O9/7/f1+33tEbZ2m7zspQVRzQ5UrpaduTk2Lgx8pRR3UTlimFfjpYnGMseu5kr+719Zn0tiy
3se1dvv2PbWVZWAh6i22txD6IZFmAB+ZnyhlgLPAHZav2D4BPFgOrBrwI6IDD5q5MNPRnHSlsi2R
U+aiKCqvYjtJrvv5uca+i7WJg/5cj2bWjr2z6qrRTNS090ShvA+uRBnPX1T2bDUUpw3jnEhDGiny
rtXfK0zHEZErEEoGUjVkuZ9qTp114HUYu126k+P49hClPslgqIm16bKZHYV9AHYqy+wQ8AXo8bJi
D+eBe2H/W1HDk8AnYT9kh3nWrR/2F65T4HuEPTXgzhSuxfHaih9eLQFD91QjaIxzTcTT1zlzpIjv
MdQZmPdGOaYLMXeWqhM3gDthH1mqZgqxXfuu6iXuewJ30+M70Zs5C1ygHElysRXZFNA8CVgUfYuw
SQ48Ps4eVeB3qJjAHLmJ3M0o9x7VERtno1KBVnqNV8ZP47nxxfhlbBjPgH6sdtd7fP/p4xV117Y+
PPmNetw5rr2dG1VhVnFlC93/xzKEj9knOabB06FZWGvYduQPmsxMsAwoxH8FPpf6khNV3NXu7bhF
EsxQPixsJbpLVG4p1Oo9g0qsHCvYAHZwksQsWhy4U2u6OXh32CJ6bflNV7Lrhv769nr72vIebcqo
KSgTzbNEZpSxW6Pk3Xjb/WaREZ84Or7nvYpayf5JRRA/hTlaKvIUVfRWUNbEb2cOfhu2flw/pef1
Qf08CT2tn9Gv6KMRvgx0Sc/Cc1Efo0nwsGkh4hKgioMz1E5UY40D4inx8rRbZJH9D0AZ/WYKZW5k
c3RyZWFtCmVuZG9iagoxMzQgMCBvYmoKPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Bc2NlbnQg
ODgwCi9DYXBIZWlnaHQgNjc5Ci9EZXNjZW50IC0yNjMKL0ZsYWdzIDMyCi9Gb250QkJveCBbIC03
NiAtNDIzIDE3NTggMTE2Nl0KL0ZvbnROYW1lIC9KSlpYUFcjMkJFVEgtTGlnaHQKL0l0YWxpY0Fu
Z2xlIDAKL1N0ZW1WIDAKL01heFdpZHRoIDE5NjMKL1hIZWlnaHQgNTAxCi9Gb250RmlsZTIgMTQ2
IDAgUgo+PgplbmRvYmoKMTM1IDAgb2JqClsgMjE4IDAgMCAwIDAgMCAwIDAgMzAxIDMwMSAwIDAg
MCAwIDIwOCA0MTUgNjE3IDAgMCA0NjMgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2MDggNTYz
IDAgMCAwIDAgNjg3IDAgMCAwIDAgMCA4OTUgNzE0IDAgNTE5IDAgNTQ0IDUwNCAwIDAgMCA5NTMg
MCAwIDAgMCAwIDAgMCAwIDAgNTE5IDU1OCA0NDMgNTU2IDUwMyAwIDU1NiA1NzkgMjU1IDAgNDcz
IDI1NSA4ODggNTc5IDU0MCA1NTggMCAzNTQgNDMxIDM2OSA1NzkgNDcxIDc5MSAwIDQ2NCAwIDAg
MCAwIDU4NF0KZW5kb2JqCjEzNiAwIG9iago8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0FzY2Vu
dCA4ODAKL0NhcEhlaWdodCA2NzkKL0Rlc2NlbnQgLTI1OQovRmxhZ3MgOTYKL0ZvbnRCQm94IFsg
LTE4OCAtNDIzIDE3NTkgMTE2Nl0KL0ZvbnROYW1lIC9KSkZKUlQjMkJFVEgtTGlnaHRJdGFsaWMK
L0l0YWxpY0FuZ2xlIC0xMQovU3RlbVYgMAovTWF4V2lkdGggMTk2MwovWEhlaWdodCA1MTIKL0Zv
bnRGaWxlMiAxNDcgMCBSCj4+CmVuZG9iagoxMzcgMCBvYmoKWyA0NDkgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1MzQgMCAyNDkgMCAwIDAgMCA1NjYgMCA1MzUgMCAwIDAg
MCAwIDAgMCAwIDQ2N10KZW5kb2JqCjEzOCAwIG9iagoxNDIxNDMKZW5kb2JqCjEzOSAwIG9iagpb
L0lDQ0Jhc2VkIDE0OCAwIFJdCmVuZG9iagoxNDAgMCBvYmoKMjI3ODkKZW5kb2JqCjE0MSAwIG9i
agpbL0lDQ0Jhc2VkIDE0OSAwIFJdCmVuZG9iagoxNDIgMCBvYmoKPDwKL0xlbmd0aCAxNTAgMCBS
Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggMTI0Ci9IZWlnaHQgMTE3Ci9D
b2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9JbnRlcnBvbGF0ZSB0cnVlCi9CaXRzUGVyQ29tcG9uZW50
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
UqFG4YTCoMKUIk3RRjFMMVuxVPGw4mXFJ0p4JUMlXyWeUqHSAaXzSiM0hKZHY9O4tHW0OtoF2igd
RzeiB9Iz6CX07+i99EllJWV75RjlAuUa5VPKQwyEYcgIZGQxyhjHGLcY71Q0VbxU+CqbVJpUBlSm
VeeoeqryVYtVm1Vvqr5TY6r5qmWqbVVrU3ugjlE3VY9Qz1ffo35BfWIOfY7rHO6c4jnH5tzVgDVM
NSI1lmkc0OjRmNLU0vTXFGnu1DyvOaHF0PLUytCq0DqtNa5N03bXFmhXaJ/RfspUZnoxs5hVzC7m
pI6GToCOVGe/Tq/OjK6R7nzdtbrNug/0SHosvVS9Cr1OvUl9bf1Q/eX6jfp3DYgGLIN0gx0G3QbT
hkaGsYYbDNsMnxipGgUaLTVqNLpvTDX2MF5sXGt8wwRnwjLJNNltcs0UNnUwTTetMe0zg80czQRm
u836zbHmzuZC81rzQQuKhZdFnkWjxbAlwzLEcq1lm+VzK32rBKutVt1WH60drLOs66zv2SjZBNms
temw+d3W1JZrW2N7w45q52e3yq7d7oW9mT3ffo/9bQeaQ6jDBodOhw+OTo5ixybHcSd9p2SnXU6D
LDornFXKuuSMdfZ2XuV80vmti6OLxOWYy2+uFq6Zroddn8w1msufWzd3xE3XjeO2323Ineme7L7P
fchDx4PjUevxyFPPk+dZ7znmZeKV4XXE67m3tbfYu8V7mu3CXsE+64P4+PsU+/T6KvnO9632fein
65fm1+g36e/gv8z/bAA2IDhga8BgoGYgN7AhcDLIKWhFUFcwJTgquDr4UYhpiDikIxQODQrdFnp/
nsE84by2MBAWGLYt7EG4Ufji8B8jcBHhETURjyNtIpdHdkfRopKiDke9jvaOLou+N994vnR+Z4x8
TGJMQ8x0rE9seexQnFXcirir8erxgvj2BHxCTEJ9wtQC3wXbF4wmOiQWJd5aaLSwYOHlReqLshad
SpJP4iQdT8YmxyYfTn7PCePUcqZSAlN2pUxy2dwd3Gc8T14Fb5zvxi/nj6W6pZanPklzS9uWNp7u
kV6ZPiFgC6oFLzICMvZmTGeGZR7MnM2KzWrOJmQnZ58QKgkzhV05WjkFOf0iM1GRaGixy+LtiyfF
weL6XCh3YW67hI7+TPVIjaXrpcN57nk1eW/yY/KPFygWCAt6lpgu2bRkbKnf0m+XYZZxl3Uu11m+
ZvnwCq8V+1dCK1NWdq7SW1W4anS1/+pDa0hrMtf8tNZ6bfnaV+ti13UUahauLhxZ77++sUiuSFw0
uMF1w96NmI2Cjb2b7Dbt3PSxmFd8pcS6pLLkfSm39Mo3Nt9UfTO7OXVzb5lj2Z4tuC3CLbe2emw9
VK5YvrR8ZFvottYKZkVxxavtSdsvV9pX7t1B2iHdMVQVUtW+U3/nlp3vq9Orb9Z41zTv0ti1adf0
bt7ugT2ee5r2au4t2ftun2Df7f3++1trDWsrD+AO5B14XBdT1/0t69uGevX6kvoPB4UHhw5FHupq
cGpoOKxxuKwRbpQ2jh9JPHLtO5/v2pssmvY3M5pLjoKj0qNPv0/+/tax4GOdx1nHm34w+GFXC62l
uBVqXdI62ZbeNtQe395/IuhEZ4drR8uPlj8ePKlzsuaU8qmy06TThadnzyw9M3VWdHbiXNq5kc6k
znvn487f6Iro6r0QfOHSRb+L57u9us9ccrt08rLL5RNXWFfarjpebe1x6Gn5yeGnll7H3tY+p772
a87XOvrn9p8e8Bg4d93n+sUbgTeu3px3s//W/Fu3BxMHh27zbj+5k3Xnxd28uzP3Vt/H3i9+oPCg
8qHGw9qfTX5uHnIcOjXsM9zzKOrRvRHuyLNfcn95P1r4mPq4ckx7rOGJ7ZOT437j154ueDr6TPRs
ZqLoV8Vfdz03fv7Db56/9UzGTY6+EL+Y/b30pdrLg6/sX3VOhU89fJ39ema6+I3am0NvWW+738W+
G5vJf49/X/XB5EPHx+CP92ezZ2f/AAOY8/wKZW5kc3RyZWFtCmVuZG9iagoxNDkgMCBvYmoKPDwK
L0xlbmd0aCAxNTQgMCBSCi9OIDMKL0FsdGVybmF0ZSAvRGV2aWNlUkdCCi9GaWx0ZXIgL0ZsYXRl
RGVjb2RlCj4+CnN0cmVhbQp4AYWUTUgUYRjH/7ONBLEG0ZcIxdDBJFQmC1IC0/UrU7Zl1UwJYp19
d50cZ6eZ3S1FIoTomHWMLlZEh4hO4aFDpzpEBJl1iaCjRRAFXiK2/zuTu2NUvjAzv3me//t8vcMA
VY9SjmNFNGDKzrvJ3ph2enRM2/waVahGFFwpw3M6EokBn6mVz/Vr9S0UaVlqlLHW+zZ8q3aZEFA0
KndkAz4seTzg45Iv5J08NWckGxOpNNkhN7hDyU7yLfLWbIjHQ5wWngFUtVOTMxyXcSI7yC1FIytj
PiDrdtq0ye+lPe0ZU9Sw38g3OQvauPL9QNseYNOLim3MAx7cA3bXVWz1NcDOEWDxUMX2PenPR9n1
ysscavbDKdEYa/pQKn2vAzbfAH5eL5V+3C6Vft5hDtbx1DIKbtHXsjDlJRDUG+xm/OQa/YuDnnxV
C7DAOY5sAfqvADc/AvsfAtsfA4lqYKgVkctsN7jy4iLnAnTmnGnXzE7ktWZdP6J18GiF1mcbTQ1a
yrI03+VprvCEWxTpJkxZBc7ZX9t4jwp7eJBP9he5JLzu36zMpVNdnCWa2NantOjqJjeQ72fMnj5y
Pa/3GbdnOGDlgJnvGwo4csq24jwXqYnU2OPxk2TGV1QnH5PzkDznFQdlTN9+LnUiQa6lPTmZ65ea
XdzbPjMxxDOSrFgzE53x3/zGLSRl3n3U3HUs/5tnbZFnGIUFARM27zY0JNGLGBrhwEUOGXpMKkxa
pV/QasLD5F+VFhLlXRYVvVjhnhV/z3kUuFvGP4VYHHMN5Qia/k7/oi/rC/pd/fN8baG+4plzz5rG
q2tfGVdmltXIuEGNMr6sKYhvsNoOei1kaZ3iFfTklfWN4eoy9nxt2aPJHOJqfDXUpQhlasQ448mu
ZfdFssU34edby/av6VH7fPZJTSXXsrp4Zin6fDZcDWv/s6tg0rKr8OSNkC48a6HuVQ+qfWqL2gpN
Paa2q21qF9+OqgPlHcOclYkLrNtl9Sn2YGOa3spJV2aL4N/CL4b/pV5hC9c0NPkPTbi5jGkJ3xHc
NnCHlP/DX7MDDd4KZW5kc3RyZWFtCmVuZG9iagoxNTAgMCBvYmoKODcKZW5kb2JqCjE1MSAwIG9i
ago0MzExCmVuZG9iagoxNTIgMCBvYmoKMTQwMwplbmRvYmoKMTUzIDAgb2JqCjI2MTUKZW5kb2Jq
CjE1NCAwIG9iago3OTIKZW5kb2JqCjEyMCAwIG9iaiA8PAovRm9udCA8PCAvRjI1IDkgMCBSIC9G
MzggMTggMCBSIC9GOCA1IDAgUiAvRjExIDExNyAwIFIgL0Y3IDYgMCBSIC9GMTQgMTA2IDAgUiAv
RjM5IDExIDAgUiAvRjE2IDQgMCBSID4+Ci9YT2JqZWN0IDw8IC9JbTUgMTE4IDAgUiA+PgovUHJv
Y1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMTU3IDAgb2JqIDw8Ci9MZW5ndGggMTgzNiAg
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
SJHgWEz2lLODlQ0OAiBGP+1xkPOtKciRkyBHcsr0G+DpZwiahZdw+u+N/wHNNJ5nCmVuZHN0cmVh
bQplbmRvYmoKMTU2IDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxNTcgMCBSCi9SZXNv
dXJjZXMgMTU1IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDE1OCAwIFIKPj4g
ZW5kb2JqCjExOSAwIG9iaiA8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvRm9ybQovRm9ybVR5
cGUgMQovUFRFWC5GaWxlTmFtZSAoLi9tZWRpYS9ldmVudFBlcmZHcmFwaC5wZGYpCi9QVEVYLlBh
Z2VOdW1iZXIgMQovUFRFWC5JbmZvRGljdCAxNTkgMCBSCi9NYXRyaXggWzAgLTEgMSAwIDAgNTk1
LjIyXQovQkJveCBbMCAwIDU5NS4yMiA4NDJdCi9SZXNvdXJjZXMgPDwKL0ZvbnQgPDwgL1RUMiAx
NjAgMCBSL1RUNCAxNjEgMCBSPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0KL0V4dEdTdGF0ZSA8
PAovR1MxIDE2MiAwIFIKPj4+PgovTGVuZ3RoIDE3MTkKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4K
c3RyZWFtCkiJbFdLbxw3DL7Pr9BxHWAVSRSp0bVoECBAgALZW5JD6zhugjgt4rb5+/0oiZqZtQ/2
DikOxcfHx0R3v7x8/S66+8elsK/iuPjK0eWcfM6uJPZR3I+75fNSg1+zi4SDEh0J+bw6SdWntQsE
93qJ7o0L7quLvib308Xg3rr3H4P7hJMvbsmcPSVXJPrC7jyUnDct/ZJx/rA8LsFHVXR1+4NpMsa3
yUjFy/MSVMmXvYQxNgkivW4nMRhTIpXkJe8kjLFJxOTDQWIwpkTkqLHdJIwxJYazU+Do/Ldr1x6u
4qoCdW/3s+HqEitU015iMKZEQm4o7iSMsUmUq5AbY0pQEg8nNwljbBIle97fYowpkVPy6/4WY2wS
JXra32KMKcGx+rK/xRibhKw+lJ1Ap+e5RPG8v8MYm4RkX/d3GGNKlEie6j5tg7FJGP6v8/oO9RCY
W6F9dUELFrWRA2m57XIZYoPcSiOXVEuXkMnIfgVdW7UrHT2LizUZY2UfIFEr/G+MsmqxpMCTwV5A
r5NOSsfoY/OFpLYXYp4MUYNTLJORFfcphclI2m5SooEwkgBKjOLV7/F3pFGtaF54m4KX7iQXUNFc
ZtEmkyhbtTNrUBLBnmgMFYDdvKPRCnt2VAPCmjIP8CoDxZ84jAwro8AEph1jhQ5YFmgvIWGnQ81C
K+S9VcIWFGBAwwYk8pCAqFZZmiqSJi8VsuRpQ4FOZMg8Ce2SWZhXDMQurxq7MgGR4RoE1jRKiHJu
vq7ZoqtxwStrMTMQuFUlqhmKyMJOYGp4Qj3fwF4vOkprZ+DWLpGi+koAWS9+imoWAWSp2w14IXwE
UI14BgUyAUKdTkA6jNgaTIJiQtvr+tRaeEFkkVF/lF6HBQkwBwQJOe42apghgBD3yCWFNQR4XiDw
UiUMNklawnS40WAkTSlBMAwdsKkEX/qVePPQ8a4YGCGAD1CkJTg04nZknJCd3N0GapBxQoHLYGQF
CWF01PEKaUHnEMwIuKRdM1TzDKjBLRmx5WoMBCujSZphUZXmZF3TJJD5Ohg4BraiUQqRDLDTZCA7
Gb6naQRilQtPq8hr566jtyutrRxpYj4w6ryEFEQZw3yTQOdGDzTP2x0MUFWjiwrAcRo0EsjowomG
U8gwa2efcQh5NyyuGJqg0KZFmltArpoP1v2p06tGjjHSu025qNGcZuBQbwgVA6lt3rQmo3Q2BdSc
IDGg57Z4MBVzM8dmA5lbWo4wQdntnAqIbARezWXchY7ZJKs5nHJjAEMD4wmKFfG1bTi1mcqKxka3
vs4SxsUAEFoHK+q77bHtWSzmCzYiVY8WR0arryKmoO1Dc/Yead2o2j7EYp6CVoMw7od8AJHGoaYZ
wiimfhjarsmlDG8GvYaNhjhG5yQVDOt0vm2kvFazPWpZceWNVlsrOpv5gmAI0DhpJfNGopAllI3W
nSFoPxrXIbaCnwFuPCkd5zmIifxmuyD+/RBa9O65olwxEMnQuqWgy/bMhDauJNb5ho5AQVse51kz
KcC5naN2QPPoIbovwH1BYzeGNAbGsDG0OgW4HvTapoZQmYxWCZKDMUrLkKBCesOMAIK+gp5nDF1F
BIDsgIuiq4hgaxo0t1Vk28SuGLqCt9EkxSZ51GKARLHBHXN3HcAwRtAmINqIWiwita5QkOre3CKG
EJpAQZCNocnf1j1b5+4Xbcv6CbBb4cZOl23ZVojs1/MhAAPHjntU8W3540XbHcpxRWorE7pMGRtX
g+fTnYrn1nTQ0LUiE4fdYSwTa5wLCbUl5+m6MXfBg4qmVUeYTu7d1BtjsNhsRlrX5+ZktJ54VNHV
osuxHHp1b97JKrxPyme6u4x5cNTQtSIbrefNltTLHqZYnWZNz9MeNofrQcNQyj4dqrOX67bc9Eb5
TEGTNbe9hqY06n6ZD1Af2F8HCqO0inxaHHEsF1cqulq0DNp/yxi2kdfSoM6a8Q3r4zzYwLtS0JT+
clleXi4Atbt8XoKLbac595/g9OMIjSFGHZFB3OUBMvf4u9zqv5/LKdxcvi5nbZUrFixclIu7/Lqc
Yju4vFhOqT0FPQz9jDaOiecpzvNJ2hOyW6W6c9LkJlZpXb1LVRven0K8ORdfTon6b2bpD2WtN0m/
Rk/xBrsbMg9bdaCmjRFvGEtC3hjpWoJuPl7eaISyRQgxRabO/QdDr2OK0LtiDdwjBMtOr/67+/7P
o/v77od7d3f71/dPLVD2WjANVFvDwqcf83jdhxBVxVmfkrQwv737/bv77d/HP93ly8Od+3B6eLy7
/XCjOl9dlv8FGADZK5hwCmVuZHN0cmVhbQplbmRvYmoKMTU5IDAgb2JqCjw8Ci9DcmVhdGlvbkRh
dGUgKEQ6MjAxMDAxMDQyMDU3MzErMDInMDAnKQovQXV0aG9yIChha2FtaWwwMSkKL0NyZWF0b3Ig
KFBTY3JpcHQ1LmRsbCBWZXJzaW9uIDUuMi4yKQovUHJvZHVjZXIgKEFjcm9iYXQgRGlzdGlsbGVy
IDcuMC41IFwoV2luZG93c1wpKQovTW9kRGF0ZSAoRDoyMDEwMDEwNDIwNTczMSswMicwMCcpCi9U
aXRsZSAoZXZhbHVhdGlvbiBBZnJlZC54bHMpCj4+CmVuZG9iagoxNjAgMCBvYmoKPDwKL1N1YnR5
cGUgL1RydWVUeXBlCi9Gb250RGVzY3JpcHRvciAxNjMgMCBSCi9MYXN0Q2hhciA1NwovV2lkdGhz
IFsgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2XQovQmFzZUZvbnQgL0JK
SEpERiMyQkFyaWFsTVQKL0ZpcnN0Q2hhciA0OAovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwov
VHlwZSAvRm9udAo+PgplbmRvYmoKMTYxIDAgb2JqCjw8Ci9TdWJ0eXBlIC9UcnVlVHlwZQovRm9u
dERlc2NyaXB0b3IgMTY0IDAgUgovTGFzdENoYXIgMTE4Ci9XaWR0aHMgWyAyNzggMCAwIDAgMCAw
IDAgMCAzMzMgMzMzIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDY2NyAwIDAgMCAwIDAgMCAwIDgzMyAwIDAgNjY3IDAgMCA2NjcgNjExIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDU1NiAwIDU1NiA2MTEgNTU2IDAgMCA2MTEgMjc4IDAgMCAwIDg4
OSA2MTEgNjExIDYxMSAwIDM4OSA1NTYgMzMzIDYxMSA1NTZdCi9CYXNlRm9udCAvQkpISkRIIzJC
QXJpYWwtQm9sZE1UCi9GaXJzdENoYXIgMzIKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKL1R5
cGUgL0ZvbnQKPj4KZW5kb2JqCjE2MiAwIG9iago8PAovT1BNIDEKL09QIGZhbHNlCi9CRzIgL0Rl
ZmF1bHQKL29wIGZhbHNlCi9UeXBlIC9FeHRHU3RhdGUKL1NBIGZhbHNlCi9VQ1IyIC9EZWZhdWx0
Ci9TTSAwLjAyCj4+CmVuZG9iagoxNjMgMCBvYmoKPDwKL1N0ZW1WIDg4Ci9Gb250TmFtZSAvQkpI
SkRGIzJCQXJpYWxNVAovRm9udFN0cmV0Y2ggL05vcm1hbAovRm9udEZpbGUyIDE2NSAwIFIKL0Zv
bnRXZWlnaHQgNDAwCi9GbGFncyAzMgovRGVzY2VudCAtMjExCi9Gb250QkJveCBbIC02NjUgLTMy
NSAyMDAwIDEwMDZdCi9Bc2NlbnQgOTA1Ci9Gb250RmFtaWx5IChBcmlhbCkKL0NhcEhlaWdodCA3
MTgKL1hIZWlnaHQgNTE1Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovSXRhbGljQW5nbGUgMAo+Pgpl
bmRvYmoKMTY0IDAgb2JqCjw8Ci9TdGVtViAxMzgKL0ZvbnROYW1lIC9CSkhKREgjMkJBcmlhbC1C
b2xkTVQKL0ZvbnRTdHJldGNoIC9Ob3JtYWwKL0ZvbnRGaWxlMiAxNjYgMCBSCi9Gb250V2VpZ2h0
IDcwMAovRmxhZ3MgMzIKL0Rlc2NlbnQgLTIxMQovRm9udEJCb3ggWyAtNjI4IC0zNzYgMjAwMCAx
MDEwXQovQXNjZW50IDkwNQovRm9udEZhbWlseSAoQXJpYWwpCi9DYXBIZWlnaHQgNzE4Ci9YSGVp
Z2h0IDUxNQovVHlwZSAvRm9udERlc2NyaXB0b3IKL0l0YWxpY0FuZ2xlIDAKPj4KZW5kb2JqCjE2
NSAwIG9iago8PAovTGVuZ3RoIDE1MTc3Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGgxIDMy
ODg0Cj4+CnN0cmVhbQpIidRWezyU+Rr/zdU99xJDr1u5DH4zQu4it8KIcYmSMQ0GY2Znxt0pM0e6
bZFQbEVSLmtT0damUKuVwonktGmrjVxKUc5KW9h3ot2tc87uf+fy+33ez/s+19/zvM/3ed4XYAAA
i0AWwIHINYHengaOb4ZRzhgAmpm0QAuq/ENqPABasSgvmMlh8MwLPIsBSMMDgHFgJguRIpOeZFTe
AgARRvNiOB1pG0oA0J1A6cSYhLTopqIJAgC+tQAom8SyGFu6Di3PByDLAfVnHYsyVCxV5gAwikRp
g1iOMHXRylAXlM5GzzdK4DIZILHqEAARd1GazGGk8uQ85atQexKqjyQyOKyeCPc3AKSj9oRGHlcg
RPNAV7qLRM7js3gBs62jALii58ui5wDM+y25A80Y9K4G3i/NzVCsGU6UMcnxynmtgJHClok1fVCW
FxaDoSyC8kTpeQmWQAAwkihrSsTgMWIbLAZfFgD9Ifl3HFK5Dhqdw/tNA1FAALggAbCAEL2cJBsi
H/vDK1W4d146NLjT4+evxqfpjyP1y8Rql6AYK7kMsUprl/as+ly8gXRik2Cz+qb7x6HCr3Fi8Gg4
oqOUZVCbiAvCy6ouDmbx2YHsmESEzk8SCBE/ljCFy4+nLIHqEgU51UUfFMiIdyLTnEKGJvMC/d8s
2RwWEihkcHjsxBgkkMVPZjNZSACXK6SshNR5bVM/GuLjvdrV28ebvgFZ7ebm7k93X0NGjJjGtjbI
x2dAnSUKtjbQikKF71fYEgW4ElKgDdXSytbKNux/PwFR6e/fOYYAcKK96HvfhRWJwG1zZCI2k2xm
LiKdIZ6tlDuvrBByL/Bu0kC7pcnZ3imZ8JWTo3mzMvK3+rXCvukcntp55kjLDsNnfwlVEsSl3vxM
fea70CnjL0MjivAzZlHKoSLSjc8K7uiFWtzpUCNkW18sqGnwXTv6wl7vq+DirbqHE3Ja1noejGs4
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
rEzjM1dWCav58yJD54vWYrTBr0DT0CR0FApDIagd8kNCXWtF/ZjRaDc5DwWgeyBdPoJ4vYjVape7
jFlWTSfTb1eTCvmcwHpwc1YgCMtYgV7YG1Zgn4hU0BkSkGEQPYOZOwWfssRl3D5dtF9YYg520hKd
sL1W4F7YHitwXkSq6cNEOCTaZ/suvLf0nZbYjWoPWaIF1mYFmmXtVjzIj7stNEYuw/02ta74pCZL
bIE1WmKzrO0iATnx1EnaVfeWQdJ5Gh26OktjDmrcJT4QL4grwP+GgcXncUnPOGAX/Bm626gU8+2v
onJEWJFKWR/7w7TtpvQzYtI/Kl5GW9Q/I14U94rx9owLl0+g36PqEZY4qmfYKWOFGBZBMdB+WRwQ
D4qviZ1irx/XLfFVMS+7SfppjJ2aEVE0+EW8hd8SD/gzqos7xPeEIQJisz4vx5dsKrYbbp+XI0BC
xadvwPi2+jPyG384nKHLjVbtmpbU9mhbtS1ak9aordUatDpXrcvjqnFVuSpdLpfT5XAxF3HVZQp5
o43gs63DcQ7mdMjUofIeJlMkSAmjLkYeJOYK3sN6dm2lPWb2UdKzTzf/vqspQysf+oq5rGkrNWt7
SE/fVnNTW09GK+w0w209phbdE5umdLwfV012LENJXyxDC/LSSL1Zuw03yciJ+llC6d0jJ/r7ic/7
ZLevu7Zr+eYd2z8midtp23/+fLdmG8wf9eyKmT9v6DdD/ya9emObuq74vfe95+d37ec820ns/HH9
7Fc7GY+Qf07AwZCXxGEwC0QaWuytngKVSaAfwCQhdNICrNMQKx9SaRRNTCKbGNBqEnbSVUlaNhhT
Jb7RbQKqqRsVbKXTAlMbUVSIs3OfEwpavu3Z9577zvnde84795zz3mWDBV8qkTvSq76cnCYlRO6O
TxMHI6nkNL+PlHS/wPj8vngKYHdMGESzA2CohhGAWTuRymBQTzoZDPaoiAvDdMAFGAEclVHYxIWp
bOJ4zHD5m2p3PK+qJgaOUTdNzM0QegoDEQNz4/lw2ERpKk4yFE5qqmnYt8yF/H6A1PlNCIbvOnMh
PzaV5eq/gYQWIS1PIC2mLg5/g/EXMaW1S5jSWsDo/+eV6dTxZOPw6JXujNbdp3VnoPXl3jgw4M0d
3qmq+dFhJlBzXLhv5ysDjO7I5Ia1TDw3qsXVfOOVZcRXmLhRi+fRle5tyfwVIxOfaDQau7Ud8dRk
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
/aZV+sBOLwA6wT5UbkX/Ia/aVRoIouhgEdIZEAsL4VY2sptHF0iTRxEDMbLZNDYyuLPJknEnzE4U
f8HPsNLGzsLvEBtbwQ8QbIKCZ8YQbHygVsoyd+6cOfcxO3fvKpZimDmLWBMrDd1KDjxxDAIiYe9D
azmc/9BTcZEZ4cYUsOmCkwHbwvwar8yqeErMm2sVh9ZhITEHsBkiB+OsAvjLMDQ7hIzA0tjnYF64
XG0mEXYOMGs2BqbwZr5/CgIqED9BVOPi2qiEteWYudcBTkioTGtPbMPF60L2EDt2p+HgWzsBrzb/
I2dpvfnh8UTEfF/QOYUjQV2VKgOImkpPlOYmUSlN5L5PLW74J6SidUZ9JacWyWgrhV25Wi15EBWf
6lJSkAxHJqNAZEIfiqjRaXda7c26Trj0GkpG3fBrkNPPKNQ8Egdcj0nFH+ZGWgyTzAgtIkpSMqAO
+rTDDW1Q2KVeHPvE04iEzMTRCDT/n9d2g3VYG6MFufmm0gNXkVNotsbfY3nYsZlFOF34q6w/8M3Z
rpw7YQ+shsg5dN4C7nQAbLug0F1f/9VL98Pm9e3u3nLtMb+Wd2389K62buerm8uV2ezpucDyq1ja
Pu76/IsAAwDfCsYRCmVuZHN0cmVhbQplbmRvYmoKMTU1IDAgb2JqIDw8Ci9Gb250IDw8IC9GMjUg
OSAwIFIgL0YzOSAxMSAwIFIgL0Y4IDUgMCBSIC9GNDIgMTIgMCBSID4+Ci9YT2JqZWN0IDw8IC9J
bTYgMTE5IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMTY5IDAgb2Jq
IDw8Ci9MZW5ndGggMjYwMSAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqN
WUuv47YV3s+v8NIGrjXWy5KW06KDpkDSIOMiiyYLWqItYiTRQ0pze/vrc160ZEcXyMY6/PjQ0Xkf
+m+nDx8/J/mmjKrjMducLps4zaLimG+OVRLFh3xzajb/3cbZbp8c83J72pX51pmL2v1++tfHz2m5
2JnnUV5VmwNv0eNunx6LreoiXltuKliaHHHpPjtExzzf7JM8qg4p7/h5OnfGt9p52HmIt2pomPDT
eQe/u328rZ05AyvFdl7lNBOdhYlya73u3hip7XTrtBwyWnwetlrVO9jfMmpHeB9PjK2z01VwgJmY
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
jpaL2wOx7P3Y9wF8anrpsFWDkmyTYK9LNQVST/ceCTSqJ4yvNBme7K14N2YUX81hj+smLae1fKlT
3K89iEErILRZfXixnQOxYwQdUnHgXeF5ra2QFjOl+5XeM8mdBjTpkC+G+o1ByT1FKAihGnyRGR8m
JBMpTHLfdzld9VGRyrED1py5mJSYQDmS7sFW2J3YeJKknANDQirjMmewnb3S/Q2iaOA0S2U/+Ms9
0aKq9iGMdbwKutP5/sFcW897ZDNeT3g5F8WDz2fhRQxjRFjhffbgKsHeTOo1HLEvphW7XbiMxZlF
y4TDmoJd9ZgIGCEBTkPjdCPvIJXhJqitJudC2F1JkJCCnVTDfKNyL2sfT0WE2pI4X1SQWE//uQB8
qK3JD2nhdN57DRxJhR7MCXT5slo4zXeVGdgwXQInxXPLyiAHHyB66wk6AjVAEeH4c/Bq4+EWDREJ
g0Ddw6DmvRiqwonD4oYVGv/1NM4WyX9N3CsiqZHYWGBzCDENo3aS/zJmezgGrzkGm0OIXBKeKw67
mMVLX+WMtzLm0qic/yTAYNCt3pYuevPy3pvjoAhNZCJXUwX/9VDOV8wgKb4sw9XncIsNK4K/rl4v
IUoJpKQbdmeXIkOQXa8s/lqPim13kUqVN9+mk2XRDF+pF9n2gqoeav5PANcVxG/BRRE++c3FU4qi
zY42c+OHYzRxCgj4bjaZFQ97ujliA/rwj9OHPwDlEmfeCmVuZHN0cmVhbQplbmRvYmoKMTY4IDAg
b2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxNjkgMCBSCi9SZXNvdXJjZXMgMTY3IDAgUgov
TWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDE1OCAwIFIKPj4gZW5kb2JqCjE2NyAwIG9i
aiA8PAovRm9udCA8PCAvRjI1IDkgMCBSIC9GMzggMTggMCBSIC9GOCA1IDAgUiAvRjE2IDQgMCBS
ID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNzIgMCBvYmogPDwKL0xlbmd0
aCAzMDE3ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42o1ZS3fbNhbe91d4
V+oci+VbpHeyLSd24sRjqvFpp7OATNjCmCJVPpLjZjF/fe4LpGxLaVcC7gVA4D6/e3W6/OmXiyA+
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
8v6vnpoYOLliGBTKU+EWA/wjfttv+T8V/nsj8m3pi/iof3yU/15gWtXV9KGvOPbgW2VVI60R3UwP
Wl5nEM+GXsYQAn6/mUaLhfneWDgDp9rFsmJhni8WBvx8cUua+XJ5tsiZ9LOXCnOP+XlSJ3iZmB98
DyXPJFtt7zG4x4buh8iXAlVMXT4KmUydMpEad/z3IFadx0y9438XsTLhHIjMc3SuM1sPzLiFa4vV
BdPO6g2C077TjXxUfNZogdeH+y/pqzaa9z1MqE3302L50/8B2S+ZigplbmRzdHJlYW0KZW5kb2Jq
CjE3MSAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgMTcyIDAgUgovUmVzb3VyY2VzIDE3
MCAwIFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCAxNTggMCBSCj4+IGVuZG9iagox
NzAgMCBvYmogPDwKL0ZvbnQgPDwgL0YyNSA5IDAgUiAvRjE2IDQgMCBSIC9GMzkgMTEgMCBSID4+
Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNzMgMCBvYmoKWzM2MS4xXQplbmRv
YmoKMTc0IDAgb2JqCls3NzcuOCAyNzcuOCA3NzcuOCA1MDAgNzc3LjggNTAwIDc3Ny44IDc3Ny44
IDc3Ny44IDc3Ny44IDc3Ny44IDc3Ny44IDc3Ny44IDEwMDAgNTAwIDUwMCA3NzcuOCA3NzcuOCA3
NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3Nzcu
OCAxMDAwIDEwMDAgNzc3LjggNzc3LjggMTAwMCAxMDAwIDUwMCA1MDAgMTAwMCAxMDAwIDEwMDAg
Nzc3LjggMTAwMCAxMDAwIDYxMS4xIDYxMS4xIDEwMDAgMTAwMCAxMDAwIDc3Ny44IDI3NSAxMDAw
IDY2Ni43IDY2Ni43IDg4OC45IDg4OC45IDAgMCA1NTUuNiA1NTUuNiA2NjYuNyA1MDAgNzIyLjIg
NzIyLjIgNzc3LjggNzc3LjggNjExLjEgNzk4LjUgNjU2LjggNTI2LjUgNzcxLjQgNTI3LjggNzE4
LjcgNTk0LjkgODQ0LjUgNTQ0LjUgNjc3LjggNzYyIDY4OS43IDEyMDAuOSA4MjAuNSA3OTYuMSA2
OTUuNiA4MTYuNyA4NDcuNSA2MDUuNiA1NDQuNiA2MjUuOCA2MTIuOCA5ODcuOCA3MTMuMyA2Njgu
MyA3MjQuNyA2NjYuNyA2NjYuNyA2NjYuNyA2NjYuNyA2NjYuNyA2MTEuMSA2MTEuMSA0NDQuNCA0
NDQuNCA0NDQuNCA0NDQuNCA1MDAgNTAwXQplbmRvYmoKMTc1IDAgb2JqCls1MjUgNTI1IDUyNSA1
MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUy
NSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1
IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUg
NTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1
MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUy
NSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjVdCmVuZG9iagoxNzYgMCBv
YmoKWzM4My4zIDMxOS40IDU3NSA1NzUgNTc1IDU3NSA1NzUgNTc1IDU3NSA1NzUgNTc1IDU3NSA1
NzUgMzE5LjQgMzE5LjQgMzUwIDg5NC40IDU0My4xIDU0My4xIDg5NC40IDg2OS40IDgxOC4xIDgz
MC42IDg4MS45IDc1NS42IDcyMy42IDkwNC4yIDkwMCA0MzYuMSA1OTQuNCA5MDEuNCA2OTEuNyAx
MDkxLjcgOTAwIDg2My45IDc4Ni4xIDg2My45IDg2Mi41IDYzOC45IDgwMCA4ODQuNyA4NjkuNCAx
MTg4LjkgODY5LjQgODY5LjQgNzAyLjggMzE5LjQgNjAyLjggMzE5LjQgNTc1IDMxOS40IDMxOS40
IDU1OSA2MzguOSA1MTEuMSA2MzguOSA1MjcuMSAzNTEuNCA1NzUgNjM4LjkgMzE5LjQgMzUxLjQg
NjA2LjkgMzE5LjQgOTU4LjMgNjM4LjkgNTc1IDYzOC45IDYwNi45IDQ3My42IDQ1My42IDQ0Ny4y
IDYzOC45IDYwNi45IDgzMC42IDYwNi45IDYwNi45IDUxMS4xIDU3NV0KZW5kb2JqCjE3NyAwIG9i
agpbMzE0LjggNTI0LjcgNTI0LjcgNTI0LjcgNTI0LjcgNTI0LjcgNTI0LjcgNTI0LjcgNTI0Ljcg
NTI0LjcgNTI0LjcgNTI0LjcgMzE0LjggMzE0LjggMzE0LjggNzg3IDUyNC43IDUyNC43IDc4NyA3
NjMgNzIyLjUgNzM0LjYgNzc1IDY5Ni4zIDY3MC4xIDc5NC4xIDc2MyAzOTUuNyA1MzguOSA3ODku
MiA2NDMuOCA5MjAuNCA3NjMgNzg3IDY5Ni4zIDc4NyA3NDguOCA1NzcuMiA3MzQuNiA3NjMgNzYz
IDEwMjUuMyA3NjMgNzYzIDYyOS42IDMxNC44IDUyNy44IDMxNC44IDUyNC43IDMxNC44IDMxNC44
IDUyNC43IDQ3Mi4yIDQ3Mi4yIDUyNC43IDQ3Mi4yIDMxNC44IDQ3Mi4yIDUyNC43IDMxNC44IDMx
NC44IDQ3Mi4yIDI2Mi4zIDgzOS41IDU3Ny4yIDUyNC43IDUyNC43IDQ3Mi4yIDQzMi45IDQxOS44
IDM0MS4xIDU1MC45IDQ3Mi4yIDY4Mi4xIDQ3My44IDQ5OC41XQplbmRvYmoKMTc4IDAgb2JqCls0
MDguOSA0MDguOSA1MTEuMSA3NjYuNyAzMDYuNyAzNTcuOCAzMDYuNyA1MTEuMSA1MTEuMSA1MTEu
MSA1MTEuMSA1MTEuMSA1MTEuMSA1MTEuMSA1MTEuMSA1MTEuMSA1MTEuMSA1MTEuMSAzMDYuNyAz
MDYuNyAzMDYuNyA3NjYuNyA1MTEuMSA1MTEuMSA3NjYuNyA3NDMuMyA3MDMuOSA3MTUuNiA3NTUg
Njc4LjMgNjUyLjggNzczLjYgNzQzLjMgMzg1LjYgNTI1IDc2OC45IDYyNy4yIDg5Ni43IDc0My4z
IDc2Ni43IDY3OC4zIDc2Ni43IDcyOS40IDU2Mi4yIDcxNS42IDc0My4zIDc0My4zIDk5OC45IDc0
My4zIDc0My4zIDYxMy4zIDMwNi43IDUxNC40IDMwNi43IDUxMS4xIDMwNi43IDMwNi43IDUxMS4x
IDQ2MCA0NjAgNTExLjEgNDYwIDMwNi43IDQ2MCA1MTEuMSAzMDYuNyAzMDYuNyA0NjAgMjU1LjYg
ODE3LjggNTYyLjIgNTExLjEgNTExLjEgNDYwIDQyMS43IDQwOC45IDMzMi4yIDUzNi43IDQ2MCA2
NjQuNCA0NjMuOSA0ODUuNl0KZW5kb2JqCjE3OSAwIG9iagpbMzI4LjcgNTkxLjcgNTkxLjcgNTkx
LjcgNTkxLjcgNTkxLjcgNTkxLjcgNTkxLjcgNTkxLjcgNTkxLjcgNTkxLjcgNTkxLjcgMzI4Ljcg
MzI4LjcgMzYwLjIgOTIwLjQgNTU4LjggNTU4LjggOTIwLjQgODkyLjkgODQwLjkgODU0LjYgOTA2
LjYgNzc2LjUgNzQzLjcgOTI5LjkgOTI0LjQgNDQ2LjMgNjEwLjggOTI1LjggNzEwLjggMTEyMS42
IDkyNC40IDg4OC45IDgwOCA4ODguOSA4ODYuNyA2NTcuNCA4MjMuMSA5MDguNiA4OTIuOSAxMjIx
LjYgODkyLjkgODkyLjkgNzIzLjEgMzI4LjcgNjE3LjYgMzI4LjcgNTkxLjcgMzI4LjcgMzI4Ljcg
NTc1LjIgNjU3LjQgNTI1LjkgNjU3LjQgNTQzIDM2MS42IDU5MS43IDY1Ny40IDMyOC43IDM2MS42
IDYyNC41IDMyOC43IDk4Ni4xIDY1Ny40IDU5MS43IDY1Ny40IDYyNC41IDQ4OC4xIDQ2Ni44IDQ2
MC4yXQplbmRvYmoKMTgwIDAgb2JqCls1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUy
NSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1
IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUg
NTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1
MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUy
NSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1XQplbmRvYmoKMTgxIDAgb2JqCls1OTku
NSA1NzEgNTcxIDg1Ni41IDg1Ni41IDI4NS41IDMxNCA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1
MTMuOSA3NzAuNyA0NTYuOCA1MTMuOSA3NDIuMyA3OTkuNCA1MTMuOSA5MjcuOCAxMDQyIDc5OS40
IDI4NS41IDI4NS41IDUxMy45IDg1Ni41IDUxMy45IDg1Ni41IDc5OS40IDI4NS41IDM5OS43IDM5
OS43IDUxMy45IDc5OS40IDI4NS41IDM0Mi42IDI4NS41IDUxMy45IDUxMy45IDUxMy45IDUxMy45
IDUxMy45IDUxMy45IDUxMy45IDUxMy45IDUxMy45IDUxMy45IDUxMy45IDI4NS41IDI4NS41IDI4
NS41IDc5OS40IDQ4NS4zIDQ4NS4zIDc5OS40IDc3MC43IDcyNy45IDc0Mi4zIDc4NSA2OTkuNCA2
NzAuOCA4MDYuNSA3NzAuNyAzNzEgNTI4LjEgNzk5LjIgNjQyLjMgOTQyIDc3MC43IDc5OS40IDY5
OS40IDc5OS40IDc1Ni41IDU3MSA3NDIuMyA3NzAuNyA3NzAuNyAxMDU2LjIgNzcwLjcgNzcwLjcg
NjI4LjEgMjg1LjUgNTEzLjkgMjg1LjUgNTEzLjkgMjg1LjUgMjg1LjUgNTEzLjkgNTcxIDQ1Ni44
IDU3MSA0NTcuMiAzMTQgNTEzLjkgNTcxIDI4NS41IDMxNCA1NDIuNCAyODUuNSA4NTYuNSA1NzEg
NTEzLjkgNTcxIDU0Mi40IDQwMiA0MDUuNCAzOTkuNyA1NzEgNTQyLjQgNzQyLjMgNTQyLjQgNTQy
LjQgNDU2LjggNTEzLjkgMTAyNy44IDUxMy45IDUxMy45IDUxMy45XQplbmRvYmoKMTgyIDAgb2Jq
Cls2MTEuMSA2MTEuMSA2MTEuMSA2MTEuMSA2MTEuMSA2MTEuMSA2MTEuMSA2MTEuMV0KZW5kb2Jq
CjE4MyAwIG9iagpbMzM5LjMgODkyLjkgNTg1LjMgODkyLjkgNTg1LjMgNjEwLjEgODU5LjEgODYz
LjIgODE5LjQgOTM0LjEgODM4LjcgNzI0LjUgODg5LjQgOTM1LjYgNTA2LjMgNjMyIDk1OS45IDc4
My43IDEwODkuNCA5MDQuOSA4NjguOSA3MjcuMyA4OTkuNyA4NjAuNiA3MDEuNSA2NzQuOCA3Nzgu
MiA2NzQuNiAxMDc0LjQgOTM2LjkgNjcxLjUgNzc4LjQgNDYyLjMgNDYyLjMgNDYyLjMgMTEzOC45
IDExMzguOSA0NzguMiA2MTkuNyA1MDIuNCA1MTAuNSA1OTQuNyA1NDIgNTU3LjEgNTU3LjMgNjY4
LjggNDA0LjIgNDcyLjcgNjA3LjMgMzYxLjMgMTAxMy43IDcwNi4yIDU2My45IDU4OC45IDUyMy42
IDUzMC40XQplbmRvYmoKMTg0IDAgb2JqCls1NjkuNSA1NjkuNSA1NjkuNSA1NjkuNSA1NjkuNSA1
NjkuNSA1NjkuNSA1NjkuNV0KZW5kb2JqCjE4NSAwIG9iagpbNTgzLjMgNTU1LjYgNTU1LjYgODMz
LjMgODMzLjMgMjc3LjggMzA1LjYgNTAwIDUwMCA1MDAgNTAwIDUwMCA3NTAgNDQ0LjQgNTAwIDcy
Mi4yIDc3Ny44IDUwMCA5MDIuOCAxMDEzLjkgNzc3LjggMjc3LjggMjc3LjggNTAwIDgzMy4zIDUw
MCA4MzMuMyA3NzcuOCAyNzcuOCAzODguOSAzODguOSA1MDAgNzc3LjggMjc3LjggMzMzLjMgMjc3
LjggNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCAyNzcuOCAyNzcu
OCAyNzcuOCA3NzcuOCA0NzIuMiA0NzIuMiA3NzcuOCA3NTAgNzA4LjMgNzIyLjIgNzYzLjkgNjgw
LjYgNjUyLjggNzg0LjcgNzUwIDM2MS4xIDUxMy45IDc3Ny44IDYyNSA5MTYuNyA3NTAgNzc3Ljgg
NjgwLjYgNzc3LjggNzM2LjEgNTU1LjYgNzIyLjIgNzUwIDc1MCAxMDI3LjggNzUwIDc1MCA2MTEu
MSAyNzcuOCA1MDAgMjc3LjggNTAwIDI3Ny44IDI3Ny44IDUwMCA1NTUuNiA0NDQuNCA1NTUuNiA0
NDQuNCAzMDUuNiA1MDAgNTU1LjYgMjc3LjggMzA1LjYgNTI3LjggMjc3LjggODMzLjMgNTU1LjYg
NTAwIDU1NS42IDUyNy44IDM5MS43IDM5NC40IDM4OC45IDU1NS42IDUyNy44IDcyMi4yIDUyNy44
IDUyNy44IDQ0NC40IDUwMF0KZW5kb2JqCjE4NiAwIG9iagpbMzc1IDMxMi41IDU2Mi41IDU2Mi41
IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDMx
Mi41IDMxMi41IDM0Mi42IDg3NSA1MzEuMiA1MzEuMiA4NzUgODQ5LjUgNzk5LjggODEyLjUgODYy
LjMgNzM4LjQgNzA3LjIgODg0LjMgODc5LjYgNDE5IDU4MSA4ODAuOCA2NzUuOSAxMDY3LjEgODc5
LjYgODQ0LjkgNzY4LjUgODQ0LjkgODM5LjEgNjI1IDc4Mi40IDg2NC42IDg0OS41IDExNjIgODQ5
LjUgODQ5LjUgNjg3LjUgMzEyLjUgNTgxIDMxMi41IDU2Mi41IDMxMi41IDMxMi41IDU0Ni45IDYy
NSA1MDAgNjI1IDUxMy4zIDM0My43IDU2Mi41IDYyNSAzMTIuNSAzNDMuNyA1OTMuNyAzMTIuNSA5
MzcuNSA2MjUgNTYyLjUgNjI1IDU5My43IDQ1OS41IDQ0My44IDQzNy41IDYyNSA1OTMuN10KZW5k
b2JqCjE4NyAwIG9iaiA8PAovTGVuZ3RoMSAxMzMxCi9MZW5ndGgyIDc5MDYKL0xlbmd0aDMgMAov
TGVuZ3RoIDg2OTMgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjarZR1XJTd
toDpbkkRGLoZurtBGqQFBhhgJIYYWpHulG6QVEBCpLu7kVAapJEuiTvfd+759J7z7/3N/PE+e6+1
17PXfvfLSKulyyljDbUEK0KdYJw8XDyiADl1WUMebgAPFze3LBYjo5wrGASDQJ3kQTCwKIBHRIQX
oAi2hD/A/6IC/KLcgliMADmos7crxNYOBmCRY/0rSAgg4wh2hViBnADqIJgd2BG+hhXIAaALtYKA
Yd5cABkHB4DOXxluAB2wG9jVA2zNhcXDA7CGWMEAlmBbiBMW8C8nFScbKEDoX8PW7s7/nvIAu7rB
pQAsf2uyAuCS1lAnB2+ANdgGC6gBhVcDw13+P7T+c3FFdwcHDZDjX8v/3an/mgc5Qhy8/zcC6ujs
DgO7AtSh1mBXp/8MNQD/S04W6vBfZVRgIAeIlYyTrQMYwP2vIYibIsQLbK0FgVnZAWxADm7gv8fB
Ttb/qQBv3N8CQANtbUMdI/b/PdO/J7VAECeYnrfzP8v+Ff038/xmeHdcIV4AE254e3nggfDfv59e
/kcxBScrqDXEyRbAKyAIALm6gryx4G8PnAQAvjwAiJM12AsA9oIbA7mcoDB4CgDekjcAG6gr1l8H
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
FLMEw3bTn6abJqx82cso+B/0WPymCmVuZHN0cmVhbQplbmRvYmoKMTg4IDAgb2JqIDw8Ci9UeXBl
IC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL1dRUVhSWStDTUJYMTAKL0ZsYWdzIDQKL0ZvbnRC
Qm94IFstMzAxIC0yNTAgMTE2NCA5NDZdCi9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjg2Ci9EZXNj
ZW50IC0xOTQKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDExNAovWEhlaWdodCA0NDQKL0NoYXJTZXQg
KC9BL0MvRC9FL0gvTC9OL1AvUi9TL1QvVy9hL2IvYy9kL2UvZW5kYXNoL2YvaC9oeXBoZW4vaS9r
L2wvbS9uL28vb25lL3AvcGVyaW9kL3Ivcy90L3RocmVlL3R3by91L3Yvdy94L3kpCi9Gb250Rmls
ZSAxODcgMCBSCj4+IGVuZG9iagoxODkgMCBvYmogPDwKL0xlbmd0aDEgMTMxMwovTGVuZ3RoMiA2
NjgxCi9MZW5ndGgzIDAKL0xlbmd0aCA3NDYwICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+
CnN0cmVhbQp42q2UZVzU67bHRUJAuhGQAWkkhgalu0O6a4AhZphhKCnp7hSQEJCQRlI6lW5EulPp
kLyz97ln6z3n7f3Mm/mu/D3rWc+fkU7jFYekNdQSJAeFIDiAnEARgLSqlD6QBwDk5MZmZJSGgywQ
YChExgIBEgEAhYWBAElXWwAPNwAoIMLLJ8LPh80IkIY6e8LBtnYIAIs0619BggBJJxAcbGUBAaha
IOxATsgaVhaOgFdQKzAI4ckJkHR0BGj9leEC0AK5gOBuIGtObCAQYA22QgAsQbZgCDbXX4oUITZQ
gOC/zNauzv92uYHgLkhRABakSFYAUqI1FOLoCbAG2WBzqUGRvUBIJf8fov6zuJyro6OahdNf5f+e
0n/5LZzAjp7/GwF1cnZFgOAAVag1CA75z1A90L/ESUEd/6uNIsLCEWwlCbF1BAG4/2UCu8iBPUDW
GmCElR3AxsLRBfS3HQSx/k8JyLH9LYBLR8NAVkmD/X/v82+nhgUYgtD2dP6n7F/RfzPwNyOnAwd7
AIy4Obm5gchA5O/f/0z+o5ksxApqDYYgF4JfAGABh1t4YiM3A0n8AC8gAAyxBnkAQB5IxVycECgC
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
E2208A/J53eq+AfX+ekftPA4Lnrvfki+En4TClw2m52zZHjba/punDQ++XM86zAOrt3MzvuHD7U3
HNzha7x2rs1HoOatSC/cadxkvb6kUbHNSpL1Q2F3jHAU61BxZaJWxyMwezlsWp4gP/ToDUddLwg1
hXbMXl3AVAUz9Yojfs8ziftCinyisnfuHoTvLAF3gF8JD4Yy3F2Xl4lvt2ijYL97h12RWvkkLv8m
WJAGsTnl+4W6wb68RiDmG/3DrkyFapxrOrLHRafkoybUIIv9PNCxJopWMEcydeW8mQ/3M4pHq0+j
O6Ykk3UgvGTnOunCePOy5z8KIvGuF1R+3eZsHLfX07SpKVq0keNnjeqfZgttFaCWW+gocaA5x+TB
uOZ0GPuuFwrTgg7x32BmcEkO8Chr7jdUaJ66KhQPatF3y80gYq7ye5gzueUGZCRcjsfpllgVTCQu
nrutnvei0z0QMaiNLCJSKARfTCiqVAIleMTod1h9iY6/WDJ/7CEWCuOcpe5nq8OUSmm8QGOg6Klb
jHe1UJEYtc9vYsTQhbApSvhTGJYZXCTIzoA00msfcSl/7F9rvMZybBR/h7gZuUMHDu1d29JTi+6m
VJabNrfk8QhB8Xtzf5l77jWcYnFTBSrLy9g+cg483eb6nrv6WiBvYYwu8VJ9uGX0vBghm1tVY367
aNrrlcyqupbH96gDxR3DcNOKLMurvd8cE1tPLnxdfX0TPzJSIfVi+DSEPWQKTS0eFl4/FJrWpmEm
eALvuKuzchIl8FfNCsczHdy1aob3E2AWlpkwSZY30QgQJxIzwzivR6sX9kfic/2B9ggzmf8BYGin
UgplbmRzdHJlYW0KZW5kb2JqCjE5MCAwIG9iaiA8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0Zv
bnROYW1lIC9VUFlFSlArQ01CWDEyCi9GbGFncyA0Ci9Gb250QkJveCBbLTUzIC0yNTEgMTEzOSA3
NTBdCi9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjg2Ci9EZXNjZW50IC0xOTQKL0l0YWxpY0FuZ2xl
IDAKL1N0ZW1WIDEwOQovWEhlaWdodCA0NDQKL0NoYXJTZXQgKC9BL0IvQy9EL0UvSS9NL08vUi9T
L1QvVy9hL2IvYy9jb2xvbi9kL2UvZi9maXZlL2ZvdXIvZy9oeXBoZW4vaS9rL2wvbi9vL29uZS9w
L3Ivcy9zZXZlbi9zaXgvdC90aHJlZS90d28vdS92KQovRm9udEZpbGUgMTg5IDAgUgo+PiBlbmRv
YmoKMTkxIDAgb2JqIDw8Ci9MZW5ndGgxIDEwNjMKL0xlbmd0aDIgNDE2NAovTGVuZ3RoMyAwCi9M
ZW5ndGggNDg0NyAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqtU3VcVGu7
JaRBaQVENt0TpHSDNAhIIwwMMDDMEDOUNEgI0iEtXYoCEkOroBISAiMHBJVGRQSk647n3O947vn+
vb/9z17rXc961n7eZ/Nzm5iJq7mgYXBtNAojDgVB5QENQ3UrOQAKglDz82v4wp0wCDRK0wkDlweg
cnJQQA3rBkhAAKiMvKSMvIQ0NT+ggfYO8kW4uWMAIQ3hXyJZQM0L7otwdkIBhk4Yd7gXwcPZCQmY
oZ0RcEwQCFBDIoGbvyr8gJtwP7ivP9wFRA2FAi4IZwwAg7shUNTgX4F0Ua5oQPYv2gXr/Z8jf7iv
HyEUIEQIKQwQIrqgUcggwAXuSg02QhN6wQlJ/j9C/dtcG4tEGjl5/bL/NaT/OnbyQiCD/leA9vLG
YuC+gCHaBe6L+rfUEv5XNnU08r+66GKckAhnNZQbEg5A/qIQftqIQLiLCQLj7A64OiH94H/ycJTL
vyMQpvZnALCN+U0LPRPRv27zzzMTJwQKYx7k/bfrL/GfGPobE2bjiwgEbCEgCARKEBKe/7zZ/6uX
FsoZ7YJAEdZBWgZw8vV1CqIm7AUBSQN3oAAC5QIPBOCBhMBgEAqNIZQAhImEAq5oX+pflykjDYDV
flF/IlkIANb+G12XAsDmfyPC3YGdfqPrABj2G8kBYOe/EZSQFAz/G0pLAmBXhP8/CAkCgcb6/qOA
IHH7BySEQvwDEnoh/4ZShF5o1G83KRkA7E3YKbTL7wooIfk/7KEEP7/f7X8huD8c9ZshyP0I8/5d
QPDE/D4mfA7G3Rf+jy8gzAkTgP6dgZAwGO77F/Hfu6Cujg68Iy59HRCXIFRCoXLSgKw0JPT/CJ2x
vr5wFObPv4ywUf/BrgjC/sHhgXBn6j/waGeFGI+cltiaMK2ysVoyEWJ1t9ZUo6beiS6a6Ok0YmTl
oL6PyHyj1VFdHtPFFbIVroATDr97nSGmb7U3I31SH0ydrfg7ruQF4zistvMMg5a9efajv17qaJn8
+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
N0vk/TZfco23RqWNX12pak6tPBIX17CVxiPfdsQYG+BIJryHUBIdeZHH2EA78v241rioJsog7OzU
TWpOaeKVll8GHyUiN0ImSX1GNJeRsjCBtfISPoyjFQiVby985K/x1KecmieNE/qKASQVa0ZM0Y4i
vpDZJifg5JXwwCUc9cGk6bVCb8HI4XPsFlfI+FdXCkd8vGHgAesVg2SLnhdPiSXDFKx5Te3wWPg9
nFvMonFjGHG6X8MwLAHHMUlBVyTImxy9UDkwHW2ixBj5mPHkGbepIh5enX0cY+JrbfgCcejDHgeo
vrmkGJzR0O7OPxSJ52SkHeJ38uxOLFtqjnavrGkYytmerkf+cHdUyrgJ1cRfDUg1r8l4JF+2N7ML
J9vaOmfYIKX25FFuX19h+qZ8Zz7/1pmA5lbexQmdx6LNOgzdpibF7srmLOEFte/aTNg/vdaYzx5l
DrBc160TTumiDG5k9YdqucT7hKRw3i3mR6iFv+x3c1fMC2g4q6nfNHSIhDJOXSqUStG9LVY09WIg
/65HSLr2Wjc1SVUBF1Hqp/MWVu7KZzbmOKOgjfclDpu8jsfM+/fjBzrCgtz+B3r5aAUKZW5kc3Ry
ZWFtCmVuZG9iagoxOTIgMCBvYmogPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAv
WlRSVUpQK0NNQlg5Ci9GbGFncyA0Ci9Gb250QkJveCBbLTU4IC0yNTAgMTE5NSA3NTBdCi9Bc2Nl
bnQgNjk0Ci9DYXBIZWlnaHQgNjg2Ci9EZXNjZW50IC0xOTQKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1W
IDExNwovWEhlaWdodCA0NDQKL0NoYXJTZXQgKC9BL0YvVC9hL2IvYy9lL2ZpdmUvZm91ci9nL2kv
bC9vbmUvcGVyaW9kL3Ivcy9zZXZlbi9zaXgvdC90aHJlZS90d28vemVybykKL0ZvbnRGaWxlIDE5
MSAwIFIKPj4gZW5kb2JqCjE5MyAwIG9iaiA8PAovTGVuZ3RoMSA3NDkKL0xlbmd0aDIgMTA2OQov
TGVuZ3RoMyAwCi9MZW5ndGggMTU5MyAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJl
YW0KeNqtkmtQE1cUxy3iVINtRWgl9cGlGCViwm4kgYTyCAgSIRV5KCIoIXsDK8kus9kwwfCw1EeF
llKtwchYEFREqDr1AbQgllpCrbaAoqTKq8BYK/igigJSu6BOp/Rr536555z/Ped3//dynMIieFKM
TIBBJEHzUD4qAQFyuQxFALNHEBaHE0BBBY2TxEoFDSUAFYtFYLVODQQrAOIhEa6QCD1YHBBApqRR
eGISDVwCuBMiDyDVQApXKgggV9BJUMP0UCrUIIJU4pBO4wOpWg3CJ05oQTjUQioVYnwWigIMV9Ig
ASbiBMttgklGqEjg8SKN6VJelVIhpWWggMskJhcwkBhJqNMABlUstw9IZhpkWP4PrKnNg3Rq9QcK
zUT7Saf+U1docHXaSwWpSdHRkAJyEoMUMVW6Hr6Ak0MM12mmVmW0Qo0rpUSiGgIe6s5H3F/kcW0Q
rodYGE4rk4BKodbCyTwksKkkjH+THG6ykLUhodGuL592shimwAk6Mi0FAuQf9WSM/hMzJlG4HmxE
+AiCMkJmvdrFTRkWSChJDCcSgUAoAgqKUqSxmE/EREJgQAFOYFAPoJ4hduMTJM0cAYwzGUBFUqyJ
d0VREXCjJ3Ks/17C35/UG3grBIAnEDJNEXdP4CFEMv4lVOooChL05EdhrHgVq3DGPQj1UMmyXCeV
Xtu3FJzbWZ4ZWNp8fAZXu8BUtv3y+R1nTF78u51ec69RVb9EwkVDtjtst+AVc4yDIV+5YSphN/uc
NN1siHDb0W5rfsOee+hAxOv3lXdjN1k1FTU2vKU5uPu2xbEvpcr1/q/Oj7tSz884GXoH9ShhD+ZY
l9+4Pv5nZnLWlW6LzX7Mud/Iiiv6NnQfXPd7V/5PowOryFLScqRpXuyBx3Z/WdgNHa3Jt94wiXOL
5NPbTN7PZiFcvarnCgstTHa0RH8pXh0hmblAdG1dsQlMe9fbyRTtU1MdIr83s7eFK+51Ms1ulWVn
GIPXy6KG5x8/NFdZPl/tveoI+zV4qiGmXuNDfLer79Ta7LnJp5oF3l+gKVX7OOHxI+OcocWfWj+K
GxvrfPI8l11/X2lwmuZwwmq9q2ehb6qL613uZYQ94+rHZqcNiqS9t2mpb3CnjV9uo+Zn3570mqdy
EC1u22Z//djHzhYB645kRFNQvFwe4/p1tXlPbKB+mnjDReL9npIHf1yszy0UbAoK2NgZXxt5w7Wp
8uyF0pV2lbus48zVQUGli6tnku29/vOcfOwWeL09RxrbFwmS8izfterzB5Lq0ucKR0cWVkhEB1uf
efX/YowyVw2WiRZmzuj/aH5yHn8gcpnB89708yGV8WnNnpWnzT++s7QAi0znrS1IrigPKd+pSXso
nrXvuPjUA3R6cXrdI2n1D6oiKh+cdAnJeryM28jZfKnyIT0nP2ysJJ5PbfCtrW8gKKLvxIghVVC7
ZrPQKzbxr1afsvDDRwyfZd1/eMN94e7NLIlNT3uvmJ0SuNWY+Xz7cPsqnY1tYPXljRbi9nFTx4/d
uLj3o7rDtjpn7+ivlvjUs09e+O2p31qewFYVaUDUG1xzXusZ5WA1JZpKew5m39fkr0h0sTiY5Xbf
yx45EOaalNydQTTn6PjpUuM6t8y+dr8zIic69GmJhIhYIjunXjbNqsP66Z9Gh77H1IcHrwZ7nC3O
w3xvHQqLGT406t3VMqrbZndpMOfKzW9XyFXy5xsj9sXPU6VWVM2ve7M/OfTingtwadh76QNJ2d0N
JTI4tGd3a9fW7Kyoq7uUrVXWjiZzGzWLJfHofpvvEt/y7N7+IYffM4u/d4xwyopetrRjJN/5lrY5
WLVp0A85dvQCJVi9S7JJtKTkfBGyJSEn5ha5uoDjafXNE//CwT15dYtbyUsJVsFNeeaem4J+rw81
5drpny8yxG2vQWYHlHxZW6YNeIvrauRxyhvXZN3pCsjx/LzSnu21JDP29EmQsPfuWM7WJ2OFN1Of
LJq942zOJ8pOunlcVJhVOEyELw8K3uxeETzadqNx1Z0DKx/MmelYZrNyeVR0J2fbNuOJM8a2Ax0t
DTEDfuhn19Kl4xmXyha0/fCTVuk4lDGcyKt9/3llfLyfj1gvgZb0qJaM28Xzfnvd0yZ7598yxP1X
CmVuZHN0cmVhbQplbmRvYmoKMTk0IDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9u
dE5hbWUgL0lLUUtMWCtDTU1JMTAKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMzIgLTI1MCAxMDQ4IDc1
MF0KL0FzY2VudCA2OTQKL0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovSXRhbGljQW5nbGUg
LTE0Ci9TdGVtViA3MgovWEhlaWdodCA0MzEKL0NoYXJTZXQgKC90KQovRm9udEZpbGUgMTkzIDAg
Ugo+PiBlbmRvYmoKMTk1IDAgb2JqIDw8Ci9MZW5ndGgxIDc3NwovTGVuZ3RoMiAxNDM1Ci9MZW5n
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
phu8ozT9+D1bDosU4LnEOoDadvmNBH0IbvTKr13WvCtuXvnV1f8KG7qzckWpwrCpxFYLY3VysMTs
9NR+rm1pZjCRuavbCYLOHzZx30AbLTIQDFzHfV15432iQNdxvej0Qwe5/QbooGhN8hO3Vu3sgMLz
N4gGEceXdnixB/uPqbqH7H4ecIkgJn8SqkstzvYb7zBaxbRiPVLp0o7jqNYv0sDid5o0q7ktKNiU
bA2TvLMcs07FoRy1agxjxef6HwzODBBwYL2CsMhnJonhR7wpUf0PlITN2AplbmRzdHJlYW0KZW5k
b2JqCjE5NiAwIG9iaiA8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9BSENXT1Ir
Q01NSTcKL0ZsYWdzIDQKL0ZvbnRCQm94IFswIC0yNTAgMTE3MSA3NTBdCi9Bc2NlbnQgNjk0Ci9D
YXBIZWlnaHQgNjgzCi9EZXNjZW50IC0xOTQKL0l0YWxpY0FuZ2xlIC0xNAovU3RlbVYgODEKL1hI
ZWlnaHQgNDMxCi9DaGFyU2V0ICgvY29tbWEvZC9yKQovRm9udEZpbGUgMTk1IDAgUgo+PiBlbmRv
YmoKMTk3IDAgb2JqIDw8Ci9MZW5ndGgxIDE5NTgKL0xlbmd0aDIgMTQ2OTEKL0xlbmd0aDMgMAov
TGVuZ3RoIDE1NzQ1ICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjarZtjdJ7d
1u9js7Hv2DYa27Zt27Zt27Yb22gaN7aapNHJs/d5d7vf8/WMZGTcv7km/mvOda17XB9CSiivRCtg
bGdoImpn60zLSMfIBRCSUWRkADDSMTAIwpCSCjmaGDhb2NkKGzibcAEYOTmZAKImhp8fPn+5WFm4
WJlgSAFCdvYejhZm5s4ACiHKf5zYAQI2Jo4WRga2ABkDZ3MTm88cRgbWACU7IwsTZw86gIC1NUDx
nwgngKKJk4mjq4kxHQwjI8DYwsgZYGhiZmELQ/+PJAlbUzsA+7/Nxi72/7PkauLo9CkKQPEvmZSA
T5HGdrbWHgBjE1MYelm7z2omn1r+f8j638lFXaytZQ1s/kn/T6P+n2UDGwtrj//rYGdj7+Js4giQ
sTM2cbT9365qJv/WJmNibOFi879XJZwNrC2MBGzNrE0ADP82WTiJWribGMtbOBuZA0wNrJ1M/mU3
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
MDkgOTY5XQovQXNjZW50IDY5NAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk0Ci9JdGFsaWNB
bmdsZSAwCi9TdGVtViA2OQovWEhlaWdodCA0MzEKL0NoYXJTZXQgKC9BL0IvQy9EL0UvRi9HL0gv
SS9KL0svTC9NL04vTy9QL1EvUi9TL1QvVS9WL1cvWC9ZL1ovYS9iL2JyYWNrZXRsZWZ0L2JyYWNr
ZXRyaWdodC9jL2NvbG9uL2NvbW1hL2QvZS9laWdodC9lbmRhc2gvZi9mZi9mZmkvZmkvZml2ZS9m
bC9mb3VyL2cvaC9oeXBoZW4vaS9qL2svbC9tL24vbmluZS9vL29uZS9wL3BhcmVubGVmdC9wYXJl
bnJpZ2h0L3BlcmNlbnQvcGVyaW9kL3EvcXVvdGVyaWdodC9yL3Mvc2V2ZW4vc2l4L3NsYXNoL3Qv
dGhyZWUvdHdvL3Uvdi93L3gveS96L3plcm8pCi9Gb250RmlsZSAxOTcgMCBSCj4+IGVuZG9iagox
OTkgMCBvYmogPDwKL0xlbmd0aDEgODU1Ci9MZW5ndGgyIDIyNzYKL0xlbmd0aDMgMAovTGVuZ3Ro
IDI4NTcgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjarVJ5PJSLGiZEowjV
lCUfIuswtix1ZI3EjC1rmOUbhlmYxb5GycEpUcRkXyKhEi2E7GvIWiFyzZFkOfatO9U9y+3+e3/f
P9/zvM/7fs/3vK+0BNJGSR9LRoMmZBJNCQ6D6wCGFtaaABymApGWNqSAKBqeTDJC0UAdAK6tDQf0
6R6AqgoA19RR09ZRUYVIA4Zkn0AK3sOTBsgayn0TnQL0iSAFj0GRAAsUzRMksmZgUATAhozBg7RA
GKBPIADW3zqogDVIBSl+IBYGgcMBLB5DA9CgB54EUf7mx4yEIwOnftBYus+fJT+QQmWZAmRZJuUA
lkUsmUQIBLAgDqJsSWZ9C2Q5+X+Y+nm4CZ1AsEQRv41nZfQ/VRQRTwj8T51M9KHTQApgQcaCFNLP
UnvwhzULEIunE3+umtFQBDxGn+RBAAGVHxSeaoIPALFIPA3jCeBQBCr4nQdJ2J9NsGL7bkHZAul0
0fycwvdtfi8hUXgSzTbQ56+h37TfMfxvzMqGgg8AnFVgKipwlpD1/Pl26adPGZMwZCyexDoHDU0A
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
/hCOiOrAv04KdY6FtwYxCvz2d3obdTH0j/1WE+NEQwjxL/IWSI6dTyu3O7nFXt/Yqre/WcKItNJ0
tNe5wTtMYX1pqOCLedw1vj1tq6L6C+iX9dVPTQGcObROMI5bK0E9WhNmGx7nZdFjyi1XeMPr4lxL
lFSV2nYptWJrj8KG5ZTw5zRhTlpmX7nQQ2WY2JjpXoWeTyLiDosnHD1DrHrtuv0vOV3YInCLu4Wr
DElowEi8BVsvyDfV0loZFJcPv9fINyXI6/QC7US90yloBMK+xf5ekHQlbq1qqSBJNN7GfVNP4GjQ
1QulR2hNuWPTUVOdh7jkquY6zAyQ9Uwr8buCDs9SFQ8fFuy/58HTnHTrge0eyZBsmp11gerx31sh
CYBw14X9QpgI71xxJUTsoeLlaDrHnPkfMyZzV/Bv30JDAuIictRXXE1Pzt94CT7e/eB4n5Lcsdrt
e577nABTKqGpCG/CQCNd7yg3T69EWknFOrUpdEaWRmApt16o5wmOyWOCTZLUxfdpzj+KFHl6KXK3
U3emwWYA2o7I9DiGZrZt2WQTGZ/atm1VYWgPzyoOxyPctqEZ5oe+4FMXVFWpmWrZEfW0/H1rwznD
4rVgiwHdZmwto63dWdIh2y3K9sg0Lx2qIZz4cUdoxp6x5+2C70h1WPvBzbPjnrLZ6bVQcIAr0jDe
xUguA2ZujToOfZc/owKPedEfBScGn45q/iqO3JkkFqwNu/ENPaG1Wk7B+qElX1USFOMQsS1cS6J8
xgGhkzxs4UXnHGdOza2MpnppsqXfPCM1FaplOhBcvvfr9RN9d3TsBsn54kH/BuU+izQKZW5kc3Ry
ZWFtCmVuZG9iagoyMDAgMCBvYmogPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAv
TVBaVktHK0NNUjYKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMjAgLTI1MCAxMTkzIDc1MF0KL0FzY2Vu
dCA2OTQKL0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovSXRhbGljQW5nbGUgMAovU3RlbVYg
ODMKL1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvZWlnaHQvZml2ZS9mb3VyL29uZS9zZXZlbi9zaXgv
dGhyZWUvdHdvKQovRm9udEZpbGUgMTk5IDAgUgo+PiBlbmRvYmoKMjAxIDAgb2JqIDw8Ci9MZW5n
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
9UXuHGBHP8Ha7Lx+iYGZrSg5ia1m7y1qKbfKJss+NnPZh382nmduAunGjE8uy2VdJGWvFSyutpho
CguXoG7tFUCx2WneCnZS0JJTB+VYD6vQtHeFe2CsD42J71J4jCNH9ym3XyGWXOuZ/pTXPhJ8JDZM
2Cu/zmd9g/SNGZkbnEC4e1phyxbegPLGs2laH/c90vXXPW/4KtE+Lxizc0Tg5M1rrPlTdYVH2zjl
0stn1SZMEEG81bmWYtnUnva4/wAr23jECmVuZHN0cmVhbQplbmRvYmoKMjAyIDAgb2JqIDw8Ci9U
eXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL1ZQV1JEUCtDTVI3Ci9GbGFncyA0Ci9Gb250
QkJveCBbLTI3IC0yNTAgMTEyMiA3NTBdCi9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNj
ZW50IC0xOTQKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDc5Ci9YSGVpZ2h0IDQzMQovQ2hhclNldCAo
L2VpZ2h0L2ZpdmUvZm91ci9vbmUvc2V2ZW4vc2l4L3RocmVlL3R3bykKL0ZvbnRGaWxlIDIwMSAw
IFIKPj4gZW5kb2JqCjIwMyAwIG9iaiA8PAovTGVuZ3RoMSAxOTQzCi9MZW5ndGgyIDEzMDY5Ci9M
ZW5ndGgzIDAKL0xlbmd0aCAxNDEyNCAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVh
bQp42q2XVVhc3bKuAwQP7t64u2twdwvuDTTuwSXB3d3dgrsHJ7gGDxLc3eH0v9bZK1n73J6nb/qt
qlH1jaoxx+ymJFVWYxQxszcBStrbuTCyMrHyAcQUVHkBrEwsCJSUYk5AYxeQvZ24sQuQD8DKy8sK
EHG1ALCxAFi5+Nh5+Th5ESgBYvYOHk4gC0sXAI0Y7T9B3AARW6ATyNTYDqBg7GIJtAXnMDW2AajZ
m4KALh5MABEbG4DqPyucAapAZ6CTG9CMCYGVFWAGMnUBmAAtQHYIzP/okbEztwdw/9ts5urwPy43
oJMzWBSABiySFgCWaGZvZ+MBMAOaIzAr2oNrAcFK/n+I+t/JJV1tbBSNbf9JD+7R/+M1tgXZePxf
v72tg6sL0AmgYG8GdLL736GfgP+WpgA0A7na/m+vjIuxDchUxM7CBghg+bcJ5CwJcgeaKYNcTC0B
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
s8rk73dk9VLQvumCAg0J0BC8tc1kiyytxCoSeFRsqwvMjjyzjFqUxnNUHWoh66DvO63m0F/DHUUu
jdvLV1z1P3Jz1gtEm5cXnujVN5pApihKulR+Vb8/wCiPGaY2i8Vt4lr4PwuOsvkKZW5kc3RyZWFt
CmVuZG9iagoyMDQgMCBvYmogPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAvWlhE
S0ZNK0NNUjkKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMzkgLTI1MCAxMDM2IDc1MF0KL0FzY2VudCA2
OTQKL0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovSXRhbGljQW5nbGUgMAovU3RlbVYgNzQK
L1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvQS9CL0MvRC9FL0YvRy9IL0kvSi9LL0wvTS9OL08vUC9R
L1IvUy9UL1UvVi9XL1kvWi9hL2IvYnJhY2tldGxlZnQvYnJhY2tldHJpZ2h0L2MvY29sb24vY29t
bWEvZC9kaWVyZXNpcy9lL2VpZ2h0L2VuZGFzaC9mL2ZmL2ZmaS9maS9maXZlL2ZvdXIvZy9oL2h5
cGhlbi9pL2ovay9sL20vbi9uaW5lL28vb25lL3AvcGFyZW5sZWZ0L3BhcmVucmlnaHQvcGVyY2Vu
dC9wZXJpb2QvcS9xdW90ZXJpZ2h0L3Ivcy9zZXZlbi9zaXgvc2xhc2gvdC90aHJlZS90d28vdS92
L3cveC95L3ovemVybykKL0ZvbnRGaWxlIDIwMyAwIFIKPj4gZW5kb2JqCjIwNSAwIG9iaiA8PAov
TGVuZ3RoMSA3OTUKL0xlbmd0aDIgOTYwCi9MZW5ndGgzIDAKL0xlbmd0aCAxNTA0ICAgICAgCi9G
aWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42q1SezhUaRze1LoM2kQNyeOLVYSZORjTsFrX
ETEuU0k3jpkznJo5ozNn7KBBu6K1iexGWyiStl3Xdsk+RJHrxqYLacvmbrtuhbKJPW5Pz+rffb5/
vt/7vt/ve7/395ms8eVZOgkkIQhHghGWEA2yAy7evECIASAag2Ji4oIjMIFKMFeYQOwAxGZDwEkW
CiAmYLDsrBh2TBbFBLhIwiNxNDSMAKYuZtMiFnASIzjKhzHgDRNhiJjswYdFgCfhowgRSQNOIhHw
nz4hBf6IFMEjEAGNAkFAgPIJEIKEohiFPu3IAxNKAGsWFsjC56kIBJeSpoApadIMkBYFEkwUCQSI
kELnSsi7ENLJ/2FqYXOOTCTiwuLp9jMpfcDDYlQUOaeQiMNlBIIDb4kAwbGF0gBk1pw3IkBl4oWs
BwGLUL4TFipCgCVkQ2NYM2cJVMpB5YjAFyX4YUAIi6TIDI5ggoVWyPhmjNC9tnp4uHPM5+Y6Q/rC
KEZsiQxHAOO9eqaG3tdkSjgqBzsZNAYDIoXkmt/tXnCZG8aXCFAsFFgxbQGM43AkhfxBZMUE0RBA
MQEiB4icdEynYRKCPALIaBRAKMEp02OFGFaAHoLDfESECIlpbg62noNnBzmPMwBdjGIy6Qzw4aud
nSXyaEsrNrBk25IuIMgWsFhMxX+EfBmOIxgx87HI7OZrIUrmjSByhE/p6pDw7eP3ZpQnXIhxO3vj
x4/pauNNhX91qVzZXhFzChUoeMxsvzWhRN6jnN6yo3XUfe26nnz749r4L3rJ3CN7RnK1C8qSzuRv
T41j1tDu8qiRXyWla06ar3vkUbd/24nMQ736djV438mvjS26RoxjmzSyBcPOO85Wv+7uUF++3j9t
vdEqVtcPKg8WraRGPhi6ZfiyIjaj0YH/rPWel4cvVcpJWtcu3KgeMgKP9VN2CyPa2839Bp2u3h7u
/UJXMLHM50jNTvkTg8NGiSYvrvHy5aNJMfrRnS3hKtSbhx8n54we8FGj1Bg41z+4URff2EtPiXOv
NvBa3dRnHfZ2VZM5N10nlNFtrXRxsELvt739W0uLocSpYZVV52Le5MP7Mi99Z+D6JGr/+UqH11up
yQra5vITgc/zKuvUOypXQNqf3+5ySRk/rca9rpxk5S0rG0uvCDv6mE4deGpzveOGe15fnPgjDb2s
A367L1GSfWDOpHLy1YHub+rDoaii857xFu/WjgfqCkfPnOIWSo+P6u2z/T7WIHD4INLszh7yMnf8
8pMjGebUPZ1Zic19xnWtd2qrBx1TqREym57TbsVtFsJEqY1fIU3Wvtx5iXrhVOroxKuXqYbd+XqD
3mKNYNM1e+VDtX7LS265mhZtsONcmVSYFWX36BhxxysVjZCKZbV0bykzhQVrsEJeCksXhYaVuCi/
KlB1KE7YKG9x1DdVo6Q1FF+bCF5tnJHrunbZpvTRmzeHED3n80sf2l5wGchibinimGeraZWlyDxb
zzErDkxu03l+b82hIEmmYe1uyz95eVnJF3RTHBRUdCBos+NFrfaCkvirAW0rVc/KDbS5DaoNOfkv
Jqkql0t+L9Xq2qXboVWTw9shaubmCibdbBSO9+/UszUT1jeYGbiWqFhZKBXd2pbB3dlVe83GZanv
H/1K6kyjxW6/VtQmFnsVtNz1euU3uUHeoF8UoHnscIR6/7fvepvr/fqr+rQXZxJbHr9xtyICl+jH
irPUwGLv2MlRnSeQeXBqSfRU35DnUBXL8ZaKxUl5KVb589NejfIB5bFyLDGujL/68uu7ZdzRol2F
B83KG7fgY/djUq+ce9g2wTzM35mnVL7J/8xn9o/cAzrZcZecpkLYQex7/8iXxLSld2es6PypgDOe
ZgRyOQmt41RmKgcesAhqiIoIzrrQGe/w6YrATF7TyIYU55AqPdOsYa/wsZiSfKs054Q9mlVv77f1
9Gj93VVgd+eyT8tqNs2a+u5YapjSpSyFam/UsyWOrScHjlyv8klg1Kmetlcz/Bc+vNpVCmVuZHN0
cmVhbQplbmRvYmoKMjA2IDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUg
L0xVSUlHRitDTVNZMTAKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMjkgLTk2MCAxMTE2IDc3NV0KL0Fz
Y2VudCA3NTAKL0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovSXRhbGljQW5nbGUgLTE0Ci9T
dGVtViA4NQovWEhlaWdodCA0MzEKL0NoYXJTZXQgKC9icmFjZWxlZnQvYnJhY2VyaWdodC9taW51
cykKL0ZvbnRGaWxlIDIwNSAwIFIKPj4gZW5kb2JqCjIwNyAwIG9iaiA8PAovTGVuZ3RoMSAxMjgw
Ci9MZW5ndGgyIDg0OTcKL0xlbmd0aDMgMAovTGVuZ3RoIDkyNjMgICAgICAKL0ZpbHRlciAvRmxh
dGVEZWNvZGUKPj4Kc3RyZWFtCnjarZRlXFvP1qjRAoHixSW4e/ECxd3dJQQIhODulOJailuB4sW9
OJTiRYtrcXencDn/876nved+vb/kw37WrJn1zJo9m45KTZNN3NLBAizjAHNl42LnEgJKKmvJc3EC
udg5OSUAdHSSzmBzV4gDTMrcFSwE5BIU5AbKgC2eH57/Qrx8Qlx8ADqgpIOjlzPE2sYVyCjJ9K8k
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
bQplbmRvYmoKMjA4IDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL1RC
RU1ETCtDTVRJMTAKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMTYzIC0yNTAgMTE0NiA5NjldCi9Bc2Nl
bnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNjZW50IC0xOTQKL0l0YWxpY0FuZ2xlIC0xNAovU3Rl
bVYgNjgKL1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvQS9DL0QvRS9ML04vUC9SL1MvVC9XL2EvYi9j
L2QvZS9mL2cvaC9oeXBoZW4vaS9rL2wvbS9uL28vcC9wYXJlbmxlZnQvcGFyZW5yaWdodC9xL3Iv
cy90L3Uvdy95KQovRm9udEZpbGUgMjA3IDAgUgo+PiBlbmRvYmoKMjA5IDAgb2JqIDw8Ci9MZW5n
dGgxIDk1NgovTGVuZ3RoMiAzNTAzCi9MZW5ndGgzIDAKL0xlbmd0aCA0MTM0ICAgICAgCi9GaWx0
ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42q2SaTyU/dvGrcmQLWvCZadiZjCNJSRZZyw3ypoa
MxcNY2bMDCVrZRQhhdBizVaE7GOXrClJlsKoSIUUNUWW/9T93E899//t87neXN9zOc7jc54/VUVH
Zy0zHMkHtCQRaVpwbbghYG7nYmMAwLVhEFVVcwqIoeFJxMMYGmgIwA0M4IBZsB8A1wd04IYwfUMY
EqIKmJPIoRS830kaoGGu+bMICZgFghQ8FkME7DC0k2AgWwOLIQDOJCwepIVqA2YEAuD0s4MKOIFU
kBIC4rQhcDiAw2NpgA/ohydCoD8N2RB9SQDy7zAumPxPKgSkUNmmAA22SU2AbRFHIhJCARzoC4Ha
k9izQLaT/w9T/xa3DCYQ7DGBP+V/Lum/0phAPCH0fwpIgeRgGkgB7Eg4kEL8d6kr+Lc3OxCHDw78
d9aGhiHgsWZEPwIIaMH1tGF6f8fxVEv8aRDniKdhTwK+GAIV/BUHibh/O2Ev75cPqKW7o5vtkb1/
H/VXzhGDJ9JcQskgAPtd/Ivhv5m9Igr+NOAJ04bB4OxC9vfP37F/zbIgYkk4PNEP0EHsBzAUCiYU
AmNL6SAQQBgcwBNx4GkAPM02DNUmkmjsFoC9mAjAl0SB/LwpEglA7X6GfhH7TFDMbzIAoNj/JYQ+
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
ZW5kc3RyZWFtCmVuZG9iagoyMTAgMCBvYmogPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250
TmFtZSAvRllQWEpVK0NNVEk5Ci9GbGFncyA0Ci9Gb250QkJveCBbLTM1IC0yNTAgMTE0OCA3NTBd
Ci9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNjZW50IC0xOTQKL0l0YWxpY0FuZ2xlIC0x
NAovU3RlbVYgNzAKL1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvTS9hL2MvY29sb24vZC9lL2kvbC9u
L3BlcmlvZC9yL3MvdC92L3kpCi9Gb250RmlsZSAyMDkgMCBSCj4+IGVuZG9iagoyMTEgMCBvYmog
PDwKL0xlbmd0aDEgMTM5MQovTGVuZ3RoMiA3NjcxCi9MZW5ndGgzIDAKL0xlbmd0aCA4NDk4ICAg
ICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42q2UdVwUatP36Vi6lVxKSliWTukO
KV26F1hqYZeWRhoBAUmlS6RBVgQJQRpB6QYB6RJQmnfPuZ9z9Lmff9/P7h/7nZlr5jdzzbWcrHqG
/Ar2cFuoKtzdix8sAJYCKukYGYEFgWABQUFFACenEgJq4wWDuyvbeEGlgGBJSSGgggcCKCQGBAtK
iQihvwBOoBLcwx8Bc3TyAnIr8fwVJA5UcIMiYHY27kAdGy8nqBs6h52NK9AQbgeDevkLABVcXYEG
f51AAg2gSCjCB2ovAACDgfYwOy+gLdQR5g4A/aVJw90BDhT/j9ne2+Mflw8UgUSLAnL/LZMHiBZp
D3d39QfaQx0AIF04uhoUreX/h6z/Tq7q7eqqa+P2V/q/J/V//DZuMFf//4mAu3l4e0ERQB24PRTh
/t+hEOh/xOlA7WHebv/t1fCycYXZKbg7ukKBgv8xwZCqMD+ovR7My84J6IXwhv5thrrb/7cG9OT+
VgAy0TLQegTh+59L/dupZwNz9zLy9/g361/RfzP4N6PHg4D5Ac0E0fMFowPRn39+WfxXMRV3O7g9
zN0RKCQqBrRBIGz8Aej1QZMo8AkYCHO3h/oBoX5owSABd7gX+ggQPZMgoAMcAfjrRsXEgSClv0x/
k7gQEKT+mySBoIf/koQgEKT3m4SBIMPfJAIEGf1L6IsG2fxLwhJocvNAr4wNelL/WEXQlWyQ6MuB
IV1+H0SH2v4mdHm7f0kU7bODu6K37h8LWBCtyP4PBANB0H9R7C/y9Eav1+8AdE2H3wn/Irg34g8/
uifHPxDdlNNvwaJo8vdwgv4pAG2D/YHovl3+QLTiP6uj23H7jeh9AP1OJYo+6g5zh/7hR+uH/66O
Pgz/X260eo/fbjE0oWcJ/2McYLT8P5oDo7Uifx9A10O62iCd/ghA5/D6LQgtz8sX/ocbfcL7992g
s3mjdwuBtIMj/pSF7tnnD0TL9v2NQuikfn8gukX/PxDdUsDf+H+fk6Ii3O8JvwiQX0hYFCguDEZv
o2DQ/wqz80YgoO5ef/9VoZ/kP+wAQ79fKNQPageYmYTbST91zmiKeh2sUjRagcuLqeiIStZt6Bj7
QBQx/RzTtXRAy5N3sd744k02Fel33O8svlcMyLjWQP1h1YMwz+TMiZvvPtbfswOaGYx/ZOv4r3uw
/YrYIWtpGj/ZFcV8+HVx8HWaSfGnV4c9OwV63MpGG/jzrBidZj6NnTlPxcSNVbNdH0VH1t8TZjUg
z/R8HSMSveBLnpaCszASEewcTfCOb+4I3upNeVFEkJ96Y4VxbocXHy6kmDuNGnGWjc7mvyuxYK7s
eL6QYEEPxGgobQdx2uZUd2ZVx4+/d59p+TXbPrpi+L6u0x9j/OoboS3v8N2NXm1u/FFJJGQP/40q
iQHOjpQKqlKH3AWJXRWhHikoVKZyQpcml/NwD8oXYVqcwVXeSBFwy6T1OYL5LXlTJF36aBssHOUA
HJRZ/ni/ckEl9Ydyp+4uqWmgZjd7yhkjZqsi5IayRvikffs5wS3FSAa1zuSuR2F359oxd8EO55oo
5yUzbUcw95Doq58sii5BCtvOxE8X7LgMX5RgV2wRrPTxS+R94WXdhGX554ZwvE5TEyggrfYldCRs
I6Go+KopOONOU8KEAFxKk39drnzWWQDU2kRYYkytvoZn+bXeFfcQmZElIFZ6vu7f9fD8it1/kCKP
2aztNf03MhEZe2AbM9+onQvO1RDRPsnHCTeHQ7d6DgkVbrbB7cMHW9vlkklc7h0zvCHNfp1+uHMg
zaDLEvhkTZTHjthDzMWkgcsaaJBTVz6Y8jlE7PObiviSjkpO7giYhcaHWJY3B5uwbMDqXmRj3CAb
Wy6NrXBWv+zGjChSc3Y2gNq2k2Jcc+JBkRlkffTtFZH6HeCaENtc4tXEGCnN+XvBh+X+kgLLrR0r
pcxeDQVXUrJ0WHemOFRCeytIeizuerGU3MAT2q05AUNcKlrtBBkDWskvI0ocEC+iDfa0LP1Xoqx9
HtJYRh3mXuT5RP44xQruM/U1iG4gBcIWdXUglBujwur0hoUefGVG9z3xWJHYyYIj3NPNPdKP0l83
8glvzLClaUp4CkeM2cdpHlkX1fYdi+cUi/N929jWqHjvXb3/aWFlut1JXUaWlYsy9E0zk9FQWHqo
kMAbxAonwIeob/7WP4m3vfvYMDUl01y7gaMWA8Fj7MaMzfooz7EDcu2PdVc5ubhTeNaf7LidvUCG
jwG2jzLROyeH8xWsDkD7yU5TmaoOZYvjLiNtrgQ8MaI5Ga4U3xHxBMjWzlLF+bC9Bs/ySBN7EYaO
r+Kmm3bniWt7CSR172d5EikwXqdJPwu7IxhuwjrB/BDHOLSojNh34TYY+vMt9ldWrWpPTQB8rrZe
OqWjZf/20mDk5FmP5EJ27Hg9eVVrIl5w5dYY2Sh9Chn3E7ww2uyY5b6ON2ZDofKWPzzKaa1DOBLM
mcwfY5smXbrUlOpVHQgG5Z551mYduifPsMzpUew5qhnYtJhwpStnb57XP7kPpq2KhQgai6eGuuCE
7EU51eYBxu7UVS/pDDEcyEf2eHDM02Wv54KqhTi/xGBqjdS+q4pVJubsnwmka3ELWNkbvegeI1En
L94bi5tfIOqx6ngj9+hy4LlQNaGjp+yG93o9s+tKoKpQffmXAC5dWIposShmSOK8ayUZNutkkf13
s6dO4kuY1l3TkSXUmWNvWI+VkuemegIJVt/uPwucQfxI9PNeMXnAdNYTMclT9nLA9NqRUHPRq5P9
Q6PiIJP+CFfBybOIHY54A/HE4KFNbm4Lq8EWnKmg7heWT2mTsnu2BTj7uhIJgFyoUhm3Ef3PXjgA
C30i7sMA+9xzv8II/4q76y3DlTrHbvaEyce8Eb7CWvaJwYbjHP2qltfC8tGh6XVcqbOpYQOPmfmK
YmZFXhRz8mV309/6Amx3yE6GN+blXH0/TmLAlqodeKWEhxXomHzwHFeE3ebwA/Z9kQmoOb53Q2Q1
EEKUmvrPo3n1JkE6RTZ1ywzpaipmroY2wSmH1NLCmxFVduOL43KJBwyFtmzTb86yVfWewDRa53IL
NaaULJbYF5DnChGCSfH4cgYmSZDA9icZaZeGOxxVChsS7jvsDWSKJLbDKSwQUg+KOlWN4Rjeky0G
d0m1C84QSSnbb1yv6o2a6Uz4dk9tVfv3lFxy9RRxWlpUcUn6Hcrzkzit9lzfGpThyEmzOdGkn4oM
dXmI1FG01b2iwdLGHigQVNhdxNVFxJU+HIgKkOusuRzVX9poVmOYHcg+Cl2n6d83lSbsejkLYPy+
U7a3nKlqjQGlBd0I8mzU52ulmUCPu1oko8+1n1kxc4tJkUrWax3WtSo2puG7qBn6hxjPmIpnNHz9
SkuJ7/SEbaov3Si5L5zasRA3kSOmjjR9RnA6IOEdwmPYPJQWXwLyTjgrtZXuzAQVElghdv9VbwyG
XyVhb7+RQoDokC/0DeThi417K3Z444Nh8gQAWcEz31TTofC3Fde0OpF3nOZypf01e6a2T75tzGEd
EDYI01/76CVvjMh5Crv0HaYtNapSx646hH82HexndcEf+VBOqx0auvjDne1Cc0AgQiW0kBE57gN0
mbs9FlFaEDYLXmNjZ/d15PnBmqS/TrPTzG1/v5+5ktwpVK7TSTsZeP2IAov1zoPxaDrNFN3XXmP1
lAlBbp2XbdMi5GPqvCg5XHMFnfu7ALjn2K8PvFOPnTL3eyYZhukrPOu9zkXC83AIRZeNWsHT7BE/
JcSIn71kGK3p0g3FEH6bDcn1SJYX0Vq/RVLiqud7I0/MElX4zQp5pjxJCIMj2tnnD9yrr8pS8+5R
xXEIYWm7T8gKB9BuIQpIAP73OWl1wHYHbw8uKGVM1TeLPuPBxlMEzM3negOsO8sTbUNtgt2scpme
BfmyWnyK7JCqTjARK9bJDBOIo3uaai3kbBD1UtIgsQiTLeQmNbxjcqtkwZ6K0ZlSpGdHFwu/Nwbi
lXF3QqBZTbZ10XurjPjsGHq5Of4Sg/yq27foM+XbVMbrUUV6q4v9KXpLu6FP3rsrTgdsyazRqu1c
jHV7weoQ7ZEGgd7vZA+39dzPqPv0BDkcPt4E4YR5dBWj/FNLB4jm0ky6UixnzefV7rQfRAedAQEM
c856ouvpySZvlxMSp/xugD0JMOKhC66qlBfBGLLb7ArSbY2NGPpxHnCZtoHcAdB1rlnhp9aF7EcF
YoX4UephvuWtcUPpjEqLtwJ8zE/0p35JZizcc8h9Ht1o7ePuBGZjt352JskWXIUf89os0S7yYqbh
OyiXp06twtX+fJmDJ+7j87fcP+fb8YvvKqf/KMQVGq+zbn0v5vLarTdv80GLA27Ui/v3GTfvpOxm
x2dsIc31v1YwNRLkQ4aOfp37xJ9qTJgktaQ19+uT59FrJKUwxX3I9cW4u5zBQOEtfBeXjOYK/8nQ
C2f9zmUDAyFqDQUuqyTTO+LlPRRATXKBgODVOllbH7LkWekAl3ken1ekL4Efc6eDXrRinckCsgqb
h7PEfOZVCBnnPWRDaDCZy4vK2jPCRJM2eqRLxSfLrBsbzWRDCKnWBppnT4ZkHwOkdbC84k47SKWj
+qQ7MpkN4ObyTTczEtkg5owfam5xeBQ+7ijnir2UXhuB4/qcA8kLVpq3atFCgUJQfuzQNQXAbDzF
E6zOpsPuwoIq8QDF91Ja5G8kog2I75QfehcSqgQaBWLVzq19ypBDPP1MNQpIa4xtsjS8730otQz2
u3JXdsNfmqZvX0VdZM1LUV4KK1C/jioowTxGYoxl6QDnVmQDwktbrdpCsuNg4Lp1V15tmadIu18N
elIsBjQEKW82RRwWFqLv+VKmP8HGrWcbhAWL4woGZi1Y4eQX2y7zhhMRn0nEojpaGRojHj+p/1ku
Sn2+qLva47TId5NOvasPLtoOMJKcyExzi5ADENklMn0MMP1BA77b3nwV+bqeZOYo06nMC9fi8/rN
B/o+CqjO5H27EqErA4cYpHHVoXN2dHJeTGu2bDoOu0T8F/KJLW+pJ98QwZ88fUOnAzRSfhLVORfb
zzpKR+liXlyYTF+qzLnRPRfZsVYuiForGn1xPQ68/MJQExQOo/k0t6z0CUtCsUbKYZ/PfXkixalL
5zLfNJFleTHXPDYI1ovAdizfCyOlorlcFiPafIeCEZidZX2875ndIXFxqsm6CFblw7I6e3e1c9ty
vjwI0txvUaCCrmTLjLlkyDe5cqlWam32OOc1ljL7jz/K3NAvwbicJ0yUrzJ6Zpj8rnHvp0utclZC
B77pwpNRpVeX/KOB+1/fpOBpnikMZf/0L1zt9eLK5jAimnmvTK4rU5aUNGSiOv+dU+vcYy5jKSAB
sLGrzZ3payGgEMicNqsOM9EnjI0gdaaYw+4ioGH8zsd0vB4BI7T/oABIRcobEolIzQin2u+QBV2E
qLsD5nzKkUIV6R9fTsmuGnpSrH8o2AiiyBF9Ttya7YzTmN2ccKZ9I3M8AOPW+qCEaV3vC6IyHpUz
BF8wf0HeGFb4l0uo9vp3HirFdc9MbAfFCS0IJFYN7d+bX+Tce2R7WND6o2PKikXNkidaUj7uVnMP
S55vkhnn54iGNM09TcX2nyu7VBc0+zOYb+sANWvr1BklxVhfNV6E8a4kMhl1SoXqdsibltWtNlHZ
jAKx/Mdx541mc30XdjfALVpbhKE/7gZITMd2nwp73s27uFoSHryEYZe4UKwwB60HhcwT90uQykv/
INHrMUvz48xrUzSvGpH2cbxUZ7guI0EoxfjcJw55fx3yXQb/4oPvNjcLsdhih0ljkF7Qg2cI6EoM
8jIpc91qS/2NqaTUzPziGkWtz95ItrU1QbZQUEEhiJgqwQjqxcYMo49qMuVtljNs8VYXzajdE2cy
w/cca19+LFdHLL68k/4zVG+n9szRr+ylII/CobjXWdYogdGMa8xCTnzzdExOGO2v+DYGAJS8YDac
cPVB/vzLmLoFltNLDl2fwXy6/gSD6vRryZMEFcjdaF4Fhoes5l+KwbStPqNDv1R22+U3DaT6On2/
DZz7aN+4L+Ln9oZDbp7KKUQc4TOe6a2qG8gUEW1jNNGVZ/90cC2fsCThdl9+o1aOeoz7tLut08Vg
eUstlbklva5HRWxSWiKx/00mrGrkfpZfUwfkS0u7zzq7nAin5dP2LFtI1giOFp4E5YX1nsflttIT
4Nb9AwrHCQH1MdT40xd8Az98bzVdJymUdqpUW8YOv6kBW8ie1x+r3R1lbaBQyyjtl75uat0a3Z/w
/fBTlUpD2lDAhFD+TbqmmrYJ6odKiobrs5tKCq9VmkB9QsK9DzFbA+B42sxk4Bl1LAc2ThucFEO9
4ArJyCu5qreL+a0Qw4wiHTWfLusc2Ictk7gQny1ERcVztxN2u7Ys1rrq5/bRHEmVe7VnzEFlj1wm
OFzoyScAHLs+mhyYLooXZayUHByC5mt04+TAqfXxzOqfXc+78gkzuWOenYdqLle0+nb6i+LOva60
zvy4GP1jwtEbxU8hQ0Osxh2wz5wuJP8qIOUH7idyKSvW0fkPpRSRfaOOxMGdA72r19FjGU55SJkN
bNJ9vMt9eZyu1QvYDbHEvEoKUxPP2xZIr8CJKAtfszL1xF0D8kp5NxexwyFx2kfvz2iYanOmSYTZ
yHjYv1JmGJhppBk34SkoW42ZtPI/6UN9mj1syMO1XCLxN18XmIvZ1sGnsWztmHKn9ODwjKz16Ra2
lGAxVks3C85BShsydOEscdVeRLaKMT13Pk7dLBb/9mpSDUTFILu3QzznYKP08VMJZFj/poHEv5Tr
kUldzMDbpabTt3IjdyZEuHd8fAiC2Ce1UhqNOoZZ6Cav+9rPerQgoAK3Eqq1QpqZRVtmyeQ12pLv
mnnhu5SveodK175hJ4CsYiK/1hoZS3AyB6pdEgyDmAEPOzbo9cJ0L9qyYwHDkg9Ji0nE13MaIwjH
+LZVkzx02LlVRUerdKZzp1AzUOWwGMWRykLWivlG2lw59cHN92VkSfpYNUne2OOngmBNxfVCG1F3
rFQWK2rud7mZPzZxHgeDlpURGDfajbUMDx9+51OBAXfpph5HkLa7zm0p3iiz99BckY3W7uSYxfoR
/rw0OoO/3W5N37I4tNVSGMrLoAmSE/aT9uol46GkJLwxvOjMGG0OpkpyWwx7C24qrPRFzuyGCZI9
F4KsvMf3c/gQE7UhhSm8CrQacdWru/CuZ5auNsmOYGLkb5wBKTvlJuNUyltZr7u3H+KNrbLVlQfQ
BiawUtXTf71HX+Z1NV8g7IkLEZKfsYgFwcIvfl3QwmxDSc6rLnscKD/or2hvYwKnk9Ja5rBkiUP2
muhP+++kTBk9QG2N1QViPHthcWohxnGam/oitw3j2vpJJ7kcf8m4vcfk3nQ/CPxorCr/nFtNKXZb
XBT1SGOD27rBRqKXp+Q0/NRZu9u97pb1Z7Bew2vvraVETQdc8Pec3s2vUzYiB59Tuup3QNXrrg3F
rHpe5eopFy5NSJc4oqqwonufnAH34OULhUmVIxsz6+TDKtKrRG2Biv5OT4LOxN6ghvrrUscctSqB
gxVf1gwKWVUGYyXLCGavjH5QB7mO4Zvh2DOFeRs7bJvFYk2QPvDDSX780kpI3po01qFDS+DLl32s
WGvD50MhCHbKpOmXt5Z5OLGDFzfGzZyySibnEGHCic89L028WyUMO7aijreeFootGxxkfnggZ3rE
DGC8HACR69wp7W0LwX6F3eUZwNFTmbYNDx4qeUi3tSFYeDyseWUp4WUiCtJOMUgChbqQ9G/xQupZ
cEJRnvw/KKpOqjNj0qBXS5ePLKnCE9SAfbzV94jLsEO0XUTXnEceFyg7wSms7TMkzbn3rezsnX2P
jFYUX5dteD2bFCK0Kyemm6RXEOhjL8+JBeDGw1D6BGCwjlzsgD2pKhGml0aPg0Va+/XshlGD7YcH
z0+/NlQpdTlJ9exLXgbHRLKQsjKcYQhWBhvP2OMrAftYiLIKzvUjt82B4ASOQhGf8BAnTPgAeyY+
alI3kjpmEXeiuISt1opjihdiX5wsX5zQNYjXV6Omm0S9MyHMiLclTcsQnjg1kLxsDux9t9zZsYaP
//2ox1oq79Mla1Jycgs74S+S5QfyFwHLpkEtdfQ+FsD3AAmGmgN5ovT2aOzjltKqm/nBWSoqFYbA
IQ/VgWjhTP2Ce3UsYCmHVm1fJnwX/kL8Go8D4Wtw1oD9fB7oVZpufVFQ8LJEWOayXHVBxZBJ6YM7
tPk2kKeMbz3Ky5rq1b4RrXmXXYwSfYLsR4fzyRN+nRkp7frih+d7Hn5qAbh3SlwD4Ir41R45YDo+
rbSRHO7xuZKjt+oW2EgFCnjIxjazlJWJi+m6csA/A9IDIOZ4UqUKO46W5GZ6R1imo6hQjVfKKIuu
TI52KB1vhx72BNEkYvxFguuYBilFxb0re6b3HvFHgXRfRId18y1k/b6/gIxc6VCnOw3xsCQtsaqU
pOUD6ugkhkUdUZCehaXWwd04n5kzq4/iLDYea52672YMGbyqubXJmYcPi/BYC8pHhiV2YyQgkoyL
FCi+JDKp2m+MtAw17RIip3yoVsf1Rb/+3nY/A7ctpkEThqM8+hblZONwYWq3LRjGeyupLXsRx3s5
OpJfBuo2YYa/3u1+PmFC+lOsvZWJZLKnd39xU/3ZljI6gIMv+b3XdxRtsAQ+l/3X8zzbIdYhLoTT
FBcbgyZRkvNweuLAeVm/xZZCgcwJBiVHow47pejovrXHBoRImEF52cxWy/c0kBk1rSSW7R0DOdfw
sOPqjTmmgUFAbD1N9O7xFcPiiTqcRwYYFndrxPkZeJRKqN7ej4jz8nW73Q76Ukqs+LFhMaWYjCS0
+ERQK9RT4wFq9etNkNjPz6oNu6DE8xPFac1HZlADgwr9o2pzLnOZQVQEAcC2EygqX84PygGPbfzc
QtDzVdDHc4RYeTdjuNkV5Y0rqfhIhj+IepHQpP7l/sF+6UOKfYkhQbME0uhj82CQk0I8f4cc2zNa
XXWTYtPGqC3drJhL64g5VDCTs1uBrpSl9telhSb4XPASwvjBfotPUH/WWBLDXUx1xnePXVqw/Hsu
ix6PTZI1GgVdz7JBNK8UZzFfbxZeimGLz7UH6/MjO3wuBbJu1alKhmQYfS6oyglfYYuGxLggOtdv
zR+JXlAThwFCH6myUCxmaWtJL1uVWCVfO88lnRy6B35L8zkpkngJuotp0ZLMf/TpZ/vR0jlhHBXc
1bj3HP9X4aOgWP4Hn4t2HAn9eP1fBY/rBrwy8en0IZ3ApkfKhFfcdxLnDDrI6W5PXTcPHaIdq5uy
1h6rYiZbIaJ3YnmqvAGFb04+UtNoIuwfaY+Ets0ENvLdEnZbc3mx5GIp35iGRib4X5ctz2PbJyTQ
IJk1NN4zYbM3dt4xUG/5YA3z9fU0i20yliHLarbhfgYW3BWot4NenksHx1kQEij5rfCs0jiUtyvd
DtGIptSG7gJNOyQPyWzt8f0XzjIyeNvwbFZX42U6MoZXTzIVRVZeWV0WJpEP/LTqBuDORD0gjXIf
c0i3ULGd9RjyehxVBf82Zqw6VXRREZBuMTQUGU5CPrKeaO31YoX9ma/uN52I21+ouLXUu9JurozN
Vhz2JYQlt9mJNjIOVpwu8stP5p5I19dwF7aIGEDG0rkMxeedns7MbR/sKInNuoV/qj/IB5lGU+cy
r8y9Dh18nGi3sgcFOm9jUsHFnQMfrxWCVVJfwu3DbCNTvn+Bnf3sLf9hzdrO725Syfvr2fvLs6ev
kTWfhbpnGbqkQnPWN4XGWKVLKaTL4ZvjRxHnFmGobibxQfzmg+Io7iWvrowrfwg2y7k2pMzEnFze
TobuhKaFdKvymVVlM0N3NPbH0hbIq13kfYv3PMr6O+ViR42jv2RchcjxmiN0D5jKVESS3tyoi39q
/cm7Jo3ren1YSyFO3lVr7tPXoB4qal452c9QZmkJrnV+Wa3GNyVZWgu6eV+EJE7VfJnDbD4pjZxS
DZcTF8Cs+hj0YXiH5GIH1N1ugyx/0KyuZk11KzCTJNMh+oBL8ChZH8ft/IxZfeLJZj1XRWROkkT5
8HIulI49w0+81GdhnTr5W0uOyIxOKP9T3pAcDu5xgT1mA9DmKHReSzDEJuZ9cGbsVdhzusUyqJiA
rNELtsStK6dPAhqzrIBNYG5gZfOA8B2vp0QHI0juNiqrhftYtk3OETGhRI1heglt6d9Gdb/FJCMm
SMaLEO23XTSm2Eg2zbfQr1QYckj70k/ZxC3ZX3auYB8LGGH74Djm/EQwgTgHzi5Cq3S2nvTUxilQ
YjNVeX/X3njXWSV5c7iTmLHmE+Qm6KH7ibOCPq3A5KFwpE2LrUwqKdPu8rRXV7n/ZShUY5yu3hpF
kmRBHRUfoNf/8fH77Iw3TTf2Z2uEkiVOU6gP06CxeTLP0GIrckEVZq472fGDVl+EjuVmgGeEkhcI
4RGGlfx81vaUUGVrPEUkrDxZPAAocuiXFj7GcwYgiHRmZqKgCrQdtvT+YpgVOIE41aMscmlpEGXO
U71AibZdWkm2umHdKTZr9fhJ8w4D0xP6aTCdFdENAZPu9ttGSEiMX7yEKPmDJ90GDswd55k5XjLu
yRLz9g0UCYiqkOc75YNwjgZVqDWfGswijD+kHS+H4TDxRA0zNho7nEOyC7+OckXvNkholXytacK+
DIiKEQGV1R/gC4w8JcGBM+CxYJg3hKt/FqekfEGyZtDK2CldQeEI3d2+l508i6l5V73R66QrczzI
+P7EBuGMQMDetLr6iUcM556dRVmgRh5BW8+Dnj1Fb7qbjmsUGG95ynecPfcbgZ6hlZXIzFJpB8/r
l/HCx0yWMvVflwaz2o9T6PyeVp51Pff+iI9ahMFpUTREw0d6rFE8PIeMwSSWV6wfO3xpqJQnJ/IE
ziKESJhc2kv8ApjvJgnrLc6GeesUEIy+uMFhWsgzmGE1iuw/1gdxauYY0Xo7vq/TjO8oBACv43mL
D6vHQ7WK5k4Gr/yXrqoP6p9nW2GC+ixPTTW27O7OE8YGFs3bEURarwmMgPjHrfujkhJCX183uWbp
K1q4dW+zPOimm5PrTKu4T9jnnN6Md4+F8EUwMhG/bh6VZQMpH0wkvuoyImnFlVOVejR3EFzwWAp6
EoN3Shv/5XigY4xF1dsqk49oquEozOLr7S3GEZcdO3c5W5pLBqsx8bmRUarwHDjjMPNz5buLG0fr
mnBH/KC2Of58KsUWeNlGY6rMPdR+eLQ/LyLZJ4z6Qu826f20aYwOGcV+1Jfwo7j6ucTH9jSImngH
5RrV/FdhVE2End+tjFq0sX493VVSnJ0neIQ33PO6h/T5x/8H4eCFYAplbmRzdHJlYW0KZW5kb2Jq
CjIxMiAwIG9iaiA8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9ZS1JLVVcrQ01U
VDEwCi9GbGFncyA0Ci9Gb250QkJveCBbLTQgLTIzNSA3MzEgODAwXQovQXNjZW50IDYxMQovQ2Fw
SGVpZ2h0IDYxMQovRGVzY2VudCAtMjIyCi9JdGFsaWNBbmdsZSAwCi9TdGVtViA2OQovWEhlaWdo
dCA0MzEKL0NoYXJTZXQgKC9DL0gvTy9QL1MvVC9hL2FtcGVyc2FuZC9hc3Rlcmlzay9iL2MvY29s
b24vZC9lL2VxdWFsL2YvZm91ci9nL2gvaHlwaGVuL2kvay9sL20vbi9uaW5lL28vb25lL3AvcGVy
aW9kL3Ivcy9zbGFzaC90L3R3by91L3VuZGVyc2NvcmUvdi93L3gveS96KQovRm9udEZpbGUgMjEx
IDAgUgo+PiBlbmRvYmoKMjEzIDAgb2JqIDw8Ci9MZW5ndGgxIDEwNzEKL0xlbmd0aDIgNDA2Mwov
TGVuZ3RoMyAwCi9MZW5ndGggNDczNyAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJl
YW0KeNqtlmc4XGvXxwkJ0YXoZKthhDEYPZHoRCdRog0z6piRMYMheg0iokUI0YJEF10keu9E9HD0
ElFTEN5JznvO8Zzn63PtL/u31rrX+l/r/u/r2vzc+kYit+BoW4QaGoUVgYhC5ABlHWNjWQAiKkbB
z6+MQcCwTmiUCgyLkAMgsrIQ4BbOARAXAyBScpJScuKSFPyAMtoNj3FycMQCgspCv4qkgVuuCIyT
HQwF6MCwjghXQg87GBIwQts5IbB4UeAWEgkY/jrhDhgi3BEYDwRclAICAeBOdljAFuHghKIA/xKk
ibJHA9J/huE4t79SHgiMO0EUIEgQKQQQJMLRKCQegCPsKcC6aMIsBEHJ/0LUv5ur4ZBIXZjrr/a/
lvRfaZirExL//wVoVzccFoEBdNBwBAb171ITxJ/adBBwJ5zrv7OaWBjSye4WygGJAMT+DDm5qzl5
IeD6Tlg7RwCLwSF+hxEo+L81ENb2WwHYSF3d5O4d4T+v83dOH+aEwhrj3f5u+qv4N0P+YcJyME5e
wD0xUTExCKGQ8Pz1ZvmvWaooOzTcCUXwA1QKgGEwMDwFwRgEggI+EMAJBUd4AQgvgl6wKAqNJRwB
CCvxBezRGIpft0m4EjDsV+g3SUkSCPs3ysoAYNt/SBYA2/1NUELODo0kOOCvCERMDADDzyAEACPO
oDgAtj+DEgDY4QwSJjueQSgAdjqDhGHIM0hQ4voPEkwLRp9BwiC3v1FSikAEz6HPKIMQhmHOIGGY
+z8HCBtxR8Lcz6iBEHpgzyChAncGCeI8ziBBnOdv/G9TKCmhvXxEpAARcQkJACopDkjJyvj+R5kd
DoNBoLC/vzaCsf5ieyeCCxEIL4QdxcQY2k4+xPlpVdgrP9XswdfnQcRKDtWxum8aRxoog8efECNz
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
s3m9gSjIMXBZJVR+hZ12L86lJAdHXAOp2BiyFKAusTqU7UgqUm23TlydNwFrq/Wfj0tfkTZSHw5C
EV8vyNo7uUF+rzbOPt9w/qf2UQoT1x1r1VL64CRGgTdTpl0KjbATOxsKZXpetVdBUx9Dzwtk//ip
mph2saDcBSXQUdE/rcponTokHm3F9UVOx6yTCJWT7b3OTnIRttHygNUEs2t22qJD7X7g8ZjuWNQZ
nOKtsPCh/trgnHQsq37tg7KWS5+IyCYs/Y+ZE3oaJFWteQMbN6RjPz5nVWM+L7+amVqfcAwNhu/G
Xz7XrP5xscOZe12jb8Vz+bMGQ8tsznpfthyV40WibUXwtTf1PbybCtP89L6PneV6xy/bit14I/f0
euEgdH5C0KEvdnRZJDjOt2zymwwPi0L5QPvLWlZ0Jfm4Vl6fFwvXpdTANTIjFa/YJx/XKZ9xhcp5
ShtJLfP0P/iGRTaqCQZltWbGjj5fyioOfsy0lp3hMr03Rak5kGcW3PGIfy9jY6HA3NX8g9k31w/D
ZaJO/wf1f1UxCmVuZHN0cmVhbQplbmRvYmoKMjE0IDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3Jp
cHRvcgovRm9udE5hbWUgL1NHR1dWVStDTVRUOQovRmxhZ3MgNAovRm9udEJCb3ggWy02IC0yMzMg
NTQyIDY5OF0KL0FzY2VudCA2MTEKL0NhcEhlaWdodCA2MTEKL0Rlc2NlbnQgLTIyMgovSXRhbGlj
QW5nbGUgMAovU3RlbVYgNzQKL1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvYS9hdC9iL2MvY29sb24v
ZC9lL2YvZy9oL2kvbC9tL28vcC9wZXJpb2Qvci9zL3NsYXNoL3QvdS92L3cpCi9Gb250RmlsZSAy
MTMgMCBSCj4+IGVuZG9iago1MSAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEK
L0Jhc2VGb250IC9XUVFYUlkrQ01CWDEwCi9Gb250RGVzY3JpcHRvciAxODggMCBSCi9GaXJzdENo
YXIgNDUKL0xhc3RDaGFyIDEyMwovV2lkdGhzIDE3NiAwIFIKPj4gZW5kb2JqCjQgMCBvYmogPDwK
L1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvVVBZRUpQK0NNQlgxMgovRm9u
dERlc2NyaXB0b3IgMTkwIDAgUgovRmlyc3RDaGFyIDQ1Ci9MYXN0Q2hhciAxMTgKL1dpZHRocyAx
ODYgMCBSCj4+IGVuZG9iagoxMSAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEK
L0Jhc2VGb250IC9aVFJVSlArQ01CWDkKL0ZvbnREZXNjcmlwdG9yIDE5MiAwIFIKL0ZpcnN0Q2hh
ciA0NgovTGFzdENoYXIgMTE2Ci9XaWR0aHMgMTc5IDAgUgo+PiBlbmRvYmoKMTE3IDAgb2JqIDw8
Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL0lLUUtMWCtDTU1JMTAKL0Zv
bnREZXNjcmlwdG9yIDE5NCAwIFIKL0ZpcnN0Q2hhciAxMTYKL0xhc3RDaGFyIDExNgovV2lkdGhz
IDE3MyAwIFIKPj4gZW5kb2JqCjcgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUx
Ci9CYXNlRm9udCAvQUhDV09SK0NNTUk3Ci9Gb250RGVzY3JpcHRvciAxOTYgMCBSCi9GaXJzdENo
YXIgNTkKL0xhc3RDaGFyIDExNAovV2lkdGhzIDE4MyAwIFIKPj4gZW5kb2JqCjUgMCBvYmogPDwK
L1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvWUJGWk9DK0NNUjEwCi9Gb250
RGVzY3JpcHRvciAxOTggMCBSCi9GaXJzdENoYXIgMTEKL0xhc3RDaGFyIDEyMwovV2lkdGhzIDE4
NSAwIFIKPj4gZW5kb2JqCjggMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9C
YXNlRm9udCAvTVBaVktHK0NNUjYKL0ZvbnREZXNjcmlwdG9yIDIwMCAwIFIKL0ZpcnN0Q2hhciA0
OQovTGFzdENoYXIgNTYKL1dpZHRocyAxODIgMCBSCj4+IGVuZG9iago2IDAgb2JqIDw8Ci9UeXBl
IC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL1ZQV1JEUCtDTVI3Ci9Gb250RGVzY3Jp
cHRvciAyMDIgMCBSCi9GaXJzdENoYXIgNDkKL0xhc3RDaGFyIDU2Ci9XaWR0aHMgMTg0IDAgUgo+
PiBlbmRvYmoKOSAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0Jhc2VGb250
IC9aWERLRk0rQ01SOQovRm9udERlc2NyaXB0b3IgMjA0IDAgUgovRmlyc3RDaGFyIDExCi9MYXN0
Q2hhciAxMjcKL1dpZHRocyAxODEgMCBSCj4+IGVuZG9iagoxMDYgMCBvYmogPDwKL1R5cGUgL0Zv
bnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvTFVJSUdGK0NNU1kxMAovRm9udERlc2NyaXB0
b3IgMjA2IDAgUgovRmlyc3RDaGFyIDAKL0xhc3RDaGFyIDEwMwovV2lkdGhzIDE3NCAwIFIKPj4g
ZW5kb2JqCjEyIDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQg
L1RCRU1ETCtDTVRJMTAKL0ZvbnREZXNjcmlwdG9yIDIwOCAwIFIKL0ZpcnN0Q2hhciA0MAovTGFz
dENoYXIgMTIxCi9XaWR0aHMgMTc4IDAgUgo+PiBlbmRvYmoKMTggMCBvYmogPDwKL1R5cGUgL0Zv
bnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvRllQWEpVK0NNVEk5Ci9Gb250RGVzY3JpcHRv
ciAyMTAgMCBSCi9GaXJzdENoYXIgNDYKL0xhc3RDaGFyIDEyMQovV2lkdGhzIDE3NyAwIFIKPj4g
ZW5kb2JqCjY1IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQg
L1lLUktVVytDTVRUMTAKL0ZvbnREZXNjcmlwdG9yIDIxMiAwIFIKL0ZpcnN0Q2hhciAzOAovTGFz
dENoYXIgMTIyCi9XaWR0aHMgMTc1IDAgUgo+PiBlbmRvYmoKMTAgMCBvYmogPDwKL1R5cGUgL0Zv
bnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvU0dHV1ZVK0NNVFQ5Ci9Gb250RGVzY3JpcHRv
ciAyMTQgMCBSCi9GaXJzdENoYXIgNDYKL0xhc3RDaGFyIDExOQovV2lkdGhzIDE4MCAwIFIKPj4g
ZW5kb2JqCjEzIDAgb2JqIDw8Ci9UeXBlIC9QYWdlcwovQ291bnQgNgovUGFyZW50IDIxNSAwIFIK
L0tpZHMgWzIgMCBSIDE2IDAgUiA0OSAwIFIgNTMgMCBSIDU2IDAgUiA1OSAwIFJdCj4+IGVuZG9i
ago2NiAwIG9iaiA8PAovVHlwZSAvUGFnZXMKL0NvdW50IDYKL1BhcmVudCAyMTUgMCBSCi9LaWRz
IFs2MyAwIFIgNjggMCBSIDEwNCAwIFIgMTEwIDAgUiAxMTUgMCBSIDEyMSAwIFJdCj4+IGVuZG9i
agoxNTggMCBvYmogPDwKL1R5cGUgL1BhZ2VzCi9Db3VudCAzCi9QYXJlbnQgMjE1IDAgUgovS2lk
cyBbMTU2IDAgUiAxNjggMCBSIDE3MSAwIFJdCj4+IGVuZG9iagoyMTUgMCBvYmogPDwKL1R5cGUg
L1BhZ2VzCi9Db3VudCAxNQovS2lkcyBbMTMgMCBSIDY2IDAgUiAxNTggMCBSXQo+PiBlbmRvYmoK
MjE2IDAgb2JqIDw8Ci9UeXBlIC9DYXRhbG9nCi9QYWdlcyAyMTUgMCBSCj4+IGVuZG9iagoyMTcg
MCBvYmogPDwKL1Byb2R1Y2VyIChwZGZUZVgtMS40MC4zKQovQ3JlYXRvciAoVGVYKQovQ3JlYXRp
b25EYXRlIChEOjIwMTAwNTA0MjAxNTExKzAyJzAwJykKL01vZERhdGUgKEQ6MjAxMDA1MDQyMDE1
MTErMDInMDAnKQovVHJhcHBlZCAvRmFsc2UKL1BURVguRnVsbGJhbm5lciAoVGhpcyBpcyBwZGZU
ZVgsIFZlcnNpb24gMy4xNDE1OTItMS40MC4zLTIuMiAoV2ViMkMgNy41LjYpIGtwYXRoc2VhIHZl
cnNpb24gMy41LjYpCj4+IGVuZG9iagp4cmVmCjAgMjE4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAw
MDAwMjg0OCAwMDAwMCBuIAowMDAwMDAyNzQzIDAwMDAwIG4gCjAwMDAwMDAwMTUgMDAwMDAgbiAK
MDAwMDY3MTE2NCAwMDAwMCBuIAowMDAwNjcxNzM0IDAwMDAwIG4gCjAwMDA2NzIwMTQgMDAwMDAg
biAKMDAwMDY3MTU5MyAwMDAwMCBuIAowMDAwNjcxODc1IDAwMDAwIG4gCjAwMDA2NzIxNTMgMDAw
MDAgbiAKMDAwMDY3Mjg2NCAwMDAwMCBuIAowMDAwNjcxMzA2IDAwMDAwIG4gCjAwMDA2NzI0MzYg
MDAwMDAgbiAKMDAwMDY3MzAwNiAwMDAwMCBuIAowMDAwMDA0NzQ2IDAwMDAwIG4gCjAwMDAyNjI4
NTYgMDAwMDAgbiAKMDAwMDAwNDYzOCAwMDAwMCBuIAowMDAwMDAzMDA1IDAwMDAwIG4gCjAwMDA2
NzI1NzkgMDAwMDAgbiAKMDAwMDAxMDcxMSAwMDAwMCBuIAowMDAwMDEwOTIzIDAwMDAwIG4gCjAw
MDAwMTA5NTggMDAwMDAgbiAKMDAwMDAxMDk5MyAwMDAwMCBuIAowMDAwMDExMTcwIDAwMDAwIG4g
CjAwMDAyMDk2MjcgMDAwMDAgbiAKMDAwMDIxMDAwNCAwMDAwMCBuIAowMDAwMjQwOTc3IDAwMDAw
IG4gCjAwMDAyNDA5OTggMDAwMDAgbiAKMDAwMDI0MTg5MyAwMDAwMCBuIAowMDAwMjQyNzAxIDAw
MDAwIG4gCjAwMDAyNDI5NDAgMDAwMDAgbiAKMDAwMDI0MzQyMyAwMDAwMCBuIAowMDAwMjQzNDQ2
IDAwMDAwIG4gCjAwMDAyNDM0ODEgMDAwMDAgbiAKMDAwMDI0MzUwMSAwMDAwMCBuIAowMDAwMjQ4
MTM0IDAwMDAwIG4gCjAwMDAyNDgxNTYgMDAwMDAgbiAKMDAwMDI0ODE5MSAwMDAwMCBuIAowMDAw
MjQ5MjgyIDAwMDAwIG4gCjAwMDAyNDkzMDIgMDAwMDAgbiAKMDAwMDI0OTMyMiAwMDAwMCBuIAow
MDAwMjU5MTQzIDAwMDAwIG4gCjAwMDAyNjE4NTggMDAwMDAgbiAKMDAwMDI2MTg3OSAwMDAwMCBu
IAowMDAwMjYyNzc0IDAwMDAwIG4gCjAwMDAyNjI3OTQgMDAwMDAgbiAKMDAwMDI2MjgxNSAwMDAw
MCBuIAowMDAwMjYyODM2IDAwMDAwIG4gCjAwMDAyNjU4NjkgMDAwMDAgbiAKMDAwMDI2NTc2MSAw
MDAwMCBuIAowMDAwMjYyOTg2IDAwMDAwIG4gCjAwMDA2NzEwMjEgMDAwMDAgbiAKMDAwMDI2ODk5
MSAwMDAwMCBuIAowMDAwMjY4ODgzIDAwMDAwIG4gCjAwMDAyNjYwMTYgMDAwMDAgbiAKMDAwMDI3
MjEwOCAwMDAwMCBuIAowMDAwMjcyMDAwIDAwMDAwIG4gCjAwMDAyNjkxMDYgMDAwMDAgbiAKMDAw
MDI3NTI2NSAwMDAwMCBuIAowMDAwMjc1MTU3IDAwMDAwIG4gCjAwMDAyNzIyMjIgMDAwMDAgbiAK
MDAwMDI4MDMyNyAwMDAwMCBuIAowMDAwMjc4NjIzIDAwMDAwIG4gCjAwMDAyNzg1MTUgMDAwMDAg
biAKMDAwMDI3NTM4MCAwMDAwMCBuIAowMDAwNjcyNzIxIDAwMDAwIG4gCjAwMDA2NzMxMTUgMDAw
MDAgbiAKMDAwMDMwNzI2NCAwMDAwMCBuIAowMDAwMjgwMjE5IDAwMDAwIG4gCjAwMDAyNzg3OTMg
MDAwMDAgbiAKMDAwMDI4NTU4OSAwMDAwMCBuIAowMDAwMjg1ODAxIDAwMDAwIG4gCjAwMDAyODU4
MzYgMDAwMDAgbiAKMDAwMDI4NTg3MSAwMDAwMCBuIAowMDAwMjg2MDQ4IDAwMDAwIG4gCjAwMDAy
ODYyOTggMDAwMDAgbiAKMDAwMDI4NjU2MCAwMDAwMCBuIAowMDAwMjg2ODQzIDAwMDAwIG4gCjAw
MDAyODcwNjIgMDAwMDAgbiAKMDAwMDI4NzM0NSAwMDAwMCBuIAowMDAwMjg3MzY2IDAwMDAwIG4g
CjAwMDAyODgxNzQgMDAwMDAgbiAKMDAwMDI4OTA2OSAwMDAwMCBuIAowMDAwMjg5MzA4IDAwMDAw
IG4gCjAwMDAyODk1NzMgMDAwMDAgbiAKMDAwMDI4OTU5MiAwMDAwMCBuIAowMDAwMjkxMDA0IDAw
MDAwIG4gCjAwMDAyOTEwMjMgMDAwMDAgbiAKMDAwMDI5MjMxOCAwMDAwMCBuIAowMDAwMjkyMzM4
IDAwMDAwIG4gCjAwMDAyOTUzNTggMDAwMDAgbiAKMDAwMDI5NTM3NyAwMDAwMCBuIAowMDAwMjk1
OTMwIDAwMDAwIG4gCjAwMDAyOTU5NTAgMDAwMDAgbiAKMDAwMDI5ODEwNSAwMDAwMCBuIAowMDAw
Mjk4MTI1IDAwMDAwIG4gCjAwMDAyOTgxNDUgMDAwMDAgbiAKMDAwMDMwNzEzNiAwMDAwMCBuIAow
MDAwMzA3MTU3IDAwMDAwIG4gCjAwMDAzMDcxNzggMDAwMDAgbiAKMDAwMDMwNzE5OSAwMDAwMCBu
IAowMDAwMzA3MjIwIDAwMDAwIG4gCjAwMDAzMDcyNDIgMDAwMDAgbiAKMDAwMDMxMDMyNCAwMDAw
MCBuIAowMDAwMzEwMjEzIDAwMDAwIG4gCjAwMDAzMDc0MTggMDAwMDAgbiAKMDAwMDY3MjI5MyAw
MDAwMCBuIAowMDAwMzEzMTgyIDAwMDAwIG4gCjAwMDAzMTg1MDIgMDAwMDAgbiAKMDAwMDMyMzQ4
OSAwMDAwMCBuIAowMDAwMzEzMDcxIDAwMDAwIG4gCjAwMDAzMTA0ODUgMDAwMDAgbiAKMDAwMDMx
ODIxOCAwMDAwMCBuIAowMDAwMzIzMjEwIDAwMDAwIG4gCjAwMDAzMjY1MzggMDAwMDAgbiAKMDAw
MDMyNjQyNyAwMDAwMCBuIAowMDAwMzIzNjUwIDAwMDAwIG4gCjAwMDA2NzE0NDggMDAwMDAgbiAK
MDAwMDMyODcxOSAwMDAwMCBuIAowMDAwNTI3MzE0IDAwMDAwIG4gCjAwMDA1MjUxMDYgMDAwMDAg
biAKMDAwMDMyODYwOCAwMDAwMCBuIAowMDAwMzI2Njc3IDAwMDAwIG4gCjAwMDAzMzEyNzMgMDAw
MDAgbiAKMDAwMDMzMTQ5NCAwMDAwMCBuIAowMDAwMzMxNTMxIDAwMDAwIG4gCjAwMDAzMzE1Njgg
MDAwMDAgbiAKMDAwMDMzMTc0OCAwMDAwMCBuIAowMDAwMzMxOTM0IDAwMDAwIG4gCjAwMDA0NzQy
OTYgMDAwMDAgbiAKMDAwMDQ5NzMxMCAwMDAwMCBuIAowMDAwNTEyNDI1IDAwMDAwIG4gCjAwMDA1
MTI0NDcgMDAwMDAgbiAKMDAwMDUxMzM0NCAwMDAwMCBuIAowMDAwNTE0MTU0IDAwMDAwIG4gCjAw
MDA1MTQzODMgMDAwMDAgbiAKMDAwMDUxNDY2OSAwMDAwMCBuIAowMDAwNTE0OTA3IDAwMDAwIG4g
CjAwMDA1MTUwMTcgMDAwMDAgbiAKMDAwMDUxNTA0MSAwMDAwMCBuIAowMDAwNTE1MDc4IDAwMDAw
IG4gCjAwMDA1MTUxMDEgMDAwMDAgbiAKMDAwMDUxNTEzOCAwMDAwMCBuIAowMDAwNTE1NDE5IDAw
MDAwIG4gCjAwMDA1MTU0NDIgMDAwMDAgbiAKMDAwMDUxNTQ2MyAwMDAwMCBuIAowMDAwNTE1NDg0
IDAwMDAwIG4gCjAwMDA1MTk4ODcgMDAwMDAgbiAKMDAwMDUyMTM4MiAwMDAwMCBuIAowMDAwNTI0
MTAyIDAwMDAwIG4gCjAwMDA1MjQ5OTkgMDAwMDAgbiAKMDAwMDUyNTAxOSAwMDAwMCBuIAowMDAw
NTI1MDQxIDAwMDAwIG4gCjAwMDA1MjUwNjMgMDAwMDAgbiAKMDAwMDUyNTA4NSAwMDAwMCBuIAow
MDAwNTY1MDE0IDAwMDAwIG4gCjAwMDA1MjcyMDIgMDAwMDAgbiAKMDAwMDUyNTI4NSAwMDAwMCBu
IAowMDAwNjczMjI5IDAwMDAwIG4gCjAwMDA1MjkzOTIgMDAwMDAgbiAKMDAwMDUyOTYyNSAwMDAw
MCBuIAowMDAwNTI5ODM2IDAwMDAwIG4gCjAwMDA1MzAyMzMgMDAwMDAgbiAKMDAwMDUzMDM0OCAw
MDAwMCBuIAowMDAwNTMwNjE5IDAwMDAwIG4gCjAwMDA1MzA4OTYgMDAwMDAgbiAKMDAwMDU0NjE2
MyAwMDAwMCBuIAowMDAwNTY3OTQwIDAwMDAwIG4gCjAwMDA1Njc4MjggMDAwMDAgbiAKMDAwMDU2
NTE0NiAwMDAwMCBuIAowMDAwNTcxMjUzIDAwMDAwIG4gCjAwMDA1NzExNDEgMDAwMDAgbiAKMDAw
MDU2ODA0MyAwMDAwMCBuIAowMDAwNTcxMzQ2IDAwMDAwIG4gCjAwMDA1NzEzNzEgMDAwMDAgbiAK
MDAwMDU3MTk3MSAwMDAwMCBuIAowMDAwNTcyMzMwIDAwMDAwIG4gCjAwMDA1NzI3ODUgMDAwMDAg
biAKMDAwMDU3MzIzNyAwMDAwMCBuIAowMDAwNTczNzMwIDAwMDAwIG4gCjAwMDA1NzQxNzMgMDAw
MDAgbiAKMDAwMDU3NDQ4OCAwMDAwMCBuIAowMDAwNTc1MTc4IDAwMDAwIG4gCjAwMDA1NzUyNDUg
MDAwMDAgbiAKMDAwMDU3NTYwMSAwMDAwMCBuIAowMDAwNTc1NjY4IDAwMDAwIG4gCjAwMDA1NzYy
OTUgMDAwMDAgbiAKMDAwMDU3NjczMCAwMDAwMCBuIAowMDAwNTg1NTQzIDAwMDAwIG4gCjAwMDA1
ODU4NjYgMDAwMDAgbiAKMDAwMDU5MzQ0NiAwMDAwMCBuIAowMDAwNTkzNzcyIDAwMDAwIG4gCjAw
MDA1OTg3MzkgMDAwMDAgbiAKMDAwMDU5OTAyOSAwMDAwMCBuIAowMDAwNjAwNzQxIDAwMDAwIG4g
CjAwMDA2MDA5NjMgMDAwMDAgbiAKMDAwMDYwMzA2NCAwMDAwMCBuIAowMDAwNjAzMjkxIDAwMDAw
IG4gCjAwMDA2MTkxNTcgMDAwMDAgbiAKMDAwMDYxOTY0NiAwMDAwMCBuIAowMDAwNjIyNjIyIDAw
MDAwIG4gCjAwMDA2MjI4NzggMDAwMDAgbiAKMDAwMDYyNTg0NSAwMDAwMCBuIAowMDAwNjI2MTAx
IDAwMDAwIG4gCjAwMDA2NDAzNDYgMDAwMDAgbiAKMDAwMDY0MDgzNyAwMDAwMCBuIAowMDAwNjQy
NDU5IDAwMDAwIG4gCjAwMDA2NDI3MDYgMDAwMDAgbiAKMDAwMDY1MjA4OSAwMDAwMCBuIAowMDAw
NjUyNDA0IDAwMDAwIG4gCjAwMDA2NTY2NTcgMDAwMDAgbiAKMDAwMDY1NjkxNSAwMDAwMCBuIAow
MDAwNjY1NTMzIDAwMDAwIG4gCjAwMDA2NjU4ODkgMDAwMDAgbiAKMDAwMDY3MDc0NiAwMDAwMCBu
IAowMDAwNjczMzIyIDAwMDAwIG4gCjAwMDA2NzMzOTggMDAwMDAgbiAKMDAwMDY3MzQ1MSAwMDAw
MCBuIAp0cmFpbGVyCjw8IC9TaXplIDIxOAovUm9vdCAyMTYgMCBSCi9JbmZvIDIxNyAwIFIKL0lE
IFs8N0RFQUQ3MTkzMTlBN0M2QUNFNzRCOTBCNkQ1QzkyRjA+IDw3REVBRDcxOTMxOUE3QzZBQ0U3
NEI5MEI2RDVDOTJGMD5dID4+CnN0YXJ0eHJlZgo2NzM3MDYKJSVFT0YK

--Apple-Mail-14-802811802
Content-Type: text/plain;
	charset=ISO-8859-1;
	format=flowed;
	delsp=yes
Content-Transfer-Encoding: quoted-printable




Please let me know your thoughts/comments/questions,

thx!

Vlad



On Jun 2, 2010, at 9:21 AM, Guido Moritz wrote:

> Dear WG,
>
> I agree to focus on the ToDos and not on the maybes. But a =20
> comprehensive
> eventing concept includes more than only the method/message type. It
> requires lease concepts, filtering mechanisms ... It would also =20
> require
> mechanisms to assign incoming NOTIFYs to a specific SUBSCRIBTION if =20=

> one and
> the same client has SUBSCRIBED to more than one event of the same =20
> device. Is
> this out of scope of COAP or should it be considered already at this =20=

> point
> to have a straight forward and clean protocol design? Hence it might =20=

> be
> reasonable to have SUBSCRIBE and NOTIFY as single methods and =20
> grouping every
> sub functionality as type below the method?
>
> However, as HTTP has no native mechanism to feature eventing, for =20
> eventing
> it would be always required to have a caching intermediate entity =20
> (proxy,
> gateway, what ever). This one can provide which interface ever to the
> external networks (HTPP, polling, WebHooks, XMPP, WS-Eventing, ...). =20=

> So this
> is implementation specific and might not be considered in COAP at all.
>
> Guido
>
>> -----Urspr=FCngliche Nachricht-----
>> Von: core-bounces@ietf.org [mailto:core-bounces@ietf.org] Im =20
>> Auftrag von
> Zach
>> Shelby
>> Gesendet: Freitag, 28. Mai 2010 14:50
>> An: Adriano Pezzuto
>> Cc: core
>> Betreff: Re: [core] Subscribe/Notify for CoAP
>>
>> Hi,
>>
>> This is a really good conversation. One thing we need to do is =20
>> remember
> what
>> our minimum requirements are for subscribe/notify and not try to =20
>> solve
>> something more than we should. =46rom what I know it is sufficient to =
=20
>> be
> able to
>> receive notifications when a URI changes or periodically. You might
> consider
>> new URIs under this URI path to be changes to a URI though...
>>
>> On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>
>>> Hello,
>>> with this flavor, the SUBSCRIBE may be replaced by a simple POST. =20=

>>> So no
>> needs to have an explicit SUBSCRIBE method.
>>
>> This is what coap-01 assumes.
>>
>>> If we want support a more oriented peer-to-peer transaction on =20
>>> CoAP, it
>> looks to me both SUB and NOTIFY should be treated as messages.
>>
>> The Request/Response model can be used peer-to-peer, and in CoAP =20
>> you can
> even
>> use a Request asynchronously. Additionally, we want a native RESTful
>> subscribe/notify technique, that is, we want to subscribe to =20
>> resources and
> be
>> susequently notified about those resources when they change.
>>
>> In that sense, you can think of a subscription as a request to =20
>> receive
>> asynchronous notifications about a resource (about a URI). This can =20=

>> be
>> achieved by:
>>
>> 1.  as a SUBSCRIBE Request on the URI with some option indicating the
> lifetime
>> as in coap-01,
>> 2.  as a Subcsribe message (no methods) on the URI with some option,
>> 3.  or as a POST Request on the URI with options indicating that =20
>> this is
>> actually a subscription and the lifetime.  This bends the meaning =20
>> of POST
>> quite a bit and might be prone to mistakes?
>>
>> The asynchronous response is a harder one. Can we bend the meaning =20=

>> of a
>> Request for making asynchronous notifications? Also a notification
> includes a
>> URI about a resource on the requestor, which is inverse from normal
> Requests
>> in REST. So the options here are:
>>
>> 1. as a Notify message about a URI (no methods) as in coap-01,
>> 2. as a NOTIFY Request about a URI as was in coap-00,
>> 3. hmmm... reusing CRUD methods really doesn't work for this one at =20=

>> all...
>>
>> I wonder what the HTTP designers would have done if this would have =20=

>> been a
>> requirement back then? Maybe we should ask them...
>>
>> Zach
>>
>>>
>>> Adriano
>>>
>>> From: matthieu.vial@fr.non.schneider-electric.com
>> [mailto:matthieu.vial@fr.non.schneider-electric.com]
>>> Sent: venerd=EC 28 maggio 2010 13.52
>>> To: Adriano Pezzuto (apezzuto)
>>> Cc: core; core-bounces@ietf.org; robert.cragie@gridmerge.com
>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>
>>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types =20=

>>>> not
>> methods!
>>>
>>> SUBSCRIBE can be just an asynchronous GET on update then I think =20
>>> it is a
>> method and NOTIFY is an asynchronous response so a message.
>>> But if we want to have selective notifications when a resource is
> created,
>> updated or deleted then I think you're right NOTIFY and SUBSCRIBE are
>> messages.
>>>
>>> Does that make sense ?
>>>
>>> Matthieu
>>>
>>> <image001.gif>"Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
>>>
>>>
>>>
>>>
>>> "Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
>>> Envoy=E9 par : core-bounces@ietf.org
>>> 28/05/2010 12:50
>>>
>>> <image003.png>
>>> A
>>> <image004.png>
>>> <robert.cragie@gridmerge.com>
>>> <image003.png>
>>> cc
>>> <image004.png>
>>> core <core@ietf.org>
>>> <image003.png>
>>> Objet
>>> <image004.png>
>>> Re: [core] Subscribe/Notify for CoAP
>>> <image004.png>
>>> <image004.png>
>>>
>>> Hi Roberto,
>>> I understand your point and personally agree on M2M is quite =20
>>> different
> from
>> web page model. On the architectural RESTful style, the method =20
>> information
>> tells the server what to do with data kept in the URI information.
>>>
>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types =20=

>>> not
>> methods!
>>>
>>> Adriano
>>>
>>> From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
>>> Sent: venerd=EC 28 maggio 2010 11.53
>>> To: Adriano Pezzuto (apezzuto)
>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>
>>> I think the point here is that there are two levels we are =20
>>> considering.
>>>
>>> At the lowest (foundation) level, there are the transaction =20
>>> messages as
>> described below. This provides a flexible mechanism for the =20
>> application
> with
>> regard to synchronicity and threading. This is important for the =20
>> types of
>> devices CoAP is being aimed at.
>>>
>>> Above that, the methods can be used according to the architectural
> style. So
>> in this case, it is RESTful (COnstrained Restful Environments), =20
>> which will
>> naturally limit the number of methods and how transactions occur.
>>>
>>> The actual architecture using a combination of the methods and =20
>>> messages
> also
>> depends on what is required at the application layer. Consider a =20
>> typical
>> client which wants to subscribe to a resource. That client controls =20=

>> the
> feed
>> of data but needs a component which is capable of handling (possibly
>> buffering) the data it receives through notifications. Is this a =20
>> separate
>> server? Or would we want to consider it part of an enhanced client =20=

>> model
> which
>> is able to process feeds of data? These are the sort of models =20
>> which have
> led
>> to the myriad of solutions (GENA, Webhooks, long polling, =20
>> pubsubhubbub,
> RESTMS
>> etc.) based around HTTP which are all essentially ingenious ways of
> getting
>> around the limitations imposed by HTTP and how it is processed for
> anything
>> which deviates from the classic web page access model.
>>>
>>> I think the aim of CoAP should be clean from the word go with =20
>>> regard to
>> supporting these more peer-to-peer transactions, where the client can
> exist on
>> either entity and both entities can feed data to each other; =20
>> typical in
> M2M
>> applications.
>>>
>>> Robert
>>>
>>> Robert Cragie (Pacific Gas & Electric)
>>>
>>> Gridmerge Ltd.
>>> 89 Greenfield Crescent,
>>> Wakefield, WF4 4WA, UK
>>> +44 1924 910888
>>> +1 415 513 0064
>>> http://www.gridmerge.com
>>>
>>> On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>> Hi Robert,
>>>
>>> in my personal opinion, the option 1a) brings some sort of =20
>>> ambiguity to
> CoAP
>> specs.
>>>
>>> My be my understatement of new CoAP specs is not so deep, but now we
> have 5
>> methods and 3 message types: request, response and notify. Which =20
>> methods
> are
>> allowed with which messages types?
>>> I suppose you have to use PUT/POST method with notify message for =20=

>>> asynch
>> data notification. How to make a subscribe? I suppose you would use a
>> SUBSCRIBE method with request/response message or SUBSCRIBE with =20
>> notify
>> message? Also what about POST/DELETE methods in a notify message? =20
>> They not
>> make any sense..
>>>
>>> I think the choice is between: option 1) -> only CRUD methods and =20=

>>> option
> 1b)
>> -> CRUD + SUB/NOTIFY methods, keeping in mind cost/benefits of both
> solutions.
>>>
>>> Adriano
>>>
>>> From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
>>> Sent: mercoled=EC 26 maggio 2010 20.09
>>> To: Adriano Pezzuto (apezzuto)
>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>
>>> Hi Adrian,
>>>
>>> I would also prefer to keep the protocol in CoAP asynchronous. You =20=

>>> can
>> always map an asynchronous protocol to a synchronous one but, as we =20=

>> see in
>> HTTP, it always ends up as a kludge to do it the other way round. The
> efforts
>> which have been gone to to make HTTP quasi-asynchronous via all the
> schemes
>> mentioned below and many more besides (all non-interoperable of =20
>> course) is
>> testament to how important this is for M2M communication.
>>>
>>> So, back to Zach's list, I favor 1a) for the following reasons:
>>>
>>> Foundation level of messages:
>>>
>>> 1. request/response can be asynchronous or synchronous messages (as
> there is
>> a transaction ID in there)
>>> 2. notify is an asynchronous message
>>> Derived methods:
>>>
>>> I think it makes sense to add a pub/sub model as a useful =20
>>> mechanism for
> M2M.
>>>
>>> So, looking at it the other way round: It will be entirely =20
>>> possible to
>> translate whatever is currently built on HTTP to CoAP based on the =20=

>> above,
> with
>> all its restrictions regarding synchronous and client/server =20
>> transactions.
>> What may be harder is to translate directly is a CoAP-based =20
>> application to
>> HTTP. So I guess the question is: Do we want to be hamstrung to
> synchronous
>> client/server transactions as dictated by HTTP and provide a direct
> mapping to
>> HTTP, then have to come up with similar kludges for asynchronous
> peer-to-peer
>> transactions as has been done in numerous ways for HTTP, or do we =20
>> want to
>> define the protocol cleanly to start with and accept that some sort =20=

>> of
>> transaction relaying/conversion would have to take place at a mapping
> node?
>>>
>>> Robert
>>> Robert Cragie (Pacific Gas & Electric)
>>>
>>> Gridmerge Ltd.
>>> 89 Greenfield Crescent,
>>> Wakefield, WF4 4WA, UK
>>> +44 1924 910888
>>> +1 415 513 0064
>>> http://www.gridmerge.com
>>>
>>> On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:
>>> Hi,
>>> it looks to me that CoAP should use an explicit sub/notify mechanism
> since
>> this is the core of the machine-to-machine interaction model.
>>> HTTP suffers of this lack and we have seen a plethora of solutions =20=

>>> to
> give
>> an asynch taste to it. Webhooks and websockets are only the lasts =20
>> of the
> list.
>>> As someone has already pointed out on this list, it is theoretically
>> possible to describe sub/notify using only CRUD methods but it =20
>> looks a
> little
>> bit tricky and verbose.
>>>
>>> Now we have a chance to build from scratch a new protocol with and I
> think
>> using explicit sub/notify methods with a clear and well defined =20
>> semantic
> is
>> the best option. It is easily understanding from every developer =20
>> and will
>> prevent to build other fanny solutions on top of the CoAP. HTTP =20
>> does not
> have
>> this well defined semantic and (for hundreds of other reasons also) =20=

>> it is
> not
>> used as wide protocol for machine-to-machine communication.
>>>
>>> CoAP - as binary protocol - and with an explicit asynch model has a
> chance
>> to be a really wide protocol for M2M communication not only for
> constrained
>> environments.
>>>
>>> my 2 cents
>>>
>>> - adriano
>>>
>>> -----Original Message-----
>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On =20
>>> Behalf Of
> Paul
>> Duffy (paduffy)
>>> Sent: mercoled=EC 26 maggio 2010 0.47
>>> To: Zach Shelby
>>> Cc: core
>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>
>>> On 5/25/2010 6:41 PM, Zach Shelby wrote:
>>>
>>> Hi,
>>>
>>> On May 26, 2010, at 12:23 AM, Charles Palmer wrote:
>>>
>>>
>>> Hi folks
>>>
>>> It occurs to me that CoRE should be keeping a close eye on ZigBee =20=

>>> SE2.0
>> work, so that it is as easy as possible for ZigBee SE to use CoRE =20
>> when
> ready.
>> That suggests to me that we should align with their subscribe/notify
> process.
>>>
>>>
>>> I am not sure I understand that. I mean, ZigBee SE2.0 is defining an
>> application specific subscribe/notify mechanism for that purpose so =20=

>> far
> for
>> HTTP. This uses standard HTTP methods and some custom payload and =20
>> REST
>> interfaces. CoAP Req/Res is already totally compatible with SE2.0 =20
>> in that
>> respect, so alignment is already OK there. Nothing stopping someone =20=

>> from
> using
>> SE2.0 over CoAP.
>>>
>>> Specifying a native susbcription/notify into CoAP is another =20
>>> matter. We
>> can't adopt a solution specific to one application as that won't =20
>> solve the
>> problems of other applications nor general HTTP mapping at all =20
>> (probably
> would
>> make it worse). It seems that for the near future there will be a =20
>> bunch of
>> HTTP push mechanisms in use without any clear standard appearing - =20=

>> or am I
>> wrong there?
>>>
>>>
>>>
>>>
>>> If COAP extends HTTP semantics with new subscription methods, it =20
>>> will
>>> not be possible to easily interchange HTTP/COAP, and translation
>>> gateways will become more complex to implement.
>>>
>>>
>>>
>>> Zach
>>>
>>>
>>> Regards - Charles
>>>
>>>
>>> -----Original Message-----
>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On =20
>>> Behalf Of
> Paul
>> Duffy
>>> Sent: 25 May 2010 03:48
>>> To: Zach Shelby
>>> Cc: core
>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>
>>> Recommend something like #2, primarily to avoid introducing non HTTP
>>> method semantics, simplifying HTTP/COAP translation.gateways, etc.
>>>
>>>
>>> On 5/24/2010 11:49 AM, Zach Shelby wrote:
>>>
>>> (thread renamed)
>>>
>>> We have two different paths with regard to a subscribe/notify =20
>>> mechanism
> for
>> CoAP:
>>>
>>> 1. Use specific Subscription and Notify mechanisms for CoAP as HTTP
> really
>> does not include this concept.
>>> 1a) Notify as a message and SUBSCRIBE as a method. This is currently
> used in
>> coap-01.
>>> 1b) NOTIFY and SUBSCRIBE as methods. This was used in coap-00, but =20=

>>> we
> had a
>> good list discussion about this leading to a. In practice it =20
>> doesn't make
> a
>> big difference if notification is a message or method.
>>>
>>> 2. Use an HTTP specific framework such as Webhooks, the ZigBee SE2.0
>> proposal or GENA.
>>>
>>> So far we have focused on 1 in the WG, and every now and again 2 =20
>>> comes
> up.
>> At least I am not convinced that we need to suffer the drawbacks of =20=

>> HTTP
> here.
>> Anyways 2 does not help our mapping to HTTP in reality very much as =20=

>> there
> is
>> no standard way of doing this over HTTP. Thus a CoAP-HTTP proxy may =20=

>> end up
>> anyways translating between multiple HTTP frameworks depending on the
>> application. So instead of doing a CoAP Notify/Subscribe to Webhooks
> mapping,
>> you will could end up having to do a CoAP Webhooks to HTTP GENA =20
>> mapping.
>>>
>>>
>>>
>>> I don't understand this last para. If CoAP sticks to the semantics =20=

>>> of
>>> the current HTTP methods, would this not offer a fairly =20
>>> straightforward
>>> translation to/from HTTP?
>>>
>>>
>>>
>>> =46rom what I have heard so far 1 still seems like a wise choice, =20=

>>> although
> I
>> need to look at Webhooks more deeply. In reality many applications =20=

>> specify
>> their own way of doing a push interface using REST methods and =20
>> specific
>> payloads (ZigBee SE2.0 is such an example). That is just fine, and =20=

>> might
> be
>> used instead of a specific CoAP notify/subscribe in that case. So 1
> doesn't
>> prevent the application using its own mechanism, it just provides a =20=

>> native
> way
>> for doing push.
>>>
>>> What do people think?
>>>
>>> Zach
>>>
>>> On May 17, 2010, at 6:44 =
PM,matthieu.vial@fr.non.schneider-electric.com
>> wrote:
>>>
>>>
>>>
>>> Hi,
>>>
>>> My comments about the subscribe/notify mechanism of Zigbee IP.
>>>
>>> Pros:
>>> - Derived from the webhooks concept
>>> - If used by CORE it will be easier to map to HTTP because it uses =20=

>>> only
> CRUD
>> verbs.
>>> - The subscription message is extendable and could support advanced
> options
>> (delays, increment, ...)
>>> - Only one listening port whatever the transport binding is.
>>>
>>> Cons:
>>> - No interoperability without well known URIs and a well defined
>> subscription message format (Not sure CoAP draft is the right place =20=

>> to
> specify
>> this).
>>> - XML/EXI is too complex to be the required format for the default
>> subscription/notification mechanism.
>>> - The notification should not require a subsequent GET to retrieve =20=

>>> the
>> content.
>>> - Subresource subscription is redundant.
>>>
>>> Hope this could help,
>>> Matthieu
>>>
>>>
>>> <graycol.gif>"Charles Palmer"<charles.palmer@onzo.com>
>>>
>>>
>>>
>>>
>>> "Charles Palmer"<charles.palmer@onzo.com>
>>> Envoy=E9 par : core-bounces@ietf.org
>>> 15/05/2010 14:06
>>>
>>> <ecblank.gif>
>>> A
>>> <ecblank.gif>
>>> "core"<core@ietf.org>
>>> <ecblank.gif>
>>> cc
>>> <ecblank.gif>
>>> <ecblank.gif>
>>> Objet
>>> <ecblank.gif>
>>> Re: [core] Selecting a WG document for CoAP
>>> <ecblank.gif> <ecblank.gif>
>>>
>>> Dear all
>>>
>>> Those interested in the subscribe/notify discussion might like to =20=

>>> look
>>> at the draft Smart Energy Profile 2.0 Application Protocol
>>> Specification. It is available here:
>>> =
http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20PublicApp
>>> licationProfile.aspx
>>>
>>> It manages subscribe/notify by using POST. This seems to remove =20
>>> the need
>>> for SUBSCRIBE and notify.
>>>
>>> "Imagine a host A, which exposes a resource at http{s}://A/=20
>>> resource and
>>> a second host B, which wishes to learn of changes to this =20
>>> resource. To
>>> facilitate a subscription/ notification mechanism, A would expose a
>>> resource http{s}://A/sub and B would expose a resource http{s}://B/=20=

>>> ntfy.
>>> To subscribe to notifications regarding http{s}://A/resource, B =20
>>> would
>>> send a POST to the address http{s}://A/sub/B containing the URI of =20=

>>> the
>>> resource of interest (http{s}://A/resource) and the URI of B's
>>> notification resource (http{s}://B/ntfy). Following this =20
>>> subscription
>>> step, should A wish to notify B of a change to the resource =20
>>> addressed at
>>> http{s}://A/resource, A would send a POST to the address
>>> http{s}://B/ntfy containing the URI of the resource changed
>>> (http{s}://A/resource) and the URI of A's subscription resource
>>> (http{s}://A/sub/B), should A wish to change its subscription. The =20=

>>> host
>>> B can then query the resource (or not) at its leisure."
>>>
>>> Sleepy nodes are not allowed to subscribe, and must poll.
>>>
>>> Regards - Charles Palmer
>>>
>>> -----Original Message-----
>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On =20
>>> Behalf Of
>>> Angelo P. Castellani
>>> Sent: 14 May 2010 13:14
>>> To: Zach Shelby
>>> Cc: core
>>> Subject: Re: [core] Selecting a WG document for CoAP
>>>
>>> Zach,
>>>
>>> thanks for the comments, but please refer to my most recent e-mail =20=

>>> for
>>> a more specific list of technical issues I'm pointing to.
>>>
>>> I want to do only a little integration to what I've written there.
>>>
>>> In my very personal opinion, to maximize adherence with the REST =20
>>> model
>>> and minimize implementation effort SUBSCRIBE and NOTIFY should be
>>> mapped to methods (as discussed many times together...).
>>>
>>> Uniform interface principle (Fielding PhD dissertation Section =20
>>> 5.1.5,
>>> "The central feature that distinguishes the REST architectural style
>>> [...]") states that to simplify the software architecture, resource
>>> interfaces/interfaces should be as general as possible.
>>>
>>> I agree with this principle in this specific case, mainly because
>>> handling a special message type for notify leads node software =20
>>> design
>>> to a more complex architecture.
>>>
>>> The reason is that this new message type requires special handling =20=

>>> and
>>> introduces a complexity in the software modularization.
>>>
>>> Best,
>>> Angelo
>>>
>>> On Fri, May 14, 2010 at 13:06, Zach Shelby<zach@sensinode.com> =20
>>> wrote:
>>>
>>>
>>> Hi Angelo,
>>>
>>> On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:
>>>
>>>
>>>
>>> Dear C. Bormann, all,
>>>
>>> before deciding for the final direction, I've the following
>>> observations about draft-shelby-core-coap-01
>>>
>>> While I mostly share Zach's view of the protocol approach, and
>>> appreciate many aspects of the proposal, there are in my opinion
>>>
>>>
>>> still
>>>
>>>
>>> some open issues that need to be at least discussed before the
>>>
>>>
>>> current
>>>
>>>
>>> document can be selected.
>>>
>>>
>>> Of course there are plenty of open issues. Remember that working =20
>>> group
>>>
>>>
>>> documents still undertake as much change and improvement as the WG
>>> wants, so by no means is coap-01 set in stone. I would expect at =20
>>> least
>>> 5-10 more revisions still along the way. Already several of your =20
>>> ideas
>>> have been integrated into coap-01, and several more are under
>>> consideration, so it is coming along. Patience ;-)
>>>
>>>
>>>
>>> In particular, I would like to highlight the following:
>>>
>>> a) As it is now, it is not possible to have a straightforward
>>> translation of HTTP -> CoAP and viceversa: see
>>> http://www.ietf.org/mail-archive/web/core/current/msg00133.html =20
>>> (this
>>> impacts the scalability of the web service model too)
>>>
>>>
>>> In coap-01 the Method names are now identical to HTTP methods. The
>>>
>>>
>>> Req/Res interaction is a direct translation. The URI hierarchy is
>>> compatible, and the URI binary code format we are still working on
>>> obviously. The only thing that takes some state to translate is
>>> Subscribe/Notify. But note, Subscribe/Notify takes some state no =20
>>> matter
>>> how you do it, even with HTTP-HTTP there is no clean and easy way to
>>> handle subscriptions.
>>>
>>>
>>>
>>> b) Moreover, CoAP's implementation is not as simple as it should be.
>>> I've investigated the implementation and some design choices (as
>>> Options) are leading to very high program complexity (ROM) on a
>>> MSP430-based device.
>>>
>>>
>>> This we can definitely improve, and already made several =20
>>> optimizations
>>>
>>>
>>> from -00 to -01. Here I need some very concrete proposals though. =20=

>>> Also
>>> remember that many things are optional, for example subscribe/=20
>>> notify is
>>> not required if you don't need it.
>>>
>>>
>>>
>>> c) Finally when comparing HTTP message size with CoAP message size,
>>> the resulting compression isn't as good as you may expect.
>>>
>>> Example:
>>> HTTP: GET /sensor/temp.xml HTTP/1.0 =3D 32 B
>>> CoAP: 24 B with options parsing procedure requiring an added
>>> implementation complexity
>>>
>>>
>>> Right, that is not how it will work in practice. Working with a real
>>>
>>>
>>> HTTP server that HTTP header will be more complex, and on the CoAP =20=

>>> side
>>> you would chose shorter URLs. The biggest improvement possible =20
>>> here is
>>> from using binary coded URLs of course. We need to look at a wider =20=

>>> range
>>> of interactions and real HTTP headers as well to check that we are
>>> efficient enough.
>>>
>>>
>>>
>>> Addressing all these points potentially leads to major technical
>>> modifications (especially point a) on the current draft, hence it is
>>> appropriate in my opinion to discuss these points before making the
>>> final decision.
>>>
>>>
>>> I am not sure what else you have in mind for a). If we just forget
>>>
>>>
>>> about Subscribe/Notify then you are good to go. But then you are =20
>>> also
>>> not fulfilling the charter or the industry needs in that respect.
>>>
>>>
>>> Thanks,
>>> Zach
>>>
>>>
>>>
>>> Best regards,
>>>
>>> Angelo P. Castellani
>>>
>>>
>>> On Mon, May 10, 2010 at 18:51, Carsten Bormann<cabo@tzi.org>wrote:
>>>
>>>
>>> The CORE WG has a milestone to select a WG document for CoAP in
>>>
>>>
>>> April:
>>>
>>>
>>> http://datatracker.ietf.org/wg/core/charter/
>>> ...
>>> Apr 2010 Select WG document for basis of the CoAP protocol
>>>
>>> Of the various documents that have been contributed,
>>>
>>>
>>> draft-shelby-core-coap has significant discussion, as well as the
>>> largest number of updates (including a previous version that was =20
>>> still
>>> called -6lowapp-coap).
>>>
>>>
>>> Today, another updated version of that draft was announced. See
>>> http://www.ietf.org/mail-archive/web/core/current/msg00138.html
>>> for the announcement and
>>> http://tools.ietf.org/html/draft-shelby-core-coap-01
>>> for the draft itself.
>>>
>>> However, as the authors say, there are still significant TODOs.
>>>
>>> Are we in a state yet where we can say whether this is the right
>>>
>>>
>>> direction for the WG to take?
>>>
>>>
>>> If yes, is it the right direction? Should we adopt it as a WG
>>>
>>>
>>> document?
>>>
>>>
>>> If you don't think we can say yet, is there a set of technical
>>>
>>>
>>> decisions you would like the authors to take with priority?
>>>
>>>
>>> Note that once a document has become a WG document, the authors act
>>>
>>>
>>> as editors for the working group, making (and usually fleshing out =20=

>>> the
>>> details of) any change that the WG decides it needs.
>>>
>>>
>>> If you think we can still improve the draft, this is not an obstacle
>>>
>>>
>>> to making it a WG document.
>>>
>>>
>>> But of course we shouldn't do that if we intend to reverse its
>>>
>>>
>>> fundamental technical direction.
>>>
>>>
>>> In order to stay roughly in sync with our milestones, we should
>>>
>>>
>>> reach at a decision on how to go forward this week.
>>>
>>>
>>> Gruesse, Carsten
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>>
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>>
>>> --
>>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>>> http://zachshelby.org - My blog "On the Internet of Things"
>>> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded =20
>>> Internet"
>>> Mobile: +358 40 7796297
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>> --------------------------------
>>> Onzo is a limited company number 06097997 registered in England& =20
>>> Wales.
> The
>>> registered office is 6 Great Newport Street, London, WC2H 7JB, =20
>>> United
>> Kingdom.
>>>
>>> This email message may contain confidential and/or privileged
> information,
>> and
>>> is intended solely for the addressee(s). If you have received this =20=

>>> email
> in
>>> error, please notify Onzo immediately. Unauthorised copying, =20
>>> disclosure
> or
>>> distribution of the material in this email is forbidden.
>>> --------------------------------
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>> =
______________________________________________________________________
>>> This email has been scanned by the MessageLabs Email Security =20
>>> System.
>>> =
______________________________________________________________________
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>>
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>> --------------------------------
>>> Onzo is a limited company number 06097997 registered in England& =20
>>> Wales.
> The
>>> registered office is 6 Great Newport Street, London, WC2H 7JB, =20
>>> United
>> Kingdom.
>>>
>>> This email message may contain confidential and/or privileged
> information,
>> and
>>> is intended solely for the addressee(s). If you have received this =20=

>>> email
> in
>>> error, please notify Onzo immediately. Unauthorised copying, =20
>>> disclosure
> or
>>> distribution of the material in this email is forbidden.
>>> --------------------------------
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>>
>>>
>>> =
______________________________________________________________________
>>> This email has been scanned by the MessageLabs Email Security =20
>>> System.
>>>
>>
> =
__________________________________________________________________________=
__
> __
>> _______________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>
>> --
>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>> http://zachshelby.org  - My blog "On the Internet of Things"
>> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded =20
>> Internet"
>> Mobile: +358 40 7796297
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core


--Apple-Mail-14-802811802--

From vipul.x.gupta@oracle.com  Wed Jun  2 13:43:24 2010
Return-Path: <vipul.x.gupta@oracle.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id CB3093A6A4D for <core@core3.amsl.com>; Wed,  2 Jun 2010 13:43:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.998
X-Spam-Level: 
X-Spam-Status: No, score=-3.998 tagged_above=-999 required=5 tests=[BAYES_50=0.001, RCVD_IN_DNSWL_MED=-4, UNPARSEABLE_RELAY=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5T4A7NiAi3A4 for <core@core3.amsl.com>; Wed,  2 Jun 2010 13:43:23 -0700 (PDT)
Received: from rcsinet10.oracle.com (rcsinet10.oracle.com [148.87.113.121]) by core3.amsl.com (Postfix) with ESMTP id CA7783A6860 for <core@ietf.org>; Wed,  2 Jun 2010 13:43:23 -0700 (PDT)
Received: from rcsinet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by rcsinet10.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o52Kh8hS010434 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <core@ietf.org>; Wed, 2 Jun 2010 20:43:10 GMT
Received: from acsmt353.oracle.com (acsmt353.oracle.com [141.146.40.153]) by rcsinet15.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o52Kh7XE011889 for <core@ietf.org>; Wed, 2 Jun 2010 20:43:07 GMT
Received: from abhmt010.oracle.com by acsmt354.oracle.com with ESMTP id 291536651275511354; Wed, 02 Jun 2010 13:42:34 -0700
Received: from dhcp-umpk16-75-99.sfbay.sun.com (/129.146.75.99) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 02 Jun 2010 13:42:34 -0700
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Vipul Gupta <vipul.x.gupta@oracle.com>
In-Reply-To: <mailman.1307.1275462783.17885.core@ietf.org>
Date: Wed, 2 Jun 2010 13:42:29 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <117E7153-502E-4B9D-907F-C5AB63B43024@oracle.com>
References: <mailman.1307.1275462783.17885.core@ietf.org>
To: core@ietf.org
X-Mailer: Apple Mail (2.1078)
X-Auth-Type: Internal IP
X-Source-IP: rcsinet15.oracle.com [148.87.113.117]
X-CT-RefId: str=0001.0A090206.4C06C25E.00C2:SCFMA4539811,ss=1,fgs=0
Cc: Vipul Gupta <vipul.x.gupta@oracle.com>
Subject: [core] CoAP Security
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 02 Jun 2010 20:43:24 -0000

On May 24, 2010, zach@sensinode.com wrote:
=20
> Regarding DTLS, we are specifying how to use it with CoAP as it is a =
secure transport. I agree with Michael that DTLS may very well be too =
much for many constrained devices, so we should make it clear that this =
is not the only way to do security, IPSEC e.g. is equally applicable =
(and probably simpler) but doesn't require any specification in the =
document. A security analysis ID would be a big help for the WG.....

I might be missing something here but what would make IPsec lighter =
weight than DTLS?

I've had experience building an SSL stack for Berkeley "mote" devices =
with as little as 4KB SRAM, 128KB Flash and an 8-bit processor (look for =
a couple of papers with "Sizzle", for Slim SSL, in their title at =
http://labs.oracle.com/projects/crypto/ under Research Publications). As =
one might expect, it is the public-key crypto operations needed for the =
key exchange that dominate the code size and handshake time and this =
would not change between DTLS/TLS and IPSec. The message format used to =
package long-term keys needed for session key establishment or the =
encrypted/authenticated application data (and that's where TLS/DTLS and =
IPSec differ) doesn't have much of an impact.

Another paper that may be of interest to folks here is =
http://labs.oracle.com/techrep/2008/abstract-173.html which discusses =
the energy cost of SSL on very constrained devices.

vipul

---
http://labs.oracle.com/people/mybio.php?c=3D509=

From paduffy@cisco.com  Wed Jun  2 17:10:44 2010
Return-Path: <paduffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C5B1F28C10E for <core@core3.amsl.com>; Wed,  2 Jun 2010 17:10:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.698
X-Spam-Level: 
X-Spam-Status: No, score=-5.698 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HTML_MESSAGE=0.001, MANGLED_TOOL=2.3, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zVO3RL+fWD8T for <core@core3.amsl.com>; Wed,  2 Jun 2010 17:10:37 -0700 (PDT)
Received: from rtp-iport-2.cisco.com (rtp-iport-2.cisco.com [64.102.122.149]) by core3.amsl.com (Postfix) with ESMTP id 138613A6847 for <core@ietf.org>; Wed,  2 Jun 2010 17:10:34 -0700 (PDT)
Authentication-Results: rtp-iport-2.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAD+PBkxAZnwM/2dsb2JhbACeJXGmUIFyCwGYFwKCcYIjBA
X-IronPort-AV: E=Sophos;i="4.53,349,1272844800";  d="scan'208,217";a="117504608"
Received: from rtp-core-1.cisco.com ([64.102.124.12]) by rtp-iport-2.cisco.com with ESMTP; 03 Jun 2010 00:10:20 +0000
Received: from [161.44.65.108] ([161.44.65.108]) by rtp-core-1.cisco.com (8.13.8/8.14.3) with ESMTP id o530AK9s017300 for <core@ietf.org>; Thu, 3 Jun 2010 00:10:20 GMT
Message-ID: <4C06F2EC.7010508@cisco.com>
Date: Wed, 02 Jun 2010 20:10:20 -0400
From: Paul Duffy <paduffy@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de> <727919DA-EB90-4772-A9EB-B516333ACE43@gmail.com>
In-Reply-To: <727919DA-EB90-4772-A9EB-B516333ACE43@gmail.com>
Content-Type: multipart/alternative; boundary="------------080403060605030100030109"
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: paduffy@cisco.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 00:10:45 -0000

This is a multi-part message in MIME format.
--------------080403060605030100030109
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

+1


On 6/2/2010 3:12 AM, Vlad Trifa wrote:
> Hi, sorry to join the discussion only now.
>
> I think we should avoid explicitly defining a messaging/eventing 
> construction in coap which would be an "add-on" on top of http. HTTP 
> doesn't define any by design, but doesn't mean we can't use/create a 
> pattern that implements this behavior, and we just just propose the 
> pattern, not turn it into a design. It'd be more useful to stay as 
> close as possible to the original http/rest (unless the mapping to 
> http/web is more of an "nice-to-have"option that the motivation of 
> doing coap), which means it's great if we can show show how to 
> implement messaging on top of coap, but avoid inserting additional 
> verbs, etc that would not be directly supported in http (thus making 
> the mapping between coap-http more complex).
>
> We just wrote a paper on Web-based restful messaging for embedded 
> devices which will be presented next month at ICWE, and as it's highly 
> relevant to this notification discussion thread, I thought I'd share 
> it here.
>
>
>
>
> Please let me know your thoughts/comments/questions,
>
> thx!
>
> Vlad
>
>
>
> On Jun 2, 2010, at 9:21 AM, Guido Moritz wrote:
>
>> Dear WG,
>>
>> I agree to focus on the ToDos and not on the maybes. But a comprehensive
>> eventing concept includes more than only the method/message type. It
>> requires lease concepts, filtering mechanisms ... It would also require
>> mechanisms to assign incoming NOTIFYs to a specific SUBSCRIBTION if 
>> one and
>> the same client has SUBSCRIBED to more than one event of the same 
>> device. Is
>> this out of scope of COAP or should it be considered already at this 
>> point
>> to have a straight forward and clean protocol design? Hence it might be
>> reasonable to have SUBSCRIBE and NOTIFY as single methods and 
>> grouping every
>> sub functionality as type below the method?
>>
>> However, as HTTP has no native mechanism to feature eventing, for 
>> eventing
>> it would be always required to have a caching intermediate entity 
>> (proxy,
>> gateway, what ever). This one can provide which interface ever to the
>> external networks (HTPP, polling, WebHooks, XMPP, WS-Eventing, ...). 
>> So this
>> is implementation specific and might not be considered in COAP at all.
>>
>> Guido
>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: core-bounces@ietf.org [mailto:core-bounces@ietf.org] Im Auftrag 
>>> von
>> Zach
>>> Shelby
>>> Gesendet: Freitag, 28. Mai 2010 14:50
>>> An: Adriano Pezzuto
>>> Cc: core
>>> Betreff: Re: [core] Subscribe/Notify for CoAP
>>>
>>> Hi,
>>>
>>> This is a really good conversation. One thing we need to do is remember
>> what
>>> our minimum requirements are for subscribe/notify and not try to solve
>>> something more than we should. From what I know it is sufficient to be
>> able to
>>> receive notifications when a URI changes or periodically. You might
>> consider
>>> new URIs under this URI path to be changes to a URI though...
>>>
>>> On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>>
>>>> Hello,
>>>> with this flavor, the SUBSCRIBE may be replaced by a simple POST. 
>>>> So no
>>> needs to have an explicit SUBSCRIBE method.
>>>
>>> This is what coap-01 assumes.
>>>
>>>> If we want support a more oriented peer-to-peer transaction on 
>>>> CoAP, it
>>> looks to me both SUB and NOTIFY should be treated as messages.
>>>
>>> The Request/Response model can be used peer-to-peer, and in CoAP you 
>>> can
>> even
>>> use a Request asynchronously. Additionally, we want a native RESTful
>>> subscribe/notify technique, that is, we want to subscribe to 
>>> resources and
>> be
>>> susequently notified about those resources when they change.
>>>
>>> In that sense, you can think of a subscription as a request to receive
>>> asynchronous notifications about a resource (about a URI). This can be
>>> achieved by:
>>>
>>> 1.  as a SUBSCRIBE Request on the URI with some option indicating the
>> lifetime
>>> as in coap-01,
>>> 2.  as a Subcsribe message (no methods) on the URI with some option,
>>> 3.  or as a POST Request on the URI with options indicating that 
>>> this is
>>> actually a subscription and the lifetime.  This bends the meaning of 
>>> POST
>>> quite a bit and might be prone to mistakes?
>>>
>>> The asynchronous response is a harder one. Can we bend the meaning of a
>>> Request for making asynchronous notifications? Also a notification
>> includes a
>>> URI about a resource on the requestor, which is inverse from normal
>> Requests
>>> in REST. So the options here are:
>>>
>>> 1. as a Notify message about a URI (no methods) as in coap-01,
>>> 2. as a NOTIFY Request about a URI as was in coap-00,
>>> 3. hmmm... reusing CRUD methods really doesn't work for this one at 
>>> all...
>>>
>>> I wonder what the HTTP designers would have done if this would have 
>>> been a
>>> requirement back then? Maybe we should ask them...
>>>
>>> Zach
>>>
>>>>
>>>> Adriano
>>>>
>>>> From: matthieu.vial@fr.non.schneider-electric.com
>>> [mailto:matthieu.vial@fr.non.schneider-electric.com]
>>>> Sent: venerdì 28 maggio 2010 13.52
>>>> To: Adriano Pezzuto (apezzuto)
>>>> Cc: core; core-bounces@ietf.org; robert.cragie@gridmerge.com
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>
>>>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types not
>>> methods!
>>>>
>>>> SUBSCRIBE can be just an asynchronous GET on update then I think it 
>>>> is a
>>> method and NOTIFY is an asynchronous response so a message.
>>>> But if we want to have selective notifications when a resource is
>> created,
>>> updated or deleted then I think you're right NOTIFY and SUBSCRIBE are
>>> messages.
>>>>
>>>> Does that make sense ?
>>>>
>>>> Matthieu
>>>>
>>>> <image001.gif>"Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
>>>>
>>>>
>>>>
>>>>
>>>> "Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
>>>> Envoyé par : core-bounces@ietf.org
>>>> 28/05/2010 12:50
>>>>
>>>> <image003.png>
>>>> A
>>>> <image004.png>
>>>> <robert.cragie@gridmerge.com>
>>>> <image003.png>
>>>> cc
>>>> <image004.png>
>>>> core <core@ietf.org>
>>>> <image003.png>
>>>> Objet
>>>> <image004.png>
>>>> Re: [core] Subscribe/Notify for CoAP
>>>> <image004.png>
>>>> <image004.png>
>>>>
>>>> Hi Roberto,
>>>> I understand your point and personally agree on M2M is quite different
>> from
>>> web page model. On the architectural RESTful style, the method 
>>> information
>>> tells the server what to do with data kept in the URI information.
>>>>
>>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types not
>>> methods!
>>>>
>>>> Adriano
>>>>
>>>> From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
>>>> Sent: venerdì 28 maggio 2010 11.53
>>>> To: Adriano Pezzuto (apezzuto)
>>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>
>>>> I think the point here is that there are two levels we are 
>>>> considering.
>>>>
>>>> At the lowest (foundation) level, there are the transaction 
>>>> messages as
>>> described below. This provides a flexible mechanism for the application
>> with
>>> regard to synchronicity and threading. This is important for the 
>>> types of
>>> devices CoAP is being aimed at.
>>>>
>>>> Above that, the methods can be used according to the architectural
>> style. So
>>> in this case, it is RESTful (COnstrained Restful Environments), 
>>> which will
>>> naturally limit the number of methods and how transactions occur.
>>>>
>>>> The actual architecture using a combination of the methods and 
>>>> messages
>> also
>>> depends on what is required at the application layer. Consider a 
>>> typical
>>> client which wants to subscribe to a resource. That client controls the
>> feed
>>> of data but needs a component which is capable of handling (possibly
>>> buffering) the data it receives through notifications. Is this a 
>>> separate
>>> server? Or would we want to consider it part of an enhanced client 
>>> model
>> which
>>> is able to process feeds of data? These are the sort of models which 
>>> have
>> led
>>> to the myriad of solutions (GENA, Webhooks, long polling, pubsubhubbub,
>> RESTMS
>>> etc.) based around HTTP which are all essentially ingenious ways of
>> getting
>>> around the limitations imposed by HTTP and how it is processed for
>> anything
>>> which deviates from the classic web page access model.
>>>>
>>>> I think the aim of CoAP should be clean from the word go with 
>>>> regard to
>>> supporting these more peer-to-peer transactions, where the client can
>> exist on
>>> either entity and both entities can feed data to each other; typical in
>> M2M
>>> applications.
>>>>
>>>> Robert
>>>>
>>>> Robert Cragie (Pacific Gas & Electric)
>>>>
>>>> Gridmerge Ltd.
>>>> 89 Greenfield Crescent,
>>>> Wakefield, WF4 4WA, UK
>>>> +44 1924 910888
>>>> +1 415 513 0064
>>>> http://www.gridmerge.com
>>>>
>>>> On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>>> Hi Robert,
>>>>
>>>> in my personal opinion, the option 1a) brings some sort of 
>>>> ambiguity to
>> CoAP
>>> specs.
>>>>
>>>> My be my understatement of new CoAP specs is not so deep, but now we
>> have 5
>>> methods and 3 message types: request, response and notify. Which 
>>> methods
>> are
>>> allowed with which messages types?
>>>> I suppose you have to use PUT/POST method with notify message for 
>>>> asynch
>>> data notification. How to make a subscribe? I suppose you would use a
>>> SUBSCRIBE method with request/response message or SUBSCRIBE with notify
>>> message? Also what about POST/DELETE methods in a notify message? 
>>> They not
>>> make any sense..
>>>>
>>>> I think the choice is between: option 1) -> only CRUD methods and 
>>>> option
>> 1b)
>>> -> CRUD + SUB/NOTIFY methods, keeping in mind cost/benefits of both
>> solutions.
>>>>
>>>> Adriano
>>>>
>>>> From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
>>>> Sent: mercoledì 26 maggio 2010 20.09
>>>> To: Adriano Pezzuto (apezzuto)
>>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>
>>>> Hi Adrian,
>>>>
>>>> I would also prefer to keep the protocol in CoAP asynchronous. You can
>>> always map an asynchronous protocol to a synchronous one but, as we 
>>> see in
>>> HTTP, it always ends up as a kludge to do it the other way round. The
>> efforts
>>> which have been gone to to make HTTP quasi-asynchronous via all the
>> schemes
>>> mentioned below and many more besides (all non-interoperable of 
>>> course) is
>>> testament to how important this is for M2M communication.
>>>>
>>>> So, back to Zach's list, I favor 1a) for the following reasons:
>>>>
>>>> Foundation level of messages:
>>>>
>>>> 1. request/response can be asynchronous or synchronous messages (as
>> there is
>>> a transaction ID in there)
>>>> 2. notify is an asynchronous message
>>>> Derived methods:
>>>>
>>>> I think it makes sense to add a pub/sub model as a useful mechanism 
>>>> for
>> M2M.
>>>>
>>>> So, looking at it the other way round: It will be entirely possible to
>>> translate whatever is currently built on HTTP to CoAP based on the 
>>> above,
>> with
>>> all its restrictions regarding synchronous and client/server 
>>> transactions.
>>> What may be harder is to translate directly is a CoAP-based 
>>> application to
>>> HTTP. So I guess the question is: Do we want to be hamstrung to
>> synchronous
>>> client/server transactions as dictated by HTTP and provide a direct
>> mapping to
>>> HTTP, then have to come up with similar kludges for asynchronous
>> peer-to-peer
>>> transactions as has been done in numerous ways for HTTP, or do we 
>>> want to
>>> define the protocol cleanly to start with and accept that some sort of
>>> transaction relaying/conversion would have to take place at a mapping
>> node?
>>>>
>>>> Robert
>>>> Robert Cragie (Pacific Gas & Electric)
>>>>
>>>> Gridmerge Ltd.
>>>> 89 Greenfield Crescent,
>>>> Wakefield, WF4 4WA, UK
>>>> +44 1924 910888
>>>> +1 415 513 0064
>>>> http://www.gridmerge.com
>>>>
>>>> On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:
>>>> Hi,
>>>> it looks to me that CoAP should use an explicit sub/notify mechanism
>> since
>>> this is the core of the machine-to-machine interaction model.
>>>> HTTP suffers of this lack and we have seen a plethora of solutions to
>> give
>>> an asynch taste to it. Webhooks and websockets are only the lasts of 
>>> the
>> list.
>>>> As someone has already pointed out on this list, it is theoretically
>>> possible to describe sub/notify using only CRUD methods but it looks a
>> little
>>> bit tricky and verbose.
>>>>
>>>> Now we have a chance to build from scratch a new protocol with and I
>> think
>>> using explicit sub/notify methods with a clear and well defined 
>>> semantic
>> is
>>> the best option. It is easily understanding from every developer and 
>>> will
>>> prevent to build other fanny solutions on top of the CoAP. HTTP does 
>>> not
>> have
>>> this well defined semantic and (for hundreds of other reasons also) 
>>> it is
>> not
>>> used as wide protocol for machine-to-machine communication.
>>>>
>>>> CoAP - as binary protocol - and with an explicit asynch model has a
>> chance
>>> to be a really wide protocol for M2M communication not only for
>> constrained
>>> environments.
>>>>
>>>> my 2 cents
>>>>
>>>> - adriano
>>>>
>>>> -----Original Message-----
>>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On 
>>>> Behalf Of
>> Paul
>>> Duffy (paduffy)
>>>> Sent: mercoledì 26 maggio 2010 0.47
>>>> To: Zach Shelby
>>>> Cc: core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>
>>>> On 5/25/2010 6:41 PM, Zach Shelby wrote:
>>>>
>>>> Hi,
>>>>
>>>> On May 26, 2010, at 12:23 AM, Charles Palmer wrote:
>>>>
>>>>
>>>> Hi folks
>>>>
>>>> It occurs to me that CoRE should be keeping a close eye on ZigBee 
>>>> SE2.0
>>> work, so that it is as easy as possible for ZigBee SE to use CoRE when
>> ready.
>>> That suggests to me that we should align with their subscribe/notify
>> process.
>>>>
>>>>
>>>> I am not sure I understand that. I mean, ZigBee SE2.0 is defining an
>>> application specific subscribe/notify mechanism for that purpose so far
>> for
>>> HTTP. This uses standard HTTP methods and some custom payload and REST
>>> interfaces. CoAP Req/Res is already totally compatible with SE2.0 in 
>>> that
>>> respect, so alignment is already OK there. Nothing stopping someone 
>>> from
>> using
>>> SE2.0 over CoAP.
>>>>
>>>> Specifying a native susbcription/notify into CoAP is another 
>>>> matter. We
>>> can't adopt a solution specific to one application as that won't 
>>> solve the
>>> problems of other applications nor general HTTP mapping at all 
>>> (probably
>> would
>>> make it worse). It seems that for the near future there will be a 
>>> bunch of
>>> HTTP push mechanisms in use without any clear standard appearing - 
>>> or am I
>>> wrong there?
>>>>
>>>>
>>>>
>>>>
>>>> If COAP extends HTTP semantics with new subscription methods, it will
>>>> not be possible to easily interchange HTTP/COAP, and translation
>>>> gateways will become more complex to implement.
>>>>
>>>>
>>>>
>>>> Zach
>>>>
>>>>
>>>> Regards - Charles
>>>>
>>>>
>>>> -----Original Message-----
>>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On 
>>>> Behalf Of
>> Paul
>>> Duffy
>>>> Sent: 25 May 2010 03:48
>>>> To: Zach Shelby
>>>> Cc: core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>
>>>> Recommend something like #2, primarily to avoid introducing non HTTP
>>>> method semantics, simplifying HTTP/COAP translation.gateways, etc.
>>>>
>>>>
>>>> On 5/24/2010 11:49 AM, Zach Shelby wrote:
>>>>
>>>> (thread renamed)
>>>>
>>>> We have two different paths with regard to a subscribe/notify 
>>>> mechanism
>> for
>>> CoAP:
>>>>
>>>> 1. Use specific Subscription and Notify mechanisms for CoAP as HTTP
>> really
>>> does not include this concept.
>>>> 1a) Notify as a message and SUBSCRIBE as a method. This is currently
>> used in
>>> coap-01.
>>>> 1b) NOTIFY and SUBSCRIBE as methods. This was used in coap-00, but we
>> had a
>>> good list discussion about this leading to a. In practice it doesn't 
>>> make
>> a
>>> big difference if notification is a message or method.
>>>>
>>>> 2. Use an HTTP specific framework such as Webhooks, the ZigBee SE2.0
>>> proposal or GENA.
>>>>
>>>> So far we have focused on 1 in the WG, and every now and again 2 comes
>> up.
>>> At least I am not convinced that we need to suffer the drawbacks of 
>>> HTTP
>> here.
>>> Anyways 2 does not help our mapping to HTTP in reality very much as 
>>> there
>> is
>>> no standard way of doing this over HTTP. Thus a CoAP-HTTP proxy may 
>>> end up
>>> anyways translating between multiple HTTP frameworks depending on the
>>> application. So instead of doing a CoAP Notify/Subscribe to Webhooks
>> mapping,
>>> you will could end up having to do a CoAP Webhooks to HTTP GENA 
>>> mapping.
>>>>
>>>>
>>>>
>>>> I don't understand this last para. If CoAP sticks to the semantics of
>>>> the current HTTP methods, would this not offer a fairly 
>>>> straightforward
>>>> translation to/from HTTP?
>>>>
>>>>
>>>>
>>>> From what I have heard so far 1 still seems like a wise choice, 
>>>> although
>> I
>>> need to look at Webhooks more deeply. In reality many applications 
>>> specify
>>> their own way of doing a push interface using REST methods and specific
>>> payloads (ZigBee SE2.0 is such an example). That is just fine, and 
>>> might
>> be
>>> used instead of a specific CoAP notify/subscribe in that case. So 1
>> doesn't
>>> prevent the application using its own mechanism, it just provides a 
>>> native
>> way
>>> for doing push.
>>>>
>>>> What do people think?
>>>>
>>>> Zach
>>>>
>>>> On May 17, 2010, at 6:44 
>>>> PM,matthieu.vial@fr.non.schneider-electric.com
>>> wrote:
>>>>
>>>>
>>>>
>>>> Hi,
>>>>
>>>> My comments about the subscribe/notify mechanism of Zigbee IP.
>>>>
>>>> Pros:
>>>> - Derived from the webhooks concept
>>>> - If used by CORE it will be easier to map to HTTP because it uses 
>>>> only
>> CRUD
>>> verbs.
>>>> - The subscription message is extendable and could support advanced
>> options
>>> (delays, increment, ...)
>>>> - Only one listening port whatever the transport binding is.
>>>>
>>>> Cons:
>>>> - No interoperability without well known URIs and a well defined
>>> subscription message format (Not sure CoAP draft is the right place to
>> specify
>>> this).
>>>> - XML/EXI is too complex to be the required format for the default
>>> subscription/notification mechanism.
>>>> - The notification should not require a subsequent GET to retrieve the
>>> content.
>>>> - Subresource subscription is redundant.
>>>>
>>>> Hope this could help,
>>>> Matthieu
>>>>
>>>>
>>>> <graycol.gif>"Charles Palmer"<charles.palmer@onzo.com>
>>>>
>>>>
>>>>
>>>>
>>>> "Charles Palmer"<charles.palmer@onzo.com>
>>>> Envoyé par : core-bounces@ietf.org
>>>> 15/05/2010 14:06
>>>>
>>>> <ecblank.gif>
>>>> A
>>>> <ecblank.gif>
>>>> "core"<core@ietf.org>
>>>> <ecblank.gif>
>>>> cc
>>>> <ecblank.gif>
>>>> <ecblank.gif>
>>>> Objet
>>>> <ecblank.gif>
>>>> Re: [core] Selecting a WG document for CoAP
>>>> <ecblank.gif> <ecblank.gif>
>>>>
>>>> Dear all
>>>>
>>>> Those interested in the subscribe/notify discussion might like to look
>>>> at the draft Smart Energy Profile 2.0 Application Protocol
>>>> Specification. It is available here:
>>>> http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20PublicApp 
>>>>
>>>> licationProfile.aspx
>>>>
>>>> It manages subscribe/notify by using POST. This seems to remove the 
>>>> need
>>>> for SUBSCRIBE and notify.
>>>>
>>>> "Imagine a host A, which exposes a resource at http{s}://A/resource 
>>>> and
>>>> a second host B, which wishes to learn of changes to this resource. To
>>>> facilitate a subscription/ notification mechanism, A would expose a
>>>> resource http{s}://A/sub and B would expose a resource 
>>>> http{s}://B/ntfy.
>>>> To subscribe to notifications regarding http{s}://A/resource, B would
>>>> send a POST to the address http{s}://A/sub/B containing the URI of the
>>>> resource of interest (http{s}://A/resource) and the URI of B's
>>>> notification resource (http{s}://B/ntfy). Following this subscription
>>>> step, should A wish to notify B of a change to the resource 
>>>> addressed at
>>>> http{s}://A/resource, A would send a POST to the address
>>>> http{s}://B/ntfy containing the URI of the resource changed
>>>> (http{s}://A/resource) and the URI of A's subscription resource
>>>> (http{s}://A/sub/B), should A wish to change its subscription. The 
>>>> host
>>>> B can then query the resource (or not) at its leisure."
>>>>
>>>> Sleepy nodes are not allowed to subscribe, and must poll.
>>>>
>>>> Regards - Charles Palmer
>>>>
>>>> -----Original Message-----
>>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On 
>>>> Behalf Of
>>>> Angelo P. Castellani
>>>> Sent: 14 May 2010 13:14
>>>> To: Zach Shelby
>>>> Cc: core
>>>> Subject: Re: [core] Selecting a WG document for CoAP
>>>>
>>>> Zach,
>>>>
>>>> thanks for the comments, but please refer to my most recent e-mail for
>>>> a more specific list of technical issues I'm pointing to.
>>>>
>>>> I want to do only a little integration to what I've written there.
>>>>
>>>> In my very personal opinion, to maximize adherence with the REST model
>>>> and minimize implementation effort SUBSCRIBE and NOTIFY should be
>>>> mapped to methods (as discussed many times together...).
>>>>
>>>> Uniform interface principle (Fielding PhD dissertation Section 5.1.5,
>>>> "The central feature that distinguishes the REST architectural style
>>>> [...]") states that to simplify the software architecture, resource
>>>> interfaces/interfaces should be as general as possible.
>>>>
>>>> I agree with this principle in this specific case, mainly because
>>>> handling a special message type for notify leads node software design
>>>> to a more complex architecture.
>>>>
>>>> The reason is that this new message type requires special handling and
>>>> introduces a complexity in the software modularization.
>>>>
>>>> Best,
>>>> Angelo
>>>>
>>>> On Fri, May 14, 2010 at 13:06, Zach Shelby<zach@sensinode.com> wrote:
>>>>
>>>>
>>>> Hi Angelo,
>>>>
>>>> On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:
>>>>
>>>>
>>>>
>>>> Dear C. Bormann, all,
>>>>
>>>> before deciding for the final direction, I've the following
>>>> observations about draft-shelby-core-coap-01
>>>>
>>>> While I mostly share Zach's view of the protocol approach, and
>>>> appreciate many aspects of the proposal, there are in my opinion
>>>>
>>>>
>>>> still
>>>>
>>>>
>>>> some open issues that need to be at least discussed before the
>>>>
>>>>
>>>> current
>>>>
>>>>
>>>> document can be selected.
>>>>
>>>>
>>>> Of course there are plenty of open issues. Remember that working group
>>>>
>>>>
>>>> documents still undertake as much change and improvement as the WG
>>>> wants, so by no means is coap-01 set in stone. I would expect at least
>>>> 5-10 more revisions still along the way. Already several of your ideas
>>>> have been integrated into coap-01, and several more are under
>>>> consideration, so it is coming along. Patience ;-)
>>>>
>>>>
>>>>
>>>> In particular, I would like to highlight the following:
>>>>
>>>> a) As it is now, it is not possible to have a straightforward
>>>> translation of HTTP -> CoAP and viceversa: see
>>>> http://www.ietf.org/mail-archive/web/core/current/msg00133.html (this
>>>> impacts the scalability of the web service model too)
>>>>
>>>>
>>>> In coap-01 the Method names are now identical to HTTP methods. The
>>>>
>>>>
>>>> Req/Res interaction is a direct translation. The URI hierarchy is
>>>> compatible, and the URI binary code format we are still working on
>>>> obviously. The only thing that takes some state to translate is
>>>> Subscribe/Notify. But note, Subscribe/Notify takes some state no 
>>>> matter
>>>> how you do it, even with HTTP-HTTP there is no clean and easy way to
>>>> handle subscriptions.
>>>>
>>>>
>>>>
>>>> b) Moreover, CoAP's implementation is not as simple as it should be.
>>>> I've investigated the implementation and some design choices (as
>>>> Options) are leading to very high program complexity (ROM) on a
>>>> MSP430-based device.
>>>>
>>>>
>>>> This we can definitely improve, and already made several optimizations
>>>>
>>>>
>>>> from -00 to -01. Here I need some very concrete proposals though. Also
>>>> remember that many things are optional, for example 
>>>> subscribe/notify is
>>>> not required if you don't need it.
>>>>
>>>>
>>>>
>>>> c) Finally when comparing HTTP message size with CoAP message size,
>>>> the resulting compression isn't as good as you may expect.
>>>>
>>>> Example:
>>>> HTTP: GET /sensor/temp.xml HTTP/1.0 = 32 B
>>>> CoAP: 24 B with options parsing procedure requiring an added
>>>> implementation complexity
>>>>
>>>>
>>>> Right, that is not how it will work in practice. Working with a real
>>>>
>>>>
>>>> HTTP server that HTTP header will be more complex, and on the CoAP 
>>>> side
>>>> you would chose shorter URLs. The biggest improvement possible here is
>>>> from using binary coded URLs of course. We need to look at a wider 
>>>> range
>>>> of interactions and real HTTP headers as well to check that we are
>>>> efficient enough.
>>>>
>>>>
>>>>
>>>> Addressing all these points potentially leads to major technical
>>>> modifications (especially point a) on the current draft, hence it is
>>>> appropriate in my opinion to discuss these points before making the
>>>> final decision.
>>>>
>>>>
>>>> I am not sure what else you have in mind for a). If we just forget
>>>>
>>>>
>>>> about Subscribe/Notify then you are good to go. But then you are also
>>>> not fulfilling the charter or the industry needs in that respect.
>>>>
>>>>
>>>> Thanks,
>>>> Zach
>>>>
>>>>
>>>>
>>>> Best regards,
>>>>
>>>> Angelo P. Castellani
>>>>
>>>>
>>>> On Mon, May 10, 2010 at 18:51, Carsten Bormann<cabo@tzi.org>wrote:
>>>>
>>>>
>>>> The CORE WG has a milestone to select a WG document for CoAP in
>>>>
>>>>
>>>> April:
>>>>
>>>>
>>>> http://datatracker.ietf.org/wg/core/charter/
>>>> ...
>>>> Apr 2010 Select WG document for basis of the CoAP protocol
>>>>
>>>> Of the various documents that have been contributed,
>>>>
>>>>
>>>> draft-shelby-core-coap has significant discussion, as well as the
>>>> largest number of updates (including a previous version that was still
>>>> called -6lowapp-coap).
>>>>
>>>>
>>>> Today, another updated version of that draft was announced. See
>>>> http://www.ietf.org/mail-archive/web/core/current/msg00138.html
>>>> for the announcement and
>>>> http://tools.ietf.org/html/draft-shelby-core-coap-01
>>>> for the draft itself.
>>>>
>>>> However, as the authors say, there are still significant TODOs.
>>>>
>>>> Are we in a state yet where we can say whether this is the right
>>>>
>>>>
>>>> direction for the WG to take?
>>>>
>>>>
>>>> If yes, is it the right direction? Should we adopt it as a WG
>>>>
>>>>
>>>> document?
>>>>
>>>>
>>>> If you don't think we can say yet, is there a set of technical
>>>>
>>>>
>>>> decisions you would like the authors to take with priority?
>>>>
>>>>
>>>> Note that once a document has become a WG document, the authors act
>>>>
>>>>
>>>> as editors for the working group, making (and usually fleshing out the
>>>> details of) any change that the WG decides it needs.
>>>>
>>>>
>>>> If you think we can still improve the draft, this is not an obstacle
>>>>
>>>>
>>>> to making it a WG document.
>>>>
>>>>
>>>> But of course we shouldn't do that if we intend to reverse its
>>>>
>>>>
>>>> fundamental technical direction.
>>>>
>>>>
>>>> In order to stay roughly in sync with our milestones, we should
>>>>
>>>>
>>>> reach at a decision on how to go forward this week.
>>>>
>>>>
>>>> Gruesse, Carsten
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>>
>>>> -- 
>>>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>>>> http://zachshelby.org - My blog "On the Internet of Things"
>>>> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
>>>> Mobile: +358 40 7796297
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>> --------------------------------
>>>> Onzo is a limited company number 06097997 registered in England& 
>>>> Wales.
>> The
>>>> registered office is 6 Great Newport Street, London, WC2H 7JB, United
>>> Kingdom.
>>>>
>>>> This email message may contain confidential and/or privileged
>> information,
>>> and
>>>> is intended solely for the addressee(s). If you have received this 
>>>> email
>> in
>>>> error, please notify Onzo immediately. Unauthorised copying, 
>>>> disclosure
>> or
>>>> distribution of the material in this email is forbidden.
>>>> --------------------------------
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>> ______________________________________________________________________
>>>> This email has been scanned by the MessageLabs Email Security System.
>>>> ______________________________________________________________________
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>> --------------------------------
>>>> Onzo is a limited company number 06097997 registered in England& 
>>>> Wales.
>> The
>>>> registered office is 6 Great Newport Street, London, WC2H 7JB, United
>>> Kingdom.
>>>>
>>>> This email message may contain confidential and/or privileged
>> information,
>>> and
>>>> is intended solely for the addressee(s). If you have received this 
>>>> email
>> in
>>>> error, please notify Onzo immediately. Unauthorised copying, 
>>>> disclosure
>> or
>>>> distribution of the material in this email is forbidden.
>>>> --------------------------------
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>>
>>>>
>>>> ______________________________________________________________________
>>>> This email has been scanned by the MessageLabs Email Security System.
>>>>
>>>
>> ____________________________________________________________________________ 
>>
>> __
>>> _______________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>> -- 
>>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>>> http://zachshelby.org  - My blog "On the Internet of Things"
>>> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
>>> Mobile: +358 40 7796297
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>    


--------------080403060605030100030109
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
+1<br>
<br>
<br>
On 6/2/2010 3:12 AM, Vlad Trifa wrote:
<blockquote cite="mid:727919DA-EB90-4772-A9EB-B516333ACE43@gmail.com"
 type="cite">Hi, sorry to join the discussion only now.
  <br>
  <br>
I think we should avoid explicitly defining a messaging/eventing
construction in coap which would be an "add-on" on top of http. HTTP
doesn't define any by design, but doesn't mean we can't use/create a
pattern that implements this behavior, and we just just propose the
pattern, not turn it into a design. It'd be more useful to stay as
close as possible to the original http/rest (unless the mapping to
http/web is more of an "nice-to-have"option that the motivation of
doing coap), which means it's great if we can show show how to
implement messaging on top of coap, but avoid inserting additional
verbs, etc that would not be directly supported in http (thus making
the mapping between coap-http more complex).
  <br>
  <br>
We just wrote a paper on Web-based restful messaging for embedded
devices which will be presented next month at ICWE, and as it's highly
relevant to this notification discussion thread, I thought I'd share it
here.
  <br>
  <br>
  <br>
  <br>
  <br>
Please let me know your thoughts/comments/questions,
  <br>
  <br>
thx!
  <br>
  <br>
Vlad
  <br>
  <br>
  <br>
  <br>
On Jun 2, 2010, at 9:21 AM, Guido Moritz wrote:
  <br>
  <br>
  <blockquote type="cite">Dear WG,
    <br>
    <br>
I agree to focus on the ToDos and not on the maybes. But a
comprehensive
    <br>
eventing concept includes more than only the method/message type. It
    <br>
requires lease concepts, filtering mechanisms ... It would also require
    <br>
mechanisms to assign incoming NOTIFYs to a specific SUBSCRIBTION if one
and
    <br>
the same client has SUBSCRIBED to more than one event of the same
device. Is
    <br>
this out of scope of COAP or should it be considered already at this
point
    <br>
to have a straight forward and clean protocol design? Hence it might be
    <br>
reasonable to have SUBSCRIBE and NOTIFY as single methods and grouping
every
    <br>
sub functionality as type below the method?
    <br>
    <br>
However, as HTTP has no native mechanism to feature eventing, for
eventing
    <br>
it would be always required to have a caching intermediate entity
(proxy,
    <br>
gateway, what ever). This one can provide which interface ever to the
    <br>
external networks (HTPP, polling, WebHooks, XMPP, WS-Eventing, ...). So
this
    <br>
is implementation specific and might not be considered in COAP at all.
    <br>
    <br>
Guido
    <br>
    <br>
    <blockquote type="cite">-----Urspr&uuml;ngliche Nachricht-----
      <br>
Von: <a class="moz-txt-link-abbreviated" href="mailto:core-bounces@ietf.org">core-bounces@ietf.org</a> [<a class="moz-txt-link-freetext" href="mailto:core-bounces@ietf.org">mailto:core-bounces@ietf.org</a>] Im Auftrag
von
      <br>
    </blockquote>
Zach
    <br>
    <blockquote type="cite">Shelby
      <br>
Gesendet: Freitag, 28. Mai 2010 14:50
      <br>
An: Adriano Pezzuto
      <br>
Cc: core
      <br>
Betreff: Re: [core] Subscribe/Notify for CoAP
      <br>
      <br>
Hi,
      <br>
      <br>
This is a really good conversation. One thing we need to do is remember
      <br>
    </blockquote>
what
    <br>
    <blockquote type="cite">our minimum requirements are for
subscribe/notify and not try to solve
      <br>
something more than we should. From what I know it is sufficient to be
      <br>
    </blockquote>
able to
    <br>
    <blockquote type="cite">receive notifications when a URI changes or
periodically. You might
      <br>
    </blockquote>
consider
    <br>
    <blockquote type="cite">new URIs under this URI path to be changes
to a URI though...
      <br>
      <br>
On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrote:
      <br>
      <br>
      <blockquote type="cite">Hello,
        <br>
with this flavor, the SUBSCRIBE may be replaced by a simple POST. So no
        <br>
      </blockquote>
needs to have an explicit SUBSCRIBE method.
      <br>
      <br>
This is what coap-01 assumes.
      <br>
      <br>
      <blockquote type="cite">If we want support a more oriented
peer-to-peer transaction on CoAP, it
        <br>
      </blockquote>
looks to me both SUB and NOTIFY should be treated as messages.
      <br>
      <br>
The Request/Response model can be used peer-to-peer, and in CoAP you
can
      <br>
    </blockquote>
even
    <br>
    <blockquote type="cite">use a Request asynchronously. Additionally,
we want a native RESTful
      <br>
subscribe/notify technique, that is, we want to subscribe to resources
and
      <br>
    </blockquote>
be
    <br>
    <blockquote type="cite">susequently notified about those resources
when they change.
      <br>
      <br>
In that sense, you can think of a subscription as a request to receive
      <br>
asynchronous notifications about a resource (about a URI). This can be
      <br>
achieved by:
      <br>
      <br>
1.&nbsp; as a SUBSCRIBE Request on the URI with some option indicating the
      <br>
    </blockquote>
lifetime
    <br>
    <blockquote type="cite">as in coap-01,
      <br>
2.&nbsp; as a Subcsribe message (no methods) on the URI with some option,
      <br>
3.&nbsp; or as a POST Request on the URI with options indicating that this
is
      <br>
actually a subscription and the lifetime.&nbsp; This bends the meaning of
POST
      <br>
quite a bit and might be prone to mistakes?
      <br>
      <br>
The asynchronous response is a harder one. Can we bend the meaning of a
      <br>
Request for making asynchronous notifications? Also a notification
      <br>
    </blockquote>
includes a
    <br>
    <blockquote type="cite">URI about a resource on the requestor,
which is inverse from normal
      <br>
    </blockquote>
Requests
    <br>
    <blockquote type="cite">in REST. So the options here are:
      <br>
      <br>
1. as a Notify message about a URI (no methods) as in coap-01,
      <br>
2. as a NOTIFY Request about a URI as was in coap-00,
      <br>
3. hmmm... reusing CRUD methods really doesn't work for this one at
all...
      <br>
      <br>
I wonder what the HTTP designers would have done if this would have
been a
      <br>
requirement back then? Maybe we should ask them...
      <br>
      <br>
Zach
      <br>
      <br>
      <blockquote type="cite"><br>
Adriano
        <br>
        <br>
From: <a class="moz-txt-link-abbreviated" href="mailto:matthieu.vial@fr.non.schneider-electric.com">matthieu.vial@fr.non.schneider-electric.com</a>
        <br>
      </blockquote>
[<a class="moz-txt-link-freetext" href="mailto:matthieu.vial@fr.non.schneider-electric.com">mailto:matthieu.vial@fr.non.schneider-electric.com</a>]
      <br>
      <blockquote type="cite">Sent: venerd&igrave; 28 maggio 2010 13.52
        <br>
To: Adriano Pezzuto (apezzuto)
        <br>
Cc: core; <a class="moz-txt-link-abbreviated" href="mailto:core-bounces@ietf.org">core-bounces@ietf.org</a>; <a class="moz-txt-link-abbreviated" href="mailto:robert.cragie@gridmerge.com">robert.cragie@gridmerge.com</a>
        <br>
Subject: Re: [core] Subscribe/Notify for CoAP
        <br>
        <br>
        <blockquote type="cite">So strictly speaking, both NOTIFY and
SUBSCRIBE are message types not
          <br>
        </blockquote>
      </blockquote>
methods!
      <br>
      <blockquote type="cite"><br>
SUBSCRIBE can be just an asynchronous GET on update then I think it is
a
        <br>
      </blockquote>
method and NOTIFY is an asynchronous response so a message.
      <br>
      <blockquote type="cite">But if we want to have selective
notifications when a resource is
        <br>
      </blockquote>
    </blockquote>
created,
    <br>
    <blockquote type="cite">updated or deleted then I think you're
right NOTIFY and SUBSCRIBE are
      <br>
messages.
      <br>
      <blockquote type="cite"><br>
Does that make sense ?
        <br>
        <br>
Matthieu
        <br>
        <br>
&lt;image001.gif&gt;"Adriano Pezzuto (apezzuto)"
<a class="moz-txt-link-rfc2396E" href="mailto:apezzuto@cisco.com">&lt;apezzuto@cisco.com&gt;</a>
        <br>
        <br>
        <br>
        <br>
        <br>
"Adriano Pezzuto (apezzuto)" <a class="moz-txt-link-rfc2396E" href="mailto:apezzuto@cisco.com">&lt;apezzuto@cisco.com&gt;</a>
        <br>
Envoy&eacute; par : <a class="moz-txt-link-abbreviated" href="mailto:core-bounces@ietf.org">core-bounces@ietf.org</a>
        <br>
28/05/2010 12:50
        <br>
        <br>
&lt;image003.png&gt;
        <br>
A
        <br>
&lt;image004.png&gt;
        <br>
<a class="moz-txt-link-rfc2396E" href="mailto:robert.cragie@gridmerge.com">&lt;robert.cragie@gridmerge.com&gt;</a>
        <br>
&lt;image003.png&gt;
        <br>
cc
        <br>
&lt;image004.png&gt;
        <br>
core <a class="moz-txt-link-rfc2396E" href="mailto:core@ietf.org">&lt;core@ietf.org&gt;</a>
        <br>
&lt;image003.png&gt;
        <br>
Objet
        <br>
&lt;image004.png&gt;
        <br>
Re: [core] Subscribe/Notify for CoAP
        <br>
&lt;image004.png&gt;
        <br>
&lt;image004.png&gt;
        <br>
        <br>
Hi Roberto,
        <br>
I understand your point and personally agree on M2M is quite different
        <br>
      </blockquote>
    </blockquote>
from
    <br>
    <blockquote type="cite">web page model. On the architectural
RESTful style, the method information
      <br>
tells the server what to do with data kept in the URI information.
      <br>
      <blockquote type="cite"><br>
So strictly speaking, both NOTIFY and SUBSCRIBE are message types not
        <br>
      </blockquote>
methods!
      <br>
      <blockquote type="cite"><br>
Adriano
        <br>
        <br>
From: Robert Cragie [<a class="moz-txt-link-freetext" href="mailto:robert.cragie@gridmerge.com">mailto:robert.cragie@gridmerge.com</a>]
        <br>
Sent: venerd&igrave; 28 maggio 2010 11.53
        <br>
To: Adriano Pezzuto (apezzuto)
        <br>
Cc: Paul Duffy (paduffy); Zach Shelby; core
        <br>
Subject: Re: [core] Subscribe/Notify for CoAP
        <br>
        <br>
I think the point here is that there are two levels we are considering.
        <br>
        <br>
At the lowest (foundation) level, there are the transaction messages as
        <br>
      </blockquote>
described below. This provides a flexible mechanism for the application
      <br>
    </blockquote>
with
    <br>
    <blockquote type="cite">regard to synchronicity and threading. This
is important for the types of
      <br>
devices CoAP is being aimed at.
      <br>
      <blockquote type="cite"><br>
Above that, the methods can be used according to the architectural
        <br>
      </blockquote>
    </blockquote>
style. So
    <br>
    <blockquote type="cite">in this case, it is RESTful (COnstrained
Restful Environments), which will
      <br>
naturally limit the number of methods and how transactions occur.
      <br>
      <blockquote type="cite"><br>
The actual architecture using a combination of the methods and messages
        <br>
      </blockquote>
    </blockquote>
also
    <br>
    <blockquote type="cite">depends on what is required at the
application layer. Consider a typical
      <br>
client which wants to subscribe to a resource. That client controls the
      <br>
    </blockquote>
feed
    <br>
    <blockquote type="cite">of data but needs a component which is
capable of handling (possibly
      <br>
buffering) the data it receives through notifications. Is this a
separate
      <br>
server? Or would we want to consider it part of an enhanced client
model
      <br>
    </blockquote>
which
    <br>
    <blockquote type="cite">is able to process feeds of data? These are
the sort of models which have
      <br>
    </blockquote>
led
    <br>
    <blockquote type="cite">to the myriad of solutions (GENA, Webhooks,
long polling, pubsubhubbub,
      <br>
    </blockquote>
RESTMS
    <br>
    <blockquote type="cite">etc.) based around HTTP which are all
essentially ingenious ways of
      <br>
    </blockquote>
getting
    <br>
    <blockquote type="cite">around the limitations imposed by HTTP and
how it is processed for
      <br>
    </blockquote>
anything
    <br>
    <blockquote type="cite">which deviates from the classic web page
access model.
      <br>
      <blockquote type="cite"><br>
I think the aim of CoAP should be clean from the word go with regard to
        <br>
      </blockquote>
supporting these more peer-to-peer transactions, where the client can
      <br>
    </blockquote>
exist on
    <br>
    <blockquote type="cite">either entity and both entities can feed
data to each other; typical in
      <br>
    </blockquote>
M2M
    <br>
    <blockquote type="cite">applications.
      <br>
      <blockquote type="cite"><br>
Robert
        <br>
        <br>
Robert Cragie (Pacific Gas &amp; Electric)
        <br>
        <br>
Gridmerge Ltd.
        <br>
89 Greenfield Crescent,
        <br>
Wakefield, WF4 4WA, UK
        <br>
+44 1924 910888
        <br>
+1 415 513 0064
        <br>
<a class="moz-txt-link-freetext" href="http://www.gridmerge.com">http://www.gridmerge.com</a>
        <br>
        <br>
On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:
        <br>
Hi Robert,
        <br>
        <br>
in my personal opinion, the option 1a) brings some sort of ambiguity to
        <br>
      </blockquote>
    </blockquote>
CoAP
    <br>
    <blockquote type="cite">specs.
      <br>
      <blockquote type="cite"><br>
My be my understatement of new CoAP specs is not so deep, but now we
        <br>
      </blockquote>
    </blockquote>
have 5
    <br>
    <blockquote type="cite">methods and 3 message types: request,
response and notify. Which methods
      <br>
    </blockquote>
are
    <br>
    <blockquote type="cite">allowed with which messages types?
      <br>
      <blockquote type="cite">I suppose you have to use PUT/POST method
with notify message for asynch
        <br>
      </blockquote>
data notification. How to make a subscribe? I suppose you would use a
      <br>
SUBSCRIBE method with request/response message or SUBSCRIBE with notify
      <br>
message? Also what about POST/DELETE methods in a notify message? They
not
      <br>
make any sense..
      <br>
      <blockquote type="cite"><br>
I think the choice is between: option 1) -&gt; only CRUD methods and
option
        <br>
      </blockquote>
    </blockquote>
1b)
    <br>
    <blockquote type="cite">-&gt; CRUD + SUB/NOTIFY methods, keeping in
mind cost/benefits of both
      <br>
    </blockquote>
solutions.
    <br>
    <blockquote type="cite">
      <blockquote type="cite"><br>
Adriano
        <br>
        <br>
From: Robert Cragie [<a class="moz-txt-link-freetext" href="mailto:robert.cragie@gridmerge.com">mailto:robert.cragie@gridmerge.com</a>]
        <br>
Sent: mercoled&igrave; 26 maggio 2010 20.09
        <br>
To: Adriano Pezzuto (apezzuto)
        <br>
Cc: Paul Duffy (paduffy); Zach Shelby; core
        <br>
Subject: Re: [core] Subscribe/Notify for CoAP
        <br>
        <br>
Hi Adrian,
        <br>
        <br>
I would also prefer to keep the protocol in CoAP asynchronous. You can
        <br>
      </blockquote>
always map an asynchronous protocol to a synchronous one but, as we see
in
      <br>
HTTP, it always ends up as a kludge to do it the other way round. The
      <br>
    </blockquote>
efforts
    <br>
    <blockquote type="cite">which have been gone to to make HTTP
quasi-asynchronous via all the
      <br>
    </blockquote>
schemes
    <br>
    <blockquote type="cite">mentioned below and many more besides (all
non-interoperable of course) is
      <br>
testament to how important this is for M2M communication.
      <br>
      <blockquote type="cite"><br>
So, back to Zach's list, I favor 1a) for the following reasons:
        <br>
        <br>
Foundation level of messages:
        <br>
        <br>
1. request/response can be asynchronous or synchronous messages (as
        <br>
      </blockquote>
    </blockquote>
there is
    <br>
    <blockquote type="cite">a transaction ID in there)
      <br>
      <blockquote type="cite">2. notify is an asynchronous message
        <br>
Derived methods:
        <br>
        <br>
I think it makes sense to add a pub/sub model as a useful mechanism for
        <br>
      </blockquote>
    </blockquote>
M2M.
    <br>
    <blockquote type="cite">
      <blockquote type="cite"><br>
So, looking at it the other way round: It will be entirely possible to
        <br>
      </blockquote>
translate whatever is currently built on HTTP to CoAP based on the
above,
      <br>
    </blockquote>
with
    <br>
    <blockquote type="cite">all its restrictions regarding synchronous
and client/server transactions.
      <br>
What may be harder is to translate directly is a CoAP-based application
to
      <br>
HTTP. So I guess the question is: Do we want to be hamstrung to
      <br>
    </blockquote>
synchronous
    <br>
    <blockquote type="cite">client/server transactions as dictated by
HTTP and provide a direct
      <br>
    </blockquote>
mapping to
    <br>
    <blockquote type="cite">HTTP, then have to come up with similar
kludges for asynchronous
      <br>
    </blockquote>
peer-to-peer
    <br>
    <blockquote type="cite">transactions as has been done in numerous
ways for HTTP, or do we want to
      <br>
define the protocol cleanly to start with and accept that some sort of
      <br>
transaction relaying/conversion would have to take place at a mapping
      <br>
    </blockquote>
node?
    <br>
    <blockquote type="cite">
      <blockquote type="cite"><br>
Robert
        <br>
Robert Cragie (Pacific Gas &amp; Electric)
        <br>
        <br>
Gridmerge Ltd.
        <br>
89 Greenfield Crescent,
        <br>
Wakefield, WF4 4WA, UK
        <br>
+44 1924 910888
        <br>
+1 415 513 0064
        <br>
<a class="moz-txt-link-freetext" href="http://www.gridmerge.com">http://www.gridmerge.com</a>
        <br>
        <br>
On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:
        <br>
Hi,
        <br>
it looks to me that CoAP should use an explicit sub/notify mechanism
        <br>
      </blockquote>
    </blockquote>
since
    <br>
    <blockquote type="cite">this is the core of the machine-to-machine
interaction model.
      <br>
      <blockquote type="cite">HTTP suffers of this lack and we have
seen a plethora of solutions to
        <br>
      </blockquote>
    </blockquote>
give
    <br>
    <blockquote type="cite">an asynch taste to it. Webhooks and
websockets are only the lasts of the
      <br>
    </blockquote>
list.
    <br>
    <blockquote type="cite">
      <blockquote type="cite">As someone has already pointed out on
this list, it is theoretically
        <br>
      </blockquote>
possible to describe sub/notify using only CRUD methods but it looks a
      <br>
    </blockquote>
little
    <br>
    <blockquote type="cite">bit tricky and verbose.
      <br>
      <blockquote type="cite"><br>
Now we have a chance to build from scratch a new protocol with and I
        <br>
      </blockquote>
    </blockquote>
think
    <br>
    <blockquote type="cite">using explicit sub/notify methods with a
clear and well defined semantic
      <br>
    </blockquote>
is
    <br>
    <blockquote type="cite">the best option. It is easily understanding
from every developer and will
      <br>
prevent to build other fanny solutions on top of the CoAP. HTTP does
not
      <br>
    </blockquote>
have
    <br>
    <blockquote type="cite">this well defined semantic and (for
hundreds of other reasons also) it is
      <br>
    </blockquote>
not
    <br>
    <blockquote type="cite">used as wide protocol for
machine-to-machine communication.
      <br>
      <blockquote type="cite"><br>
CoAP - as binary protocol - and with an explicit asynch model has a
        <br>
      </blockquote>
    </blockquote>
chance
    <br>
    <blockquote type="cite">to be a really wide protocol for M2M
communication not only for
      <br>
    </blockquote>
constrained
    <br>
    <blockquote type="cite">environments.
      <br>
      <blockquote type="cite"><br>
my 2 cents
        <br>
        <br>
- adriano
        <br>
        <br>
-----Original Message-----
        <br>
From: <a class="moz-txt-link-abbreviated" href="mailto:core-bounces@ietf.org">core-bounces@ietf.org</a> [<a class="moz-txt-link-freetext" href="mailto:core-bounces@ietf.org">mailto:core-bounces@ietf.org</a>] On Behalf Of
        <br>
      </blockquote>
    </blockquote>
Paul
    <br>
    <blockquote type="cite">Duffy (paduffy)
      <br>
      <blockquote type="cite">Sent: mercoled&igrave; 26 maggio 2010 0.47
        <br>
To: Zach Shelby
        <br>
Cc: core
        <br>
Subject: Re: [core] Subscribe/Notify for CoAP
        <br>
        <br>
On 5/25/2010 6:41 PM, Zach Shelby wrote:
        <br>
        <br>
Hi,
        <br>
        <br>
On May 26, 2010, at 12:23 AM, Charles Palmer wrote:
        <br>
        <br>
        <br>
Hi folks
        <br>
        <br>
It occurs to me that CoRE should be keeping a close eye on ZigBee SE2.0
        <br>
      </blockquote>
work, so that it is as easy as possible for ZigBee SE to use CoRE when
      <br>
    </blockquote>
ready.
    <br>
    <blockquote type="cite">That suggests to me that we should align
with their subscribe/notify
      <br>
    </blockquote>
process.
    <br>
    <blockquote type="cite">
      <blockquote type="cite"><br>
        <br>
I am not sure I understand that. I mean, ZigBee SE2.0 is defining an
        <br>
      </blockquote>
application specific subscribe/notify mechanism for that purpose so far
      <br>
    </blockquote>
for
    <br>
    <blockquote type="cite">HTTP. This uses standard HTTP methods and
some custom payload and REST
      <br>
interfaces. CoAP Req/Res is already totally compatible with SE2.0 in
that
      <br>
respect, so alignment is already OK there. Nothing stopping someone
from
      <br>
    </blockquote>
using
    <br>
    <blockquote type="cite">SE2.0 over CoAP.
      <br>
      <blockquote type="cite"><br>
Specifying a native susbcription/notify into CoAP is another matter. We
        <br>
      </blockquote>
can't adopt a solution specific to one application as that won't solve
the
      <br>
problems of other applications nor general HTTP mapping at all
(probably
      <br>
    </blockquote>
would
    <br>
    <blockquote type="cite">make it worse). It seems that for the near
future there will be a bunch of
      <br>
HTTP push mechanisms in use without any clear standard appearing - or
am I
      <br>
wrong there?
      <br>
      <blockquote type="cite"><br>
        <br>
        <br>
        <br>
If COAP extends HTTP semantics with new subscription methods, it will
        <br>
not be possible to easily interchange HTTP/COAP, and translation
        <br>
gateways will become more complex to implement.
        <br>
        <br>
        <br>
        <br>
Zach
        <br>
        <br>
        <br>
Regards - Charles
        <br>
        <br>
        <br>
-----Original Message-----
        <br>
From: <a class="moz-txt-link-abbreviated" href="mailto:core-bounces@ietf.org">core-bounces@ietf.org</a> [<a class="moz-txt-link-freetext" href="mailto:core-bounces@ietf.org">mailto:core-bounces@ietf.org</a>] On Behalf Of
        <br>
      </blockquote>
    </blockquote>
Paul
    <br>
    <blockquote type="cite">Duffy
      <br>
      <blockquote type="cite">Sent: 25 May 2010 03:48
        <br>
To: Zach Shelby
        <br>
Cc: core
        <br>
Subject: Re: [core] Subscribe/Notify for CoAP
        <br>
        <br>
Recommend something like #2, primarily to avoid introducing non HTTP
        <br>
method semantics, simplifying HTTP/COAP translation.gateways, etc.
        <br>
        <br>
        <br>
On 5/24/2010 11:49 AM, Zach Shelby wrote:
        <br>
        <br>
(thread renamed)
        <br>
        <br>
We have two different paths with regard to a subscribe/notify mechanism
        <br>
      </blockquote>
    </blockquote>
for
    <br>
    <blockquote type="cite">CoAP:
      <br>
      <blockquote type="cite"><br>
1. Use specific Subscription and Notify mechanisms for CoAP as HTTP
        <br>
      </blockquote>
    </blockquote>
really
    <br>
    <blockquote type="cite">does not include this concept.
      <br>
      <blockquote type="cite">1a) Notify as a message and SUBSCRIBE as
a method. This is currently
        <br>
      </blockquote>
    </blockquote>
used in
    <br>
    <blockquote type="cite">coap-01.
      <br>
      <blockquote type="cite">1b) NOTIFY and SUBSCRIBE as methods. This
was used in coap-00, but we
        <br>
      </blockquote>
    </blockquote>
had a
    <br>
    <blockquote type="cite">good list discussion about this leading to
a. In practice it doesn't make
      <br>
    </blockquote>
a
    <br>
    <blockquote type="cite">big difference if notification is a message
or method.
      <br>
      <blockquote type="cite"><br>
2. Use an HTTP specific framework such as Webhooks, the ZigBee SE2.0
        <br>
      </blockquote>
proposal or GENA.
      <br>
      <blockquote type="cite"><br>
So far we have focused on 1 in the WG, and every now and again 2 comes
        <br>
      </blockquote>
    </blockquote>
up.
    <br>
    <blockquote type="cite">At least I am not convinced that we need to
suffer the drawbacks of HTTP
      <br>
    </blockquote>
here.
    <br>
    <blockquote type="cite">Anyways 2 does not help our mapping to HTTP
in reality very much as there
      <br>
    </blockquote>
is
    <br>
    <blockquote type="cite">no standard way of doing this over HTTP.
Thus a CoAP-HTTP proxy may end up
      <br>
anyways translating between multiple HTTP frameworks depending on the
      <br>
application. So instead of doing a CoAP Notify/Subscribe to Webhooks
      <br>
    </blockquote>
mapping,
    <br>
    <blockquote type="cite">you will could end up having to do a CoAP
Webhooks to HTTP GENA mapping.
      <br>
      <blockquote type="cite"><br>
        <br>
        <br>
I don't understand this last para. If CoAP sticks to the semantics of
        <br>
the current HTTP methods, would this not offer a fairly straightforward
        <br>
translation to/from HTTP?
        <br>
        <br>
        <br>
        <br>
>From what I have heard so far 1 still seems like a wise choice,
although
        <br>
      </blockquote>
    </blockquote>
I
    <br>
    <blockquote type="cite">need to look at Webhooks more deeply. In
reality many applications specify
      <br>
their own way of doing a push interface using REST methods and specific
      <br>
payloads (ZigBee SE2.0 is such an example). That is just fine, and
might
      <br>
    </blockquote>
be
    <br>
    <blockquote type="cite">used instead of a specific CoAP
notify/subscribe in that case. So 1
      <br>
    </blockquote>
doesn't
    <br>
    <blockquote type="cite">prevent the application using its own
mechanism, it just provides a native
      <br>
    </blockquote>
way
    <br>
    <blockquote type="cite">for doing push.
      <br>
      <blockquote type="cite"><br>
What do people think?
        <br>
        <br>
Zach
        <br>
        <br>
On May 17, 2010, at 6:44 PM,<a class="moz-txt-link-abbreviated" href="mailto:matthieu.vial@fr.non.schneider-electric.com">matthieu.vial@fr.non.schneider-electric.com</a>
        <br>
      </blockquote>
wrote:
      <br>
      <blockquote type="cite"><br>
        <br>
        <br>
Hi,
        <br>
        <br>
My comments about the subscribe/notify mechanism of Zigbee IP.
        <br>
        <br>
Pros:
        <br>
- Derived from the webhooks concept
        <br>
- If used by CORE it will be easier to map to HTTP because it uses only
        <br>
      </blockquote>
    </blockquote>
CRUD
    <br>
    <blockquote type="cite">verbs.
      <br>
      <blockquote type="cite">- The subscription message is extendable
and could support advanced
        <br>
      </blockquote>
    </blockquote>
options
    <br>
    <blockquote type="cite">(delays, increment, ...)
      <br>
      <blockquote type="cite">- Only one listening port whatever the
transport binding is.
        <br>
        <br>
Cons:
        <br>
- No interoperability without well known URIs and a well defined
        <br>
      </blockquote>
subscription message format (Not sure CoAP draft is the right place to
      <br>
    </blockquote>
specify
    <br>
    <blockquote type="cite">this).
      <br>
      <blockquote type="cite">- XML/EXI is too complex to be the
required format for the default
        <br>
      </blockquote>
subscription/notification mechanism.
      <br>
      <blockquote type="cite">- The notification should not require a
subsequent GET to retrieve the
        <br>
      </blockquote>
content.
      <br>
      <blockquote type="cite">- Subresource subscription is redundant.
        <br>
        <br>
Hope this could help,
        <br>
Matthieu
        <br>
        <br>
        <br>
&lt;graycol.gif&gt;"Charles Palmer"<a class="moz-txt-link-rfc2396E" href="mailto:charles.palmer@onzo.com">&lt;charles.palmer@onzo.com&gt;</a>
        <br>
        <br>
        <br>
        <br>
        <br>
"Charles Palmer"<a class="moz-txt-link-rfc2396E" href="mailto:charles.palmer@onzo.com">&lt;charles.palmer@onzo.com&gt;</a>
        <br>
Envoy&eacute; par : <a class="moz-txt-link-abbreviated" href="mailto:core-bounces@ietf.org">core-bounces@ietf.org</a>
        <br>
15/05/2010 14:06
        <br>
        <br>
&lt;ecblank.gif&gt;
        <br>
A
        <br>
&lt;ecblank.gif&gt;
        <br>
"core"<a class="moz-txt-link-rfc2396E" href="mailto:core@ietf.org">&lt;core@ietf.org&gt;</a>
        <br>
&lt;ecblank.gif&gt;
        <br>
cc
        <br>
&lt;ecblank.gif&gt;
        <br>
&lt;ecblank.gif&gt;
        <br>
Objet
        <br>
&lt;ecblank.gif&gt;
        <br>
Re: [core] Selecting a WG document for CoAP
        <br>
&lt;ecblank.gif&gt; &lt;ecblank.gif&gt;
        <br>
        <br>
Dear all
        <br>
        <br>
Those interested in the subscribe/notify discussion might like to look
        <br>
at the draft Smart Energy Profile 2.0 Application Protocol
        <br>
Specification. It is available here:
        <br>
<a class="moz-txt-link-freetext" href="http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20PublicApp">http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20PublicApp</a>
        <br>
licationProfile.aspx
        <br>
        <br>
It manages subscribe/notify by using POST. This seems to remove the
need
        <br>
for SUBSCRIBE and notify.
        <br>
        <br>
"Imagine a host A, which exposes a resource at http{s}://A/resource and
        <br>
a second host B, which wishes to learn of changes to this resource. To
        <br>
facilitate a subscription/ notification mechanism, A would expose a
        <br>
resource http{s}://A/sub and B would expose a resource
http{s}://B/ntfy.
        <br>
To subscribe to notifications regarding http{s}://A/resource, B would
        <br>
send a POST to the address http{s}://A/sub/B containing the URI of the
        <br>
resource of interest (http{s}://A/resource) and the URI of B's
        <br>
notification resource (http{s}://B/ntfy). Following this subscription
        <br>
step, should A wish to notify B of a change to the resource addressed
at
        <br>
http{s}://A/resource, A would send a POST to the address
        <br>
http{s}://B/ntfy containing the URI of the resource changed
        <br>
(http{s}://A/resource) and the URI of A's subscription resource
        <br>
(http{s}://A/sub/B), should A wish to change its subscription. The host
        <br>
B can then query the resource (or not) at its leisure."
        <br>
        <br>
Sleepy nodes are not allowed to subscribe, and must poll.
        <br>
        <br>
Regards - Charles Palmer
        <br>
        <br>
-----Original Message-----
        <br>
From: <a class="moz-txt-link-abbreviated" href="mailto:core-bounces@ietf.org">core-bounces@ietf.org</a> [<a class="moz-txt-link-freetext" href="mailto:core-bounces@ietf.org">mailto:core-bounces@ietf.org</a>] On Behalf Of
        <br>
Angelo P. Castellani
        <br>
Sent: 14 May 2010 13:14
        <br>
To: Zach Shelby
        <br>
Cc: core
        <br>
Subject: Re: [core] Selecting a WG document for CoAP
        <br>
        <br>
Zach,
        <br>
        <br>
thanks for the comments, but please refer to my most recent e-mail for
        <br>
a more specific list of technical issues I'm pointing to.
        <br>
        <br>
I want to do only a little integration to what I've written there.
        <br>
        <br>
In my very personal opinion, to maximize adherence with the REST model
        <br>
and minimize implementation effort SUBSCRIBE and NOTIFY should be
        <br>
mapped to methods (as discussed many times together...).
        <br>
        <br>
Uniform interface principle (Fielding PhD dissertation Section 5.1.5,
        <br>
"The central feature that distinguishes the REST architectural style
        <br>
[...]") states that to simplify the software architecture, resource
        <br>
interfaces/interfaces should be as general as possible.
        <br>
        <br>
I agree with this principle in this specific case, mainly because
        <br>
handling a special message type for notify leads node software design
        <br>
to a more complex architecture.
        <br>
        <br>
The reason is that this new message type requires special handling and
        <br>
introduces a complexity in the software modularization.
        <br>
        <br>
Best,
        <br>
Angelo
        <br>
        <br>
On Fri, May 14, 2010 at 13:06, Zach Shelby<a class="moz-txt-link-rfc2396E" href="mailto:zach@sensinode.com">&lt;zach@sensinode.com&gt;</a>
wrote:
        <br>
        <br>
        <br>
Hi Angelo,
        <br>
        <br>
On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:
        <br>
        <br>
        <br>
        <br>
Dear C. Bormann, all,
        <br>
        <br>
before deciding for the final direction, I've the following
        <br>
observations about draft-shelby-core-coap-01
        <br>
        <br>
While I mostly share Zach's view of the protocol approach, and
        <br>
appreciate many aspects of the proposal, there are in my opinion
        <br>
        <br>
        <br>
still
        <br>
        <br>
        <br>
some open issues that need to be at least discussed before the
        <br>
        <br>
        <br>
current
        <br>
        <br>
        <br>
document can be selected.
        <br>
        <br>
        <br>
Of course there are plenty of open issues. Remember that working group
        <br>
        <br>
        <br>
documents still undertake as much change and improvement as the WG
        <br>
wants, so by no means is coap-01 set in stone. I would expect at least
        <br>
5-10 more revisions still along the way. Already several of your ideas
        <br>
have been integrated into coap-01, and several more are under
        <br>
consideration, so it is coming along. Patience ;-)
        <br>
        <br>
        <br>
        <br>
In particular, I would like to highlight the following:
        <br>
        <br>
a) As it is now, it is not possible to have a straightforward
        <br>
translation of HTTP -&gt; CoAP and viceversa: see
        <br>
<a class="moz-txt-link-freetext" href="http://www.ietf.org/mail-archive/web/core/current/msg00133.html">http://www.ietf.org/mail-archive/web/core/current/msg00133.html</a> (this
        <br>
impacts the scalability of the web service model too)
        <br>
        <br>
        <br>
In coap-01 the Method names are now identical to HTTP methods. The
        <br>
        <br>
        <br>
Req/Res interaction is a direct translation. The URI hierarchy is
        <br>
compatible, and the URI binary code format we are still working on
        <br>
obviously. The only thing that takes some state to translate is
        <br>
Subscribe/Notify. But note, Subscribe/Notify takes some state no matter
        <br>
how you do it, even with HTTP-HTTP there is no clean and easy way to
        <br>
handle subscriptions.
        <br>
        <br>
        <br>
        <br>
b) Moreover, CoAP's implementation is not as simple as it should be.
        <br>
I've investigated the implementation and some design choices (as
        <br>
Options) are leading to very high program complexity (ROM) on a
        <br>
MSP430-based device.
        <br>
        <br>
        <br>
This we can definitely improve, and already made several optimizations
        <br>
        <br>
        <br>
from -00 to -01. Here I need some very concrete proposals though. Also
        <br>
remember that many things are optional, for example subscribe/notify is
        <br>
not required if you don't need it.
        <br>
        <br>
        <br>
        <br>
c) Finally when comparing HTTP message size with CoAP message size,
        <br>
the resulting compression isn't as good as you may expect.
        <br>
        <br>
Example:
        <br>
HTTP: GET /sensor/temp.xml HTTP/1.0 = 32 B
        <br>
CoAP: 24 B with options parsing procedure requiring an added
        <br>
implementation complexity
        <br>
        <br>
        <br>
Right, that is not how it will work in practice. Working with a real
        <br>
        <br>
        <br>
HTTP server that HTTP header will be more complex, and on the CoAP side
        <br>
you would chose shorter URLs. The biggest improvement possible here is
        <br>
from using binary coded URLs of course. We need to look at a wider
range
        <br>
of interactions and real HTTP headers as well to check that we are
        <br>
efficient enough.
        <br>
        <br>
        <br>
        <br>
Addressing all these points potentially leads to major technical
        <br>
modifications (especially point a) on the current draft, hence it is
        <br>
appropriate in my opinion to discuss these points before making the
        <br>
final decision.
        <br>
        <br>
        <br>
I am not sure what else you have in mind for a). If we just forget
        <br>
        <br>
        <br>
about Subscribe/Notify then you are good to go. But then you are also
        <br>
not fulfilling the charter or the industry needs in that respect.
        <br>
        <br>
        <br>
Thanks,
        <br>
Zach
        <br>
        <br>
        <br>
        <br>
Best regards,
        <br>
        <br>
Angelo P. Castellani
        <br>
        <br>
        <br>
On Mon, May 10, 2010 at 18:51, Carsten
Bormann<a class="moz-txt-link-rfc2396E" href="mailto:cabo@tzi.org">&lt;cabo@tzi.org&gt;</a>wrote:
        <br>
        <br>
        <br>
The CORE WG has a milestone to select a WG document for CoAP in
        <br>
        <br>
        <br>
April:
        <br>
        <br>
        <br>
<a class="moz-txt-link-freetext" href="http://datatracker.ietf.org/wg/core/charter/">http://datatracker.ietf.org/wg/core/charter/</a>
        <br>
...
        <br>
Apr 2010 Select WG document for basis of the CoAP protocol
        <br>
        <br>
Of the various documents that have been contributed,
        <br>
        <br>
        <br>
draft-shelby-core-coap has significant discussion, as well as the
        <br>
largest number of updates (including a previous version that was still
        <br>
called -6lowapp-coap).
        <br>
        <br>
        <br>
Today, another updated version of that draft was announced. See
        <br>
<a class="moz-txt-link-freetext" href="http://www.ietf.org/mail-archive/web/core/current/msg00138.html">http://www.ietf.org/mail-archive/web/core/current/msg00138.html</a>
        <br>
for the announcement and
        <br>
<a class="moz-txt-link-freetext" href="http://tools.ietf.org/html/draft-shelby-core-coap-01">http://tools.ietf.org/html/draft-shelby-core-coap-01</a>
        <br>
for the draft itself.
        <br>
        <br>
However, as the authors say, there are still significant TODOs.
        <br>
        <br>
Are we in a state yet where we can say whether this is the right
        <br>
        <br>
        <br>
direction for the WG to take?
        <br>
        <br>
        <br>
If yes, is it the right direction? Should we adopt it as a WG
        <br>
        <br>
        <br>
document?
        <br>
        <br>
        <br>
If you don't think we can say yet, is there a set of technical
        <br>
        <br>
        <br>
decisions you would like the authors to take with priority?
        <br>
        <br>
        <br>
Note that once a document has become a WG document, the authors act
        <br>
        <br>
        <br>
as editors for the working group, making (and usually fleshing out the
        <br>
details of) any change that the WG decides it needs.
        <br>
        <br>
        <br>
If you think we can still improve the draft, this is not an obstacle
        <br>
        <br>
        <br>
to making it a WG document.
        <br>
        <br>
        <br>
But of course we shouldn't do that if we intend to reverse its
        <br>
        <br>
        <br>
fundamental technical direction.
        <br>
        <br>
        <br>
In order to stay roughly in sync with our milestones, we should
        <br>
        <br>
        <br>
reach at a decision on how to go forward this week.
        <br>
        <br>
        <br>
Gruesse, Carsten
        <br>
        <br>
_______________________________________________
        <br>
core mailing list
        <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
        <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
        <br>
        <br>
        <br>
        <br>
_______________________________________________
        <br>
core mailing list
        <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
        <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
        <br>
        <br>
        <br>
--
        <br>
Zach Shelby, Chief Nerd, Sensinode Ltd.
        <br>
<a class="moz-txt-link-freetext" href="http://zachshelby.org">http://zachshelby.org</a> - My blog "On the Internet of Things"
        <br>
<a class="moz-txt-link-freetext" href="http://6lowpan.net">http://6lowpan.net</a> - My book "6LoWPAN: The Wireless Embedded Internet"
        <br>
Mobile: +358 40 7796297
        <br>
        <br>
        <br>
        <br>
        <br>
_______________________________________________
        <br>
core mailing list
        <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
        <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
        <br>
        <br>
--------------------------------
        <br>
Onzo is a limited company number 06097997 registered in England&amp;
Wales.
        <br>
      </blockquote>
    </blockquote>
The
    <br>
    <blockquote type="cite">
      <blockquote type="cite">registered office is 6 Great Newport
Street, London, WC2H 7JB, United
        <br>
      </blockquote>
Kingdom.
      <br>
      <blockquote type="cite"><br>
This email message may contain confidential and/or privileged
        <br>
      </blockquote>
    </blockquote>
information,
    <br>
    <blockquote type="cite">and
      <br>
      <blockquote type="cite">is intended solely for the addressee(s).
If you have received this email
        <br>
      </blockquote>
    </blockquote>
in
    <br>
    <blockquote type="cite">
      <blockquote type="cite">error, please notify Onzo immediately.
Unauthorised copying, disclosure
        <br>
      </blockquote>
    </blockquote>
or
    <br>
    <blockquote type="cite">
      <blockquote type="cite">distribution of the material in this
email is forbidden.
        <br>
--------------------------------
        <br>
        <br>
_______________________________________________
        <br>
core mailing list
        <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
        <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
        <br>
        <br>
______________________________________________________________________
        <br>
This email has been scanned by the MessageLabs Email Security System.
        <br>
______________________________________________________________________
        <br>
        <br>
_______________________________________________
        <br>
core mailing list
        <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
        <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
        <br>
        <br>
        <br>
        <br>
_______________________________________________
        <br>
core mailing list
        <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
        <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
        <br>
        <br>
--------------------------------
        <br>
Onzo is a limited company number 06097997 registered in England&amp;
Wales.
        <br>
      </blockquote>
    </blockquote>
The
    <br>
    <blockquote type="cite">
      <blockquote type="cite">registered office is 6 Great Newport
Street, London, WC2H 7JB, United
        <br>
      </blockquote>
Kingdom.
      <br>
      <blockquote type="cite"><br>
This email message may contain confidential and/or privileged
        <br>
      </blockquote>
    </blockquote>
information,
    <br>
    <blockquote type="cite">and
      <br>
      <blockquote type="cite">is intended solely for the addressee(s).
If you have received this email
        <br>
      </blockquote>
    </blockquote>
in
    <br>
    <blockquote type="cite">
      <blockquote type="cite">error, please notify Onzo immediately.
Unauthorised copying, disclosure
        <br>
      </blockquote>
    </blockquote>
or
    <br>
    <blockquote type="cite">
      <blockquote type="cite">distribution of the material in this
email is forbidden.
        <br>
--------------------------------
        <br>
        <br>
        <br>
        <br>
        <br>
_______________________________________________
        <br>
core mailing list
        <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
        <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
        <br>
_______________________________________________
        <br>
core mailing list
        <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
        <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
        <br>
        <br>
        <br>
        <br>
______________________________________________________________________
        <br>
This email has been scanned by the MessageLabs Email Security System.
        <br>
        <br>
      </blockquote>
      <br>
    </blockquote>
____________________________________________________________________________
    <br>
__
    <br>
    <blockquote type="cite">_______________________________________
      <br>
      <blockquote type="cite">core mailing list
        <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
        <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
        <br>
        <br>
_______________________________________________
        <br>
core mailing list
        <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
        <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
        <br>
      </blockquote>
      <br>
--
      <br>
Zach Shelby, Chief Nerd, Sensinode Ltd.
      <br>
<a class="moz-txt-link-freetext" href="http://zachshelby.org">http://zachshelby.org</a>&nbsp; - My blog "On the Internet of Things"
      <br>
<a class="moz-txt-link-freetext" href="http://6lowpan.net">http://6lowpan.net</a> - My book "6LoWPAN: The Wireless Embedded Internet"
      <br>
Mobile: +358 40 7796297
      <br>
      <br>
_______________________________________________
      <br>
core mailing list
      <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
      <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
      <br>
    </blockquote>
    <br>
_______________________________________________
    <br>
core mailing list
    <br>
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
    <br>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
    <br>
  </blockquote>
  <br>
  <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
core mailing list
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
  </pre>
</blockquote>
<br>
</body>
</html>

--------------080403060605030100030109--

From paduffy@cisco.com  Wed Jun  2 17:17:36 2010
Return-Path: <paduffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 449A728C126 for <core@core3.amsl.com>; Wed,  2 Jun 2010 17:17:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.699
X-Spam-Level: 
X-Spam-Status: No, score=-5.699 tagged_above=-999 required=5 tests=[AWL=0.000,  BAYES_50=0.001, MANGLED_TOOL=2.3, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GXlt6EcrEaoR for <core@core3.amsl.com>; Wed,  2 Jun 2010 17:17:32 -0700 (PDT)
Received: from rtp-iport-2.cisco.com (rtp-iport-2.cisco.com [64.102.122.149]) by core3.amsl.com (Postfix) with ESMTP id D86F428C10E for <core@ietf.org>; Wed,  2 Jun 2010 17:17:31 -0700 (PDT)
Authentication-Results: rtp-iport-2.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEANKRBkxAZnwM/2dsb2JhbACeJXGmR4FyCwGYGAKCcYIjBA
X-IronPort-AV: E=Sophos;i="4.53,350,1272844800"; d="scan'208";a="117506003"
Received: from rtp-core-1.cisco.com ([64.102.124.12]) by rtp-iport-2.cisco.com with ESMTP; 03 Jun 2010 00:17:18 +0000
Received: from [161.44.65.108] ([161.44.65.108]) by rtp-core-1.cisco.com (8.13.8/8.14.3) with ESMTP id o530HIaD018940 for <core@ietf.org>; Thu, 3 Jun 2010 00:17:18 GMT
Message-ID: <4C06F48D.1020600@cisco.com>
Date: Wed, 02 Jun 2010 20:17:17 -0400
From: Paul Duffy <paduffy@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com> <001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>
In-Reply-To: <001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: paduffy@cisco.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 00:17:36 -0000

Folks,

My understanding is that COAP is directed to the WEB of things.  I take 
that to mean going with the grain of pervasively  deployed WEB 
infrastructure.  Unless there is an overwhelming compelling reason to do 
otherwise, IMO COAP needs to implement a strict subset of HTTP 
semantics.  Otherwise, we open the door to complexity re: translating 
HTTP/COAP, and history has shown complex app gateways will always be a 
challenge.

There are several ways to support pub/sub using stock HTTP methods.  I 
suggest we do so.

Cheers


On 6/2/2010 2:21 AM, Guido Moritz wrote:
> Dear WG,
>
> I agree to focus on the ToDos and not on the maybes. But a comprehensive
> eventing concept includes more than only the method/message type. It
> requires lease concepts, filtering mechanisms ... It would also require
> mechanisms to assign incoming NOTIFYs to a specific SUBSCRIBTION if one and
> the same client has SUBSCRIBED to more than one event of the same device. Is
> this out of scope of COAP or should it be considered already at this point
> to have a straight forward and clean protocol design? Hence it might be
> reasonable to have SUBSCRIBE and NOTIFY as single methods and grouping every
> sub functionality as type below the method?
>
> However, as HTTP has no native mechanism to feature eventing, for eventing
> it would be always required to have a caching intermediate entity (proxy,
> gateway, what ever). This one can provide which interface ever to the
> external networks (HTPP, polling, WebHooks, XMPP, WS-Eventing, ...). So this
> is implementation specific and might not be considered in COAP at all.
>
> Guido
>
>    
>> -----Ursprüngliche Nachricht-----
>> Von: core-bounces@ietf.org [mailto:core-bounces@ietf.org] Im Auftrag von
>>      
> Zach
>    
>> Shelby
>> Gesendet: Freitag, 28. Mai 2010 14:50
>> An: Adriano Pezzuto
>> Cc: core
>> Betreff: Re: [core] Subscribe/Notify for CoAP
>>
>> Hi,
>>
>> This is a really good conversation. One thing we need to do is remember
>>      
> what
>    
>> our minimum requirements are for subscribe/notify and not try to solve
>> something more than we should. From what I know it is sufficient to be
>>      
> able to
>    
>> receive notifications when a URI changes or periodically. You might
>>      
> consider
>    
>> new URIs under this URI path to be changes to a URI though...
>>
>> On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>
>>      
>>> Hello,
>>> with this flavor, the SUBSCRIBE may be replaced by a simple POST. So no
>>>        
>> needs to have an explicit SUBSCRIBE method.
>>
>> This is what coap-01 assumes.
>>
>>      
>>> If we want support a more oriented peer-to-peer transaction on CoAP, it
>>>        
>> looks to me both SUB and NOTIFY should be treated as messages.
>>
>> The Request/Response model can be used peer-to-peer, and in CoAP you can
>>      
> even
>    
>> use a Request asynchronously. Additionally, we want a native RESTful
>> subscribe/notify technique, that is, we want to subscribe to resources and
>>      
> be
>    
>> susequently notified about those resources when they change.
>>
>> In that sense, you can think of a subscription as a request to receive
>> asynchronous notifications about a resource (about a URI). This can be
>> achieved by:
>>
>> 1.  as a SUBSCRIBE Request on the URI with some option indicating the
>>      
> lifetime
>    
>> as in coap-01,
>> 2.  as a Subcsribe message (no methods) on the URI with some option,
>> 3.  or as a POST Request on the URI with options indicating that this is
>> actually a subscription and the lifetime.  This bends the meaning of POST
>> quite a bit and might be prone to mistakes?
>>
>> The asynchronous response is a harder one. Can we bend the meaning of a
>> Request for making asynchronous notifications? Also a notification
>>      
> includes a
>    
>> URI about a resource on the requestor, which is inverse from normal
>>      
> Requests
>    
>> in REST. So the options here are:
>>
>> 1. as a Notify message about a URI (no methods) as in coap-01,
>> 2. as a NOTIFY Request about a URI as was in coap-00,
>> 3. hmmm... reusing CRUD methods really doesn't work for this one at all...
>>
>> I wonder what the HTTP designers would have done if this would have been a
>> requirement back then? Maybe we should ask them...
>>
>> Zach
>>
>>      
>>> Adriano
>>>
>>> From: matthieu.vial@fr.non.schneider-electric.com
>>>        
>> [mailto:matthieu.vial@fr.non.schneider-electric.com]
>>      
>>> Sent: venerdì 28 maggio 2010 13.52
>>> To: Adriano Pezzuto (apezzuto)
>>> Cc: core; core-bounces@ietf.org; robert.cragie@gridmerge.com
>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>
>>>        
>>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types not
>>>>          
>> methods!
>>      
>>> SUBSCRIBE can be just an asynchronous GET on update then I think it is a
>>>        
>> method and NOTIFY is an asynchronous response so a message.
>>      
>>> But if we want to have selective notifications when a resource is
>>>        
> created,
>    
>> updated or deleted then I think you're right NOTIFY and SUBSCRIBE are
>> messages.
>>      
>>> Does that make sense ?
>>>
>>> Matthieu
>>>
>>> <image001.gif>"Adriano Pezzuto (apezzuto)"<apezzuto@cisco.com>
>>>
>>>
>>>
>>>
>>> "Adriano Pezzuto (apezzuto)"<apezzuto@cisco.com>
>>> Envoyé par : core-bounces@ietf.org
>>> 28/05/2010 12:50
>>>
>>> <image003.png>
>>> A
>>> <image004.png>
>>> <robert.cragie@gridmerge.com>
>>> <image003.png>
>>> cc
>>> <image004.png>
>>> core<core@ietf.org>
>>> <image003.png>
>>> Objet
>>> <image004.png>
>>> Re: [core] Subscribe/Notify for CoAP
>>> <image004.png>
>>> <image004.png>
>>>
>>> Hi Roberto,
>>> I understand your point and personally agree on M2M is quite different
>>>        
> from
>    
>> web page model. On the architectural RESTful style, the method information
>> tells the server what to do with data kept in the URI information.
>>      
>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types not
>>>        
>> methods!
>>      
>>> Adriano
>>>
>>> From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
>>> Sent: venerdì 28 maggio 2010 11.53
>>> To: Adriano Pezzuto (apezzuto)
>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>
>>> I think the point here is that there are two levels we are considering.
>>>
>>> At the lowest (foundation) level, there are the transaction messages as
>>>        
>> described below. This provides a flexible mechanism for the application
>>      
> with
>    
>> regard to synchronicity and threading. This is important for the types of
>> devices CoAP is being aimed at.
>>      
>>> Above that, the methods can be used according to the architectural
>>>        
> style. So
>    
>> in this case, it is RESTful (COnstrained Restful Environments), which will
>> naturally limit the number of methods and how transactions occur.
>>      
>>> The actual architecture using a combination of the methods and messages
>>>        
> also
>    
>> depends on what is required at the application layer. Consider a typical
>> client which wants to subscribe to a resource. That client controls the
>>      
> feed
>    
>> of data but needs a component which is capable of handling (possibly
>> buffering) the data it receives through notifications. Is this a separate
>> server? Or would we want to consider it part of an enhanced client model
>>      
> which
>    
>> is able to process feeds of data? These are the sort of models which have
>>      
> led
>    
>> to the myriad of solutions (GENA, Webhooks, long polling, pubsubhubbub,
>>      
> RESTMS
>    
>> etc.) based around HTTP which are all essentially ingenious ways of
>>      
> getting
>    
>> around the limitations imposed by HTTP and how it is processed for
>>      
> anything
>    
>> which deviates from the classic web page access model.
>>      
>>> I think the aim of CoAP should be clean from the word go with regard to
>>>        
>> supporting these more peer-to-peer transactions, where the client can
>>      
> exist on
>    
>> either entity and both entities can feed data to each other; typical in
>>      
> M2M
>    
>> applications.
>>      
>>> Robert
>>>
>>> Robert Cragie (Pacific Gas&  Electric)
>>>
>>> Gridmerge Ltd.
>>> 89 Greenfield Crescent,
>>> Wakefield, WF4 4WA, UK
>>> +44 1924 910888
>>> +1 415 513 0064
>>> http://www.gridmerge.com
>>>
>>> On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>> Hi Robert,
>>>
>>> in my personal opinion, the option 1a) brings some sort of ambiguity to
>>>        
> CoAP
>    
>> specs.
>>      
>>> My be my understatement of new CoAP specs is not so deep, but now we
>>>        
> have 5
>    
>> methods and 3 message types: request, response and notify. Which methods
>>      
> are
>    
>> allowed with which messages types?
>>      
>>> I suppose you have to use PUT/POST method with notify message for asynch
>>>        
>> data notification. How to make a subscribe? I suppose you would use a
>> SUBSCRIBE method with request/response message or SUBSCRIBE with notify
>> message? Also what about POST/DELETE methods in a notify message? They not
>> make any sense..
>>      
>>> I think the choice is between: option 1) ->  only CRUD methods and option
>>>        
> 1b)
>    
>> ->  CRUD + SUB/NOTIFY methods, keeping in mind cost/benefits of both
>>      
> solutions.
>    
>>> Adriano
>>>
>>> From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
>>> Sent: mercoledì 26 maggio 2010 20.09
>>> To: Adriano Pezzuto (apezzuto)
>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>
>>> Hi Adrian,
>>>
>>> I would also prefer to keep the protocol in CoAP asynchronous. You can
>>>        
>> always map an asynchronous protocol to a synchronous one but, as we see in
>> HTTP, it always ends up as a kludge to do it the other way round. The
>>      
> efforts
>    
>> which have been gone to to make HTTP quasi-asynchronous via all the
>>      
> schemes
>    
>> mentioned below and many more besides (all non-interoperable of course) is
>> testament to how important this is for M2M communication.
>>      
>>> So, back to Zach's list, I favor 1a) for the following reasons:
>>>
>>> Foundation level of messages:
>>>
>>> 1. request/response can be asynchronous or synchronous messages (as
>>>        
> there is
>    
>> a transaction ID in there)
>>      
>>> 2. notify is an asynchronous message
>>> Derived methods:
>>>
>>> I think it makes sense to add a pub/sub model as a useful mechanism for
>>>        
> M2M.
>    
>>> So, looking at it the other way round: It will be entirely possible to
>>>        
>> translate whatever is currently built on HTTP to CoAP based on the above,
>>      
> with
>    
>> all its restrictions regarding synchronous and client/server transactions.
>> What may be harder is to translate directly is a CoAP-based application to
>> HTTP. So I guess the question is: Do we want to be hamstrung to
>>      
> synchronous
>    
>> client/server transactions as dictated by HTTP and provide a direct
>>      
> mapping to
>    
>> HTTP, then have to come up with similar kludges for asynchronous
>>      
> peer-to-peer
>    
>> transactions as has been done in numerous ways for HTTP, or do we want to
>> define the protocol cleanly to start with and accept that some sort of
>> transaction relaying/conversion would have to take place at a mapping
>>      
> node?
>    
>>> Robert
>>> Robert Cragie (Pacific Gas&  Electric)
>>>
>>> Gridmerge Ltd.
>>> 89 Greenfield Crescent,
>>> Wakefield, WF4 4WA, UK
>>> +44 1924 910888
>>> +1 415 513 0064
>>> http://www.gridmerge.com
>>>
>>> On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:
>>> Hi,
>>> it looks to me that CoAP should use an explicit sub/notify mechanism
>>>        
> since
>    
>> this is the core of the machine-to-machine interaction model.
>>      
>>> HTTP suffers of this lack and we have seen a plethora of solutions to
>>>        
> give
>    
>> an asynch taste to it. Webhooks and websockets are only the lasts of the
>>      
> list.
>    
>>> As someone has already pointed out on this list, it is theoretically
>>>        
>> possible to describe sub/notify using only CRUD methods but it looks a
>>      
> little
>    
>> bit tricky and verbose.
>>      
>>> Now we have a chance to build from scratch a new protocol with and I
>>>        
> think
>    
>> using explicit sub/notify methods with a clear and well defined semantic
>>      
> is
>    
>> the best option. It is easily understanding from every developer and will
>> prevent to build other fanny solutions on top of the CoAP. HTTP does not
>>      
> have
>    
>> this well defined semantic and (for hundreds of other reasons also) it is
>>      
> not
>    
>> used as wide protocol for machine-to-machine communication.
>>      
>>> CoAP - as binary protocol - and with an explicit asynch model has a
>>>        
> chance
>    
>> to be a really wide protocol for M2M communication not only for
>>      
> constrained
>    
>> environments.
>>      
>>> my 2 cents
>>>
>>> - adriano
>>>
>>> -----Original Message-----
>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
>>>        
> Paul
>    
>> Duffy (paduffy)
>>      
>>> Sent: mercoledì 26 maggio 2010 0.47
>>> To: Zach Shelby
>>> Cc: core
>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>
>>> On 5/25/2010 6:41 PM, Zach Shelby wrote:
>>>
>>> Hi,
>>>
>>> On May 26, 2010, at 12:23 AM, Charles Palmer wrote:
>>>
>>>
>>> Hi folks
>>>
>>> It occurs to me that CoRE should be keeping a close eye on ZigBee SE2.0
>>>        
>> work, so that it is as easy as possible for ZigBee SE to use CoRE when
>>      
> ready.
>    
>> That suggests to me that we should align with their subscribe/notify
>>      
> process.
>    
>>>
>>> I am not sure I understand that. I mean, ZigBee SE2.0 is defining an
>>>        
>> application specific subscribe/notify mechanism for that purpose so far
>>      
> for
>    
>> HTTP. This uses standard HTTP methods and some custom payload and REST
>> interfaces. CoAP Req/Res is already totally compatible with SE2.0 in that
>> respect, so alignment is already OK there. Nothing stopping someone from
>>      
> using
>    
>> SE2.0 over CoAP.
>>      
>>> Specifying a native susbcription/notify into CoAP is another matter. We
>>>        
>> can't adopt a solution specific to one application as that won't solve the
>> problems of other applications nor general HTTP mapping at all (probably
>>      
> would
>    
>> make it worse). It seems that for the near future there will be a bunch of
>> HTTP push mechanisms in use without any clear standard appearing - or am I
>> wrong there?
>>      
>>>
>>>
>>>
>>> If COAP extends HTTP semantics with new subscription methods, it will
>>> not be possible to easily interchange HTTP/COAP, and translation
>>> gateways will become more complex to implement.
>>>
>>>
>>>
>>> Zach
>>>
>>>
>>> Regards - Charles
>>>
>>>
>>> -----Original Message-----
>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
>>>        
> Paul
>    
>> Duffy
>>      
>>> Sent: 25 May 2010 03:48
>>> To: Zach Shelby
>>> Cc: core
>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>
>>> Recommend something like #2, primarily to avoid introducing non HTTP
>>> method semantics, simplifying HTTP/COAP translation.gateways, etc.
>>>
>>>
>>> On 5/24/2010 11:49 AM, Zach Shelby wrote:
>>>
>>> (thread renamed)
>>>
>>> We have two different paths with regard to a subscribe/notify mechanism
>>>        
> for
>    
>> CoAP:
>>      
>>> 1. Use specific Subscription and Notify mechanisms for CoAP as HTTP
>>>        
> really
>    
>> does not include this concept.
>>      
>>> 1a) Notify as a message and SUBSCRIBE as a method. This is currently
>>>        
> used in
>    
>> coap-01.
>>      
>>> 1b) NOTIFY and SUBSCRIBE as methods. This was used in coap-00, but we
>>>        
> had a
>    
>> good list discussion about this leading to a. In practice it doesn't make
>>      
> a
>    
>> big difference if notification is a message or method.
>>      
>>> 2. Use an HTTP specific framework such as Webhooks, the ZigBee SE2.0
>>>        
>> proposal or GENA.
>>      
>>> So far we have focused on 1 in the WG, and every now and again 2 comes
>>>        
> up.
>    
>> At least I am not convinced that we need to suffer the drawbacks of HTTP
>>      
> here.
>    
>> Anyways 2 does not help our mapping to HTTP in reality very much as there
>>      
> is
>    
>> no standard way of doing this over HTTP. Thus a CoAP-HTTP proxy may end up
>> anyways translating between multiple HTTP frameworks depending on the
>> application. So instead of doing a CoAP Notify/Subscribe to Webhooks
>>      
> mapping,
>    
>> you will could end up having to do a CoAP Webhooks to HTTP GENA mapping.
>>      
>>>
>>>
>>> I don't understand this last para. If CoAP sticks to the semantics of
>>> the current HTTP methods, would this not offer a fairly straightforward
>>> translation to/from HTTP?
>>>
>>>
>>>
>>>  From what I have heard so far 1 still seems like a wise choice, although
>>>        
> I
>    
>> need to look at Webhooks more deeply. In reality many applications specify
>> their own way of doing a push interface using REST methods and specific
>> payloads (ZigBee SE2.0 is such an example). That is just fine, and might
>>      
> be
>    
>> used instead of a specific CoAP notify/subscribe in that case. So 1
>>      
> doesn't
>    
>> prevent the application using its own mechanism, it just provides a native
>>      
> way
>    
>> for doing push.
>>      
>>> What do people think?
>>>
>>> Zach
>>>
>>> On May 17, 2010, at 6:44 PM,matthieu.vial@fr.non.schneider-electric.com
>>>        
>> wrote:
>>      
>>>
>>>
>>> Hi,
>>>
>>> My comments about the subscribe/notify mechanism of Zigbee IP.
>>>
>>> Pros:
>>> - Derived from the webhooks concept
>>> - If used by CORE it will be easier to map to HTTP because it uses only
>>>        
> CRUD
>    
>> verbs.
>>      
>>> - The subscription message is extendable and could support advanced
>>>        
> options
>    
>> (delays, increment, ...)
>>      
>>> - Only one listening port whatever the transport binding is.
>>>
>>> Cons:
>>> - No interoperability without well known URIs and a well defined
>>>        
>> subscription message format (Not sure CoAP draft is the right place to
>>      
> specify
>    
>> this).
>>      
>>> - XML/EXI is too complex to be the required format for the default
>>>        
>> subscription/notification mechanism.
>>      
>>> - The notification should not require a subsequent GET to retrieve the
>>>        
>> content.
>>      
>>> - Subresource subscription is redundant.
>>>
>>> Hope this could help,
>>> Matthieu
>>>
>>>
>>> <graycol.gif>"Charles Palmer"<charles.palmer@onzo.com>
>>>
>>>
>>>
>>>
>>> "Charles Palmer"<charles.palmer@onzo.com>
>>> Envoyé par : core-bounces@ietf.org
>>> 15/05/2010 14:06
>>>
>>> <ecblank.gif>
>>> A
>>> <ecblank.gif>
>>> "core"<core@ietf.org>
>>> <ecblank.gif>
>>> cc
>>> <ecblank.gif>
>>> <ecblank.gif>
>>> Objet
>>> <ecblank.gif>
>>> Re: [core] Selecting a WG document for CoAP
>>> <ecblank.gif>  <ecblank.gif>
>>>
>>> Dear all
>>>
>>> Those interested in the subscribe/notify discussion might like to look
>>> at the draft Smart Energy Profile 2.0 Application Protocol
>>> Specification. It is available here:
>>> http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20PublicApp
>>> licationProfile.aspx
>>>
>>> It manages subscribe/notify by using POST. This seems to remove the need
>>> for SUBSCRIBE and notify.
>>>
>>> "Imagine a host A, which exposes a resource at http{s}://A/resource and
>>> a second host B, which wishes to learn of changes to this resource. To
>>> facilitate a subscription/ notification mechanism, A would expose a
>>> resource http{s}://A/sub and B would expose a resource http{s}://B/ntfy.
>>> To subscribe to notifications regarding http{s}://A/resource, B would
>>> send a POST to the address http{s}://A/sub/B containing the URI of the
>>> resource of interest (http{s}://A/resource) and the URI of B's
>>> notification resource (http{s}://B/ntfy). Following this subscription
>>> step, should A wish to notify B of a change to the resource addressed at
>>> http{s}://A/resource, A would send a POST to the address
>>> http{s}://B/ntfy containing the URI of the resource changed
>>> (http{s}://A/resource) and the URI of A's subscription resource
>>> (http{s}://A/sub/B), should A wish to change its subscription. The host
>>> B can then query the resource (or not) at its leisure."
>>>
>>> Sleepy nodes are not allowed to subscribe, and must poll.
>>>
>>> Regards - Charles Palmer
>>>
>>> -----Original Message-----
>>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
>>> Angelo P. Castellani
>>> Sent: 14 May 2010 13:14
>>> To: Zach Shelby
>>> Cc: core
>>> Subject: Re: [core] Selecting a WG document for CoAP
>>>
>>> Zach,
>>>
>>> thanks for the comments, but please refer to my most recent e-mail for
>>> a more specific list of technical issues I'm pointing to.
>>>
>>> I want to do only a little integration to what I've written there.
>>>
>>> In my very personal opinion, to maximize adherence with the REST model
>>> and minimize implementation effort SUBSCRIBE and NOTIFY should be
>>> mapped to methods (as discussed many times together...).
>>>
>>> Uniform interface principle (Fielding PhD dissertation Section 5.1.5,
>>> "The central feature that distinguishes the REST architectural style
>>> [...]") states that to simplify the software architecture, resource
>>> interfaces/interfaces should be as general as possible.
>>>
>>> I agree with this principle in this specific case, mainly because
>>> handling a special message type for notify leads node software design
>>> to a more complex architecture.
>>>
>>> The reason is that this new message type requires special handling and
>>> introduces a complexity in the software modularization.
>>>
>>> Best,
>>> Angelo
>>>
>>> On Fri, May 14, 2010 at 13:06, Zach Shelby<zach@sensinode.com>  wrote:
>>>
>>>
>>> Hi Angelo,
>>>
>>> On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:
>>>
>>>
>>>
>>> Dear C. Bormann, all,
>>>
>>> before deciding for the final direction, I've the following
>>> observations about draft-shelby-core-coap-01
>>>
>>> While I mostly share Zach's view of the protocol approach, and
>>> appreciate many aspects of the proposal, there are in my opinion
>>>
>>>
>>> still
>>>
>>>
>>> some open issues that need to be at least discussed before the
>>>
>>>
>>> current
>>>
>>>
>>> document can be selected.
>>>
>>>
>>> Of course there are plenty of open issues. Remember that working group
>>>
>>>
>>> documents still undertake as much change and improvement as the WG
>>> wants, so by no means is coap-01 set in stone. I would expect at least
>>> 5-10 more revisions still along the way. Already several of your ideas
>>> have been integrated into coap-01, and several more are under
>>> consideration, so it is coming along. Patience ;-)
>>>
>>>
>>>
>>> In particular, I would like to highlight the following:
>>>
>>> a) As it is now, it is not possible to have a straightforward
>>> translation of HTTP ->  CoAP and viceversa: see
>>> http://www.ietf.org/mail-archive/web/core/current/msg00133.html (this
>>> impacts the scalability of the web service model too)
>>>
>>>
>>> In coap-01 the Method names are now identical to HTTP methods. The
>>>
>>>
>>> Req/Res interaction is a direct translation. The URI hierarchy is
>>> compatible, and the URI binary code format we are still working on
>>> obviously. The only thing that takes some state to translate is
>>> Subscribe/Notify. But note, Subscribe/Notify takes some state no matter
>>> how you do it, even with HTTP-HTTP there is no clean and easy way to
>>> handle subscriptions.
>>>
>>>
>>>
>>> b) Moreover, CoAP's implementation is not as simple as it should be.
>>> I've investigated the implementation and some design choices (as
>>> Options) are leading to very high program complexity (ROM) on a
>>> MSP430-based device.
>>>
>>>
>>> This we can definitely improve, and already made several optimizations
>>>
>>>
>>> from -00 to -01. Here I need some very concrete proposals though. Also
>>> remember that many things are optional, for example subscribe/notify is
>>> not required if you don't need it.
>>>
>>>
>>>
>>> c) Finally when comparing HTTP message size with CoAP message size,
>>> the resulting compression isn't as good as you may expect.
>>>
>>> Example:
>>> HTTP: GET /sensor/temp.xml HTTP/1.0 = 32 B
>>> CoAP: 24 B with options parsing procedure requiring an added
>>> implementation complexity
>>>
>>>
>>> Right, that is not how it will work in practice. Working with a real
>>>
>>>
>>> HTTP server that HTTP header will be more complex, and on the CoAP side
>>> you would chose shorter URLs. The biggest improvement possible here is
>>> from using binary coded URLs of course. We need to look at a wider range
>>> of interactions and real HTTP headers as well to check that we are
>>> efficient enough.
>>>
>>>
>>>
>>> Addressing all these points potentially leads to major technical
>>> modifications (especially point a) on the current draft, hence it is
>>> appropriate in my opinion to discuss these points before making the
>>> final decision.
>>>
>>>
>>> I am not sure what else you have in mind for a). If we just forget
>>>
>>>
>>> about Subscribe/Notify then you are good to go. But then you are also
>>> not fulfilling the charter or the industry needs in that respect.
>>>
>>>
>>> Thanks,
>>> Zach
>>>
>>>
>>>
>>> Best regards,
>>>
>>> Angelo P. Castellani
>>>
>>>
>>> On Mon, May 10, 2010 at 18:51, Carsten Bormann<cabo@tzi.org>wrote:
>>>
>>>
>>> The CORE WG has a milestone to select a WG document for CoAP in
>>>
>>>
>>> April:
>>>
>>>
>>> http://datatracker.ietf.org/wg/core/charter/
>>> ...
>>> Apr 2010 Select WG document for basis of the CoAP protocol
>>>
>>> Of the various documents that have been contributed,
>>>
>>>
>>> draft-shelby-core-coap has significant discussion, as well as the
>>> largest number of updates (including a previous version that was still
>>> called -6lowapp-coap).
>>>
>>>
>>> Today, another updated version of that draft was announced. See
>>> http://www.ietf.org/mail-archive/web/core/current/msg00138.html
>>> for the announcement and
>>> http://tools.ietf.org/html/draft-shelby-core-coap-01
>>> for the draft itself.
>>>
>>> However, as the authors say, there are still significant TODOs.
>>>
>>> Are we in a state yet where we can say whether this is the right
>>>
>>>
>>> direction for the WG to take?
>>>
>>>
>>> If yes, is it the right direction? Should we adopt it as a WG
>>>
>>>
>>> document?
>>>
>>>
>>> If you don't think we can say yet, is there a set of technical
>>>
>>>
>>> decisions you would like the authors to take with priority?
>>>
>>>
>>> Note that once a document has become a WG document, the authors act
>>>
>>>
>>> as editors for the working group, making (and usually fleshing out the
>>> details of) any change that the WG decides it needs.
>>>
>>>
>>> If you think we can still improve the draft, this is not an obstacle
>>>
>>>
>>> to making it a WG document.
>>>
>>>
>>> But of course we shouldn't do that if we intend to reverse its
>>>
>>>
>>> fundamental technical direction.
>>>
>>>
>>> In order to stay roughly in sync with our milestones, we should
>>>
>>>
>>> reach at a decision on how to go forward this week.
>>>
>>>
>>> Gruesse, Carsten
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>>
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>>
>>> --
>>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>>> http://zachshelby.org - My blog "On the Internet of Things"
>>> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
>>> Mobile: +358 40 7796297
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>> --------------------------------
>>> Onzo is a limited company number 06097997 registered in England&  Wales.
>>>        
> The
>    
>>> registered office is 6 Great Newport Street, London, WC2H 7JB, United
>>>        
>> Kingdom.
>>      
>>> This email message may contain confidential and/or privileged
>>>        
> information,
>    
>> and
>>      
>>> is intended solely for the addressee(s). If you have received this email
>>>        
> in
>    
>>> error, please notify Onzo immediately. Unauthorised copying, disclosure
>>>        
> or
>    
>>> distribution of the material in this email is forbidden.
>>> --------------------------------
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>> ______________________________________________________________________
>>> This email has been scanned by the MessageLabs Email Security System.
>>> ______________________________________________________________________
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>>
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>> --------------------------------
>>> Onzo is a limited company number 06097997 registered in England&  Wales.
>>>        
> The
>    
>>> registered office is 6 Great Newport Street, London, WC2H 7JB, United
>>>        
>> Kingdom.
>>      
>>> This email message may contain confidential and/or privileged
>>>        
> information,
>    
>> and
>>      
>>> is intended solely for the addressee(s). If you have received this email
>>>        
> in
>    
>>> error, please notify Onzo immediately. Unauthorised copying, disclosure
>>>        
> or
>    
>>> distribution of the material in this email is forbidden.
>>> --------------------------------
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>>
>>>
>>> ______________________________________________________________________
>>> This email has been scanned by the MessageLabs Email Security System.
>>>
>>>        
>>      
> ____________________________________________________________________________
> __
>    
>> _______________________________________
>>      
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>        
>> --
>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>> http://zachshelby.org  - My blog "On the Internet of Things"
>> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
>> Mobile: +358 40 7796297
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>      
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>    


From richard.kelsey@ember.com  Wed Jun  2 19:36:59 2010
Return-Path: <richard.kelsey@ember.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 56A903A6943 for <core@core3.amsl.com>; Wed,  2 Jun 2010 19:36:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.084
X-Spam-Level: 
X-Spam-Status: No, score=-0.084 tagged_above=-999 required=5 tests=[AWL=-0.085, BAYES_50=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id X4tQxp+ZTafH for <core@core3.amsl.com>; Wed,  2 Jun 2010 19:36:27 -0700 (PDT)
Received: from EMPIRE.hq.ember.com (mail.ember.com [74.10.175.227]) by core3.amsl.com (Postfix) with ESMTP id A52213A6A4F for <core@ietf.org>; Wed,  2 Jun 2010 19:35:34 -0700 (PDT)
Received: from kelsey-ws.hq.ember.com ([192.168.81.37]) by EMPIRE.hq.ember.com with Microsoft SMTPSVC(6.0.3790.4675);  Wed, 2 Jun 2010 22:35:05 -0400
Date: Wed, 02 Jun 2010 22:31:29 -0400
Message-Id: <87vda0u9ry.fsf@kelsey-ws.hq.ember.com>
To: paduffy@cisco.com
In-reply-to: <4C06F48D.1020600@cisco.com> (message from Paul Duffy on Wed, 02 Jun 2010 20:17:17 -0400)
From: Richard Kelsey <richard.kelsey@ember.com>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com> <001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de> <4C06F48D.1020600@cisco.com>
X-OriginalArrivalTime: 03 Jun 2010 02:35:05.0330 (UTC) FILETIME=[600A6D20:01CB02C5]
Cc: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 02:36:59 -0000

> Date: Wed, 02 Jun 2010 20:17:17 -0400
> From: Paul Duffy <paduffy@cisco.com>
> 
> My understanding is that COAP is directed to the WEB of things.  I take 
> that to mean going with the grain of pervasively  deployed WEB 
> infrastructure.  Unless there is an overwhelming compelling reason to do 
> otherwise, IMO COAP needs to implement a strict subset of HTTP 
> semantics.  Otherwise, we open the door to complexity re: translating 
> HTTP/COAP, and history has shown complex app gateways will always be a 
> challenge.
>
> There are several ways to support pub/sub using stock HTTP methods.  I 
> suggest we do so.

Given the variety of ways people do pub/sub using stock HTTP
methods, it isn't clear that we can keep both COAP and the
COAP/HTTP gateways simple while still supporting multiple
pub/sub methods on the HTTP side.  By making the translation
of one form of HTTP pub/sub easy, we could easily make the
translation of others harder.

If we want to have COAP/HTTP gateways that support different
HTTP pub/sub methods, then it might be better to add pub/sub
to COAP directly, in a way that is not a strict subset of
HTTP.

Do we support several ways of doing pub/sub in HTTP, or just
one?  If we do pick just one, can others be easily translated
into it?
                                -Richard Kelsey

From zach@sensinode.com  Thu Jun  3 00:47:30 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9DEF73A6970 for <core@core3.amsl.com>; Thu,  3 Jun 2010 00:47:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.999
X-Spam-Level: 
X-Spam-Status: No, score=-0.999 tagged_above=-999 required=5 tests=[BAYES_50=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ljkUOUiPNZ6R for <core@core3.amsl.com>; Thu,  3 Jun 2010 00:47:27 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 4413F3A695D for <core@ietf.org>; Thu,  3 Jun 2010 00:47:26 -0700 (PDT)
Received: from dyn0305.panoulu.local (gw1.panoulu.net [212.50.147.101]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o537l1VC005968 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Thu, 3 Jun 2010 10:47:01 +0300
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <87vda0u9ry.fsf@kelsey-ws.hq.ember.com>
Date: Thu, 3 Jun 2010 10:47:03 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com> <001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de> <4C06F48D.1020600@cisco.com> <87vda0u9ry.fsf@kelsey-ws.hq.ember.com>
To: Richard Kelsey <richard.kelsey@ember.com>
X-Mailer: Apple Mail (2.1078)
Cc: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 07:47:30 -0000

On Jun 3, 2010, at 5:31 AM, Richard Kelsey wrote:

>> Date: Wed, 02 Jun 2010 20:17:17 -0400
>> From: Paul Duffy <paduffy@cisco.com>
>>=20
>> My understanding is that COAP is directed to the WEB of things.  I =
take=20
>> that to mean going with the grain of pervasively  deployed WEB=20
>> infrastructure.  Unless there is an overwhelming compelling reason to =
do=20
>> otherwise, IMO COAP needs to implement a strict subset of HTTP=20
>> semantics.  Otherwise, we open the door to complexity re: translating=20=

>> HTTP/COAP, and history has shown complex app gateways will always be =
a=20
>> challenge.
>>=20
>> There are several ways to support pub/sub using stock HTTP methods.  =
I=20
>> suggest we do so.
>=20
> Given the variety of ways people do pub/sub using stock HTTP
> methods, it isn't clear that we can keep both COAP and the
> COAP/HTTP gateways simple while still supporting multiple
> pub/sub methods on the HTTP side.  By making the translation
> of one form of HTTP pub/sub easy, we could easily make the
> translation of others harder.
>=20
> If we want to have COAP/HTTP gateways that support different
> HTTP pub/sub methods, then it might be better to add pub/sub
> to COAP directly, in a way that is not a strict subset of
> HTTP.
>=20
> Do we support several ways of doing pub/sub in HTTP, or just
> one?  If we do pick just one, can others be easily translated
> into it?

So far I have seen at least 10 different ways of doing some kind of =
pub/sub/event/notify/feed over HTTP with no clear winner. If we choose =
one of those then we will end up fighting a war here about why we didn't =
choose someone's favorite. If we choose multiple then we are putting way =
too much complexity on constrained devices. If we make a new one then we =
are adding yet another to the mess. Regardless of what we do, a general =
CoAP-HTTP proxy will likely end up having to support multiple HTTP =
schemes.

Defining an HTTP mapping is one piece of our work here, but it is not =
the main design goal. CoAP will often be used end-to-end without HTTP =
translation, and mappings to other protocols such as XMPP will surely =
become common.=20
One of our charter requirements is to provide a push mechanism as it is =
even more critical in embedded systems than on the Web today.

As a proxy doing CoAP-HTTP mapping will usually also be a caching proxy, =
I don't see a real complexity problem with doing native sub/notify =
inside the constrained network with CoAP. Receiving a notify about a =
CoAP resource simply updates the cache entry for that resource. The =
response to a GET updates the same entry. A proxy will also likely need =
to do subscription aggregation in the real-world to protect constrained =
nodes from handling lager numbers of subscriptions. So we can consider =
it a split model.

Another reason I have for preferring a native sub/notify mechanism for =
CoAP is that the current HTTP design patterns are just broken when it =
comes to REST. We can talk about that more, but overloading POST and PUT =
for making subscriptions and notification is confusing and involves more =
complexity and payload processing. That also makes caching notifications =
more difficult. Using an explicit SUBSCRIBE and NOTIFY follows the REST =
architecture better, is easier to understand, and simpler to implement.=20=


I think we should take a shot at an improved native mechanism for =
coap-02, implement it widely, and get some real HTTP mapping experience. =
Later in the WG process if we find that having native SUB/NOTIFY is more =
painful than beneficial (or if nobody is using it) we can always remove =
it and fall back on an HTTP pattern.

Zach

>                                -Richard Kelsey
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From mark@coactus.com  Thu Jun  3 06:37:50 2010
Return-Path: <mark@coactus.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id EF3E53A67AB for <core@core3.amsl.com>; Thu,  3 Jun 2010 06:37:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -99.377
X-Spam-Level: 
X-Spam-Status: No, score=-99.377 tagged_above=-999 required=5 tests=[BAYES_50=0.001, FM_FORGED_GMAIL=0.622, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NwbdPPksxzxV for <core@core3.amsl.com>; Thu,  3 Jun 2010 06:37:49 -0700 (PDT)
Received: from mail-gy0-f172.google.com (mail-gy0-f172.google.com [209.85.160.172]) by core3.amsl.com (Postfix) with ESMTP id 33A5E28C0D0 for <core@ietf.org>; Thu,  3 Jun 2010 06:37:49 -0700 (PDT)
Received: by gyh4 with SMTP id 4so84125gyh.31 for <core@ietf.org>; Thu, 03 Jun 2010 06:37:33 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.100.24.37 with SMTP id 37mr10594825anx.256.1275572253171; Thu,  03 Jun 2010 06:37:33 -0700 (PDT)
Sender: mark@coactus.com
Received: by 10.100.226.4 with HTTP; Thu, 3 Jun 2010 06:37:33 -0700 (PDT)
In-Reply-To: <DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com> <OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com> <0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com> <6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com> <4C06F48D.1020600@cisco.com> <87vda0u9ry.fsf@kelsey-ws.hq.ember.com> <DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>
Date: Thu, 3 Jun 2010 09:37:33 -0400
X-Google-Sender-Auth: 40Hi17BJ9Y0vZgB5VrMx_PEls94
Message-ID: <AANLkTikgv3klQiBZmjAtiSCotXy_7BcGYMtpQPL-lW5k@mail.gmail.com>
From: Mark Baker <distobj@acm.org>
To: Zach Shelby <zach@sensinode.com>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 13:37:50 -0000

On Thu, Jun 3, 2010 at 3:47 AM, Zach Shelby <zach@sensinode.com> wrote:
> Another reason I have for preferring a native sub/notify mechanism for Co=
AP is that the current HTTP design patterns are just broken when it comes t=
o REST. We can talk about that more, but overloading POST and PUT for makin=
g subscriptions and notification is confusing and involves more complexity =
and payload processing. That also makes caching notifications more difficul=
t. Using an explicit SUBSCRIBE and NOTIFY follows the REST architecture bet=
ter, is easier to understand, and simpler to implement.

Agreed, more or less, for SUBSCRIBE, but I would expect that POST (and
possibly PUT, for notification updates) could replace NOTIFY.

I'd also like to point out that defining non-HTTP-native methods for
CoAP doesn't prevent a clean HTTP mapping.  It just means that you
also need to define them for HTTP.

Mark.

From geoff@proto6.com  Thu Jun  3 06:56:32 2010
Return-Path: <geoff@proto6.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id B466B3A67AD for <core@core3.amsl.com>; Thu,  3 Jun 2010 06:56:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -98.849
X-Spam-Level: 
X-Spam-Status: No, score=-98.849 tagged_above=-999 required=5 tests=[AWL=-1.150, BAYES_50=0.001, MANGLED_TOOL=2.3, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Tua9wTRPQFSq for <core@core3.amsl.com>; Thu,  3 Jun 2010 06:56:29 -0700 (PDT)
Received: from server2.coslabs.com (server2.coslabs.com [64.111.18.234]) by core3.amsl.com (Postfix) with ESMTP id 9FFEB3A67A3 for <core@ietf.org>; Thu,  3 Jun 2010 06:56:29 -0700 (PDT)
Received: from server1.coslabs.com (mail.coslabs.com [199.233.92.34]) by server2.coslabs.com (Postfix) with ESMTP id 830F3181BA; Thu,  3 Jun 2010 07:56:33 -0600 (MDT)
Received: from [199.233.92.20] (dev20.coslabs.com [199.233.92.20]) by server1.coslabs.com (8.13.6/8.13.6) with ESMTP id o53DuGLR003343; Thu, 3 Jun 2010 07:56:16 -0600 (MDT)
From: Geoff Mulligan <geoff@proto6.com>
To: paduffy@cisco.com
In-Reply-To: <4C06F48D.1020600@cisco.com>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com> <OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com> <0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com> <6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com> <001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de> <4C06F48D.1020600@cisco.com>
Content-Type: text/plain; charset="UTF-8"
Date: Thu, 03 Jun 2010 07:56:15 -0600
Message-ID: <1275573375.1702.5773.camel@d430>
Mime-Version: 1.0
X-Mailer: Evolution 2.28.3 
Content-Transfer-Encoding: 8bit
Cc: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 13:56:32 -0000

+1!!

	geoff

On Wed, 2010-06-02 at 20:17 -0400, Paul Duffy wrote:
> Folks,
> 
> My understanding is that COAP is directed to the WEB of things.  I take 
> that to mean going with the grain of pervasively  deployed WEB 
> infrastructure.  Unless there is an overwhelming compelling reason to do 
> otherwise, IMO COAP needs to implement a strict subset of HTTP 
> semantics.  Otherwise, we open the door to complexity re: translating 
> HTTP/COAP, and history has shown complex app gateways will always be a 
> challenge.
> 
> There are several ways to support pub/sub using stock HTTP methods.  I 
> suggest we do so.
> 
> Cheers
> 
> 
> On 6/2/2010 2:21 AM, Guido Moritz wrote:
> > Dear WG,
> >
> > I agree to focus on the ToDos and not on the maybes. But a comprehensive
> > eventing concept includes more than only the method/message type. It
> > requires lease concepts, filtering mechanisms ... It would also require
> > mechanisms to assign incoming NOTIFYs to a specific SUBSCRIBTION if one and
> > the same client has SUBSCRIBED to more than one event of the same device. Is
> > this out of scope of COAP or should it be considered already at this point
> > to have a straight forward and clean protocol design? Hence it might be
> > reasonable to have SUBSCRIBE and NOTIFY as single methods and grouping every
> > sub functionality as type below the method?
> >
> > However, as HTTP has no native mechanism to feature eventing, for eventing
> > it would be always required to have a caching intermediate entity (proxy,
> > gateway, what ever). This one can provide which interface ever to the
> > external networks (HTPP, polling, WebHooks, XMPP, WS-Eventing, ...). So this
> > is implementation specific and might not be considered in COAP at all.
> >
> > Guido
> >
> >    
> >> -----UrsprÃ¼ngliche Nachricht-----
> >> Von: core-bounces@ietf.org [mailto:core-bounces@ietf.org] Im Auftrag von
> >>      
> > Zach
> >    
> >> Shelby
> >> Gesendet: Freitag, 28. Mai 2010 14:50
> >> An: Adriano Pezzuto
> >> Cc: core
> >> Betreff: Re: [core] Subscribe/Notify for CoAP
> >>
> >> Hi,
> >>
> >> This is a really good conversation. One thing we need to do is remember
> >>      
> > what
> >    
> >> our minimum requirements are for subscribe/notify and not try to solve
> >> something more than we should. From what I know it is sufficient to be
> >>      
> > able to
> >    
> >> receive notifications when a URI changes or periodically. You might
> >>      
> > consider
> >    
> >> new URIs under this URI path to be changes to a URI though...
> >>
> >> On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrote:
> >>
> >>      
> >>> Hello,
> >>> with this flavor, the SUBSCRIBE may be replaced by a simple POST. So no
> >>>        
> >> needs to have an explicit SUBSCRIBE method.
> >>
> >> This is what coap-01 assumes.
> >>
> >>      
> >>> If we want support a more oriented peer-to-peer transaction on CoAP, it
> >>>        
> >> looks to me both SUB and NOTIFY should be treated as messages.
> >>
> >> The Request/Response model can be used peer-to-peer, and in CoAP you can
> >>      
> > even
> >    
> >> use a Request asynchronously. Additionally, we want a native RESTful
> >> subscribe/notify technique, that is, we want to subscribe to resources and
> >>      
> > be
> >    
> >> susequently notified about those resources when they change.
> >>
> >> In that sense, you can think of a subscription as a request to receive
> >> asynchronous notifications about a resource (about a URI). This can be
> >> achieved by:
> >>
> >> 1.  as a SUBSCRIBE Request on the URI with some option indicating the
> >>      
> > lifetime
> >    
> >> as in coap-01,
> >> 2.  as a Subcsribe message (no methods) on the URI with some option,
> >> 3.  or as a POST Request on the URI with options indicating that this is
> >> actually a subscription and the lifetime.  This bends the meaning of POST
> >> quite a bit and might be prone to mistakes?
> >>
> >> The asynchronous response is a harder one. Can we bend the meaning of a
> >> Request for making asynchronous notifications? Also a notification
> >>      
> > includes a
> >    
> >> URI about a resource on the requestor, which is inverse from normal
> >>      
> > Requests
> >    
> >> in REST. So the options here are:
> >>
> >> 1. as a Notify message about a URI (no methods) as in coap-01,
> >> 2. as a NOTIFY Request about a URI as was in coap-00,
> >> 3. hmmm... reusing CRUD methods really doesn't work for this one at all...
> >>
> >> I wonder what the HTTP designers would have done if this would have been a
> >> requirement back then? Maybe we should ask them...
> >>
> >> Zach
> >>
> >>      
> >>> Adriano
> >>>
> >>> From: matthieu.vial@fr.non.schneider-electric.com
> >>>        
> >> [mailto:matthieu.vial@fr.non.schneider-electric.com]
> >>      
> >>> Sent: venerdÃ¬ 28 maggio 2010 13.52
> >>> To: Adriano Pezzuto (apezzuto)
> >>> Cc: core; core-bounces@ietf.org; robert.cragie@gridmerge.com
> >>> Subject: Re: [core] Subscribe/Notify for CoAP
> >>>
> >>>        
> >>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types not
> >>>>          
> >> methods!
> >>      
> >>> SUBSCRIBE can be just an asynchronous GET on update then I think it is a
> >>>        
> >> method and NOTIFY is an asynchronous response so a message.
> >>      
> >>> But if we want to have selective notifications when a resource is
> >>>        
> > created,
> >    
> >> updated or deleted then I think you're right NOTIFY and SUBSCRIBE are
> >> messages.
> >>      
> >>> Does that make sense ?
> >>>
> >>> Matthieu
> >>>
> >>> <image001.gif>"Adriano Pezzuto (apezzuto)"<apezzuto@cisco.com>
> >>>
> >>>
> >>>
> >>>
> >>> "Adriano Pezzuto (apezzuto)"<apezzuto@cisco.com>
> >>> EnvoyÃ© par : core-bounces@ietf.org
> >>> 28/05/2010 12:50
> >>>
> >>> <image003.png>
> >>> A
> >>> <image004.png>
> >>> <robert.cragie@gridmerge.com>
> >>> <image003.png>
> >>> cc
> >>> <image004.png>
> >>> core<core@ietf.org>
> >>> <image003.png>
> >>> Objet
> >>> <image004.png>
> >>> Re: [core] Subscribe/Notify for CoAP
> >>> <image004.png>
> >>> <image004.png>
> >>>
> >>> Hi Roberto,
> >>> I understand your point and personally agree on M2M is quite different
> >>>        
> > from
> >    
> >> web page model. On the architectural RESTful style, the method information
> >> tells the server what to do with data kept in the URI information.
> >>      
> >>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types not
> >>>        
> >> methods!
> >>      
> >>> Adriano
> >>>
> >>> From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
> >>> Sent: venerdÃ¬ 28 maggio 2010 11.53
> >>> To: Adriano Pezzuto (apezzuto)
> >>> Cc: Paul Duffy (paduffy); Zach Shelby; core
> >>> Subject: Re: [core] Subscribe/Notify for CoAP
> >>>
> >>> I think the point here is that there are two levels we are considering.
> >>>
> >>> At the lowest (foundation) level, there are the transaction messages as
> >>>        
> >> described below. This provides a flexible mechanism for the application
> >>      
> > with
> >    
> >> regard to synchronicity and threading. This is important for the types of
> >> devices CoAP is being aimed at.
> >>      
> >>> Above that, the methods can be used according to the architectural
> >>>        
> > style. So
> >    
> >> in this case, it is RESTful (COnstrained Restful Environments), which will
> >> naturally limit the number of methods and how transactions occur.
> >>      
> >>> The actual architecture using a combination of the methods and messages
> >>>        
> > also
> >    
> >> depends on what is required at the application layer. Consider a typical
> >> client which wants to subscribe to a resource. That client controls the
> >>      
> > feed
> >    
> >> of data but needs a component which is capable of handling (possibly
> >> buffering) the data it receives through notifications. Is this a separate
> >> server? Or would we want to consider it part of an enhanced client model
> >>      
> > which
> >    
> >> is able to process feeds of data? These are the sort of models which have
> >>      
> > led
> >    
> >> to the myriad of solutions (GENA, Webhooks, long polling, pubsubhubbub,
> >>      
> > RESTMS
> >    
> >> etc.) based around HTTP which are all essentially ingenious ways of
> >>      
> > getting
> >    
> >> around the limitations imposed by HTTP and how it is processed for
> >>      
> > anything
> >    
> >> which deviates from the classic web page access model.
> >>      
> >>> I think the aim of CoAP should be clean from the word go with regard to
> >>>        
> >> supporting these more peer-to-peer transactions, where the client can
> >>      
> > exist on
> >    
> >> either entity and both entities can feed data to each other; typical in
> >>      
> > M2M
> >    
> >> applications.
> >>      
> >>> Robert
> >>>
> >>> Robert Cragie (Pacific Gas&  Electric)
> >>>
> >>> Gridmerge Ltd.
> >>> 89 Greenfield Crescent,
> >>> Wakefield, WF4 4WA, UK
> >>> +44 1924 910888
> >>> +1 415 513 0064
> >>> http://www.gridmerge.com
> >>>
> >>> On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:
> >>> Hi Robert,
> >>>
> >>> in my personal opinion, the option 1a) brings some sort of ambiguity to
> >>>        
> > CoAP
> >    
> >> specs.
> >>      
> >>> My be my understatement of new CoAP specs is not so deep, but now we
> >>>        
> > have 5
> >    
> >> methods and 3 message types: request, response and notify. Which methods
> >>      
> > are
> >    
> >> allowed with which messages types?
> >>      
> >>> I suppose you have to use PUT/POST method with notify message for asynch
> >>>        
> >> data notification. How to make a subscribe? I suppose you would use a
> >> SUBSCRIBE method with request/response message or SUBSCRIBE with notify
> >> message? Also what about POST/DELETE methods in a notify message? They not
> >> make any sense..
> >>      
> >>> I think the choice is between: option 1) ->  only CRUD methods and option
> >>>        
> > 1b)
> >    
> >> ->  CRUD + SUB/NOTIFY methods, keeping in mind cost/benefits of both
> >>      
> > solutions.
> >    
> >>> Adriano
> >>>
> >>> From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
> >>> Sent: mercoledÃ¬ 26 maggio 2010 20.09
> >>> To: Adriano Pezzuto (apezzuto)
> >>> Cc: Paul Duffy (paduffy); Zach Shelby; core
> >>> Subject: Re: [core] Subscribe/Notify for CoAP
> >>>
> >>> Hi Adrian,
> >>>
> >>> I would also prefer to keep the protocol in CoAP asynchronous. You can
> >>>        
> >> always map an asynchronous protocol to a synchronous one but, as we see in
> >> HTTP, it always ends up as a kludge to do it the other way round. The
> >>      
> > efforts
> >    
> >> which have been gone to to make HTTP quasi-asynchronous via all the
> >>      
> > schemes
> >    
> >> mentioned below and many more besides (all non-interoperable of course) is
> >> testament to how important this is for M2M communication.
> >>      
> >>> So, back to Zach's list, I favor 1a) for the following reasons:
> >>>
> >>> Foundation level of messages:
> >>>
> >>> 1. request/response can be asynchronous or synchronous messages (as
> >>>        
> > there is
> >    
> >> a transaction ID in there)
> >>      
> >>> 2. notify is an asynchronous message
> >>> Derived methods:
> >>>
> >>> I think it makes sense to add a pub/sub model as a useful mechanism for
> >>>        
> > M2M.
> >    
> >>> So, looking at it the other way round: It will be entirely possible to
> >>>        
> >> translate whatever is currently built on HTTP to CoAP based on the above,
> >>      
> > with
> >    
> >> all its restrictions regarding synchronous and client/server transactions.
> >> What may be harder is to translate directly is a CoAP-based application to
> >> HTTP. So I guess the question is: Do we want to be hamstrung to
> >>      
> > synchronous
> >    
> >> client/server transactions as dictated by HTTP and provide a direct
> >>      
> > mapping to
> >    
> >> HTTP, then have to come up with similar kludges for asynchronous
> >>      
> > peer-to-peer
> >    
> >> transactions as has been done in numerous ways for HTTP, or do we want to
> >> define the protocol cleanly to start with and accept that some sort of
> >> transaction relaying/conversion would have to take place at a mapping
> >>      
> > node?
> >    
> >>> Robert
> >>> Robert Cragie (Pacific Gas&  Electric)
> >>>
> >>> Gridmerge Ltd.
> >>> 89 Greenfield Crescent,
> >>> Wakefield, WF4 4WA, UK
> >>> +44 1924 910888
> >>> +1 415 513 0064
> >>> http://www.gridmerge.com
> >>>
> >>> On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:
> >>> Hi,
> >>> it looks to me that CoAP should use an explicit sub/notify mechanism
> >>>        
> > since
> >    
> >> this is the core of the machine-to-machine interaction model.
> >>      
> >>> HTTP suffers of this lack and we have seen a plethora of solutions to
> >>>        
> > give
> >    
> >> an asynch taste to it. Webhooks and websockets are only the lasts of the
> >>      
> > list.
> >    
> >>> As someone has already pointed out on this list, it is theoretically
> >>>        
> >> possible to describe sub/notify using only CRUD methods but it looks a
> >>      
> > little
> >    
> >> bit tricky and verbose.
> >>      
> >>> Now we have a chance to build from scratch a new protocol with and I
> >>>        
> > think
> >    
> >> using explicit sub/notify methods with a clear and well defined semantic
> >>      
> > is
> >    
> >> the best option. It is easily understanding from every developer and will
> >> prevent to build other fanny solutions on top of the CoAP. HTTP does not
> >>      
> > have
> >    
> >> this well defined semantic and (for hundreds of other reasons also) it is
> >>      
> > not
> >    
> >> used as wide protocol for machine-to-machine communication.
> >>      
> >>> CoAP - as binary protocol - and with an explicit asynch model has a
> >>>        
> > chance
> >    
> >> to be a really wide protocol for M2M communication not only for
> >>      
> > constrained
> >    
> >> environments.
> >>      
> >>> my 2 cents
> >>>
> >>> - adriano
> >>>
> >>> -----Original Message-----
> >>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
> >>>        
> > Paul
> >    
> >> Duffy (paduffy)
> >>      
> >>> Sent: mercoledÃ¬ 26 maggio 2010 0.47
> >>> To: Zach Shelby
> >>> Cc: core
> >>> Subject: Re: [core] Subscribe/Notify for CoAP
> >>>
> >>> On 5/25/2010 6:41 PM, Zach Shelby wrote:
> >>>
> >>> Hi,
> >>>
> >>> On May 26, 2010, at 12:23 AM, Charles Palmer wrote:
> >>>
> >>>
> >>> Hi folks
> >>>
> >>> It occurs to me that CoRE should be keeping a close eye on ZigBee SE2.0
> >>>        
> >> work, so that it is as easy as possible for ZigBee SE to use CoRE when
> >>      
> > ready.
> >    
> >> That suggests to me that we should align with their subscribe/notify
> >>      
> > process.
> >    
> >>>
> >>> I am not sure I understand that. I mean, ZigBee SE2.0 is defining an
> >>>        
> >> application specific subscribe/notify mechanism for that purpose so far
> >>      
> > for
> >    
> >> HTTP. This uses standard HTTP methods and some custom payload and REST
> >> interfaces. CoAP Req/Res is already totally compatible with SE2.0 in that
> >> respect, so alignment is already OK there. Nothing stopping someone from
> >>      
> > using
> >    
> >> SE2.0 over CoAP.
> >>      
> >>> Specifying a native susbcription/notify into CoAP is another matter. We
> >>>        
> >> can't adopt a solution specific to one application as that won't solve the
> >> problems of other applications nor general HTTP mapping at all (probably
> >>      
> > would
> >    
> >> make it worse). It seems that for the near future there will be a bunch of
> >> HTTP push mechanisms in use without any clear standard appearing - or am I
> >> wrong there?
> >>      
> >>>
> >>>
> >>>
> >>> If COAP extends HTTP semantics with new subscription methods, it will
> >>> not be possible to easily interchange HTTP/COAP, and translation
> >>> gateways will become more complex to implement.
> >>>
> >>>
> >>>
> >>> Zach
> >>>
> >>>
> >>> Regards - Charles
> >>>
> >>>
> >>> -----Original Message-----
> >>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
> >>>        
> > Paul
> >    
> >> Duffy
> >>      
> >>> Sent: 25 May 2010 03:48
> >>> To: Zach Shelby
> >>> Cc: core
> >>> Subject: Re: [core] Subscribe/Notify for CoAP
> >>>
> >>> Recommend something like #2, primarily to avoid introducing non HTTP
> >>> method semantics, simplifying HTTP/COAP translation.gateways, etc.
> >>>
> >>>
> >>> On 5/24/2010 11:49 AM, Zach Shelby wrote:
> >>>
> >>> (thread renamed)
> >>>
> >>> We have two different paths with regard to a subscribe/notify mechanism
> >>>        
> > for
> >    
> >> CoAP:
> >>      
> >>> 1. Use specific Subscription and Notify mechanisms for CoAP as HTTP
> >>>        
> > really
> >    
> >> does not include this concept.
> >>      
> >>> 1a) Notify as a message and SUBSCRIBE as a method. This is currently
> >>>        
> > used in
> >    
> >> coap-01.
> >>      
> >>> 1b) NOTIFY and SUBSCRIBE as methods. This was used in coap-00, but we
> >>>        
> > had a
> >    
> >> good list discussion about this leading to a. In practice it doesn't make
> >>      
> > a
> >    
> >> big difference if notification is a message or method.
> >>      
> >>> 2. Use an HTTP specific framework such as Webhooks, the ZigBee SE2.0
> >>>        
> >> proposal or GENA.
> >>      
> >>> So far we have focused on 1 in the WG, and every now and again 2 comes
> >>>        
> > up.
> >    
> >> At least I am not convinced that we need to suffer the drawbacks of HTTP
> >>      
> > here.
> >    
> >> Anyways 2 does not help our mapping to HTTP in reality very much as there
> >>      
> > is
> >    
> >> no standard way of doing this over HTTP. Thus a CoAP-HTTP proxy may end up
> >> anyways translating between multiple HTTP frameworks depending on the
> >> application. So instead of doing a CoAP Notify/Subscribe to Webhooks
> >>      
> > mapping,
> >    
> >> you will could end up having to do a CoAP Webhooks to HTTP GENA mapping.
> >>      
> >>>
> >>>
> >>> I don't understand this last para. If CoAP sticks to the semantics of
> >>> the current HTTP methods, would this not offer a fairly straightforward
> >>> translation to/from HTTP?
> >>>
> >>>
> >>>
> >>>  From what I have heard so far 1 still seems like a wise choice, although
> >>>        
> > I
> >    
> >> need to look at Webhooks more deeply. In reality many applications specify
> >> their own way of doing a push interface using REST methods and specific
> >> payloads (ZigBee SE2.0 is such an example). That is just fine, and might
> >>      
> > be
> >    
> >> used instead of a specific CoAP notify/subscribe in that case. So 1
> >>      
> > doesn't
> >    
> >> prevent the application using its own mechanism, it just provides a native
> >>      
> > way
> >    
> >> for doing push.
> >>      
> >>> What do people think?
> >>>
> >>> Zach
> >>>
> >>> On May 17, 2010, at 6:44 PM,matthieu.vial@fr.non.schneider-electric.com
> >>>        
> >> wrote:
> >>      
> >>>
> >>>
> >>> Hi,
> >>>
> >>> My comments about the subscribe/notify mechanism of Zigbee IP.
> >>>
> >>> Pros:
> >>> - Derived from the webhooks concept
> >>> - If used by CORE it will be easier to map to HTTP because it uses only
> >>>        
> > CRUD
> >    
> >> verbs.
> >>      
> >>> - The subscription message is extendable and could support advanced
> >>>        
> > options
> >    
> >> (delays, increment, ...)
> >>      
> >>> - Only one listening port whatever the transport binding is.
> >>>
> >>> Cons:
> >>> - No interoperability without well known URIs and a well defined
> >>>        
> >> subscription message format (Not sure CoAP draft is the right place to
> >>      
> > specify
> >    
> >> this).
> >>      
> >>> - XML/EXI is too complex to be the required format for the default
> >>>        
> >> subscription/notification mechanism.
> >>      
> >>> - The notification should not require a subsequent GET to retrieve the
> >>>        
> >> content.
> >>      
> >>> - Subresource subscription is redundant.
> >>>
> >>> Hope this could help,
> >>> Matthieu
> >>>
> >>>
> >>> <graycol.gif>"Charles Palmer"<charles.palmer@onzo.com>
> >>>
> >>>
> >>>
> >>>
> >>> "Charles Palmer"<charles.palmer@onzo.com>
> >>> EnvoyÃ© par : core-bounces@ietf.org
> >>> 15/05/2010 14:06
> >>>
> >>> <ecblank.gif>
> >>> A
> >>> <ecblank.gif>
> >>> "core"<core@ietf.org>
> >>> <ecblank.gif>
> >>> cc
> >>> <ecblank.gif>
> >>> <ecblank.gif>
> >>> Objet
> >>> <ecblank.gif>
> >>> Re: [core] Selecting a WG document for CoAP
> >>> <ecblank.gif>  <ecblank.gif>
> >>>
> >>> Dear all
> >>>
> >>> Those interested in the subscribe/notify discussion might like to look
> >>> at the draft Smart Energy Profile 2.0 Application Protocol
> >>> Specification. It is available here:
> >>> http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20PublicApp
> >>> licationProfile.aspx
> >>>
> >>> It manages subscribe/notify by using POST. This seems to remove the need
> >>> for SUBSCRIBE and notify.
> >>>
> >>> "Imagine a host A, which exposes a resource at http{s}://A/resource and
> >>> a second host B, which wishes to learn of changes to this resource. To
> >>> facilitate a subscription/ notification mechanism, A would expose a
> >>> resource http{s}://A/sub and B would expose a resource http{s}://B/ntfy.
> >>> To subscribe to notifications regarding http{s}://A/resource, B would
> >>> send a POST to the address http{s}://A/sub/B containing the URI of the
> >>> resource of interest (http{s}://A/resource) and the URI of B's
> >>> notification resource (http{s}://B/ntfy). Following this subscription
> >>> step, should A wish to notify B of a change to the resource addressed at
> >>> http{s}://A/resource, A would send a POST to the address
> >>> http{s}://B/ntfy containing the URI of the resource changed
> >>> (http{s}://A/resource) and the URI of A's subscription resource
> >>> (http{s}://A/sub/B), should A wish to change its subscription. The host
> >>> B can then query the resource (or not) at its leisure."
> >>>
> >>> Sleepy nodes are not allowed to subscribe, and must poll.
> >>>
> >>> Regards - Charles Palmer
> >>>
> >>> -----Original Message-----
> >>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
> >>> Angelo P. Castellani
> >>> Sent: 14 May 2010 13:14
> >>> To: Zach Shelby
> >>> Cc: core
> >>> Subject: Re: [core] Selecting a WG document for CoAP
> >>>
> >>> Zach,
> >>>
> >>> thanks for the comments, but please refer to my most recent e-mail for
> >>> a more specific list of technical issues I'm pointing to.
> >>>
> >>> I want to do only a little integration to what I've written there.
> >>>
> >>> In my very personal opinion, to maximize adherence with the REST model
> >>> and minimize implementation effort SUBSCRIBE and NOTIFY should be
> >>> mapped to methods (as discussed many times together...).
> >>>
> >>> Uniform interface principle (Fielding PhD dissertation Section 5.1.5,
> >>> "The central feature that distinguishes the REST architectural style
> >>> [...]") states that to simplify the software architecture, resource
> >>> interfaces/interfaces should be as general as possible.
> >>>
> >>> I agree with this principle in this specific case, mainly because
> >>> handling a special message type for notify leads node software design
> >>> to a more complex architecture.
> >>>
> >>> The reason is that this new message type requires special handling and
> >>> introduces a complexity in the software modularization.
> >>>
> >>> Best,
> >>> Angelo
> >>>
> >>> On Fri, May 14, 2010 at 13:06, Zach Shelby<zach@sensinode.com>  wrote:
> >>>
> >>>
> >>> Hi Angelo,
> >>>
> >>> On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:
> >>>
> >>>
> >>>
> >>> Dear C. Bormann, all,
> >>>
> >>> before deciding for the final direction, I've the following
> >>> observations about draft-shelby-core-coap-01
> >>>
> >>> While I mostly share Zach's view of the protocol approach, and
> >>> appreciate many aspects of the proposal, there are in my opinion
> >>>
> >>>
> >>> still
> >>>
> >>>
> >>> some open issues that need to be at least discussed before the
> >>>
> >>>
> >>> current
> >>>
> >>>
> >>> document can be selected.
> >>>
> >>>
> >>> Of course there are plenty of open issues. Remember that working group
> >>>
> >>>
> >>> documents still undertake as much change and improvement as the WG
> >>> wants, so by no means is coap-01 set in stone. I would expect at least
> >>> 5-10 more revisions still along the way. Already several of your ideas
> >>> have been integrated into coap-01, and several more are under
> >>> consideration, so it is coming along. Patience ;-)
> >>>
> >>>
> >>>
> >>> In particular, I would like to highlight the following:
> >>>
> >>> a) As it is now, it is not possible to have a straightforward
> >>> translation of HTTP ->  CoAP and viceversa: see
> >>> http://www.ietf.org/mail-archive/web/core/current/msg00133.html (this
> >>> impacts the scalability of the web service model too)
> >>>
> >>>
> >>> In coap-01 the Method names are now identical to HTTP methods. The
> >>>
> >>>
> >>> Req/Res interaction is a direct translation. The URI hierarchy is
> >>> compatible, and the URI binary code format we are still working on
> >>> obviously. The only thing that takes some state to translate is
> >>> Subscribe/Notify. But note, Subscribe/Notify takes some state no matter
> >>> how you do it, even with HTTP-HTTP there is no clean and easy way to
> >>> handle subscriptions.
> >>>
> >>>
> >>>
> >>> b) Moreover, CoAP's implementation is not as simple as it should be.
> >>> I've investigated the implementation and some design choices (as
> >>> Options) are leading to very high program complexity (ROM) on a
> >>> MSP430-based device.
> >>>
> >>>
> >>> This we can definitely improve, and already made several optimizations
> >>>
> >>>
> >>> from -00 to -01. Here I need some very concrete proposals though. Also
> >>> remember that many things are optional, for example subscribe/notify is
> >>> not required if you don't need it.
> >>>
> >>>
> >>>
> >>> c) Finally when comparing HTTP message size with CoAP message size,
> >>> the resulting compression isn't as good as you may expect.
> >>>
> >>> Example:
> >>> HTTP: GET /sensor/temp.xml HTTP/1.0 = 32 B
> >>> CoAP: 24 B with options parsing procedure requiring an added
> >>> implementation complexity
> >>>
> >>>
> >>> Right, that is not how it will work in practice. Working with a real
> >>>
> >>>
> >>> HTTP server that HTTP header will be more complex, and on the CoAP side
> >>> you would chose shorter URLs. The biggest improvement possible here is
> >>> from using binary coded URLs of course. We need to look at a wider range
> >>> of interactions and real HTTP headers as well to check that we are
> >>> efficient enough.
> >>>
> >>>
> >>>
> >>> Addressing all these points potentially leads to major technical
> >>> modifications (especially point a) on the current draft, hence it is
> >>> appropriate in my opinion to discuss these points before making the
> >>> final decision.
> >>>
> >>>
> >>> I am not sure what else you have in mind for a). If we just forget
> >>>
> >>>
> >>> about Subscribe/Notify then you are good to go. But then you are also
> >>> not fulfilling the charter or the industry needs in that respect.
> >>>
> >>>
> >>> Thanks,
> >>> Zach
> >>>
> >>>
> >>>
> >>> Best regards,
> >>>
> >>> Angelo P. Castellani
> >>>
> >>>
> >>> On Mon, May 10, 2010 at 18:51, Carsten Bormann<cabo@tzi.org>wrote:
> >>>
> >>>
> >>> The CORE WG has a milestone to select a WG document for CoAP in
> >>>
> >>>
> >>> April:
> >>>
> >>>
> >>> http://datatracker.ietf.org/wg/core/charter/
> >>> ...
> >>> Apr 2010 Select WG document for basis of the CoAP protocol
> >>>
> >>> Of the various documents that have been contributed,
> >>>
> >>>
> >>> draft-shelby-core-coap has significant discussion, as well as the
> >>> largest number of updates (including a previous version that was still
> >>> called -6lowapp-coap).
> >>>
> >>>
> >>> Today, another updated version of that draft was announced. See
> >>> http://www.ietf.org/mail-archive/web/core/current/msg00138.html
> >>> for the announcement and
> >>> http://tools.ietf.org/html/draft-shelby-core-coap-01
> >>> for the draft itself.
> >>>
> >>> However, as the authors say, there are still significant TODOs.
> >>>
> >>> Are we in a state yet where we can say whether this is the right
> >>>
> >>>
> >>> direction for the WG to take?
> >>>
> >>>
> >>> If yes, is it the right direction? Should we adopt it as a WG
> >>>
> >>>
> >>> document?
> >>>
> >>>
> >>> If you don't think we can say yet, is there a set of technical
> >>>
> >>>
> >>> decisions you would like the authors to take with priority?
> >>>
> >>>
> >>> Note that once a document has become a WG document, the authors act
> >>>
> >>>
> >>> as editors for the working group, making (and usually fleshing out the
> >>> details of) any change that the WG decides it needs.
> >>>
> >>>
> >>> If you think we can still improve the draft, this is not an obstacle
> >>>
> >>>
> >>> to making it a WG document.
> >>>
> >>>
> >>> But of course we shouldn't do that if we intend to reverse its
> >>>
> >>>
> >>> fundamental technical direction.
> >>>
> >>>
> >>> In order to stay roughly in sync with our milestones, we should
> >>>
> >>>
> >>> reach at a decision on how to go forward this week.
> >>>
> >>>
> >>> Gruesse, Carsten
> >>>
> >>> _______________________________________________
> >>> core mailing list
> >>> core@ietf.org
> >>> https://www.ietf.org/mailman/listinfo/core
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> core mailing list
> >>> core@ietf.org
> >>> https://www.ietf.org/mailman/listinfo/core
> >>>
> >>>
> >>> --
> >>> Zach Shelby, Chief Nerd, Sensinode Ltd.
> >>> http://zachshelby.org - My blog "On the Internet of Things"
> >>> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
> >>> Mobile: +358 40 7796297
> >>>
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> core mailing list
> >>> core@ietf.org
> >>> https://www.ietf.org/mailman/listinfo/core
> >>>
> >>> --------------------------------
> >>> Onzo is a limited company number 06097997 registered in England&  Wales.
> >>>        
> > The
> >    
> >>> registered office is 6 Great Newport Street, London, WC2H 7JB, United
> >>>        
> >> Kingdom.
> >>      
> >>> This email message may contain confidential and/or privileged
> >>>        
> > information,
> >    
> >> and
> >>      
> >>> is intended solely for the addressee(s). If you have received this email
> >>>        
> > in
> >    
> >>> error, please notify Onzo immediately. Unauthorised copying, disclosure
> >>>        
> > or
> >    
> >>> distribution of the material in this email is forbidden.
> >>> --------------------------------
> >>>
> >>> _______________________________________________
> >>> core mailing list
> >>> core@ietf.org
> >>> https://www.ietf.org/mailman/listinfo/core
> >>>
> >>> ______________________________________________________________________
> >>> This email has been scanned by the MessageLabs Email Security System.
> >>> ______________________________________________________________________
> >>>
> >>> _______________________________________________
> >>> core mailing list
> >>> core@ietf.org
> >>> https://www.ietf.org/mailman/listinfo/core
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> core mailing list
> >>> core@ietf.org
> >>> https://www.ietf.org/mailman/listinfo/core
> >>>
> >>> --------------------------------
> >>> Onzo is a limited company number 06097997 registered in England&  Wales.
> >>>        
> > The
> >    
> >>> registered office is 6 Great Newport Street, London, WC2H 7JB, United
> >>>        
> >> Kingdom.
> >>      
> >>> This email message may contain confidential and/or privileged
> >>>        
> > information,
> >    
> >> and
> >>      
> >>> is intended solely for the addressee(s). If you have received this email
> >>>        
> > in
> >    
> >>> error, please notify Onzo immediately. Unauthorised copying, disclosure
> >>>        
> > or
> >    
> >>> distribution of the material in this email is forbidden.
> >>> --------------------------------
> >>>
> >>>
> >>>
> >>>
> >>> _______________________________________________
> >>> core mailing list
> >>> core@ietf.org
> >>> https://www.ietf.org/mailman/listinfo/core
> >>> _______________________________________________
> >>> core mailing list
> >>> core@ietf.org
> >>> https://www.ietf.org/mailman/listinfo/core
> >>>
> >>>
> >>>
> >>> ______________________________________________________________________
> >>> This email has been scanned by the MessageLabs Email Security System.
> >>>
> >>>        
> >>      
> > ____________________________________________________________________________
> > __
> >    
> >> _______________________________________
> >>      
> >>> core mailing list
> >>> core@ietf.org
> >>> https://www.ietf.org/mailman/listinfo/core
> >>>
> >>> _______________________________________________
> >>> core mailing list
> >>> core@ietf.org
> >>> https://www.ietf.org/mailman/listinfo/core
> >>>        
> >> --
> >> Zach Shelby, Chief Nerd, Sensinode Ltd.
> >> http://zachshelby.org  - My blog "On the Internet of Things"
> >> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
> >> Mobile: +358 40 7796297
> >>
> >> _______________________________________________
> >> core mailing list
> >> core@ietf.org
> >> https://www.ietf.org/mailman/listinfo/core
> >>      
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> >
> >    
> 
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core



From Michael.Stuber@itron.com  Thu Jun  3 08:18:02 2010
Return-Path: <Michael.Stuber@itron.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id B9FA73A69DC for <core@core3.amsl.com>; Thu,  3 Jun 2010 08:18:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.001
X-Spam-Level: 
X-Spam-Status: No, score=0.001 tagged_above=-999 required=5 tests=[BAYES_50=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Bgcb0vjuzwKw for <core@core3.amsl.com>; Thu,  3 Jun 2010 08:18:02 -0700 (PDT)
Received: from mailer-1.itron.com (mailer-1.itron.com [198.182.8.121]) by core3.amsl.com (Postfix) with ESMTP id 066ED3A69D7 for <core@ietf.org>; Thu,  3 Jun 2010 08:18:01 -0700 (PDT)
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Thu, 3 Jun 2010 08:17:48 -0700
Message-ID: <05C6A38D732F1144A8C4016BA4416BFE02E4A8DC@SPO-EXVS-02.itron.com>
In-Reply-To: <DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] Subscribe/Notify for CoAP
Thread-Index: AcsC8RYYStoOEyLySWeTn5q1rkBdSgAPPaIA
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com><001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de><4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com> <DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>
From: "Stuber, Michael" <Michael.Stuber@itron.com>
To: <core@ietf.org>
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 15:18:02 -0000

+1. =20

The joy (and curse) of simple protocols is that you can encapsulate just
about anything in them.  I think Zach's point about the wide variety of
mechanisms for doing sub/notify over HTTP is dead on.  For
interoperability in a constrained world, I would prefer a light-weight
native mechanism.  If a given application space settles on a particular
sub/notify paradigm for HTTP, they can build the translation between the
one they like and CoAp into their gateway.  Apps that run CoAp end to
end will have a clean, consistent, native way of doing sub/notify.

-----Original Message-----
From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
Zach Shelby
Sent: Thursday, June 03, 2010 12:47 AM
To: Richard Kelsey
Cc: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP

So far I have seen at least 10 different ways of doing some kind of
pub/sub/event/notify/feed over HTTP with no clear winner. If we choose
one of those then we will end up fighting a war here about why we didn't
choose someone's favorite. If we choose multiple then we are putting way
too much complexity on constrained devices. If we make a new one then we
are adding yet another to the mess. Regardless of what we do, a general
CoAP-HTTP proxy will likely end up having to support multiple HTTP
schemes.

Zach

From mikko.saarnivala@sensinode.com  Thu Jun  3 08:58:13 2010
Return-Path: <mikko.saarnivala@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C98273A6934 for <core@core3.amsl.com>; Thu,  3 Jun 2010 08:58:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.999
X-Spam-Level: 
X-Spam-Status: No, score=-0.999 tagged_above=-999 required=5 tests=[BAYES_50=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id LGbYxa9fuPzH for <core@core3.amsl.com>; Thu,  3 Jun 2010 08:58:13 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id BDADC3A67AB for <core@ietf.org>; Thu,  3 Jun 2010 08:58:12 -0700 (PDT)
Received: from [127.0.0.1] (213-216-235-159-Tuira-TR1.suomi.net [213.216.235.159]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o53FvrXY000814 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <core@ietf.org>; Thu, 3 Jun 2010 18:57:54 +0300
Message-ID: <4C07D108.3040509@sensinode.com>
Date: Thu, 03 Jun 2010 18:58:00 +0300
From: Mikko Saarnivala <mikko.saarnivala@sensinode.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100317 Lightning/1.0b1 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com><001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de><4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com> <05C6A38D732F1144A8C4016BA4416BFE02E4A8DC@SPO-EXVS-02.itron.com>
In-Reply-To: <05C6A38D732F1144A8C4016BA4416BFE02E4A8DC@SPO-EXVS-02.itron.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Mailman-Approved-At: Thu, 03 Jun 2010 09:20:06 -0700
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 15:58:13 -0000

On 3.6.2010 18:17, Stuber, Michael wrote:
> +1.
>
> The joy (and curse) of simple protocols is that you can encapsulate just
> about anything in them.  I think Zach's point about the wide variety of
> mechanisms for doing sub/notify over HTTP is dead on.  For
> interoperability in a constrained world, I would prefer a light-weight
> native mechanism.  If a given application space settles on a particular
> sub/notify paradigm for HTTP, they can build the translation between the
> one they like and CoAp into their gateway.  Apps that run CoAp end to
> end will have a clean, consistent, native way of doing sub/notify.


+1 - I completely agree


-- 
Mikko Saarnivala


From stpeter@stpeter.im  Thu Jun  3 09:37:36 2010
Return-Path: <stpeter@stpeter.im>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id CAD2B3A69C5 for <core@core3.amsl.com>; Thu,  3 Jun 2010 09:37:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.822
X-Spam-Level: 
X-Spam-Status: No, score=-0.822 tagged_above=-999 required=5 tests=[AWL=-0.637, BAYES_40=-0.185]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jRvz1o9FOugY for <core@core3.amsl.com>; Thu,  3 Jun 2010 09:37:35 -0700 (PDT)
Received: from stpeter.im (stpeter.im [207.210.219.233]) by core3.amsl.com (Postfix) with ESMTP id 8FFE93A69C0 for <core@ietf.org>; Thu,  3 Jun 2010 09:37:35 -0700 (PDT)
Received: from dhcp-64-101-72-121.cisco.com (dhcp-64-101-72-121.cisco.com [64.101.72.121]) (Authenticated sender: stpeter) by stpeter.im (Postfix) with ESMTPSA id 5C06D40E14 for <core@ietf.org>; Thu,  3 Jun 2010 10:37:22 -0600 (MDT)
Message-ID: <4C07DA41.8030202@stpeter.im>
Date: Thu, 03 Jun 2010 10:37:21 -0600
From: Peter Saint-Andre <stpeter@stpeter.im>
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com><001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de><4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>	<05C6A38D732F1144A8C4016BA4416BFE02E4A8DC@SPO-EXVS-02.itron.com> <4C07D108.3040509@sensinode.com>
In-Reply-To: <4C07D108.3040509@sensinode.com>
X-Enigmail-Version: 1.0.1
OpenPGP: url=http://www.saint-andre.com/me/stpeter.asc
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms040602020500070403030200"
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 16:37:36 -0000

This is a cryptographically signed message in MIME format.

--------------ms040602020500070403030200
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On 6/3/10 9:58 AM, Mikko Saarnivala wrote:
> On 3.6.2010 18:17, Stuber, Michael wrote:
>> +1.
>>
>> The joy (and curse) of simple protocols is that you can encapsulate ju=
st
>> about anything in them.  I think Zach's point about the wide variety o=
f
>> mechanisms for doing sub/notify over HTTP is dead on.  For
>> interoperability in a constrained world, I would prefer a light-weight=

>> native mechanism.  If a given application space settles on a particula=
r
>> sub/notify paradigm for HTTP, they can build the translation between t=
he
>> one they like and CoAp into their gateway.  Apps that run CoAp end to
>> end will have a clean, consistent, native way of doing sub/notify.
>=20
> +1 - I completely agree

Does this imply that this group will define a new HTTP method for
sub/notify or a CoAp-specific method? If the latter, will this group use
HTTP methods for everything else?

Just curious to see where we stand on HTTP-native vs. CoAp-specific. I
freely admit that I might have missed the relevant discussion this list.

Peter

--=20
Peter Saint-Andre
https://stpeter.im/




--------------ms040602020500070403030200
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIWnDCC
B1cwggY/oAMCAQICAVUwDQYJKoZIhvcNAQEFBQAwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQK
Ew1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBT
aWduaW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAzIFByaW1hcnkgSW50ZXJtZWRpYXRl
IENsaWVudCBDQTAeFw0wOTA3MDYwMDAwMDFaFw0xMDA3MDYyMzU5NTlaMIHCMQswCQYDVQQG
EwJVUzERMA8GA1UECBMIQ29sb3JhZG8xDzANBgNVBAcTBkRlbnZlcjEiMCAGA1UEChMZWE1Q
UCBTdGFuZGFyZHMgRm91bmRhdGlvbjEsMCoGA1UECxMjU3RhcnRDb20gVHJ1c3RlZCBDZXJ0
aWZpY2F0ZSBNZW1iZXIxGjAYBgNVBAMTEVBldGVyIFNhaW50LUFuZHJlMSEwHwYJKoZIhvcN
AQkBFhJzdHBldGVyQHN0cGV0ZXIuaW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQCas7Mrnh02GakN8sft+HJpU4MwBxEgrGDZ2ZzUxDDt2sEhM+9Q74h955MtgMhK3TeBf6Hs
hDh/8Z9G//k2qNA0M2S5rejTqrmW0Jabca/L7BUZ0GhnU2N/2zeciFUmuZ4A2l1T5IMX2ZVP
XnNIaefBtbImJAbDz3T0vxkzTtcqgW3wL83PMDiqiuM+e1k+VPvOW4f5ZSGkPIhYCDpWqNE5
wZvjrLNMc8jZOPs9DrsYuIVwU72Vhy1tkEh+w6YpYHrdEUAe+eKe6TuxqZ60e9z3O36uiV//
Ms274iD6PbA/IGazJgaAdg6tvPehwTYGJAGmv3PsJKkLGjgoh+RrrM1LAgMBAAGjggOKMIID
hjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
AwQwHQYDVR0OBBYEFOyws3XWgIY9FP1POVqjdZP9Lu38MB0GA1UdEQQWMBSBEnN0cGV0ZXJA
c3RwZXRlci5pbTCBqAYDVR0jBIGgMIGdgBR7iZySlyShhEcCy3T8LvSs3DLl86GBgaR/MH0x
CzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUg
RGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQDEyBTdGFydENvbSBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eYIBDzCCAUcGA1UdIASCAT4wggE6MIIBNgYLKwYBBAGBtTcBAgAw
ggElMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQG
CCsGAQUFBwIBFihodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMIG8
BggrBgEFBQcCAjCBrzAUFg1TdGFydENvbSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0
eSwgcmVhZCB0aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENv
bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93
d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwYwYDVR0fBFwwWjAroCmgJ4YlaHR0cDovL3d3
dy5zdGFydHNzbC5jb20vY3J0dTMtY3JsLmNybDAroCmgJ4YlaHR0cDovL2NybC5zdGFydHNz
bC5jb20vY3J0dTMtY3JsLmNybDCBjgYIKwYBBQUHAQEEgYEwfzA5BggrBgEFBQcwAYYtaHR0
cDovL29jc3Auc3RhcnRzc2wuY29tL3N1Yi9jbGFzczMvY2xpZW50L2NhMEIGCCsGAQUFBzAC
hjZodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9jZXJ0cy9zdWIuY2xhc3MzLmNsaWVudC5jYS5j
cnQwIwYDVR0SBBwwGoYYaHR0cDovL3d3dy5zdGFydHNzbC5jb20vMA0GCSqGSIb3DQEBBQUA
A4IBAQBgv4xFXZqDKSOtnPOVbqOh1brj7oxRaVYk7N0MJG7x9Y/wkO3iwRwizVLcC1bA+D/R
gyFilXx6IQWE63Ge2tu+Y4w5QoHYwuUFQuBZuxvZpOa3ykdgPlBQaBM8m+Ien0skwNggaizA
X9Pc/sMLpP3jkO1iSF4agy4r5Ed+4G10mP5X0zO3gQwq9Uj4F9tX+58kU+fM1P8Sh+BYR4r/
kSbKE3tWcMaKblWPGwX0nYD26Je7Qb+uX/J5lCgozBrHXQWq8N98iklASf2pv+32Oi1dEjmM
UgAm/J2+YmxaI02+c+H6QH8+F3RUjCiRg9XqUNjcrNrnTFnm/iMMZADktsXPMIIHVzCCBj+g
AwIBAgIBVTANBgkqhkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0
Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDMgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50
IENBMB4XDTA5MDcwNjAwMDAwMVoXDTEwMDcwNjIzNTk1OVowgcIxCzAJBgNVBAYTAlVTMREw
DwYDVQQIEwhDb2xvcmFkbzEPMA0GA1UEBxMGRGVudmVyMSIwIAYDVQQKExlYTVBQIFN0YW5k
YXJkcyBGb3VuZGF0aW9uMSwwKgYDVQQLEyNTdGFydENvbSBUcnVzdGVkIENlcnRpZmljYXRl
IE1lbWJlcjEaMBgGA1UEAxMRUGV0ZXIgU2FpbnQtQW5kcmUxITAfBgkqhkiG9w0BCQEWEnN0
cGV0ZXJAc3RwZXRlci5pbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJqzsyue
HTYZqQ3yx+34cmlTgzAHESCsYNnZnNTEMO3awSEz71DviH3nky2AyErdN4F/oeyEOH/xn0b/
+Tao0DQzZLmt6NOquZbQlptxr8vsFRnQaGdTY3/bN5yIVSa5ngDaXVPkgxfZlU9ec0hp58G1
siYkBsPPdPS/GTNO1yqBbfAvzc8wOKqK4z57WT5U+85bh/llIaQ8iFgIOlao0TnBm+Oss0xz
yNk4+z0Ouxi4hXBTvZWHLW2QSH7Dpilget0RQB754p7pO7GpnrR73Pc7fq6JX/8yzbviIPo9
sD8gZrMmBoB2Dq2896HBNgYkAaa/c+wkqQsaOCiH5GuszUsCAwEAAaOCA4owggOGMAkGA1Ud
EwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNV
HQ4EFgQU7LCzddaAhj0U/U85WqN1k/0u7fwwHQYDVR0RBBYwFIESc3RwZXRlckBzdHBldGVy
LmltMIGoBgNVHSMEgaAwgZ2AFHuJnJKXJKGERwLLdPwu9KzcMuXzoYGBpH8wfTELMAkGA1UE
BhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFs
IENlcnRpZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24g
QXV0aG9yaXR5ggEPMIIBRwYDVR0gBIIBPjCCATowggE2BgsrBgEEAYG1NwECADCCASUwLgYI
KwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUH
AgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgbwGCCsGAQUF
BwICMIGvMBQWDVN0YXJ0Q29tIEx0ZC4wAwIBARqBlkxpbWl0ZWQgTGlhYmlsaXR5LCByZWFk
IHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENlcnRp
ZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5zdGFy
dHNzbC5jb20vcG9saWN5LnBkZjBjBgNVHR8EXDBaMCugKaAnhiVodHRwOi8vd3d3LnN0YXJ0
c3NsLmNvbS9jcnR1My1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9j
cnR1My1jcmwuY3JsMIGOBggrBgEFBQcBAQSBgTB/MDkGCCsGAQUFBzABhi1odHRwOi8vb2Nz
cC5zdGFydHNzbC5jb20vc3ViL2NsYXNzMy9jbGllbnQvY2EwQgYIKwYBBQUHMAKGNmh0dHA6
Ly93d3cuc3RhcnRzc2wuY29tL2NlcnRzL3N1Yi5jbGFzczMuY2xpZW50LmNhLmNydDAjBgNV
HRIEHDAahhhodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJKoZIhvcNAQEFBQADggEBAGC/
jEVdmoMpI62c85Vuo6HVuuPujFFpViTs3QwkbvH1j/CQ7eLBHCLNUtwLVsD4P9GDIWKVfHoh
BYTrcZ7a275jjDlCgdjC5QVC4Fm7G9mk5rfKR2A+UFBoEzyb4h6fSyTA2CBqLMBf09z+wwuk
/eOQ7WJIXhqDLivkR37gbXSY/lfTM7eBDCr1SPgX21f7nyRT58zU/xKH4FhHiv+RJsoTe1Zw
xopuVY8bBfSdgPbol7tBv65f8nmUKCjMGsddBarw33yKSUBJ/am/7fY6LV0SOYxSACb8nb5i
bFojTb5z4fpAfz4XdFSMKJGD1epQ2Nys2udMWeb+IwxkAOS2xc8wggfiMIIFyqADAgECAgEP
MA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQu
MSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQD
EyBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzEwMjQyMTAzMzJaFw0x
MjEwMjIyMTAzMzJaMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEr
MCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMv
U3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5o0luEj4gypQIp71Xi2TlXyLYrj9WkRy+d9BO
0FHPYnAsC99/jx/ibNRwIfAoFhZd+LDscdRSckvwuFSz0bKg3z+9o7cwlVAC9AwMWe8IM0Lx
c+8etYxsX4WIamG9fjzzi5GAW5ESKzzIN3SxHSplyGCWFwx/pgf1f4y6O9/ym+4f6zaDYP6B
x0r+SaJcr6eSGNm7X3EwX1v7XpRBY+aw019o7k72d0IX910F+XGt0OwNdM61Ff3FiTiexeUZ
bWxCGm6GZl+SQVG9xYVIgHQaLXoQF+g2wzrmKCbVcZhqH+hrlRnD6PfCuEyX/BR6PlAPRDlQ
6f1u3wqik+LF5P15AgMBAAGjggNbMIIDVzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBpjAd
BgNVHQ4EFgQUe4mckpckoYRHAst0/C70rNwy5fMwgagGA1UdIwSBoDCBnYAUTgvvGqRAW6UX
aYcwyjRoQ9BBrvKhgYGkfzB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UE
AxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHmCAQEwCQYDVR0SBAIwADA9Bggr
BgEFBQcBAQQxMC8wLQYIKwYBBQUHMAKGIWh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2Nh
LmNydDBgBgNVHR8EWTBXMCygKqAohiZodHRwOi8vY2VydC5zdGFydGNvbS5vcmcvc2ZzY2Et
Y3JsLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMIIBXQYD
VR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBBDCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9j
ZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5z
dGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3RhcnQg
Q29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5LCBy
ZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQu
c3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMFAGCWCGSAGG+EIB
DQRDFkFTdGFydENvbSBDbGFzcyAzIFByaW1hcnkgSW50ZXJtZWRpYXRlIEZyZWUgU1NMIEVt
YWlsIENlcnRpZmljYXRlczANBgkqhkiG9w0BAQUFAAOCAgEAUpcEDdsKFRCxFBxcSm+8oMTT
fpS7fbZkxWHx5fHDjvAgaBQ+oY0tk4xtbD6VxeHYjxI63+hj8jICnqeVXPe34Bu+XzekIn2T
lrnPCQobKdQF2p52QgUvIxSURed0jcBaCBV22DSKaUqDOzD/Tx6VQy78zpblXjRH7OALE/+H
jzJVmspdnBUUtQOLYgPo924xkxR25VDdgtEE5vAXa/g2oCeZhy0ZEO4NbgIayAYCJcJRDz0h
dD2Ahec65Kw6LB3N7VXEjiRR5/WoKwH/QteRzPJbFDc1somrApjm2cyg+5nbm1RHeFIz+GxX
luRrPztvhNcby0PtAjqwY1txi4sW0R6ZJPuZ2DZ1/dzckoFhyZgFyOX3SEkNXVLldjTzneFJ
FnVSzDbc720vq184jR7pYoI9+f5QJ96a0iLxEAG8SJ5auBwXI/w2FmKmwmdMvJ8/17+B4sMC
IRrXrDQl2xzpVXh/Qcmk5nf+w8HFmqATGy1OUAQbXga7AySAUaYhvvFk50u0bO5DiUGwzrJO
3TrwvaC2Ei4EFaBmIVgG7TfU5TaaY9IcJSCQ7AGUYE3RFSRpsLOoA3DsxP42YERgS/Nxw29+
YqZtPoO2QPbNpI7xnHVCfNBabx3oDIf438nFfv8spw5BQqBSbEF1izJA57eE64CzHnt7lB20
OFD11avYopwxggPKMIIDxgIBATCBkjCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0
Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDMgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50
IENBAgFVMAkGBSsOAwIaBQCgggIMMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
hvcNAQkFMQ8XDTEwMDYwMzE2MzcyMVowIwYJKoZIhvcNAQkEMRYEFPpx7AqftAYl40Ouyn4b
KvkPoKigMF8GCSqGSIb3DQEJDzFSMFAwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqG
SIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBowYJ
KwYBBAGCNxAEMYGVMIGSMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UE
AxMvU3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAVUw
gaUGCyqGSIb3DQEJEAILMYGVoIGSMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRD
b20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4
MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQg
Q0ECAVUwDQYJKoZIhvcNAQEBBQAEggEAE/vMhE2adp8T28SkF8bkj+gPBayPlf/yaoOJ8MhG
z9WoQTs1YA+RY3ooCV6E++ROjxxFf1ZpYtTyKEOZDkFTS4l2cPPIlilwlYKK88WkgZeIt7US
H9WZ5QUi1WM0TMnzPHW3yxs1/i8LSAEc9CgSD3kT2fvykSA3D6VDrqBz4wQiwDq4oMusUsfk
VavyyEKuN3cQ/MFejhVVo15bxgQAtd/1q9N3knMGdK+GIXabzU9CIIFi3i9QtCoNFglEgA7P
KvxlRrThcTh3I+Y8c5yk2/l5g6GA3IK7J3MWxk1Bc74owfbXT/2l9QvX0dvxar8ULpP+1f0e
UG7wqLnnO+fmDQAAAAAAAA==
--------------ms040602020500070403030200--

From Michael.Stuber@itron.com  Thu Jun  3 09:41:47 2010
Return-Path: <Michael.Stuber@itron.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A534D3A6843 for <core@core3.amsl.com>; Thu,  3 Jun 2010 09:41:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.092
X-Spam-Level: 
X-Spam-Status: No, score=-0.092 tagged_above=-999 required=5 tests=[AWL=0.093,  BAYES_40=-0.185]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 42D59qy-FcM3 for <core@core3.amsl.com>; Thu,  3 Jun 2010 09:41:46 -0700 (PDT)
Received: from mailer-1.itron.com (mailer-1.itron.com [198.182.8.121]) by core3.amsl.com (Postfix) with ESMTP id 92F713A6826 for <core@ietf.org>; Thu,  3 Jun 2010 09:41:46 -0700 (PDT)
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Date: Thu, 3 Jun 2010 09:41:32 -0700
Message-ID: <05C6A38D732F1144A8C4016BA4416BFE02E4A976@SPO-EXVS-02.itron.com>
In-Reply-To: <4C07DA41.8030202@stpeter.im>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] Subscribe/Notify for CoAP
Thread-Index: AcsDOw5dFGO2HpTKSbWKaNfAXg1daAAAFT/w
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com><001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de><4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>	<05C6A38D732F1144A8C4016BA4416BFE02E4A8DC@SPO-EXVS-02.itron.com><4C07D108.3040509@sensinode.com> <4C07DA41.8030202@stpeter.im>
From: "Stuber, Michael" <Michael.Stuber@itron.com>
To: <core@ietf.org>
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 16:41:47 -0000

Q29BcCBzcGVjaWZpYy4gIE15IHBvaW50IGlzIHRoYXQgYSBzaW5nbGUgQ29BcCBzcGVjaWZpYyBt
ZXRob2QgY291bGQgYmUgbWFwcGVkIHRvIHdpZGUgdmFyaWV0eSBvZiBIVFRQIG1lY2hhbmlzbXMg
aWYgZGVzaXJlZC4gIEkgZG9uJ3QgdGhpbmsgdGhlcmUgaXMgYW55IG5lZWQgZm9yIHlldCBhbm90
aGVyIEhUVFAgc3ViL25vdGlmeSBtZWNoYW5pc20sIGFuZCBpdCBjZXJ0YWlubHkgaXNuJ3QgaW4g
b3VyIGNoYXJ0ZXIgdG8gZGVmaW5lIG9uZS4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N
CkZyb206IGNvcmUtYm91bmNlc0BpZXRmLm9yZyBbbWFpbHRvOmNvcmUtYm91bmNlc0BpZXRmLm9y
Z10gT24gQmVoYWxmIE9mIFBldGVyIFNhaW50LUFuZHJlDQpTZW50OiBUaHVyc2RheSwgSnVuZSAw
MywgMjAxMCA5OjM3IEFNDQpUbzogY29yZUBpZXRmLm9yZw0KU3ViamVjdDogUmU6IFtjb3JlXSBT
dWJzY3JpYmUvTm90aWZ5IGZvciBDb0FQDQoNCk9uIDYvMy8xMCA5OjU4IEFNLCBNaWtrbyBTYWFy
bml2YWxhIHdyb3RlOg0KPiBPbiAzLjYuMjAxMCAxODoxNywgU3R1YmVyLCBNaWNoYWVsIHdyb3Rl
Og0KPj4gKzEuDQo+Pg0KPj4gVGhlIGpveSAoYW5kIGN1cnNlKSBvZiBzaW1wbGUgcHJvdG9jb2xz
IGlzIHRoYXQgeW91IGNhbiBlbmNhcHN1bGF0ZSANCj4+IGp1c3QgYWJvdXQgYW55dGhpbmcgaW4g
dGhlbS4gIEkgdGhpbmsgWmFjaCdzIHBvaW50IGFib3V0IHRoZSB3aWRlIA0KPj4gdmFyaWV0eSBv
ZiBtZWNoYW5pc21zIGZvciBkb2luZyBzdWIvbm90aWZ5IG92ZXIgSFRUUCBpcyBkZWFkIG9uLiAg
Rm9yIA0KPj4gaW50ZXJvcGVyYWJpbGl0eSBpbiBhIGNvbnN0cmFpbmVkIHdvcmxkLCBJIHdvdWxk
IHByZWZlciBhIA0KPj4gbGlnaHQtd2VpZ2h0IG5hdGl2ZSBtZWNoYW5pc20uICBJZiBhIGdpdmVu
IGFwcGxpY2F0aW9uIHNwYWNlIHNldHRsZXMgDQo+PiBvbiBhIHBhcnRpY3VsYXIgc3ViL25vdGlm
eSBwYXJhZGlnbSBmb3IgSFRUUCwgdGhleSBjYW4gYnVpbGQgdGhlIA0KPj4gdHJhbnNsYXRpb24g
YmV0d2VlbiB0aGUgb25lIHRoZXkgbGlrZSBhbmQgQ29BcCBpbnRvIHRoZWlyIGdhdGV3YXkuICAN
Cj4+IEFwcHMgdGhhdCBydW4gQ29BcCBlbmQgdG8gZW5kIHdpbGwgaGF2ZSBhIGNsZWFuLCBjb25z
aXN0ZW50LCBuYXRpdmUgd2F5IG9mIGRvaW5nIHN1Yi9ub3RpZnkuDQo+IA0KPiArMSAtIEkgY29t
cGxldGVseSBhZ3JlZQ0KDQpEb2VzIHRoaXMgaW1wbHkgdGhhdCB0aGlzIGdyb3VwIHdpbGwgZGVm
aW5lIGEgbmV3IEhUVFAgbWV0aG9kIGZvciBzdWIvbm90aWZ5IG9yIGEgQ29BcC1zcGVjaWZpYyBt
ZXRob2Q/IElmIHRoZSBsYXR0ZXIsIHdpbGwgdGhpcyBncm91cCB1c2UgSFRUUCBtZXRob2RzIGZv
ciBldmVyeXRoaW5nIGVsc2U/DQoNCkp1c3QgY3VyaW91cyB0byBzZWUgd2hlcmUgd2Ugc3RhbmQg
b24gSFRUUC1uYXRpdmUgdnMuIENvQXAtc3BlY2lmaWMuIEkgZnJlZWx5IGFkbWl0IHRoYXQgSSBt
aWdodCBoYXZlIG1pc3NlZCB0aGUgcmVsZXZhbnQgZGlzY3Vzc2lvbiB0aGlzIGxpc3QuDQoNClBl
dGVyDQoNCi0tDQpQZXRlciBTYWludC1BbmRyZQ0KaHR0cHM6Ly9zdHBldGVyLmltLw0KDQoNCg0K

From d.sturek@att.net  Thu Jun  3 09:42:03 2010
Return-Path: <d.sturek@att.net>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id D04B43A6874 for <core@core3.amsl.com>; Thu,  3 Jun 2010 09:42:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.451
X-Spam-Level: *
X-Spam-Status: No, score=1.451 tagged_above=-999 required=5 tests=[BAYES_50=0.001, MSGID_MULTIPLE_AT=1.449, UNPARSEABLE_RELAY=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id h-6Oo4xu2wa3 for <core@core3.amsl.com>; Thu,  3 Jun 2010 09:42:02 -0700 (PDT)
Received: from smtp101.sbc.mail.re3.yahoo.com (smtp101.sbc.mail.re3.yahoo.com [66.196.96.84]) by core3.amsl.com (Postfix) with SMTP id B9CC23A6826 for <core@ietf.org>; Thu,  3 Jun 2010 09:42:02 -0700 (PDT)
Received: (qmail 23066 invoked from network); 3 Jun 2010 16:41:47 -0000
Received: from Studio (d.sturek@129.6.252.203 with login) by smtp101.sbc.mail.re3.yahoo.com with SMTP; 03 Jun 2010 09:41:47 -0700 PDT
X-Yahoo-SMTP: fvjol_aswBAraSJvMLe2r1XTzhBhbFxY8q8c3jo-
X-YMail-OSG: 4I5d7JsVM1kwnu8yge5Y98XeQfjNCpwwVZsGITKb84qB.pDpHCOQRxqxhj07w0ax4guD9b4ss7S3AlcyW6Sq9ILmpTyUrkPKydzYjRy4xyKfahUC0hZuLTnBlepDQEJAxCNiVvUnk5gSsIWUgrRHVEozi8ACCm_0g2CooLtvSWMrCoiCJE_2t2UIpCHZwK5CZ3PS2WdRoee_FRq3MbgIbPfF_c2WhHxSJUgfOdiXeEfyz_NwdG4HKXnWAoalytbWt3S71dEAe2Tr8xX.nc5gA6ArfdwJ.d6Zlj83496rja4kPiCZg3WNqm2waNYY7xTlkgStVk.M4qBodDVOF.CoB_d68T40lcmM_zXlh1cfaVNHPJrmOSnkUnw4JNtO_agvTjthuJGt.fmgivZ2nrA-
X-Yahoo-Newman-Property: ymail-3
From: "Don Sturek" <d.sturek@att.net>
To: "'Peter Saint-Andre'" <stpeter@stpeter.im>, <core@ietf.org>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com><001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de><4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>	<05C6A38D732F1144A8C4016BA4416BFE02E4A8DC@SPO-EXVS-02.itron.com>	<4C07D108.3040509@sensinode.com> <4C07DA41.8030202@stpeter.im>
In-Reply-To: <4C07DA41.8030202@stpeter.im>
Date: Thu, 3 Jun 2010 09:41:44 -0700
Message-ID: <011801cb033b$a74d35c0$f5e7a140$@sturek@att.net>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Office Outlook 12.0
Content-Language: en-us
Thread-Index: AcsDOw05a9tecBU3S+yI3Np+37DuQQAAC8vA
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: d.sturek@att.net
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 16:42:03 -0000

Hi Peter,

I assume the following from this discussion:
1)  We need a fixed mapping between CoAP and HTTP.  The relevant HTTP =
actions are GET, PUT, POST and DELETE
2)  We could re-use the same actions in CoAP or we could use something =
like Subscribe/Notify in CoAP then provide a mapping to HTTP GET, PUT, =
POST, DELETE.

Is this captured correctly? =20

Don


-----Original Message-----
From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of =
Peter Saint-Andre
Sent: Thursday, June 03, 2010 9:37 AM
To: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP

On 6/3/10 9:58 AM, Mikko Saarnivala wrote:
> On 3.6.2010 18:17, Stuber, Michael wrote:
>> +1.
>>
>> The joy (and curse) of simple protocols is that you can encapsulate=20
>> just about anything in them.  I think Zach's point about the wide=20
>> variety of mechanisms for doing sub/notify over HTTP is dead on.  For =

>> interoperability in a constrained world, I would prefer a=20
>> light-weight native mechanism.  If a given application space settles=20
>> on a particular sub/notify paradigm for HTTP, they can build the=20
>> translation between the one they like and CoAp into their gateway. =20
>> Apps that run CoAp end to end will have a clean, consistent, native =
way of doing sub/notify.
>=20
> +1 - I completely agree

Does this imply that this group will define a new HTTP method for =
sub/notify or a CoAp-specific method? If the latter, will this group use =
HTTP methods for everything else?

Just curious to see where we stand on HTTP-native vs. CoAp-specific. I =
freely admit that I might have missed the relevant discussion this list.

Peter

--
Peter Saint-Andre
https://stpeter.im/





From stpeter@stpeter.im  Thu Jun  3 09:45:03 2010
Return-Path: <stpeter@stpeter.im>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 618C63A6934 for <core@core3.amsl.com>; Thu,  3 Jun 2010 09:45:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.965
X-Spam-Level: 
X-Spam-Status: No, score=-1.965 tagged_above=-999 required=5 tests=[AWL=0.634,  BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5w6oeUEshvMG for <core@core3.amsl.com>; Thu,  3 Jun 2010 09:45:02 -0700 (PDT)
Received: from stpeter.im (stpeter.im [207.210.219.233]) by core3.amsl.com (Postfix) with ESMTP id 248AC3A6892 for <core@ietf.org>; Thu,  3 Jun 2010 09:45:02 -0700 (PDT)
Received: from dhcp-64-101-72-121.cisco.com (dhcp-64-101-72-121.cisco.com [64.101.72.121]) (Authenticated sender: stpeter) by stpeter.im (Postfix) with ESMTPSA id EB8EC40E14 for <core@ietf.org>; Thu,  3 Jun 2010 10:44:48 -0600 (MDT)
Message-ID: <4C07DC00.1030002@stpeter.im>
Date: Thu, 03 Jun 2010 10:44:48 -0600
From: Peter Saint-Andre <stpeter@stpeter.im>
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com><001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de><4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>	<05C6A38D732F1144A8C4016BA4416BFE02E4A8DC@SPO-EXVS-02.itron.com><4C07D108.3040509@sensinode.com>	<4C07DA41.8030202@stpeter.im> <05C6A38D732F1144A8C4016BA4416BFE02E4A976@SPO-EXVS-02.itron.com>
In-Reply-To: <05C6A38D732F1144A8C4016BA4416BFE02E4A976@SPO-EXVS-02.itron.com>
X-Enigmail-Version: 1.0.1
OpenPGP: url=http://www.saint-andre.com/me/stpeter.asc
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms060508010304000608020602"
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 16:45:03 -0000

This is a cryptographically signed message in MIME format.

--------------ms060508010304000608020602
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On 6/3/10 10:41 AM, Stuber, Michael wrote:
> CoAp specific.  My point is that a single CoAp specific method could
> be mapped to wide variety of HTTP mechanisms if desired.=20

So, to clarify, will we use:

1. CoAp-specific methods for everything.

Or:

2. CoAp-specific methods only for sub/notify, and HTTP for everything els=
e.

> I don't
> think there is any need for yet another HTTP sub/notify mechanism,
> and it certainly isn't in our charter to define one.

I fully agree with that sentiment.

/psa


--------------ms060508010304000608020602
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIWnDCC
B1cwggY/oAMCAQICAVUwDQYJKoZIhvcNAQEFBQAwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQK
Ew1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBT
aWduaW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAzIFByaW1hcnkgSW50ZXJtZWRpYXRl
IENsaWVudCBDQTAeFw0wOTA3MDYwMDAwMDFaFw0xMDA3MDYyMzU5NTlaMIHCMQswCQYDVQQG
EwJVUzERMA8GA1UECBMIQ29sb3JhZG8xDzANBgNVBAcTBkRlbnZlcjEiMCAGA1UEChMZWE1Q
UCBTdGFuZGFyZHMgRm91bmRhdGlvbjEsMCoGA1UECxMjU3RhcnRDb20gVHJ1c3RlZCBDZXJ0
aWZpY2F0ZSBNZW1iZXIxGjAYBgNVBAMTEVBldGVyIFNhaW50LUFuZHJlMSEwHwYJKoZIhvcN
AQkBFhJzdHBldGVyQHN0cGV0ZXIuaW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQCas7Mrnh02GakN8sft+HJpU4MwBxEgrGDZ2ZzUxDDt2sEhM+9Q74h955MtgMhK3TeBf6Hs
hDh/8Z9G//k2qNA0M2S5rejTqrmW0Jabca/L7BUZ0GhnU2N/2zeciFUmuZ4A2l1T5IMX2ZVP
XnNIaefBtbImJAbDz3T0vxkzTtcqgW3wL83PMDiqiuM+e1k+VPvOW4f5ZSGkPIhYCDpWqNE5
wZvjrLNMc8jZOPs9DrsYuIVwU72Vhy1tkEh+w6YpYHrdEUAe+eKe6TuxqZ60e9z3O36uiV//
Ms274iD6PbA/IGazJgaAdg6tvPehwTYGJAGmv3PsJKkLGjgoh+RrrM1LAgMBAAGjggOKMIID
hjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
AwQwHQYDVR0OBBYEFOyws3XWgIY9FP1POVqjdZP9Lu38MB0GA1UdEQQWMBSBEnN0cGV0ZXJA
c3RwZXRlci5pbTCBqAYDVR0jBIGgMIGdgBR7iZySlyShhEcCy3T8LvSs3DLl86GBgaR/MH0x
CzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUg
RGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQDEyBTdGFydENvbSBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eYIBDzCCAUcGA1UdIASCAT4wggE6MIIBNgYLKwYBBAGBtTcBAgAw
ggElMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQG
CCsGAQUFBwIBFihodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMIG8
BggrBgEFBQcCAjCBrzAUFg1TdGFydENvbSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0
eSwgcmVhZCB0aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENv
bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93
d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwYwYDVR0fBFwwWjAroCmgJ4YlaHR0cDovL3d3
dy5zdGFydHNzbC5jb20vY3J0dTMtY3JsLmNybDAroCmgJ4YlaHR0cDovL2NybC5zdGFydHNz
bC5jb20vY3J0dTMtY3JsLmNybDCBjgYIKwYBBQUHAQEEgYEwfzA5BggrBgEFBQcwAYYtaHR0
cDovL29jc3Auc3RhcnRzc2wuY29tL3N1Yi9jbGFzczMvY2xpZW50L2NhMEIGCCsGAQUFBzAC
hjZodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9jZXJ0cy9zdWIuY2xhc3MzLmNsaWVudC5jYS5j
cnQwIwYDVR0SBBwwGoYYaHR0cDovL3d3dy5zdGFydHNzbC5jb20vMA0GCSqGSIb3DQEBBQUA
A4IBAQBgv4xFXZqDKSOtnPOVbqOh1brj7oxRaVYk7N0MJG7x9Y/wkO3iwRwizVLcC1bA+D/R
gyFilXx6IQWE63Ge2tu+Y4w5QoHYwuUFQuBZuxvZpOa3ykdgPlBQaBM8m+Ien0skwNggaizA
X9Pc/sMLpP3jkO1iSF4agy4r5Ed+4G10mP5X0zO3gQwq9Uj4F9tX+58kU+fM1P8Sh+BYR4r/
kSbKE3tWcMaKblWPGwX0nYD26Je7Qb+uX/J5lCgozBrHXQWq8N98iklASf2pv+32Oi1dEjmM
UgAm/J2+YmxaI02+c+H6QH8+F3RUjCiRg9XqUNjcrNrnTFnm/iMMZADktsXPMIIHVzCCBj+g
AwIBAgIBVTANBgkqhkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0
Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDMgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50
IENBMB4XDTA5MDcwNjAwMDAwMVoXDTEwMDcwNjIzNTk1OVowgcIxCzAJBgNVBAYTAlVTMREw
DwYDVQQIEwhDb2xvcmFkbzEPMA0GA1UEBxMGRGVudmVyMSIwIAYDVQQKExlYTVBQIFN0YW5k
YXJkcyBGb3VuZGF0aW9uMSwwKgYDVQQLEyNTdGFydENvbSBUcnVzdGVkIENlcnRpZmljYXRl
IE1lbWJlcjEaMBgGA1UEAxMRUGV0ZXIgU2FpbnQtQW5kcmUxITAfBgkqhkiG9w0BCQEWEnN0
cGV0ZXJAc3RwZXRlci5pbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJqzsyue
HTYZqQ3yx+34cmlTgzAHESCsYNnZnNTEMO3awSEz71DviH3nky2AyErdN4F/oeyEOH/xn0b/
+Tao0DQzZLmt6NOquZbQlptxr8vsFRnQaGdTY3/bN5yIVSa5ngDaXVPkgxfZlU9ec0hp58G1
siYkBsPPdPS/GTNO1yqBbfAvzc8wOKqK4z57WT5U+85bh/llIaQ8iFgIOlao0TnBm+Oss0xz
yNk4+z0Ouxi4hXBTvZWHLW2QSH7Dpilget0RQB754p7pO7GpnrR73Pc7fq6JX/8yzbviIPo9
sD8gZrMmBoB2Dq2896HBNgYkAaa/c+wkqQsaOCiH5GuszUsCAwEAAaOCA4owggOGMAkGA1Ud
EwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNV
HQ4EFgQU7LCzddaAhj0U/U85WqN1k/0u7fwwHQYDVR0RBBYwFIESc3RwZXRlckBzdHBldGVy
LmltMIGoBgNVHSMEgaAwgZ2AFHuJnJKXJKGERwLLdPwu9KzcMuXzoYGBpH8wfTELMAkGA1UE
BhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFs
IENlcnRpZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24g
QXV0aG9yaXR5ggEPMIIBRwYDVR0gBIIBPjCCATowggE2BgsrBgEEAYG1NwECADCCASUwLgYI
KwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUH
AgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgbwGCCsGAQUF
BwICMIGvMBQWDVN0YXJ0Q29tIEx0ZC4wAwIBARqBlkxpbWl0ZWQgTGlhYmlsaXR5LCByZWFk
IHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENlcnRp
ZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5zdGFy
dHNzbC5jb20vcG9saWN5LnBkZjBjBgNVHR8EXDBaMCugKaAnhiVodHRwOi8vd3d3LnN0YXJ0
c3NsLmNvbS9jcnR1My1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9j
cnR1My1jcmwuY3JsMIGOBggrBgEFBQcBAQSBgTB/MDkGCCsGAQUFBzABhi1odHRwOi8vb2Nz
cC5zdGFydHNzbC5jb20vc3ViL2NsYXNzMy9jbGllbnQvY2EwQgYIKwYBBQUHMAKGNmh0dHA6
Ly93d3cuc3RhcnRzc2wuY29tL2NlcnRzL3N1Yi5jbGFzczMuY2xpZW50LmNhLmNydDAjBgNV
HRIEHDAahhhodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJKoZIhvcNAQEFBQADggEBAGC/
jEVdmoMpI62c85Vuo6HVuuPujFFpViTs3QwkbvH1j/CQ7eLBHCLNUtwLVsD4P9GDIWKVfHoh
BYTrcZ7a275jjDlCgdjC5QVC4Fm7G9mk5rfKR2A+UFBoEzyb4h6fSyTA2CBqLMBf09z+wwuk
/eOQ7WJIXhqDLivkR37gbXSY/lfTM7eBDCr1SPgX21f7nyRT58zU/xKH4FhHiv+RJsoTe1Zw
xopuVY8bBfSdgPbol7tBv65f8nmUKCjMGsddBarw33yKSUBJ/am/7fY6LV0SOYxSACb8nb5i
bFojTb5z4fpAfz4XdFSMKJGD1epQ2Nys2udMWeb+IwxkAOS2xc8wggfiMIIFyqADAgECAgEP
MA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQu
MSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQD
EyBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzEwMjQyMTAzMzJaFw0x
MjEwMjIyMTAzMzJaMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEr
MCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMv
U3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5o0luEj4gypQIp71Xi2TlXyLYrj9WkRy+d9BO
0FHPYnAsC99/jx/ibNRwIfAoFhZd+LDscdRSckvwuFSz0bKg3z+9o7cwlVAC9AwMWe8IM0Lx
c+8etYxsX4WIamG9fjzzi5GAW5ESKzzIN3SxHSplyGCWFwx/pgf1f4y6O9/ym+4f6zaDYP6B
x0r+SaJcr6eSGNm7X3EwX1v7XpRBY+aw019o7k72d0IX910F+XGt0OwNdM61Ff3FiTiexeUZ
bWxCGm6GZl+SQVG9xYVIgHQaLXoQF+g2wzrmKCbVcZhqH+hrlRnD6PfCuEyX/BR6PlAPRDlQ
6f1u3wqik+LF5P15AgMBAAGjggNbMIIDVzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBpjAd
BgNVHQ4EFgQUe4mckpckoYRHAst0/C70rNwy5fMwgagGA1UdIwSBoDCBnYAUTgvvGqRAW6UX
aYcwyjRoQ9BBrvKhgYGkfzB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UE
AxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHmCAQEwCQYDVR0SBAIwADA9Bggr
BgEFBQcBAQQxMC8wLQYIKwYBBQUHMAKGIWh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2Nh
LmNydDBgBgNVHR8EWTBXMCygKqAohiZodHRwOi8vY2VydC5zdGFydGNvbS5vcmcvc2ZzY2Et
Y3JsLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMIIBXQYD
VR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBBDCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9j
ZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5z
dGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3RhcnQg
Q29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5LCBy
ZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQu
c3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMFAGCWCGSAGG+EIB
DQRDFkFTdGFydENvbSBDbGFzcyAzIFByaW1hcnkgSW50ZXJtZWRpYXRlIEZyZWUgU1NMIEVt
YWlsIENlcnRpZmljYXRlczANBgkqhkiG9w0BAQUFAAOCAgEAUpcEDdsKFRCxFBxcSm+8oMTT
fpS7fbZkxWHx5fHDjvAgaBQ+oY0tk4xtbD6VxeHYjxI63+hj8jICnqeVXPe34Bu+XzekIn2T
lrnPCQobKdQF2p52QgUvIxSURed0jcBaCBV22DSKaUqDOzD/Tx6VQy78zpblXjRH7OALE/+H
jzJVmspdnBUUtQOLYgPo924xkxR25VDdgtEE5vAXa/g2oCeZhy0ZEO4NbgIayAYCJcJRDz0h
dD2Ahec65Kw6LB3N7VXEjiRR5/WoKwH/QteRzPJbFDc1somrApjm2cyg+5nbm1RHeFIz+GxX
luRrPztvhNcby0PtAjqwY1txi4sW0R6ZJPuZ2DZ1/dzckoFhyZgFyOX3SEkNXVLldjTzneFJ
FnVSzDbc720vq184jR7pYoI9+f5QJ96a0iLxEAG8SJ5auBwXI/w2FmKmwmdMvJ8/17+B4sMC
IRrXrDQl2xzpVXh/Qcmk5nf+w8HFmqATGy1OUAQbXga7AySAUaYhvvFk50u0bO5DiUGwzrJO
3TrwvaC2Ei4EFaBmIVgG7TfU5TaaY9IcJSCQ7AGUYE3RFSRpsLOoA3DsxP42YERgS/Nxw29+
YqZtPoO2QPbNpI7xnHVCfNBabx3oDIf438nFfv8spw5BQqBSbEF1izJA57eE64CzHnt7lB20
OFD11avYopwxggPKMIIDxgIBATCBkjCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0
Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDMgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50
IENBAgFVMAkGBSsOAwIaBQCgggIMMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
hvcNAQkFMQ8XDTEwMDYwMzE2NDQ0OFowIwYJKoZIhvcNAQkEMRYEFBm4mW4LFaMUQjwvrp8v
Gr4dlhY5MF8GCSqGSIb3DQEJDzFSMFAwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqG
SIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBowYJ
KwYBBAGCNxAEMYGVMIGSMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UE
AxMvU3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAVUw
gaUGCyqGSIb3DQEJEAILMYGVoIGSMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRD
b20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4
MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQg
Q0ECAVUwDQYJKoZIhvcNAQEBBQAEggEAVTqaFot8EGb6jIGO3DOfP36UOh663pDvWkT+V8iU
1nJ7E/7jPsInXaTXUf4MUdcWPJeNPJmgLsxGKKyIZIA1m5Fw5caKovz5UimbAMKUmTV3EUU+
ppnsQ3E/KgfAckNGXPrzo1zUu7KcresyHJcTMnitvY+wQvDiqFqD85lKZ+bnqq8qMCrGuRP5
mu5y6XDBLAkuacIpitwgkshGYmPgkjpdqXcfTuPs4umJfzBnGKMDiqNaLAAXzrYKpPLM7n2p
zQT1XMqyyO+NWuIdF75Fr57ZO4GzfYxCwmCwdAMsIs+ShMnMpNKjyhmnGdbE3qSKUhBDt+OR
c+XgM32nsEFSgAAAAAAAAA==
--------------ms060508010304000608020602--

From stpeter@stpeter.im  Thu Jun  3 09:54:38 2010
Return-Path: <stpeter@stpeter.im>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E368B3A69E7 for <core@core3.amsl.com>; Thu,  3 Jun 2010 09:54:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.984
X-Spam-Level: 
X-Spam-Status: No, score=-1.984 tagged_above=-999 required=5 tests=[AWL=0.615,  BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Vn44-aP9dS0z for <core@core3.amsl.com>; Thu,  3 Jun 2010 09:54:38 -0700 (PDT)
Received: from stpeter.im (stpeter.im [207.210.219.233]) by core3.amsl.com (Postfix) with ESMTP id D38953A63C9 for <core@ietf.org>; Thu,  3 Jun 2010 09:54:37 -0700 (PDT)
Received: from dhcp-64-101-72-121.cisco.com (dhcp-64-101-72-121.cisco.com [64.101.72.121]) (Authenticated sender: stpeter) by stpeter.im (Postfix) with ESMTPSA id 8439E40E14 for <core@ietf.org>; Thu,  3 Jun 2010 10:54:24 -0600 (MDT)
Message-ID: <4C07DE3F.6000802@stpeter.im>
Date: Thu, 03 Jun 2010 10:54:23 -0600
From: Peter Saint-Andre <stpeter@stpeter.im>
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com><001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de><4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>	<05C6A38D732F1144A8C4016BA4416BFE02E4A8DC@SPO-EXVS-02.itron.com><4C07D108.3040509@sensinode.com>	<4C07DA41.8030202@stpeter.im>	<05C6A38D732F1144A8C4016BA4416BFE02E4A976@SPO-EXVS-02.itron.com> <4C07DC00.1030002@stpeter.im>
In-Reply-To: <4C07DC00.1030002@stpeter.im>
X-Enigmail-Version: 1.0.1
OpenPGP: url=http://www.saint-andre.com/me/stpeter.asc
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms070201080105060509050008"
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 16:54:39 -0000

This is a cryptographically signed message in MIME format.

--------------ms070201080105060509050008
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On 6/3/10 10:44 AM, Peter Saint-Andre wrote:
> On 6/3/10 10:41 AM, Stuber, Michael wrote:
>> CoAp specific.  My point is that a single CoAp specific method could
>> be mapped to wide variety of HTTP mechanisms if desired.=20
>=20
> So, to clarify, will we use:
>=20
> 1. CoAp-specific methods for everything.
>=20
> Or:
>=20
> 2. CoAp-specific methods only for sub/notify, and HTTP for everything e=
lse.

Never mind, I hadn't revisited draft-shelby-core-coap in a while and
forgot that we were doing CoAp-specific methods for everything.

Peter

--=20
Peter Saint-Andre
https://stpeter.im/




--------------ms070201080105060509050008
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIWnDCC
B1cwggY/oAMCAQICAVUwDQYJKoZIhvcNAQEFBQAwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQK
Ew1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBT
aWduaW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAzIFByaW1hcnkgSW50ZXJtZWRpYXRl
IENsaWVudCBDQTAeFw0wOTA3MDYwMDAwMDFaFw0xMDA3MDYyMzU5NTlaMIHCMQswCQYDVQQG
EwJVUzERMA8GA1UECBMIQ29sb3JhZG8xDzANBgNVBAcTBkRlbnZlcjEiMCAGA1UEChMZWE1Q
UCBTdGFuZGFyZHMgRm91bmRhdGlvbjEsMCoGA1UECxMjU3RhcnRDb20gVHJ1c3RlZCBDZXJ0
aWZpY2F0ZSBNZW1iZXIxGjAYBgNVBAMTEVBldGVyIFNhaW50LUFuZHJlMSEwHwYJKoZIhvcN
AQkBFhJzdHBldGVyQHN0cGV0ZXIuaW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQCas7Mrnh02GakN8sft+HJpU4MwBxEgrGDZ2ZzUxDDt2sEhM+9Q74h955MtgMhK3TeBf6Hs
hDh/8Z9G//k2qNA0M2S5rejTqrmW0Jabca/L7BUZ0GhnU2N/2zeciFUmuZ4A2l1T5IMX2ZVP
XnNIaefBtbImJAbDz3T0vxkzTtcqgW3wL83PMDiqiuM+e1k+VPvOW4f5ZSGkPIhYCDpWqNE5
wZvjrLNMc8jZOPs9DrsYuIVwU72Vhy1tkEh+w6YpYHrdEUAe+eKe6TuxqZ60e9z3O36uiV//
Ms274iD6PbA/IGazJgaAdg6tvPehwTYGJAGmv3PsJKkLGjgoh+RrrM1LAgMBAAGjggOKMIID
hjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
AwQwHQYDVR0OBBYEFOyws3XWgIY9FP1POVqjdZP9Lu38MB0GA1UdEQQWMBSBEnN0cGV0ZXJA
c3RwZXRlci5pbTCBqAYDVR0jBIGgMIGdgBR7iZySlyShhEcCy3T8LvSs3DLl86GBgaR/MH0x
CzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUg
RGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQDEyBTdGFydENvbSBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eYIBDzCCAUcGA1UdIASCAT4wggE6MIIBNgYLKwYBBAGBtTcBAgAw
ggElMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQG
CCsGAQUFBwIBFihodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMIG8
BggrBgEFBQcCAjCBrzAUFg1TdGFydENvbSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0
eSwgcmVhZCB0aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENv
bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93
d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwYwYDVR0fBFwwWjAroCmgJ4YlaHR0cDovL3d3
dy5zdGFydHNzbC5jb20vY3J0dTMtY3JsLmNybDAroCmgJ4YlaHR0cDovL2NybC5zdGFydHNz
bC5jb20vY3J0dTMtY3JsLmNybDCBjgYIKwYBBQUHAQEEgYEwfzA5BggrBgEFBQcwAYYtaHR0
cDovL29jc3Auc3RhcnRzc2wuY29tL3N1Yi9jbGFzczMvY2xpZW50L2NhMEIGCCsGAQUFBzAC
hjZodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9jZXJ0cy9zdWIuY2xhc3MzLmNsaWVudC5jYS5j
cnQwIwYDVR0SBBwwGoYYaHR0cDovL3d3dy5zdGFydHNzbC5jb20vMA0GCSqGSIb3DQEBBQUA
A4IBAQBgv4xFXZqDKSOtnPOVbqOh1brj7oxRaVYk7N0MJG7x9Y/wkO3iwRwizVLcC1bA+D/R
gyFilXx6IQWE63Ge2tu+Y4w5QoHYwuUFQuBZuxvZpOa3ykdgPlBQaBM8m+Ien0skwNggaizA
X9Pc/sMLpP3jkO1iSF4agy4r5Ed+4G10mP5X0zO3gQwq9Uj4F9tX+58kU+fM1P8Sh+BYR4r/
kSbKE3tWcMaKblWPGwX0nYD26Je7Qb+uX/J5lCgozBrHXQWq8N98iklASf2pv+32Oi1dEjmM
UgAm/J2+YmxaI02+c+H6QH8+F3RUjCiRg9XqUNjcrNrnTFnm/iMMZADktsXPMIIHVzCCBj+g
AwIBAgIBVTANBgkqhkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0
Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDMgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50
IENBMB4XDTA5MDcwNjAwMDAwMVoXDTEwMDcwNjIzNTk1OVowgcIxCzAJBgNVBAYTAlVTMREw
DwYDVQQIEwhDb2xvcmFkbzEPMA0GA1UEBxMGRGVudmVyMSIwIAYDVQQKExlYTVBQIFN0YW5k
YXJkcyBGb3VuZGF0aW9uMSwwKgYDVQQLEyNTdGFydENvbSBUcnVzdGVkIENlcnRpZmljYXRl
IE1lbWJlcjEaMBgGA1UEAxMRUGV0ZXIgU2FpbnQtQW5kcmUxITAfBgkqhkiG9w0BCQEWEnN0
cGV0ZXJAc3RwZXRlci5pbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJqzsyue
HTYZqQ3yx+34cmlTgzAHESCsYNnZnNTEMO3awSEz71DviH3nky2AyErdN4F/oeyEOH/xn0b/
+Tao0DQzZLmt6NOquZbQlptxr8vsFRnQaGdTY3/bN5yIVSa5ngDaXVPkgxfZlU9ec0hp58G1
siYkBsPPdPS/GTNO1yqBbfAvzc8wOKqK4z57WT5U+85bh/llIaQ8iFgIOlao0TnBm+Oss0xz
yNk4+z0Ouxi4hXBTvZWHLW2QSH7Dpilget0RQB754p7pO7GpnrR73Pc7fq6JX/8yzbviIPo9
sD8gZrMmBoB2Dq2896HBNgYkAaa/c+wkqQsaOCiH5GuszUsCAwEAAaOCA4owggOGMAkGA1Ud
EwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNV
HQ4EFgQU7LCzddaAhj0U/U85WqN1k/0u7fwwHQYDVR0RBBYwFIESc3RwZXRlckBzdHBldGVy
LmltMIGoBgNVHSMEgaAwgZ2AFHuJnJKXJKGERwLLdPwu9KzcMuXzoYGBpH8wfTELMAkGA1UE
BhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFs
IENlcnRpZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24g
QXV0aG9yaXR5ggEPMIIBRwYDVR0gBIIBPjCCATowggE2BgsrBgEEAYG1NwECADCCASUwLgYI
KwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUH
AgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgbwGCCsGAQUF
BwICMIGvMBQWDVN0YXJ0Q29tIEx0ZC4wAwIBARqBlkxpbWl0ZWQgTGlhYmlsaXR5LCByZWFk
IHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENlcnRp
ZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5zdGFy
dHNzbC5jb20vcG9saWN5LnBkZjBjBgNVHR8EXDBaMCugKaAnhiVodHRwOi8vd3d3LnN0YXJ0
c3NsLmNvbS9jcnR1My1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9j
cnR1My1jcmwuY3JsMIGOBggrBgEFBQcBAQSBgTB/MDkGCCsGAQUFBzABhi1odHRwOi8vb2Nz
cC5zdGFydHNzbC5jb20vc3ViL2NsYXNzMy9jbGllbnQvY2EwQgYIKwYBBQUHMAKGNmh0dHA6
Ly93d3cuc3RhcnRzc2wuY29tL2NlcnRzL3N1Yi5jbGFzczMuY2xpZW50LmNhLmNydDAjBgNV
HRIEHDAahhhodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJKoZIhvcNAQEFBQADggEBAGC/
jEVdmoMpI62c85Vuo6HVuuPujFFpViTs3QwkbvH1j/CQ7eLBHCLNUtwLVsD4P9GDIWKVfHoh
BYTrcZ7a275jjDlCgdjC5QVC4Fm7G9mk5rfKR2A+UFBoEzyb4h6fSyTA2CBqLMBf09z+wwuk
/eOQ7WJIXhqDLivkR37gbXSY/lfTM7eBDCr1SPgX21f7nyRT58zU/xKH4FhHiv+RJsoTe1Zw
xopuVY8bBfSdgPbol7tBv65f8nmUKCjMGsddBarw33yKSUBJ/am/7fY6LV0SOYxSACb8nb5i
bFojTb5z4fpAfz4XdFSMKJGD1epQ2Nys2udMWeb+IwxkAOS2xc8wggfiMIIFyqADAgECAgEP
MA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQu
MSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQD
EyBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzEwMjQyMTAzMzJaFw0x
MjEwMjIyMTAzMzJaMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEr
MCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMv
U3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5o0luEj4gypQIp71Xi2TlXyLYrj9WkRy+d9BO
0FHPYnAsC99/jx/ibNRwIfAoFhZd+LDscdRSckvwuFSz0bKg3z+9o7cwlVAC9AwMWe8IM0Lx
c+8etYxsX4WIamG9fjzzi5GAW5ESKzzIN3SxHSplyGCWFwx/pgf1f4y6O9/ym+4f6zaDYP6B
x0r+SaJcr6eSGNm7X3EwX1v7XpRBY+aw019o7k72d0IX910F+XGt0OwNdM61Ff3FiTiexeUZ
bWxCGm6GZl+SQVG9xYVIgHQaLXoQF+g2wzrmKCbVcZhqH+hrlRnD6PfCuEyX/BR6PlAPRDlQ
6f1u3wqik+LF5P15AgMBAAGjggNbMIIDVzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBpjAd
BgNVHQ4EFgQUe4mckpckoYRHAst0/C70rNwy5fMwgagGA1UdIwSBoDCBnYAUTgvvGqRAW6UX
aYcwyjRoQ9BBrvKhgYGkfzB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UE
AxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHmCAQEwCQYDVR0SBAIwADA9Bggr
BgEFBQcBAQQxMC8wLQYIKwYBBQUHMAKGIWh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2Nh
LmNydDBgBgNVHR8EWTBXMCygKqAohiZodHRwOi8vY2VydC5zdGFydGNvbS5vcmcvc2ZzY2Et
Y3JsLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMIIBXQYD
VR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBBDCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9j
ZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5z
dGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3RhcnQg
Q29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5LCBy
ZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQu
c3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMFAGCWCGSAGG+EIB
DQRDFkFTdGFydENvbSBDbGFzcyAzIFByaW1hcnkgSW50ZXJtZWRpYXRlIEZyZWUgU1NMIEVt
YWlsIENlcnRpZmljYXRlczANBgkqhkiG9w0BAQUFAAOCAgEAUpcEDdsKFRCxFBxcSm+8oMTT
fpS7fbZkxWHx5fHDjvAgaBQ+oY0tk4xtbD6VxeHYjxI63+hj8jICnqeVXPe34Bu+XzekIn2T
lrnPCQobKdQF2p52QgUvIxSURed0jcBaCBV22DSKaUqDOzD/Tx6VQy78zpblXjRH7OALE/+H
jzJVmspdnBUUtQOLYgPo924xkxR25VDdgtEE5vAXa/g2oCeZhy0ZEO4NbgIayAYCJcJRDz0h
dD2Ahec65Kw6LB3N7VXEjiRR5/WoKwH/QteRzPJbFDc1somrApjm2cyg+5nbm1RHeFIz+GxX
luRrPztvhNcby0PtAjqwY1txi4sW0R6ZJPuZ2DZ1/dzckoFhyZgFyOX3SEkNXVLldjTzneFJ
FnVSzDbc720vq184jR7pYoI9+f5QJ96a0iLxEAG8SJ5auBwXI/w2FmKmwmdMvJ8/17+B4sMC
IRrXrDQl2xzpVXh/Qcmk5nf+w8HFmqATGy1OUAQbXga7AySAUaYhvvFk50u0bO5DiUGwzrJO
3TrwvaC2Ei4EFaBmIVgG7TfU5TaaY9IcJSCQ7AGUYE3RFSRpsLOoA3DsxP42YERgS/Nxw29+
YqZtPoO2QPbNpI7xnHVCfNBabx3oDIf438nFfv8spw5BQqBSbEF1izJA57eE64CzHnt7lB20
OFD11avYopwxggPKMIIDxgIBATCBkjCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0
Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDMgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50
IENBAgFVMAkGBSsOAwIaBQCgggIMMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
hvcNAQkFMQ8XDTEwMDYwMzE2NTQyM1owIwYJKoZIhvcNAQkEMRYEFI51EQRzsY2/C6y2lt7e
woUlRSmjMF8GCSqGSIb3DQEJDzFSMFAwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqG
SIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBowYJ
KwYBBAGCNxAEMYGVMIGSMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UE
AxMvU3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAVUw
gaUGCyqGSIb3DQEJEAILMYGVoIGSMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRD
b20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4
MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQg
Q0ECAVUwDQYJKoZIhvcNAQEBBQAEggEALxgZLVM4cx3Y/s7F1XPJcDpKahDN5kwNwq+pQjTU
egWEd+rA19pIeDIa/HbAW8kqYFX0bCDmfeJmjiqHaZpsdxSxVFd2a0cXfsCquqv+Ja+kNlRI
St8FDI2yK47KXTJfJv1r4Kjw+vBWeBRJqJklSmdZkA3zuV5Z9+27pqtNj3NGJRIuXFnmRw2P
SyRyTzWPcfX+ha8a1TB/KIQwdXYXbYtzfkl6pAWOqLtqqOxyeB9B2bUgeU8IUj5vw7ci+YFV
YQW6jXtmMTZrT7+C18XoER2cjZFy0Nu9vsZznO3F63eZA3Dqq0kIZu1c4N3FYeBNdBWadCGd
8BSJ0W1wvmmJnwAAAAAAAA==
--------------ms070201080105060509050008--

From Michael.Stuber@itron.com  Thu Jun  3 10:00:44 2010
Return-Path: <Michael.Stuber@itron.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E143428C0F5 for <core@core3.amsl.com>; Thu,  3 Jun 2010 10:00:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.346
X-Spam-Level: 
X-Spam-Status: No, score=-1.346 tagged_above=-999 required=5 tests=[AWL=1.254,  BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qHl0Jp1qhF6P for <core@core3.amsl.com>; Thu,  3 Jun 2010 10:00:44 -0700 (PDT)
Received: from mailer-1.itron.com (mailer-1.itron.com [198.182.8.121]) by core3.amsl.com (Postfix) with ESMTP id 1D6503A69EA for <core@ietf.org>; Thu,  3 Jun 2010 10:00:44 -0700 (PDT)
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Date: Thu, 3 Jun 2010 10:00:30 -0700
Message-ID: <05C6A38D732F1144A8C4016BA4416BFE02E4A9A2@SPO-EXVS-02.itron.com>
In-Reply-To: <4C07DC00.1030002@stpeter.im>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] Subscribe/Notify for CoAP
Thread-Index: AcsDPBkTaEN71IdKSYGVKePM1XDKTwAASz2w
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com><001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de><4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>	<05C6A38D732F1144A8C4016BA4416BFE02E4A8DC@SPO-EXVS-02.itron.com><4C07D108.3040509@sensinode.com>	<4C07DA41.8030202@stpeter.im><05C6A38D732F1144A8C4016BA4416BFE02E4A976@SPO-EXVS-02.itron.com> <4C07DC00.1030002@stpeter.im>
From: "Stuber, Michael" <Michael.Stuber@itron.com>
To: "Peter Saint-Andre" <stpeter@stpeter.im>, <core@ietf.org>
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 17:00:45 -0000

SSB0aGluayB0aGUgZ29hbCBpcyBmb3IgIzEgYW5kICMyIHRvIGJlIHRoZSBzYW1lIHRoaW5nLiAg
VGhhdCBpcywgQ29BcCB3aWxsIHByb3ZpZGUgY29tbWFuZHMgdGhhdCBhcmUgdGhlIGRpcmVjdCBl
cXVpdmFsZW50IG9mIEdFVCwgUFVULCBQT1NULCBhbmQgREVMRVRFIHNvIHRoYXQgdGhlIG1hcHBp
bmcgaXMgMSB0byAxIGZvciB0aGVzZSBjb21tYW5kcy4gIE9mIGNvdXJzZSwgSSB3b3VsZCBleHBl
Y3QgdGhlIGltcGxlbWVudGF0aW9ucyB0byBiZSBDb0FwIHNwZWNpZmljLCBhcyBIVFRQIGlzIHRl
eHQgYmFzZWQgYW5kIENvQXAgaXMgZGVzaWduZWQgYXMgYSBiaW5hcnkgcHJvdG9jb2wuICBJZiB5
b3UgbG9vayBhdCAzLjIgb2YgdGhlIFphY2gncyBDb0FwIGRyYWZ0IGl0IHNob3dzOg0KDQogICAg
ICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rLS0tLS0tKw0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBNZXRob2QgICAgfCBDb2RlIHwNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICstLS0tLS0tLS0tLSstLS0tLS0rDQogICAgICAgICAgICAgICAgICAgICAgICAgICB8
IEdFVCAgICAgICB8IDAgICAgfA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQT1NUICAg
ICAgfCAxICAgIHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFVUICAgICAgIHwgMiAg
ICB8DQogICAgICAgICAgICAgICAgICAgICAgICAgICB8IERFTEVURSAgICB8IDMgICAgfA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBTVUJTQ1JJQkUgfCA0ICAgIHwNCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSstLS0tLS0rDQoNCkJ1dCBtYXliZSBJJ3ZlIG1p
c3VuZGVyc3Rvb2QgeW91ciBxdWVzdGlvbi4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N
CkZyb206IGNvcmUtYm91bmNlc0BpZXRmLm9yZyBbbWFpbHRvOmNvcmUtYm91bmNlc0BpZXRmLm9y
Z10gT24gQmVoYWxmIE9mIFBldGVyIFNhaW50LUFuZHJlDQpTZW50OiBUaHVyc2RheSwgSnVuZSAw
MywgMjAxMCA5OjQ1IEFNDQpUbzogY29yZUBpZXRmLm9yZw0KU3ViamVjdDogUmU6IFtjb3JlXSBT
dWJzY3JpYmUvTm90aWZ5IGZvciBDb0FQDQoNCk9uIDYvMy8xMCAxMDo0MSBBTSwgU3R1YmVyLCBN
aWNoYWVsIHdyb3RlOg0KPiBDb0FwIHNwZWNpZmljLiAgTXkgcG9pbnQgaXMgdGhhdCBhIHNpbmds
ZSBDb0FwIHNwZWNpZmljIG1ldGhvZCBjb3VsZCANCj4gYmUgbWFwcGVkIHRvIHdpZGUgdmFyaWV0
eSBvZiBIVFRQIG1lY2hhbmlzbXMgaWYgZGVzaXJlZC4NCg0KU28sIHRvIGNsYXJpZnksIHdpbGwg
d2UgdXNlOg0KDQoxLiBDb0FwLXNwZWNpZmljIG1ldGhvZHMgZm9yIGV2ZXJ5dGhpbmcuDQoNCk9y
Og0KDQoyLiBDb0FwLXNwZWNpZmljIG1ldGhvZHMgb25seSBmb3Igc3ViL25vdGlmeSwgYW5kIEhU
VFAgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4NCg0KPiBJIGRvbid0DQo+IHRoaW5rIHRoZXJlIGlzIGFu
eSBuZWVkIGZvciB5ZXQgYW5vdGhlciBIVFRQIHN1Yi9ub3RpZnkgbWVjaGFuaXNtLCBhbmQgDQo+
IGl0IGNlcnRhaW5seSBpc24ndCBpbiBvdXIgY2hhcnRlciB0byBkZWZpbmUgb25lLg0KDQpJIGZ1
bGx5IGFncmVlIHdpdGggdGhhdCBzZW50aW1lbnQuDQoNCi9wc2ENCg0K

From stpeter@stpeter.im  Thu Jun  3 10:14:01 2010
Return-Path: <stpeter@stpeter.im>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id BA01A28C16D for <core@core3.amsl.com>; Thu,  3 Jun 2010 10:14:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.963
X-Spam-Level: 
X-Spam-Status: No, score=-1.963 tagged_above=-999 required=5 tests=[AWL=0.636,  BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eUr3YnZDewXQ for <core@core3.amsl.com>; Thu,  3 Jun 2010 10:13:59 -0700 (PDT)
Received: from stpeter.im (stpeter.im [207.210.219.233]) by core3.amsl.com (Postfix) with ESMTP id 176BD28C0D7 for <core@ietf.org>; Thu,  3 Jun 2010 10:13:59 -0700 (PDT)
Received: from dhcp-64-101-72-121.cisco.com (dhcp-64-101-72-121.cisco.com [64.101.72.121]) (Authenticated sender: stpeter) by stpeter.im (Postfix) with ESMTPSA id AA26840E4D; Thu,  3 Jun 2010 11:13:45 -0600 (MDT)
Message-ID: <4C07E2C8.7000607@stpeter.im>
Date: Thu, 03 Jun 2010 11:13:44 -0600
From: Peter Saint-Andre <stpeter@stpeter.im>
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: "Stuber, Michael" <Michael.Stuber@itron.com>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com><001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de><4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>	<05C6A38D732F1144A8C4016BA4416BFE02E4A8DC@SPO-EXVS-02.itron.com><4C07D108.3040509@sensinode.com>	<4C07DA41.8030202@stpeter.im><05C6A38D732F1144A8C4016BA4416BFE02E4A976@SPO-EXVS-02.itron.com> <4C07DC00.1030002@stpeter.im> <05C6A38D732F1144A8C4016BA4416BFE02E4A9A2@SPO-EXVS-02.itron.com>
In-Reply-To: <05C6A38D732F1144A8C4016BA4416BFE02E4A9A2@SPO-EXVS-02.itron.com>
X-Enigmail-Version: 1.0.1
OpenPGP: url=http://www.saint-andre.com/me/stpeter.asc
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms000902050707090704010601"
Cc: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 17:14:01 -0000

This is a cryptographically signed message in MIME format.

--------------ms000902050707090704010601
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On 6/3/10 11:00 AM, Stuber, Michael wrote:
> I think the goal is for #1 and #2 to be the same thing.  That is,
> CoAp will provide commands that are the direct equivalent of GET,
> PUT, POST, and DELETE so that the mapping is 1 to 1 for these
> commands.  Of course, I would expect the implementations to be CoAp
> specific, as HTTP is text based and CoAp is designed as a binary
> protocol.

Correct.

> But maybe I've misunderstood your question.

My question was misinformed. Please ignore. :)




--------------ms000902050707090704010601
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIWnDCC
B1cwggY/oAMCAQICAVUwDQYJKoZIhvcNAQEFBQAwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQK
Ew1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBT
aWduaW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAzIFByaW1hcnkgSW50ZXJtZWRpYXRl
IENsaWVudCBDQTAeFw0wOTA3MDYwMDAwMDFaFw0xMDA3MDYyMzU5NTlaMIHCMQswCQYDVQQG
EwJVUzERMA8GA1UECBMIQ29sb3JhZG8xDzANBgNVBAcTBkRlbnZlcjEiMCAGA1UEChMZWE1Q
UCBTdGFuZGFyZHMgRm91bmRhdGlvbjEsMCoGA1UECxMjU3RhcnRDb20gVHJ1c3RlZCBDZXJ0
aWZpY2F0ZSBNZW1iZXIxGjAYBgNVBAMTEVBldGVyIFNhaW50LUFuZHJlMSEwHwYJKoZIhvcN
AQkBFhJzdHBldGVyQHN0cGV0ZXIuaW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQCas7Mrnh02GakN8sft+HJpU4MwBxEgrGDZ2ZzUxDDt2sEhM+9Q74h955MtgMhK3TeBf6Hs
hDh/8Z9G//k2qNA0M2S5rejTqrmW0Jabca/L7BUZ0GhnU2N/2zeciFUmuZ4A2l1T5IMX2ZVP
XnNIaefBtbImJAbDz3T0vxkzTtcqgW3wL83PMDiqiuM+e1k+VPvOW4f5ZSGkPIhYCDpWqNE5
wZvjrLNMc8jZOPs9DrsYuIVwU72Vhy1tkEh+w6YpYHrdEUAe+eKe6TuxqZ60e9z3O36uiV//
Ms274iD6PbA/IGazJgaAdg6tvPehwTYGJAGmv3PsJKkLGjgoh+RrrM1LAgMBAAGjggOKMIID
hjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
AwQwHQYDVR0OBBYEFOyws3XWgIY9FP1POVqjdZP9Lu38MB0GA1UdEQQWMBSBEnN0cGV0ZXJA
c3RwZXRlci5pbTCBqAYDVR0jBIGgMIGdgBR7iZySlyShhEcCy3T8LvSs3DLl86GBgaR/MH0x
CzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUg
RGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQDEyBTdGFydENvbSBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eYIBDzCCAUcGA1UdIASCAT4wggE6MIIBNgYLKwYBBAGBtTcBAgAw
ggElMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQG
CCsGAQUFBwIBFihodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMIG8
BggrBgEFBQcCAjCBrzAUFg1TdGFydENvbSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0
eSwgcmVhZCB0aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENv
bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93
d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwYwYDVR0fBFwwWjAroCmgJ4YlaHR0cDovL3d3
dy5zdGFydHNzbC5jb20vY3J0dTMtY3JsLmNybDAroCmgJ4YlaHR0cDovL2NybC5zdGFydHNz
bC5jb20vY3J0dTMtY3JsLmNybDCBjgYIKwYBBQUHAQEEgYEwfzA5BggrBgEFBQcwAYYtaHR0
cDovL29jc3Auc3RhcnRzc2wuY29tL3N1Yi9jbGFzczMvY2xpZW50L2NhMEIGCCsGAQUFBzAC
hjZodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9jZXJ0cy9zdWIuY2xhc3MzLmNsaWVudC5jYS5j
cnQwIwYDVR0SBBwwGoYYaHR0cDovL3d3dy5zdGFydHNzbC5jb20vMA0GCSqGSIb3DQEBBQUA
A4IBAQBgv4xFXZqDKSOtnPOVbqOh1brj7oxRaVYk7N0MJG7x9Y/wkO3iwRwizVLcC1bA+D/R
gyFilXx6IQWE63Ge2tu+Y4w5QoHYwuUFQuBZuxvZpOa3ykdgPlBQaBM8m+Ien0skwNggaizA
X9Pc/sMLpP3jkO1iSF4agy4r5Ed+4G10mP5X0zO3gQwq9Uj4F9tX+58kU+fM1P8Sh+BYR4r/
kSbKE3tWcMaKblWPGwX0nYD26Je7Qb+uX/J5lCgozBrHXQWq8N98iklASf2pv+32Oi1dEjmM
UgAm/J2+YmxaI02+c+H6QH8+F3RUjCiRg9XqUNjcrNrnTFnm/iMMZADktsXPMIIHVzCCBj+g
AwIBAgIBVTANBgkqhkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0
Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDMgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50
IENBMB4XDTA5MDcwNjAwMDAwMVoXDTEwMDcwNjIzNTk1OVowgcIxCzAJBgNVBAYTAlVTMREw
DwYDVQQIEwhDb2xvcmFkbzEPMA0GA1UEBxMGRGVudmVyMSIwIAYDVQQKExlYTVBQIFN0YW5k
YXJkcyBGb3VuZGF0aW9uMSwwKgYDVQQLEyNTdGFydENvbSBUcnVzdGVkIENlcnRpZmljYXRl
IE1lbWJlcjEaMBgGA1UEAxMRUGV0ZXIgU2FpbnQtQW5kcmUxITAfBgkqhkiG9w0BCQEWEnN0
cGV0ZXJAc3RwZXRlci5pbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJqzsyue
HTYZqQ3yx+34cmlTgzAHESCsYNnZnNTEMO3awSEz71DviH3nky2AyErdN4F/oeyEOH/xn0b/
+Tao0DQzZLmt6NOquZbQlptxr8vsFRnQaGdTY3/bN5yIVSa5ngDaXVPkgxfZlU9ec0hp58G1
siYkBsPPdPS/GTNO1yqBbfAvzc8wOKqK4z57WT5U+85bh/llIaQ8iFgIOlao0TnBm+Oss0xz
yNk4+z0Ouxi4hXBTvZWHLW2QSH7Dpilget0RQB754p7pO7GpnrR73Pc7fq6JX/8yzbviIPo9
sD8gZrMmBoB2Dq2896HBNgYkAaa/c+wkqQsaOCiH5GuszUsCAwEAAaOCA4owggOGMAkGA1Ud
EwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNV
HQ4EFgQU7LCzddaAhj0U/U85WqN1k/0u7fwwHQYDVR0RBBYwFIESc3RwZXRlckBzdHBldGVy
LmltMIGoBgNVHSMEgaAwgZ2AFHuJnJKXJKGERwLLdPwu9KzcMuXzoYGBpH8wfTELMAkGA1UE
BhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFs
IENlcnRpZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24g
QXV0aG9yaXR5ggEPMIIBRwYDVR0gBIIBPjCCATowggE2BgsrBgEEAYG1NwECADCCASUwLgYI
KwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUH
AgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgbwGCCsGAQUF
BwICMIGvMBQWDVN0YXJ0Q29tIEx0ZC4wAwIBARqBlkxpbWl0ZWQgTGlhYmlsaXR5LCByZWFk
IHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENlcnRp
ZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5zdGFy
dHNzbC5jb20vcG9saWN5LnBkZjBjBgNVHR8EXDBaMCugKaAnhiVodHRwOi8vd3d3LnN0YXJ0
c3NsLmNvbS9jcnR1My1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9j
cnR1My1jcmwuY3JsMIGOBggrBgEFBQcBAQSBgTB/MDkGCCsGAQUFBzABhi1odHRwOi8vb2Nz
cC5zdGFydHNzbC5jb20vc3ViL2NsYXNzMy9jbGllbnQvY2EwQgYIKwYBBQUHMAKGNmh0dHA6
Ly93d3cuc3RhcnRzc2wuY29tL2NlcnRzL3N1Yi5jbGFzczMuY2xpZW50LmNhLmNydDAjBgNV
HRIEHDAahhhodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJKoZIhvcNAQEFBQADggEBAGC/
jEVdmoMpI62c85Vuo6HVuuPujFFpViTs3QwkbvH1j/CQ7eLBHCLNUtwLVsD4P9GDIWKVfHoh
BYTrcZ7a275jjDlCgdjC5QVC4Fm7G9mk5rfKR2A+UFBoEzyb4h6fSyTA2CBqLMBf09z+wwuk
/eOQ7WJIXhqDLivkR37gbXSY/lfTM7eBDCr1SPgX21f7nyRT58zU/xKH4FhHiv+RJsoTe1Zw
xopuVY8bBfSdgPbol7tBv65f8nmUKCjMGsddBarw33yKSUBJ/am/7fY6LV0SOYxSACb8nb5i
bFojTb5z4fpAfz4XdFSMKJGD1epQ2Nys2udMWeb+IwxkAOS2xc8wggfiMIIFyqADAgECAgEP
MA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQu
MSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQD
EyBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzEwMjQyMTAzMzJaFw0x
MjEwMjIyMTAzMzJaMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEr
MCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMv
U3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5o0luEj4gypQIp71Xi2TlXyLYrj9WkRy+d9BO
0FHPYnAsC99/jx/ibNRwIfAoFhZd+LDscdRSckvwuFSz0bKg3z+9o7cwlVAC9AwMWe8IM0Lx
c+8etYxsX4WIamG9fjzzi5GAW5ESKzzIN3SxHSplyGCWFwx/pgf1f4y6O9/ym+4f6zaDYP6B
x0r+SaJcr6eSGNm7X3EwX1v7XpRBY+aw019o7k72d0IX910F+XGt0OwNdM61Ff3FiTiexeUZ
bWxCGm6GZl+SQVG9xYVIgHQaLXoQF+g2wzrmKCbVcZhqH+hrlRnD6PfCuEyX/BR6PlAPRDlQ
6f1u3wqik+LF5P15AgMBAAGjggNbMIIDVzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBpjAd
BgNVHQ4EFgQUe4mckpckoYRHAst0/C70rNwy5fMwgagGA1UdIwSBoDCBnYAUTgvvGqRAW6UX
aYcwyjRoQ9BBrvKhgYGkfzB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UE
AxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHmCAQEwCQYDVR0SBAIwADA9Bggr
BgEFBQcBAQQxMC8wLQYIKwYBBQUHMAKGIWh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2Nh
LmNydDBgBgNVHR8EWTBXMCygKqAohiZodHRwOi8vY2VydC5zdGFydGNvbS5vcmcvc2ZzY2Et
Y3JsLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMIIBXQYD
VR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBBDCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9j
ZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5z
dGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3RhcnQg
Q29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5LCBy
ZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQu
c3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMFAGCWCGSAGG+EIB
DQRDFkFTdGFydENvbSBDbGFzcyAzIFByaW1hcnkgSW50ZXJtZWRpYXRlIEZyZWUgU1NMIEVt
YWlsIENlcnRpZmljYXRlczANBgkqhkiG9w0BAQUFAAOCAgEAUpcEDdsKFRCxFBxcSm+8oMTT
fpS7fbZkxWHx5fHDjvAgaBQ+oY0tk4xtbD6VxeHYjxI63+hj8jICnqeVXPe34Bu+XzekIn2T
lrnPCQobKdQF2p52QgUvIxSURed0jcBaCBV22DSKaUqDOzD/Tx6VQy78zpblXjRH7OALE/+H
jzJVmspdnBUUtQOLYgPo924xkxR25VDdgtEE5vAXa/g2oCeZhy0ZEO4NbgIayAYCJcJRDz0h
dD2Ahec65Kw6LB3N7VXEjiRR5/WoKwH/QteRzPJbFDc1somrApjm2cyg+5nbm1RHeFIz+GxX
luRrPztvhNcby0PtAjqwY1txi4sW0R6ZJPuZ2DZ1/dzckoFhyZgFyOX3SEkNXVLldjTzneFJ
FnVSzDbc720vq184jR7pYoI9+f5QJ96a0iLxEAG8SJ5auBwXI/w2FmKmwmdMvJ8/17+B4sMC
IRrXrDQl2xzpVXh/Qcmk5nf+w8HFmqATGy1OUAQbXga7AySAUaYhvvFk50u0bO5DiUGwzrJO
3TrwvaC2Ei4EFaBmIVgG7TfU5TaaY9IcJSCQ7AGUYE3RFSRpsLOoA3DsxP42YERgS/Nxw29+
YqZtPoO2QPbNpI7xnHVCfNBabx3oDIf438nFfv8spw5BQqBSbEF1izJA57eE64CzHnt7lB20
OFD11avYopwxggPKMIIDxgIBATCBkjCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0
Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDMgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50
IENBAgFVMAkGBSsOAwIaBQCgggIMMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
hvcNAQkFMQ8XDTEwMDYwMzE3MTM0NFowIwYJKoZIhvcNAQkEMRYEFPoQT4hFOem/Sr6PQoxV
EXY9iyU6MF8GCSqGSIb3DQEJDzFSMFAwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqG
SIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBowYJ
KwYBBAGCNxAEMYGVMIGSMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UE
AxMvU3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAVUw
gaUGCyqGSIb3DQEJEAILMYGVoIGSMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRD
b20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4
MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQg
Q0ECAVUwDQYJKoZIhvcNAQEBBQAEggEAcLbBQMzmUHmWm2adTYPaMShxif9iE19+BqxzKvIp
7Ou/Ez2dxqSc89eLfmNKRj1cp31HlxvI8/BzR0ngEKnvKrRB4qde0m1urFvJDhn68qbweiD3
B+Mjw8l+0bwSQWYq3LBLxM4I2X8p98o7m+D9oVGekFdQU+q2S4JcHZg7EhUGWpBJALHVifuL
0l23O80EWBMtoPGbY2LaPMlHYFnWmfjtmRy8DUn9Yn/4dq2zzeUIBQksEJPvjJ1YYhb5Uwsk
70qoUxjQ4FBQNIWam4f/JoA+LUTxyBZWS63YNS+qKXwbiGPaN8ek8ZTTHu35NGY3+iMyFeX/
COxFYPIGc2FNzwAAAAAAAA==
--------------ms000902050707090704010601--

From robert.cragie@gridmerge.com  Thu Jun  3 12:59:32 2010
Return-Path: <robert.cragie@gridmerge.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 88D0A3A69FA for <core@core3.amsl.com>; Thu,  3 Jun 2010 12:59:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.423
X-Spam-Level: 
X-Spam-Status: No, score=-0.423 tagged_above=-999 required=5 tests=[AWL=0.575,  BAYES_50=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2blcxpiu5T5o for <core@core3.amsl.com>; Thu,  3 Jun 2010 12:59:31 -0700 (PDT)
Received: from mail78.extendcp.co.uk (mail78.extendcp.co.uk [79.170.40.78]) by core3.amsl.com (Postfix) with ESMTP id 91C613A6A20 for <core@ietf.org>; Thu,  3 Jun 2010 12:59:30 -0700 (PDT)
Received: from client-86-29-249-143.pete.adsl.virginmedia.com ([86.29.249.143] helo=[192.168.1.71]) by mail78.extendcp.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.71) id 1OKGZP-0001WZ-Hm for core@ietf.org; Thu, 03 Jun 2010 20:59:16 +0100
Message-ID: <4C08098E.50305@gridmerge.com>
Date: Thu, 03 Jun 2010 20:59:10 +0100
From: Robert Cragie <robert.cragie@gridmerge.com>
Organization: Gridmerge Ltd.
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100317 Lightning/1.0b1 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>	<4C06F48D.1020600@cisco.com> <87vda0u9ry.fsf@kelsey-ws.hq.ember.com>
In-Reply-To: <87vda0u9ry.fsf@kelsey-ws.hq.ember.com>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms050601090309060701090208"
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: robert.cragie@gridmerge.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 19:59:32 -0000

This is a cryptographically signed message in MIME format.

--------------ms050601090309060701090208
Content-Type: multipart/alternative;
 boundary="------------010805010906050000040803"

This is a multi-part message in MIME format.
--------------010805010906050000040803
Content-Type: text/plain; charset=windows-1251; format=flowed
Content-Transfer-Encoding: quoted-printable

HTTP was designed to work on a synchronous client/server model. Whilst=20
that may suit desktop PC's running browsers and servers running httpd,=20
it is not entirely appropriate for M2M. The plethora of schemes to=20
implement push processing for HTTP (all incompatible) goes to show that=20
there is no one clean solution for this and most of the ones I have=20
looked at are no more than ingenious kludges to get HTTP to do something =

it isn't used to doing. A lot of them already use HTTP asynchronously,=20
thus moving away from the traditional usage model. Even then, most of=20
them are there to service server-to-server transactions or web mashups=20
etc. and don't really address the requirements for distributed control=20
entities e.g. sensors and actuators (to use abstract terms), especially=20
those built on constrained embedded systems.

We seem to be at a fork in the road now with the two paths of:

   1. Basing CoAP on the HTTP transaction model
   2. Basing CoAP on a more typical M2M transaction model

The advantage of using (1) would be an easier job at a gateway node. The =

clear disadvantage of (1) is that it doesn't map well to the threading=20
models typically used in embedded systems (see my earlier post). It=20
could be made to map but there will inevitably have to be some=20
additional specification over the underlying communication to fit=20
embedded device models. This will then become in effect yet another=20
RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).

The advantage of (2) is that it gives an opportunity to model=20
transactions more closely to those typical to an embedded environment.=20
There is nothing to prevent this model extending into the web generally=20
using translations at a gateway or indeed building wider CoAP systems in =

the internet which can handle the asynchronous multi-threaded=20
transaction models natively.

In a nutshell, using (1) is propagating the status quo, which is by no=20
means a bad thing, but I am not sure if it is appropriate for CORE. (2)=20
is acknowledging the unique properties of constrained and embedded=20
environments and building a transaction model more appropriate to such=20
devices.

Robert

Robert Cragie (Pacific Gas & Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
http://www.gridmerge.com <http://www.gridmerge.com/>


On 03/06/2010 3:31 AM, Richard Kelsey wrote:
>> Date: Wed, 02 Jun 2010 20:17:17 -0400
>> From: Paul Duffy<paduffy@cisco.com>
>>
>> My understanding is that COAP is directed to the WEB of things.  I tak=
e
>> that to mean going with the grain of pervasively  deployed WEB
>> infrastructure.  Unless there is an overwhelming compelling reason to =
do
>> otherwise, IMO COAP needs to implement a strict subset of HTTP
>> semantics.  Otherwise, we open the door to complexity re: translating
>> HTTP/COAP, and history has shown complex app gateways will always be a=

>> challenge.
>>
>> There are several ways to support pub/sub using stock HTTP methods.  I=

>> suggest we do so.
>>     =20
> Given the variety of ways people do pub/sub using stock HTTP
> methods, it isn't clear that we can keep both COAP and the
> COAP/HTTP gateways simple while still supporting multiple
> pub/sub methods on the HTTP side.  By making the translation
> of one form of HTTP pub/sub easy, we could easily make the
> translation of others harder.
>
> If we want to have COAP/HTTP gateways that support different
> HTTP pub/sub methods, then it might be better to add pub/sub
> to COAP directly, in a way that is not a strict subset of
> HTTP.
>
> Do we support several ways of doing pub/sub in HTTP, or just
> one?  If we do pick just one, can others be easily translated
> into it?
>                                  -Richard Kelsey
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>   =20

--------------010805010906050000040803
Content-Type: text/html; charset=windows-1251
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content=3D"text/html; charset=3Dwindows-1251"
 http-equiv=3D"Content-Type">
</head>
<body bgcolor=3D"#ffffff" text=3D"#000000">
HTTP was designed to work on a synchronous client/server model. Whilst
that may suit desktop PC's running browsers and servers running httpd,
it is not entirely appropriate for M2M. The plethora of schemes to
implement push processing for HTTP (all
incompatible) goes to show that there is no one clean solution for this
and most of the ones I have looked at are no more than ingenious
kludges to get HTTP
to do something it isn't used to doing. A lot of them already use HTTP
asynchronously, thus moving away from the traditional usage model. Even
then, most of them are there to service server-to-server transactions
or web mashups etc. and don't really address the requirements for
distributed control entities e.g. sensors and actuators (to use
abstract terms), especially those built on constrained embedded systems.<=
br>
<br>
We seem to be at a
fork in the road now with the two paths of:<br>
<ol>
  <li>Basing CoAP on the HTTP transaction model</li>
  <li>Basing CoAP on a more typical M2M transaction model</li>
</ol>
The advantage of using (1) would be an easier job at a gateway node.
The clear disadvantage of (1) is that it
doesn't map well to the threading models typically used in embedded
systems (see my earlier post). It could be made to map but there will
inevitably have to be some additional specification over the underlying
communication to fit embedded device models. This will then become in
effect yet
another RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).<br>
<br>
The advantage of (2) is that it gives an opportunity to model
transactions more closely to those typical to an embedded environment.
There is nothing to prevent this model extending into the web generally
using translations at a gateway or indeed building wider CoAP systems
in the internet which can handle the asynchronous multi-threaded
transaction models natively.<br>
<br>
In a nutshell, using (1) is propagating the status quo, which is by no
means a bad thing, but I am not sure if it is appropriate for CORE. (2)
is acknowledging the unique properties of constrained and embedded
environments and building a transaction model more appropriate to such
devices.<br>
<br>
Robert<br>
<div class=3D"moz-signature">
<style type=3D"text/css">
p
{
font-family:Verdana,Arial,sans-serif;
font-size:8pt;
}
=2Ename
{
font-size:12pt;
}
</style>
<p class=3D"name">Robert Cragie (Pacific Gas &amp; Electric)</p>
<p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
<a href=3D"http://www.gridmerge.com/">http://www.gridmerge.com</a></p>
</div>
<br>
On 03/06/2010 3:31 AM, Richard Kelsey wrote:
<blockquote cite=3D"mid:87vda0u9ry.fsf@kelsey-ws.hq.ember.com" type=3D"ci=
te">
  <blockquote type=3D"cite">
    <pre wrap=3D"">Date: Wed, 02 Jun 2010 20:17:17 -0400
From: Paul Duffy <a class=3D"moz-txt-link-rfc2396E"
 href=3D"mailto:paduffy@cisco.com">&lt;paduffy@cisco.com&gt;</a>

My understanding is that COAP is directed to the WEB of things.  I take=20
that to mean going with the grain of pervasively  deployed WEB=20
infrastructure.  Unless there is an overwhelming compelling reason to do =

otherwise, IMO COAP needs to implement a strict subset of HTTP=20
semantics.  Otherwise, we open the door to complexity re: translating=20
HTTP/COAP, and history has shown complex app gateways will always be a=20
challenge.

There are several ways to support pub/sub using stock HTTP methods.  I=20
suggest we do so.
    </pre>
  </blockquote>
  <pre wrap=3D"">Given the variety of ways people do pub/sub using stock =
HTTP
methods, it isn't clear that we can keep both COAP and the
COAP/HTTP gateways simple while still supporting multiple
pub/sub methods on the HTTP side.  By making the translation
of one form of HTTP pub/sub easy, we could easily make the
translation of others harder.

If we want to have COAP/HTTP gateways that support different
HTTP pub/sub methods, then it might be better to add pub/sub
to COAP directly, in a way that is not a strict subset of
HTTP.

Do we support several ways of doing pub/sub in HTTP, or just
one?  If we do pick just one, can others be easily translated
into it?
                                -Richard Kelsey
_______________________________________________
core mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a>

  </pre>
</blockquote>
</body>
</html>

--------------010805010906050000040803--

--------------ms050601090309060701090208
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJKzCC
AvAwggJZoAMCAQICEHQVhhxGmCATv+IPne+OkB8wDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UE
BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMT
I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA5MDgyOTE2NTcwM1oX
DTEwMDgyOTE2NTcwM1owTTEfMB0GA1UEAxMWVGhhd3RlIEZyZWVtYWlsIE1lbWJlcjEqMCgG
CSqGSIb3DQEJARYbcm9iZXJ0LmNyYWdpZUBncmlkbWVyZ2UuY29tMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAtuQTYz8HUA37wa1PMyVnREeRwT3jtzGO6epyiCCaVeJkP76G
KdnNapg0jyuzDfRqSMW0n570toMF9FTpD34hDvtHcnMDboU7MSKFV2VyOOlTB3eHJfRn2Jtl
o9mSeW1qIIOwRReV6v50OxmijmeGFAn82Y1QrtyKDQxhl0HhEmY4jonziMyQ5gKlO5TM+CxY
hV0zXCLHfp9QjLG7bwZx6F0ChSHvRaf5ZlLKQSI2BGAx/GtP5l4ME7+kq4icmbV0g6m1AH9Y
LYYKV9rOx9SilPpTJdwn7GY/Qop4VSmdsaDBlXieBbjKqPN/CEqFmlxjjPFihorkeyC1T2R5
CqB41QIDAQABozgwNjAmBgNVHREEHzAdgRtyb2JlcnQuY3JhZ2llQGdyaWRtZXJnZS5jb20w
DAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUFAAOBgQCTQ5bjbW8th9Yy/xbAgmc070Y/DLPR
RwOu51zamGFNffSpiPDJsLg4Bu9QZqhDylPm3AriHGp9MVL8Ei4h5krygmgHLE0mNYFsJt35
90wdK7z3dXtV/nOD0+rFR6Y9oUGf916rO0madex0KbosqrUuZ1NGVh/Q5/7H0mAEg+1EWzCC
AvAwggJZoAMCAQICEHQVhhxGmCATv+IPne+OkB8wDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UE
BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMT
I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA5MDgyOTE2NTcwM1oX
DTEwMDgyOTE2NTcwM1owTTEfMB0GA1UEAxMWVGhhd3RlIEZyZWVtYWlsIE1lbWJlcjEqMCgG
CSqGSIb3DQEJARYbcm9iZXJ0LmNyYWdpZUBncmlkbWVyZ2UuY29tMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAtuQTYz8HUA37wa1PMyVnREeRwT3jtzGO6epyiCCaVeJkP76G
KdnNapg0jyuzDfRqSMW0n570toMF9FTpD34hDvtHcnMDboU7MSKFV2VyOOlTB3eHJfRn2Jtl
o9mSeW1qIIOwRReV6v50OxmijmeGFAn82Y1QrtyKDQxhl0HhEmY4jonziMyQ5gKlO5TM+CxY
hV0zXCLHfp9QjLG7bwZx6F0ChSHvRaf5ZlLKQSI2BGAx/GtP5l4ME7+kq4icmbV0g6m1AH9Y
LYYKV9rOx9SilPpTJdwn7GY/Qop4VSmdsaDBlXieBbjKqPN/CEqFmlxjjPFihorkeyC1T2R5
CqB41QIDAQABozgwNjAmBgNVHREEHzAdgRtyb2JlcnQuY3JhZ2llQGdyaWRtZXJnZS5jb20w
DAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUFAAOBgQCTQ5bjbW8th9Yy/xbAgmc070Y/DLPR
RwOu51zamGFNffSpiPDJsLg4Bu9QZqhDylPm3AriHGp9MVL8Ei4h5krygmgHLE0mNYFsJt35
90wdK7z3dXtV/nOD0+rFR6Y9oUGf916rO0madex0KbosqrUuZ1NGVh/Q5/7H0mAEg+1EWzCC
Az8wggKooAMCAQICAQ0wDQYJKoZIhvcNAQEFBQAwgdExCzAJBgNVBAYTAlpBMRUwEwYDVQQI
EwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhhd3RlIENv
bnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xJDAi
BgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVy
c29uYWwtZnJlZW1haWxAdGhhd3RlLmNvbTAeFw0wMzA3MTcwMDAwMDBaFw0xMzA3MTYyMzU5
NTlaMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBM
dGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxKY8VXNV+065yplaHmjAdQRwnd/p/6Me7L3N9Vvy
Gna9fww6YfK/Uc4B1OVQCjDXAmNaLIkVcI7dyfArhVqqP3FWy688Cwfn8R+RNiQqE88r1fOC
dz0Dviv+uxg+B79AgAJk16emu59l0cUqVIUPSAR/p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCB
kTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwudGhh
d3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWlsQ0EuY3JsMAsGA1UdDwQEAwIBBjApBgNV
HREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxhYmVsMi0xMzgwDQYJKoZIhvcNAQEFBQAD
gYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/TCG4+DYfqi2fNi/A9BxQIJNwPP2t4WFi
w9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amcOY6MIE9lX5Xa9/eH1sYITq726jTlEBpb
NU1341YheILcIRk13iSx0x1G/11fZU8xggNxMIIDbQIBATB2MGIxCzAJBgNVBAYTAlpBMSUw
IwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUg
UGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQdBWGHEaYIBO/4g+d746QHzAJBgUrDgMC
GgUAoIIB0DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA2
MDMxOTU5MTBaMCMGCSqGSIb3DQEJBDEWBBTweW2Dor4dZR7U0Xm7u5gyX2IH/jBfBgkqhkiG
9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYI
KoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwgYUGCSsGAQQBgjcQBDF4MHYw
YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x
LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpgg
E7/iD53vjpAfMIGHBgsqhkiG9w0BCRACCzF4oHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpggE7/iD53vjpAfMA0GCSqGSIb3DQEBAQUA
BIIBAKHmkFxudCROJsm3pzS1QlCwOP+8mK9p11PaBROpXAEBJxz/vTMfMZvK5PTrJBW6txui
rAunN1R1MO2vk7slB7brz8Z39gA1qEyMueBZ4DunfZfAVYODb7PVLbYxbr2s9/GTwSxTK1EK
8AKIBVLYktdhL96nDltR38HWS8fctHjLRQWddz3bY5dVo6WLKNH6ZHUH51VDIRAnRR00RSnN
Zylr8je9br5xGD6gcEtAost1scE6HCEic7r/pMfmMObzUeyjZXAIrtgVuQ+s08X81zz0oNef
rHKImczmlGGQ/Q0Jt3M6q7otJ56yDB9zSjwOIBPfhH6j/2Usc3oG4jrJfAIAAAAAAAA=
--------------ms050601090309060701090208--

From robby.simpson@ge.com  Thu Jun  3 13:57:44 2010
Return-Path: <robby.simpson@ge.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C79AF3A6A2A for <core@core3.amsl.com>; Thu,  3 Jun 2010 13:57:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.999
X-Spam-Level: 
X-Spam-Status: No, score=-3.999 tagged_above=-999 required=5 tests=[BAYES_50=0.001, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3yMO4JTRcJSM for <core@core3.amsl.com>; Thu,  3 Jun 2010 13:57:43 -0700 (PDT)
Received: from exprod5og113.obsmtp.com (exprod5og113.obsmtp.com [64.18.0.26]) by core3.amsl.com (Postfix) with ESMTP id 37EFD3A6A2F for <core@ietf.org>; Thu,  3 Jun 2010 13:57:42 -0700 (PDT)
Received: from source ([12.43.191.1]) (using TLSv1) by exprod5ob113.postini.com ([64.18.4.12]) with SMTP ID DSNKTAgXOGbUduzdnWhMQnYL1pDO+asfrt+E@postini.com; Thu, 03 Jun 2010 13:57:30 PDT
Received: from unknown (HELO cinmlef07.e2k.ad.ge.com) ([3.159.213.38]) by Alpmlip05.e2k.ad.ge.com with ESMTP; 03 Jun 2010 16:57:27 -0400
Received: from ALPMLVEM04.e2k.ad.ge.com ([3.159.17.50]) by cinmlef07.e2k.ad.ge.com with Microsoft SMTPSVC(6.0.3790.4675);  Thu, 3 Jun 2010 16:57:27 -0400
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Thu, 3 Jun 2010 16:56:52 -0400
Message-ID: <A61BB3A241E6E64D86C58237F6DC1A1802A41FEB@ALPMLVEM04.e2k.ad.ge.com>
In-Reply-To: <05C6A38D732F1144A8C4016BA4416BFE02E4A976@SPO-EXVS-02.itron.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] Subscribe/Notify for CoAP
thread-index: AcsDOw5dFGO2HpTKSbWKaNfAXg1daAAAFT/wAAjIeGA=
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com><001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de><4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<DE269E16-0F99-493B-A19D-6AAD50B140FE@sensinode.com>	<05C6A38D732F1144A8C4016BA4416BFE02E4A8DC@SPO-EXVS-02.itron.com><4C07D108.3040509@sensinode.com><4C07DA41.8030202@stpeter.im> <05C6A38D732F1144A8C4016BA4416BFE02E4A976@SPO-EXVS-02.itron.com>
From: "Simpson, Robby (GE Energy Services)" <robby.simpson@ge.com>
To: <core@ietf.org>
X-OriginalArrivalTime: 03 Jun 2010 20:57:27.0058 (UTC) FILETIME=[5F952F20:01CB035F]
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 20:57:44 -0000

_IF_ HTTP mapping is a priority, then I believe defining new methods for
SUBSCRIBE and/or NOTIFY is problematic.

As many have already pointed out, there are a plethora of
Subscribe/Notify mechanisms built on top of HTTP, often with differing
design goals.  Should CoAp define its own SUBSCRIBE and/or NOTIFY
methods, then painstaking mappings of the plethora for HTTP will need to
be made -- something that is going to be painful, problematic, costly at
translation points, and (IMO) somewhat of a layer violation.

On the other hand, if CoAp sticks to the HTTP methods, then it should
natively be able to support the plethora of HTTP mechanisms, and will
allow for differing design goals without having to pick a single rigid
mechanism.  For instance, should there be a single notification resource
vs a notification method, vs ...

- Robby


-----Original Message-----
From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
Stuber, Michael
Sent: Thursday, June 03, 2010 12:42 PM
To: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP

CoAp specific.  My point is that a single CoAp specific method could be
mapped to wide variety of HTTP mechanisms if desired.  I don't think
there is any need for yet another HTTP sub/notify mechanism, and it
certainly isn't in our charter to define one.

-----Original Message-----
From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
Peter Saint-Andre
Sent: Thursday, June 03, 2010 9:37 AM
To: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP

On 6/3/10 9:58 AM, Mikko Saarnivala wrote:
> On 3.6.2010 18:17, Stuber, Michael wrote:
>> +1.
>>
>> The joy (and curse) of simple protocols is that you can encapsulate=20
>> just about anything in them.  I think Zach's point about the wide=20
>> variety of mechanisms for doing sub/notify over HTTP is dead on.  For

>> interoperability in a constrained world, I would prefer a=20
>> light-weight native mechanism.  If a given application space settles=20
>> on a particular sub/notify paradigm for HTTP, they can build the=20
>> translation between the one they like and CoAp into their gateway.
>> Apps that run CoAp end to end will have a clean, consistent, native
way of doing sub/notify.
>=20
> +1 - I completely agree

Does this imply that this group will define a new HTTP method for
sub/notify or a CoAp-specific method? If the latter, will this group use
HTTP methods for everything else?

Just curious to see where we stand on HTTP-native vs. CoAp-specific. I
freely admit that I might have missed the relevant discussion this list.

Peter

--
Peter Saint-Andre
https://stpeter.im/



_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core

From Michael.Stuber@itron.com  Thu Jun  3 14:00:39 2010
Return-Path: <Michael.Stuber@itron.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 4784B3A6818 for <core@core3.amsl.com>; Thu,  3 Jun 2010 14:00:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.463
X-Spam-Level: 
X-Spam-Status: No, score=-0.463 tagged_above=-999 required=5 tests=[AWL=-0.465, BAYES_50=0.001, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wTT8iojwpDIZ for <core@core3.amsl.com>; Thu,  3 Jun 2010 14:00:31 -0700 (PDT)
Received: from mailer-1.itron.com (mailer-1.itron.com [198.182.8.121]) by core3.amsl.com (Postfix) with ESMTP id 6602B3A68CE for <core@ietf.org>; Thu,  3 Jun 2010 14:00:31 -0700 (PDT)
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01CB035F.C543B179"
Date: Thu, 3 Jun 2010 14:00:17 -0700
Message-ID: <05C6A38D732F1144A8C4016BA4416BFE02E4AB3E@SPO-EXVS-02.itron.com>
In-Reply-To: <4C08098E.50305@gridmerge.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] Subscribe/Notify for CoAP
Thread-Index: AcsDV0eai0tHILLwT8eoyrwGj7f88gAA9auA
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>	<4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com> <4C08098E.50305@gridmerge.com>
From: "Stuber, Michael" <Michael.Stuber@itron.com>
To: <core@ietf.org>
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 21:00:39 -0000

This is a multi-part message in MIME format.

------_=_NextPart_001_01CB035F.C543B179
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

I think you've captured it well, though my hope is that the transaction
models aren't actually that far apart.  Clearly I favor approach #2.  I
don't believe we need HTTP for embedded.  If folks want HTTP for
embedded devices, run HTTP, and tune it as much as you reasonable can.
I believe we need a protocol that addresses the unique needs of the
embedded/constrained space as a primary goal.  Mapping to HTTP is
necessary and desired, as it allows these devices to easily tie into the
larger internet, but it is reasonable to expect that the device that
bridges the gap should have the resources to facilitate the conversion.

=20

From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
Robert Cragie
Sent: Thursday, June 03, 2010 12:59 PM
To: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP

=20

HTTP was designed to work on a synchronous client/server model. Whilst
that may suit desktop PC's running browsers and servers running httpd,
it is not entirely appropriate for M2M. The plethora of schemes to
implement push processing for HTTP (all incompatible) goes to show that
there is no one clean solution for this and most of the ones I have
looked at are no more than ingenious kludges to get HTTP to do something
it isn't used to doing. A lot of them already use HTTP asynchronously,
thus moving away from the traditional usage model. Even then, most of
them are there to service server-to-server transactions or web mashups
etc. and don't really address the requirements for distributed control
entities e.g. sensors and actuators (to use abstract terms), especially
those built on constrained embedded systems.

We seem to be at a fork in the road now with the two paths of:

1.	Basing CoAP on the HTTP transaction model
2.	Basing CoAP on a more typical M2M transaction model

The advantage of using (1) would be an easier job at a gateway node. The
clear disadvantage of (1) is that it doesn't map well to the threading
models typically used in embedded systems (see my earlier post). It
could be made to map but there will inevitably have to be some
additional specification over the underlying communication to fit
embedded device models. This will then become in effect yet another
RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).

The advantage of (2) is that it gives an opportunity to model
transactions more closely to those typical to an embedded environment.
There is nothing to prevent this model extending into the web generally
using translations at a gateway or indeed building wider CoAP systems in
the internet which can handle the asynchronous multi-threaded
transaction models natively.

In a nutshell, using (1) is propagating the status quo, which is by no
means a bad thing, but I am not sure if it is appropriate for CORE. (2)
is acknowledging the unique properties of constrained and embedded
environments and building a transaction model more appropriate to such
devices.

Robert

Robert Cragie (Pacific Gas & Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
http://www.gridmerge.com <http://www.gridmerge.com/>=20


On 03/06/2010 3:31 AM, Richard Kelsey wrote:=20

	Date: Wed, 02 Jun 2010 20:17:17 -0400
	From: Paul Duffy <paduffy@cisco.com> <mailto:paduffy@cisco.com>=20
	=20
	My understanding is that COAP is directed to the WEB of things.
I take=20
	that to mean going with the grain of pervasively  deployed WEB=20
	infrastructure.  Unless there is an overwhelming compelling
reason to do=20
	otherwise, IMO COAP needs to implement a strict subset of HTTP=20
	semantics.  Otherwise, we open the door to complexity re:
translating=20
	HTTP/COAP, and history has shown complex app gateways will
always be a=20
	challenge.
	=20
	There are several ways to support pub/sub using stock HTTP
methods.  I=20
	suggest we do so.
	   =20

Given the variety of ways people do pub/sub using stock HTTP
methods, it isn't clear that we can keep both COAP and the
COAP/HTTP gateways simple while still supporting multiple
pub/sub methods on the HTTP side.  By making the translation
of one form of HTTP pub/sub easy, we could easily make the
translation of others harder.
=20
If we want to have COAP/HTTP gateways that support different
HTTP pub/sub methods, then it might be better to add pub/sub
to COAP directly, in a way that is not a strict subset of
HTTP.
=20
Do we support several ways of doing pub/sub in HTTP, or just
one?  If we do pick just one, can others be easily translated
into it?
                                -Richard Kelsey
_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
 =20

------_=_NextPart_001_01CB035F.C543B179
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:x=3D"urn:schemas-microsoft-com:office:excel" =
xmlns:p=3D"urn:schemas-microsoft-com:office:powerpoint" =
xmlns:a=3D"urn:schemas-microsoft-com:office:access" =
xmlns:dt=3D"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" =
xmlns:s=3D"uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" =
xmlns:rs=3D"urn:schemas-microsoft-com:rowset" xmlns:z=3D"#RowsetSchema" =
xmlns:b=3D"urn:schemas-microsoft-com:office:publisher" =
xmlns:ss=3D"urn:schemas-microsoft-com:office:spreadsheet" =
xmlns:c=3D"urn:schemas-microsoft-com:office:component:spreadsheet" =
xmlns:odc=3D"urn:schemas-microsoft-com:office:odc" =
xmlns:oa=3D"urn:schemas-microsoft-com:office:activation" =
xmlns:html=3D"http://www.w3.org/TR/REC-html40" =
xmlns:q=3D"http://schemas.xmlsoap.org/soap/envelope/" =
xmlns:rtc=3D"http://microsoft.com/officenet/conferencing" =
xmlns:D=3D"DAV:" xmlns:Repl=3D"http://schemas.microsoft.com/repl/" =
xmlns:mt=3D"http://schemas.microsoft.com/sharepoint/soap/meetings/" =
xmlns:x2=3D"http://schemas.microsoft.com/office/excel/2003/xml" =
xmlns:ppda=3D"http://www.passport.com/NameSpace.xsd" =
xmlns:ois=3D"http://schemas.microsoft.com/sharepoint/soap/ois/" =
xmlns:dir=3D"http://schemas.microsoft.com/sharepoint/soap/directory/" =
xmlns:ds=3D"http://www.w3.org/2000/09/xmldsig#" =
xmlns:dsp=3D"http://schemas.microsoft.com/sharepoint/dsp" =
xmlns:udc=3D"http://schemas.microsoft.com/data/udc" =
xmlns:xsd=3D"http://www.w3.org/2001/XMLSchema" =
xmlns:sub=3D"http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/"=
 xmlns:ec=3D"http://www.w3.org/2001/04/xmlenc#" =
xmlns:sp=3D"http://schemas.microsoft.com/sharepoint/" =
xmlns:sps=3D"http://schemas.microsoft.com/sharepoint/soap/" =
xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance" =
xmlns:udcs=3D"http://schemas.microsoft.com/data/udc/soap" =
xmlns:udcxf=3D"http://schemas.microsoft.com/data/udc/xmlfile" =
xmlns:udcp2p=3D"http://schemas.microsoft.com/data/udc/parttopart" =
xmlns:wf=3D"http://schemas.microsoft.com/sharepoint/soap/workflow/" =
xmlns:dsss=3D"http://schemas.microsoft.com/office/2006/digsig-setup" =
xmlns:dssi=3D"http://schemas.microsoft.com/office/2006/digsig" =
xmlns:mdssi=3D"http://schemas.openxmlformats.org/package/2006/digital-sig=
nature" =
xmlns:mver=3D"http://schemas.openxmlformats.org/markup-compatibility/2006=
" xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns:mrels=3D"http://schemas.openxmlformats.org/package/2006/relationshi=
ps" xmlns:spwp=3D"http://microsoft.com/sharepoint/webpartpages" =
xmlns:ex12t=3D"http://schemas.microsoft.com/exchange/services/2006/types"=
 =
xmlns:ex12m=3D"http://schemas.microsoft.com/exchange/services/2006/messag=
es" =
xmlns:pptsl=3D"http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/=
" =
xmlns:spsl=3D"http://microsoft.com/webservices/SharePointPortalServer/Pub=
lishedLinksService" xmlns:Z=3D"urn:schemas-microsoft-com:" =
xmlns:st=3D"&#1;" xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii">
<meta name=3DGenerator content=3D"Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:"MS Mincho";
	panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
	{font-family:"MS Mincho";
	panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:Verdana;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:"\@MS Mincho";
	panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p
	{mso-style-priority:99;
	mso-margin-top-alt:auto;
	margin-right:0in;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	font-size:8.0pt;
	font-family:"Verdana","sans-serif";
	color:black;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
p.name, li.name, div.name
	{mso-style-name:name;
	mso-margin-top-alt:auto;
	margin-right:0in;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	font-size:12.0pt;
	font-family:"Verdana","sans-serif";
	color:black;}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted";
	font-family:Consolas;
	color:black;}
span.EmailStyle21
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
	{page:Section1;}
 /* List Definitions */
 @list l0
	{mso-list-id:642004732;
	mso-list-template-ids:834581296;}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body bgcolor=3Dwhite lang=3DEN-US link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I think you&#8217;ve captured it well, though my hope is =
that
the transaction models aren&#8217;t actually that far apart.&nbsp; =
Clearly I favor
approach #2.&nbsp; I don&#8217;t believe we need HTTP for =
embedded.&nbsp; If
folks want HTTP for embedded devices, run HTTP, and tune it as much as =
you
reasonable can.&nbsp; I believe we need a protocol that addresses the =
unique
needs of the embedded/constrained space as a primary goal.&nbsp; Mapping =
to
HTTP is necessary and desired, as it allows these devices to easily tie =
into
the larger internet, but it is reasonable to expect that the device that
bridges the gap should have the resources to facilitate the =
conversion.<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div>

<div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt =
0in 0in 0in'>

<p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif";
color:windowtext'>From:</span></b><span =
style=3D'font-size:10.0pt;font-family:
"Tahoma","sans-serif";color:windowtext'> core-bounces@ietf.org
[mailto:core-bounces@ietf.org] <b>On Behalf Of </b>Robert Cragie<br>
<b>Sent:</b> Thursday, June 03, 2010 12:59 PM<br>
<b>To:</b> core@ietf.org<br>
<b>Subject:</b> Re: [core] Subscribe/Notify for =
CoAP<o:p></o:p></span></p>

</div>

</div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

<p class=3DMsoNormal>HTTP was designed to work on a synchronous =
client/server
model. Whilst that may suit desktop PC's running browsers and servers =
running
httpd, it is not entirely appropriate for M2M. The plethora of schemes =
to
implement push processing for HTTP (all incompatible) goes to show that =
there
is no one clean solution for this and most of the ones I have looked at =
are no
more than ingenious kludges to get HTTP to do something it isn't used to =
doing.
A lot of them already use HTTP asynchronously, thus moving away from the
traditional usage model. Even then, most of them are there to service
server-to-server transactions or web mashups etc. and don't really =
address the
requirements for distributed control entities e.g. sensors and actuators =
(to
use abstract terms), especially those built on constrained embedded =
systems.<br>
<br>
We seem to be at a fork in the road now with the two paths =
of:<o:p></o:p></p>

<ol start=3D1 type=3D1>
 <li class=3DMsoNormal =
style=3D'mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l0 level1 lfo1'>Basing CoAP on the HTTP transaction =
model<o:p></o:p></li>
 <li class=3DMsoNormal =
style=3D'mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l0 level1 lfo1'>Basing CoAP on a more typical M2M =
transaction
     model<o:p></o:p></li>
</ol>

<p class=3DMsoNormal>The advantage of using (1) would be an easier job =
at a
gateway node. The clear disadvantage of (1) is that it doesn't map well =
to the
threading models typically used in embedded systems (see my earlier =
post). It
could be made to map but there will inevitably have to be some =
additional
specification over the underlying communication to fit embedded device =
models.
This will then become in effect yet another =
RestMS/PubSubHubbub/Webhooks/RMS
(see Vlad Trifa's post).<br>
<br>
The advantage of (2) is that it gives an opportunity to model =
transactions more
closely to those typical to an embedded environment. There is nothing to =
prevent
this model extending into the web generally using translations at a =
gateway or
indeed building wider CoAP systems in the internet which can handle the
asynchronous multi-threaded transaction models natively.<br>
<br>
In a nutshell, using (1) is propagating the status quo, which is by no =
means a
bad thing, but I am not sure if it is appropriate for CORE. (2) is
acknowledging the unique properties of constrained and embedded =
environments
and building a transaction model more appropriate to such devices.<br>
<br>
Robert<o:p></o:p></p>

<div>

<p class=3Dname>Robert Cragie (Pacific Gas &amp; =
Electric)<o:p></o:p></p>

<p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
<a =
href=3D"http://www.gridmerge.com/">http://www.gridmerge.com</a><o:p></o:p=
></p>

</div>

<p class=3DMsoNormal><br>
On 03/06/2010 3:31 AM, Richard Kelsey wrote: <o:p></o:p></p>

<blockquote style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><pre>Date: =
Wed, 02 Jun 2010 20:17:17 -0400<o:p></o:p></pre><pre>From: Paul Duffy <a
href=3D"mailto:paduffy@cisco.com">&lt;paduffy@cisco.com&gt;</a><o:p></o:p=
></pre><pre><o:p>&nbsp;</o:p></pre><pre>My understanding is that COAP is =
directed to the WEB of things.&nbsp; I take <o:p></o:p></pre><pre>that =
to mean going with the grain of pervasively&nbsp; deployed WEB =
<o:p></o:p></pre><pre>infrastructure.&nbsp; Unless there is an =
overwhelming compelling reason to do <o:p></o:p></pre><pre>otherwise, =
IMO COAP needs to implement a strict subset of HTTP =
<o:p></o:p></pre><pre>semantics.&nbsp; Otherwise, we open the door to =
complexity re: translating <o:p></o:p></pre><pre>HTTP/COAP, and history =
has shown complex app gateways will always be a =
<o:p></o:p></pre><pre>challenge.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></=
pre><pre>There are several ways to support pub/sub using stock HTTP =
methods.&nbsp; I <o:p></o:p></pre><pre>suggest we do =
so.<o:p></o:p></pre><pre>&nbsp;&nbsp;&nbsp; =
<o:p></o:p></pre></blockquote>

<pre>Given the variety of ways people do pub/sub using stock =
HTTP<o:p></o:p></pre><pre>methods, it isn't clear that we can keep both =
COAP and the<o:p></o:p></pre><pre>COAP/HTTP gateways simple while still =
supporting multiple<o:p></o:p></pre><pre>pub/sub methods on the HTTP =
side.&nbsp; By making the translation<o:p></o:p></pre><pre>of one form =
of HTTP pub/sub easy, we could easily make =
the<o:p></o:p></pre><pre>translation of others =
harder.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>If we want to =
have COAP/HTTP gateways that support different<o:p></o:p></pre><pre>HTTP =
pub/sub methods, then it might be better to add =
pub/sub<o:p></o:p></pre><pre>to COAP directly, in a way that is not a =
strict subset =
of<o:p></o:p></pre><pre>HTTP.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre=
><pre>Do we support several ways of doing pub/sub in HTTP, or =
just<o:p></o:p></pre><pre>one?&nbsp; If we do pick just one, can others =
be easily translated<o:p></o:p></pre><pre>into =
it?<o:p></o:p></pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
-Richard =
Kelsey<o:p></o:p></pre><pre>_____________________________________________=
__<o:p></o:p></pre><pre>core mailing list<o:p></o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e>&nbsp; <o:p></o:p></pre></div>

</body>

</html>

------_=_NextPart_001_01CB035F.C543B179--

From paduffy@cisco.com  Thu Jun  3 15:48:52 2010
Return-Path: <paduffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 0562E3A6A29 for <core@core3.amsl.com>; Thu,  3 Jun 2010 15:48:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.848
X-Spam-Level: 
X-Spam-Status: No, score=-6.848 tagged_above=-999 required=5 tests=[AWL=1.150,  BAYES_50=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1+4EuepbTUOg for <core@core3.amsl.com>; Thu,  3 Jun 2010 15:48:49 -0700 (PDT)
Received: from rtp-iport-1.cisco.com (rtp-iport-1.cisco.com [64.102.122.148]) by core3.amsl.com (Postfix) with ESMTP id 0CBCF3A69FD for <core@ietf.org>; Thu,  3 Jun 2010 15:48:48 -0700 (PDT)
Authentication-Results: rtp-iport-1.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AlEFAIbNB0xAZnwM/2dsb2JhbACBQYFamxdxpROBdAsBhwsKkH2Cc4E2bQQ
X-IronPort-AV: E=Sophos;i="4.53,357,1272844800";  d="scan'208,217";a="117765889"
Received: from rtp-core-1.cisco.com ([64.102.124.12]) by rtp-iport-1.cisco.com with ESMTP; 03 Jun 2010 22:48:35 +0000
Received: from [161.44.65.108] ([161.44.65.108]) by rtp-core-1.cisco.com (8.13.8/8.14.3) with ESMTP id o53MmZBa022278 for <core@ietf.org>; Thu, 3 Jun 2010 22:48:35 GMT
Message-ID: <4C083143.1060905@cisco.com>
Date: Thu, 03 Jun 2010 18:48:35 -0400
From: Paul Duffy <paduffy@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>	<4C06F48D.1020600@cisco.com>	<87vda0u9ry.fsf@kelsey-ws.hq.ember.com> <4C08098E.50305@gridmerge.com>
In-Reply-To: <4C08098E.50305@gridmerge.com>
Content-Type: multipart/alternative; boundary="------------040208000001090804070807"
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: paduffy@cisco.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 03 Jun 2010 22:48:52 -0000

This is a multi-part message in MIME format.
--------------040208000001090804070807
Content-Type: text/plain; charset=windows-1251; format=flowed
Content-Transfer-Encoding: 7bit

We seem to be at a fork in the road now with the two paths of:
>
>    1. Basing CoAP on the HTTP transaction model
>    2. Basing CoAP on a more typical M2M transaction model
>
> The advantage of using (1) would be an easier job at a gateway node. 
> The clear disadvantage of (1) is that it doesn't map well to the 
> threading models typically used in embedded systems (see my earlier 
> post). It could be made to map but there will inevitably have to be 
> some additional specification over the underlying communication to fit 
> embedded device models. This will then become in effect yet another 
> RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).
>
> The advantage of (2) is that it gives an opportunity to model 
> transactions more closely to those typical to an embedded environment. 
> There is nothing to prevent this model extending into the web 
> generally using translations at a gateway or indeed building wider 
> CoAP systems in the internet which can handle the asynchronous 
> multi-threaded transaction models natively.
>
> In a nutshell, using (1) is propagating the status quo, which is by no 
> means a bad thing, 

Which is my main issue.

1. HTTP semantics are not a perfect fit, but IMO (like it or not) the 
WEB of things needs to align with those semantics (warts and all).  Its 
a close enough, good enough fit.

2. Subscriptions are resources.  They are created, have a lifetime, can 
be enumerated, and are destroyed.  From coap-2 "servers keep track of 
subscriptions...", "a subscription SHOULD be removed...", etc.  
Subscriptions are resources.

Example. I use SUBSCRIBE to create a subscription.  Would I subsequently 
do GET to enumerate?  DELETE to remove?  PUT to modify?  SUBSCRIBE 
method seems a RESTfully twisted special case of POST.

Cheers


> but I am not sure if it is appropriate for CORE. (2) is acknowledging 
> the unique properties of constrained and embedded environments and 
> building a transaction model more appropriate to such devices.
>
> Robert
>
> Robert Cragie (Pacific Gas & Electric)
>
> Gridmerge Ltd.
> 89 Greenfield Crescent,
> Wakefield, WF4 4WA, UK
> +44 1924 910888
> +1 415 513 0064
> http://www.gridmerge.com <http://www.gridmerge.com/>
>
>
> On 03/06/2010 3:31 AM, Richard Kelsey wrote:
>>> Date: Wed, 02 Jun 2010 20:17:17 -0400
>>> From: Paul Duffy<paduffy@cisco.com>
>>>
>>> My understanding is that COAP is directed to the WEB of things.  I take
>>> that to mean going with the grain of pervasively  deployed WEB
>>> infrastructure.  Unless there is an overwhelming compelling reason to do
>>> otherwise, IMO COAP needs to implement a strict subset of HTTP
>>> semantics.  Otherwise, we open the door to complexity re: translating
>>> HTTP/COAP, and history has shown complex app gateways will always be a
>>> challenge.
>>>
>>> There are several ways to support pub/sub using stock HTTP methods.  I
>>> suggest we do so.
>>>      
>> Given the variety of ways people do pub/sub using stock HTTP
>> methods, it isn't clear that we can keep both COAP and the
>> COAP/HTTP gateways simple while still supporting multiple
>> pub/sub methods on the HTTP side.  By making the translation
>> of one form of HTTP pub/sub easy, we could easily make the
>> translation of others harder.
>>
>> If we want to have COAP/HTTP gateways that support different
>> HTTP pub/sub methods, then it might be better to add pub/sub
>> to COAP directly, in a way that is not a strict subset of
>> HTTP.
>>
>> Do we support several ways of doing pub/sub in HTTP, or just
>> one?  If we do pick just one, can others be easily translated
>> into it?
>>                                  -Richard Kelsey
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>
>>    
>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>    


--------------040208000001090804070807
Content-Type: text/html; charset=windows-1251
Content-Transfer-Encoding: 8bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=windows-1251"
 http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
We seem to be at a
fork in the road now with the two paths of:<br>
<blockquote cite="mid:4C08098E.50305@gridmerge.com" type="cite">
  <ol>
    <li>Basing CoAP on the HTTP transaction model</li>
    <li>Basing CoAP on a more typical M2M transaction model</li>
  </ol>
The advantage of using (1) would be an easier job at a gateway node.
The clear disadvantage of (1) is that it
doesn't map well to the threading models typically used in embedded
systems (see my earlier post). It could be made to map but there will
inevitably have to be some additional specification over the underlying
communication to fit embedded device models. This will then become in
effect yet
another RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).<br>
  <br>
The advantage of (2) is that it gives an opportunity to model
transactions more closely to those typical to an embedded environment.
There is nothing to prevent this model extending into the web generally
using translations at a gateway or indeed building wider CoAP systems
in the internet which can handle the asynchronous multi-threaded
transaction models natively.<br>
  <br>
In a nutshell, using (1) is propagating the status quo, which is by no
means a bad thing, </blockquote>
<br>
Which is my main issue.<br>
<br>
1. HTTP semantics are not a perfect fit, but IMO (like it or not) the
WEB of things needs to align with those semantics (warts and all).  Its
a close enough, good enough fit.<br>
<br>
2. Subscriptions are resources.  They are created, have a lifetime, can
be enumerated, and are destroyed.  From coap-2 "servers keep track of
subscriptions...", "a subscription SHOULD be removed...", etc. 
Subscriptions are resources. <br>
<br>
Example. I use SUBSCRIBE to create a subscription.  Would I
subsequently do GET to enumerate?  DELETE to remove?  PUT to modify? 
SUBSCRIBE method seems a RESTfully twisted special case of POST.<br>
<br>
Cheers<br>
<br>
<br>
<blockquote cite="mid:4C08098E.50305@gridmerge.com" type="cite">but I
am not sure if it is appropriate for CORE. (2)
is acknowledging the unique properties of constrained and embedded
environments and building a transaction model more appropriate to such
devices.<br>
  <br>
Robert<br>
  <div class="moz-signature">
  <style type="text/css">
p
{
font-family:Verdana,Arial,sans-serif;
font-size:8pt;
}
.name
{
font-size:12pt;
}
  </style>
  <p class="name">Robert Cragie (Pacific Gas &amp; Electric)</p>
  <p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
  <a moz-do-not-send="true" href="http://www.gridmerge.com/">http://www.gridmerge.com</a></p>
  </div>
  <br>
On 03/06/2010 3:31 AM, Richard Kelsey wrote:
  <blockquote cite="mid:87vda0u9ry.fsf@kelsey-ws.hq.ember.com"
 type="cite">
    <blockquote type="cite">
      <pre wrap="">Date: Wed, 02 Jun 2010 20:17:17 -0400
From: Paul Duffy <a moz-do-not-send="true" class="moz-txt-link-rfc2396E"
 href="mailto:paduffy@cisco.com">&lt;paduffy@cisco.com&gt;</a>

My understanding is that COAP is directed to the WEB of things.  I take 
that to mean going with the grain of pervasively  deployed WEB 
infrastructure.  Unless there is an overwhelming compelling reason to do 
otherwise, IMO COAP needs to implement a strict subset of HTTP 
semantics.  Otherwise, we open the door to complexity re: translating 
HTTP/COAP, and history has shown complex app gateways will always be a 
challenge.

There are several ways to support pub/sub using stock HTTP methods.  I 
suggest we do so.
    </pre>
    </blockquote>
    <pre wrap="">Given the variety of ways people do pub/sub using stock HTTP
methods, it isn't clear that we can keep both COAP and the
COAP/HTTP gateways simple while still supporting multiple
pub/sub methods on the HTTP side.  By making the translation
of one form of HTTP pub/sub easy, we could easily make the
translation of others harder.

If we want to have COAP/HTTP gateways that support different
HTTP pub/sub methods, then it might be better to add pub/sub
to COAP directly, in a way that is not a strict subset of
HTTP.

Do we support several ways of doing pub/sub in HTTP, or just
one?  If we do pick just one, can others be easily translated
into it?
                                -Richard Kelsey
_______________________________________________
core mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated"
 href="mailto:core@ietf.org">core@ietf.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext"
 href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>

  </pre>
  </blockquote>
  <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
core mailing list
<a class="moz-txt-link-abbreviated" href="mailto:core@ietf.org">core@ietf.org</a>
<a class="moz-txt-link-freetext" href="https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
  </pre>
</blockquote>
<br>
</body>
</html>

--------------040208000001090804070807--

From trifa@inf.ethz.ch  Thu Jun  3 23:42:44 2010
Return-Path: <trifa@inf.ethz.ch>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1ABAA3A67B2 for <core@core3.amsl.com>; Thu,  3 Jun 2010 23:42:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0
X-Spam-Level: 
X-Spam-Status: No, score=x tagged_above=-999 required=5 tests=[]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q-Sfu3Zt6IeE for <core@core3.amsl.com>; Thu,  3 Jun 2010 23:42:43 -0700 (PDT)
Received: from gwse.ethz.ch (gwse.ethz.ch [129.132.178.237]) by core3.amsl.com (Postfix) with ESMTP id B38D33A6852 for <core@ietf.org>; Thu,  3 Jun 2010 23:42:35 -0700 (PDT)
Received: from CAS01.d.ethz.ch (129.132.178.235) by gws00.d.ethz.ch (129.132.178.237) with Microsoft SMTP Server (TLS) id 8.2.254.0; Fri, 4 Jun 2010 08:42:20 +0200
Received: from dyn1306.panoulu.local (212.50.147.101) by mail.ethz.ch (129.132.178.227) with Microsoft SMTP Server (TLS) id 8.2.254.0; Fri, 4 Jun 2010 08:42:18 +0200
Message-ID: <A8245CB1-FBCA-4FF2-9DB8-7C15720CCF30@inf.ethz.ch>
From: Vlad Trifa <trifa@inf.ethz.ch>
To: <core@ietf.org>
In-Reply-To: <05C6A38D732F1144A8C4016BA4416BFE02E4AB3E@SPO-EXVS-02.itron.com>
Content-Type: multipart/alternative; boundary="Apple-Mail-6-973792868"
MIME-Version: 1.0 (Apple Message framework v936)
Date: Fri, 4 Jun 2010 09:42:16 +0300
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>	<4C06F48D.1020600@cisco.com><87vda0u9ry.fsf@kelsey-ws.hq.ember.com> <4C08098E.50305@gridmerge.com> <05C6A38D732F1144A8C4016BA4416BFE02E4AB3E@SPO-EXVS-02.itron.com>
X-Mailer: Apple Mail (2.936)
X-Mailman-Approved-At: Fri, 04 Jun 2010 00:17:23 -0700
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 06:42:44 -0000

--Apple-Mail-6-973792868
Content-Type: text/plain; charset="WINDOWS-1252"; format=flowed; delsp=yes
Content-Transfer-Encoding: quoted-printable

Hi, sorry to join the discussion only now.

I think we should avoid explicitly defining a messaging/eventing =20
construction in coap which would be an "add-on" on top of http. HTTP =20
doesn't define any by design, but doesn't mean we can't use/create a =20
pattern that implements this behavior, and we just just propose the =20
pattern, not turn it into a design. It'd be more useful to stay as =20
close as possible to the original http/rest (unless the mapping to =20
http/web is more of an "nice-to-have"option that the motivation of =20
doing coap), which means it's great if we can show show how to =20
implement messaging on top of coap, but avoid inserting additional =20
verbs, etc that would not be directly part of http (thus making the =20
mapping between coap-http more complex).

We just wrote a paper on Web-based restful messaging for embedded =20
devices which will be presented next month at ICWE, and as it's highly =20=

relevant to this notification discussion thread, I thought I'd share =20
it here.




Please let me know your thoughts/comments/questions, thx!

Vlad


---
vlad m. trifa - institute for pervasive computing
swiss federal institute of technology, eth zurich
phone: +41 44 632 08 62 -- web: www.vladtrifa.com

On Jun 4, 2010, at 12:00 AM, Stuber, Michael wrote:

> I think you=92ve captured it well, though my hope is that the =20
> transaction models aren=92t actually that far apart.  Clearly I favor =20=

> approach #2.  I don=92t believe we need HTTP for embedded.  If folks =20=

> want HTTP for embedded devices, run HTTP, and tune it as much as you =20=

> reasonable can.  I believe we need a protocol that addresses the =20
> unique needs of the embedded/constrained space as a primary goal.  =20
> Mapping to HTTP is necessary and desired, as it allows these devices =20=

> to easily tie into the larger internet, but it is reasonable to =20
> expect that the device that bridges the gap should have the =20
> resources to facilitate the conversion.
>
> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf =20=

> Of Robert Cragie
> Sent: Thursday, June 03, 2010 12:59 PM
> To: core@ietf.org
> Subject: Re: [core] Subscribe/Notify for CoAP
>
> HTTP was designed to work on a synchronous client/server model. =20
> Whilst that may suit desktop PC's running browsers and servers =20
> running httpd, it is not entirely appropriate for M2M. The plethora =20=

> of schemes to implement push processing for HTTP (all incompatible) =20=

> goes to show that there is no one clean solution for this and most =20
> of the ones I have looked at are no more than ingenious kludges to =20
> get HTTP to do something it isn't used to doing. A lot of them =20
> already use HTTP asynchronously, thus moving away from the =20
> traditional usage model. Even then, most of them are there to =20
> service server-to-server transactions or web mashups etc. and don't =20=

> really address the requirements for distributed control entities =20
> e.g. sensors and actuators (to use abstract terms), especially those =20=

> built on constrained embedded systems.
>
> We seem to be at a fork in the road now with the two paths of:
> Basing CoAP on the HTTP transaction model
> Basing CoAP on a more typical M2M transaction model
> The advantage of using (1) would be an easier job at a gateway node. =20=

> The clear disadvantage of (1) is that it doesn't map well to the =20
> threading models typically used in embedded systems (see my earlier =20=

> post). It could be made to map but there will inevitably have to be =20=

> some additional specification over the underlying communication to =20
> fit embedded device models. This will then become in effect yet =20
> another RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).
>
> The advantage of (2) is that it gives an opportunity to model =20
> transactions more closely to those typical to an embedded =20
> environment. There is nothing to prevent this model extending into =20
> the web generally using translations at a gateway or indeed building =20=

> wider CoAP systems in the internet which can handle the asynchronous =20=

> multi-threaded transaction models natively.
>
> In a nutshell, using (1) is propagating the status quo, which is by =20=

> no means a bad thing, but I am not sure if it is appropriate for =20
> CORE. (2) is acknowledging the unique properties of constrained and =20=

> embedded environments and building a transaction model more =20
> appropriate to such devices.
>
> Robert
> Robert Cragie (Pacific Gas & Electric)
>
> Gridmerge Ltd.
> 89 Greenfield Crescent,
> Wakefield, WF4 4WA, UK
> +44 1924 910888
> +1 415 513 0064
> http://www.gridmerge.com
>
>
> On 03/06/2010 3:31 AM, Richard Kelsey wrote:
> Date: Wed, 02 Jun 2010 20:17:17 -0400
> From: Paul Duffy <paduffy@cisco.com>
>
> My understanding is that COAP is directed to the WEB of things.  I =20
> take
> that to mean going with the grain of pervasively  deployed WEB
> infrastructure.  Unless there is an overwhelming compelling reason =20
> to do
> otherwise, IMO COAP needs to implement a strict subset of HTTP
> semantics.  Otherwise, we open the door to complexity re: translating
> HTTP/COAP, and history has shown complex app gateways will always be a
> challenge.
>
> There are several ways to support pub/sub using stock HTTP methods.  I
> suggest we do so.
>
> Given the variety of ways people do pub/sub using stock HTTP
> methods, it isn't clear that we can keep both COAP and the
> COAP/HTTP gateways simple while still supporting multiple
> pub/sub methods on the HTTP side.  By making the translation
> of one form of HTTP pub/sub easy, we could easily make the
> translation of others harder.
>
> If we want to have COAP/HTTP gateways that support different
> HTTP pub/sub methods, then it might be better to add pub/sub
> to COAP directly, in a way that is not a strict subset of
> HTTP.
>
> Do we support several ways of doing pub/sub in HTTP, or just
> one?  If we do pick just one, can others be easily translated
> into it?
>                                 -Richard Kelsey
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core


--Apple-Mail-6-973792868
Content-Type: multipart/mixed; boundary="Apple-Mail-7-973792869"

--Apple-Mail-7-973792869
Content-Type: text/html; charset="US-ASCII"
Content-Transfer-Encoding: quoted-printable

<html><body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
-webkit-line-break: after-white-space; ">Hi, sorry to join the =
discussion only now.<br><br>I think we should avoid explicitly defining =
a messaging/eventing construction in coap which would be an "add-on" on =
top of http. HTTP doesn't define any by design, but doesn't mean we =
can't use/create a pattern that implements this behavior, and we just =
just propose the pattern, not turn it into a design. It'd be more useful =
to stay as close as possible to the original http/rest (unless the =
mapping to http/web is more of an "nice-to-have"option that the =
motivation of doing coap), which means it's great if we can show show =
how to implement messaging on top of coap, but avoid inserting =
additional verbs, etc that would not be directly part of http (thus =
making the mapping between coap-http more complex).<br><br>We just wrote =
a paper on Web-based restful messaging for embedded devices which will =
be presented next month at ICWE, and as it's highly relevant to this =
notification discussion thread, I thought I'd share it =
here.<br><br></body></html>=

--Apple-Mail-7-973792869
Content-Disposition: inline; filename="icwe2010.pdf"
Content-Type: application/pdf; x-unix-mode=0644; name="icwe2010.pdf"
Content-Transfer-Encoding: base64

JVBERi0xLjQKJdDUxdgKMyAwIG9iaiA8PAovTGVuZ3RoIDI2NDkgICAgICAKL0ZpbHRlciAvRmxh
dGVEZWNvZGUKPj4Kc3RyZWFtCnjatVlLk+O4Db7Pr/BRrrK1ej82l/TOziSbrcxObXcyVcnmQEt0
izWy5CWl7u3Nnw+Aj/LYbadqcsiJBAiRIAACH+zvHt588z4uVnEWplmRrB72q7iMw7KuVkVRhElE
rHb1z+DTus4CvVtv0zIP/qqdU49meAS5Hy0mPx1pjAM9gFRDi8l9o3q16/X6Xw9/WcV1mCSrbVyG
dZpi8++Nm6zZzZNePtCDO21/dzz2plGTGQfHO3zzvlrVYV0kBWu7zfOwjOLVNs3CIvXa/r1XvFOa
Bg/rKg2s2St8Wa6KsC7Tir/M8jBOi1UaFnGOz2IIxdGZVEqzZBVB4A/XuyRhWhTLenKtXxZmRU3a
fTllA82+Hw9mML/Omsks+NNsBmXXcdBen1EnYVGUX6Np/P/QlKw5fV4nZTB6zdU6qYIn044yus/m
+rCKYueWbV8dWN46725orVYOdvlRHUyvrHE3zijDNK3PD0m/6hCOwm0S1WFRphSIcVjnBdYQsaTC
D0/rnAPYX1j3DV+100/XWpR5WFTQoriwLZ2fk1SJMI0Lsn9c88EkX14YJclXFSlcZHKrsMzFDVVU
Q+qHwU1motdB2mRJsF9vY3JFHPCry9LgI6ummSaly0A58wSOSL8dD8d5ose0gfS7hz9j4R+zNbjV
Boz7ZzP9rm3PRri+QJaEFetVhoshk69S/v7uI7b/WTut7MWJ/6MKW0pSeZ2c65B+lQ5/G9gkdaCt
MxOf94Ljxj1s8vblaGfnDfTBNKMziuy5OV9F1FDyyquCxoiCxu/+drRWO0p9dAK7ZWiRuuhTNU/d
aL+Fkml5pmSdhVGRLq/xifJVOHGa+qPRWoejffTf1Gff0P2LsCr5blVYLTF0t6PkqZopvGGKrArz
+PTm36+rIpin2VJoZHFCOb3KJaczoZBlSX8kWmE+m77HzAwNv0m6Wf8CjtW/zmbZitb67WQOSPFb
f+6FmVo1KbZRFezteMBs6jQmx07c4kiDHpxndtho+5bJOmhIsbHvdSM1gjk7FniBsN/4IJtYo1rQ
7F8eHZWT0TovO/hVstmstqJwdKnqRMIhe7AO3s7k3IGPmujiZL8N+Gbgsyb9aKUwMbPy8VQHbm74
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
ZW5kb2JqCjIgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDMgMCBSCi9SZXNvdXJjZXMg
MSAwIFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCAxMyAwIFIKPj4gZW5kb2JqCjEg
MCBvYmogPDwKL0ZvbnQgPDwgL0YxNiA0IDAgUiAvRjggNSAwIFIgL0Y3IDYgMCBSIC9GMTAgNyAw
IFIgL0YyNiA4IDAgUiAvRjI1IDkgMCBSIC9GMzcgMTAgMCBSIC9GMzkgMTEgMCBSIC9GNDIgMTIg
MCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNyAwIG9iaiA8PAovTGVu
Z3RoIDE1NTMgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjafVdZb+M4DH7v
r8ijA9Su5TN+nGKnmC72nAbYBTp9UGwlEeojI8nN9N8vDzlNssYgD+YhUhRJfVTu1zd3D0m+WEVV
UWSL9XYh0iwqi3xRVEkk4nyxbhbPQbIMU1EmwXq5ygOjt3L5sv717iFdnRnmeZRX1SJmC+XApCgD
2Ua8drWoYGlS4NLQrw2TPKrilC1k0xhlre53yzBZJcGw5a/uG/2mm1G2zPcDfoNGWeZr2TNhdXdo
9fadObdXTDTqbQnrVTscOtUj6S43kAcwq6XTQ28nW+kwajhMKERU5T4Nms3VzkgH3rMcwpBOMrU1
Q8cUbG0ntXrTtbIRc59atxTBfhh3exbUsOXYKcOcalXtzNDr2rLgqJ1f+Oh3NuFFXAXH1Ss6UhHI
ul6GIoA0et5QEspgA58yUPXQ+fyWcJjaKIn5bt959YESOxzGVhqWPIuXW14tWQAOuqFn0c4MY9+w
nDJGUtXLTQu1mUmfVbJrObZidZFMTT5BSDUpTnljhtOQYDddlgq9+K91um2ZbGWNnl/hZBGbPfaN
Us0tq7kxgOhw1ftVRqdKSzxYGfuAqkBhXn9oKJ9FykH0ItjxmoMZHDdlPbSWZbL3DqwDUpqGLVGy
HQwTWDYwOi6hNCATwStSyhuiBe36hrv6unIwbjS9d6b4sPs5j68/6WGIN01TSN/QUi8L2M9LWgjY
MsNlRWoPR8A+SdPsVDkja6/lCiFF8ZSB5wZItiEAuPm8vhEQS7wQC1FUUZqVizRfRaXIF3V38/0m
joo8yTNack6TcrL0grvHTix+GW7+ht+kCiev4Znbe4S3tJqBtzQto7LKOCcPGjtFVGUgPFpdQGIK
6SuzCdkeltDvI5SArngRNNo6ozejw8KhwKqeUSzL86uORfWRGhUpo76Pmt3kgfTGtWzxAjGn+62R
4H6saT8sZ+ijCUUMRa04piOkGUzSDOBRHZFIP64QMhJaCDsSaavMmYbgEw0RIqjPkQEwVn65ZLsk
GO0k8uUGGcCJ7hCZUay+xSIdjJtBfJFFVQZB53GUCY9a96qWIwFlWvKtzNIi+Ge5Ak8bZvB24/eI
DYrXoFHYhGiA0dyydmDgUr3nKWJcA/D2ziLsd5RcILhf7rcucevMb13ixad0T5Gf36H1HuqLocV4
Oy2hF9IABB5DrfJq2jhOoNZ8VBTtPXHUjQrtAVC4YcHH2YG5qj3J+GTgDlFldhQg1GBlVyL4Fufx
l/X6r7t/f//t7uvTE/ACNQnfflgB46dXdIdBqAgPN5xKX/6VOGsjWPOcvEQsfuy9q73220njdN1i
UlF+pJk7B0Dqh1PUUrmvOhKn1CODmIvfKc1IH6SRjd51nqUTwNeOB59x41jSDcb7/LhKyHEb051C
gAL0olpBkxg5OwLIMimhI5/+YOJq+oBkQyOE6da/M4zc8YwtfWshwUBOeu7AsDF64mlFL7nMSNPQ
ge9h3LTa7kM7bmwNGMO1mR2t79apztLNO102kUer1EPcJzw8dihcIj0Yfcs89gdTVilOLkyRwXnZ
qAnVkKaphdrNqNuGTohiSg6KL5ODqunNgUeX4zQ5FS//2fXSDj2ALQKksu4O3oVcK/CtWMXpipj5
MvipB9nxRbhlDTcYuapPjz/k7VjX9BRJE843Ck/3D4WH0e69Ex7uNNtRg600c/Wc4lHca4wa7qmI
YWyiiGNiCb+PGmYYCoC4fqSWGGcWVxQamU0+AMf/30C44mrSgG0Dw6V2AJgzDTN8xIV1zSqfKiD8
XYyY+3Mk/QoyaMeWKgNSu/cp96b0TIBFXz8/rbdjy+IOEuwvA7JbaIHBbzYHNiCewGbu3YKHKgTN
ySIB2PVTsphQEYRnwxPFB8Dj0/MI9dTDqProYRQzZKD8NEmuHIMjmBhdR85ngrt4AyTV2RsgqS7f
ABHr19hpA6sHzDAKX3tOKrTHDnEUZV6Zf7zpiKNnbzUBDBAwejNjHWupYTGKqUozIbNlDmXBPwEb
3Wo3gVnhn72glH7N2NKfhLya7ki4kfQcQNHl6UFguU/t6ZFcXLQnL/J/GYCCPxXUDbrn0uNb8T+R
1PH7CmVuZHN0cmVhbQplbmRvYmoKMTYgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDE3
IDAgUgovUmVzb3VyY2VzIDE1IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDEz
IDAgUgo+PiBlbmRvYmoKMTQgMCBvYmogPDwKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0Zvcm0K
L0Zvcm1UeXBlIDEKL1BURVguRmlsZU5hbWUgKC4vbWVkaWEvZ2VuZXJhbC5wZGYpCi9QVEVYLlBh
Z2VOdW1iZXIgMQovUFRFWC5JbmZvRGljdCAxOSAwIFIKL0JCb3ggWzAgMCA0MjQgMzMwXQovUmVz
b3VyY2VzIDw8Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBd
Ci9Db2xvclNwYWNlIDw8Ci9DczEgMjAgMCBSCi9DczIgMjEgMCBSCj4+L0ZvbnQgPDwgL0YxLjAg
MjIgMCBSPj4KL1hPYmplY3QgPDwKL0ltMiAyMyAwIFIKL0ltMSAyNCAwIFIKL0ltMyAyNSAwIFIK
Pj4+PgovTGVuZ3RoIDI2IDAgUgovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAGdm8ty
Hclxhvf9FL2UFmzWrburvLPoUYQV4YgZkWEtJrzAgIciGLiQACh5XtbP4u+vqq5unNM4AOUJWkSx
65aXP//MLHzrf+m/9WaYTP6//qp/++7B9pcPvc3/PVz2b1Icxv6Nj/qfcUz9HH1/f+g/9W9/Ptxf
Hr4+fr+47u+vum+9dak3/GcNs20crA+Bv4yDm+3YX970b//zxvb/ccemb/96uL54vPrH4d3d9d39
1c3h8f7qklV6G9yQptl2dhqH0cXQ37DuOEQbp95OaZi1lvVumMa5d2YcQrKefzGDsY5PUhp8mtiO
MTeMo5k6Zy1HmPkqhcFPzHeGr0JMecSOnhXXec6GwaSUemfdwN5s49MwJuM6DjHMwcfeOcfGbu7t
zMc2aD8X/GBMjGw8DzF4m79yns+RBAu4fF5O57imGWyYxo5phhVCZClvhhi5sZ39kELkKzcPU/6n
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
/QpJUnNOBJb2SX4aDTsn/EChVDbibawqSFRpolIAVXPwxqLVvdmrKZ1FKIlOaQCNe23O8dVL0hji
1Oa56kiPR3ZM3PBlcz26mAsBWGbzixxtdhaz2ggjGTbvBlVfVhJAFoNY8gvJ/Msmwj0ydNUb+Iza
J+/N8TYee+9MPleNzZO1mYr9lEDFpZ0KyGxGSwAMxZl1BQ4ws5mILmUX3YpmnXY+mqwboBI6p+Kp
wAiUgIfwPB9BW7wvwU9Qca7pqE9h8quvUH6XSjr+wVfR2YIpQNGUyW81j9asNvRs/kMHG4LIdcT5
eQzYUD/gkCo0Bf7w6nzaB+ifv/9Gu2AfpF+zNPUVWDyEkH2O3iP918XD5+9fN0i9SX7FPCqiojjR
fMr6hl8colKtMkkuPeWn1nrXswxhMbRayWmhEfUrKZ3fw/HUz8vD1mUA1+FkQjW1E8pHAEN+gNtW
4dgAOSQQpOK75QydzFvPVqknoO0eIlhn8rfNuvy0bNu+Xg7W1loGXugpUP0aKQXigsW0MGLIHY7F
9esYIOB47pt/I2gZo8tPtRQBFNRXe3wdIejo/TU3W8dwCFyOAtyyEK0F5rS98o+IbDlP/hnBQ3T5
/Ti2yQN6aM1h62L1p3W7OqA4pBOtk5fbteWXgbV3UJ59YRFHiV/ubuCUUgDJAx2CSkq3zQOUOSvc
rsZYSelP14dL/W6iSM7P93f/uPp4uF+ZyW5c2KQTG/B+dYzg8hSbATcFbTKCDEuEUzox9QmIU2Pg
dTECTASqaIoIYNToLYDqJxCKJ91grApugk5SfK6v33VJbC6M0+jx5B8JEUAkdXFIB+keT9wLvgJW
2lvPq1GM/EW/bkmKj2tSbptlywvAana3ma0r//L/WhATwQplbmRzdHJlYW0KZW5kb2JqCjE5IDAg
b2JqCjw8Ci9BdXRob3IgKHZsYWRvdW5ldCkKL0NyZWF0aW9uRGF0ZSAoRDoyMDA5MTAyMTA4MTAw
MFopCi9DcmVhdG9yIChPbW5pR3JhZmZsZSBQcm9mZXNzaW9uYWwgNS4wKQovTW9kRGF0ZSAoRDoy
MDA5MTEwMjEwMDkwMFopCi9Qcm9kdWNlciAoTWFjIE9TIFggMTAuNS44IFF1YXJ0eiBQREZDb250
ZXh0KQovVGl0bGUgKHd3dy5ncmFmZmxlKQo+PgplbmRvYmoKMjAgMCBvYmoKWy9JQ0NCYXNlZCAy
NyAwIFJdCmVuZG9iagoyMSAwIG9iagpbL0lDQ0Jhc2VkIDI4IDAgUl0KZW5kb2JqCjIyIDAgb2Jq
Cjw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UcnVlVHlwZQovQmFzZUZvbnQgL0JOWlRMTSMyQkhl
bHZldGljYQovRm9udERlc2NyaXB0b3IgMjkgMCBSCi9XaWR0aHMgMzAgMCBSCi9GaXJzdENoYXIg
MzIKL0xhc3RDaGFyIDIyMgovRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjIz
IDAgb2JqCjw8Ci9MZW5ndGggMzEgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQov
V2lkdGggMTY4MAovSGVpZ2h0IDEwNTAKL0NvbG9yU3BhY2UgMzIgMCBSCi9JbnRlcnBvbGF0ZSB0
cnVlCi9JbnRlbnQgL1BlcmNlcHR1YWwKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9GbGF0
ZURlY29kZQo+PgpzdHJlYW0KeAHsvWvQHcV5Lkqq8s/nX05yXMlO7cpJ9klqV872NTsVhVSy62TH
xiflxEnsbG+f7SRAlJyKE9uxTzaYSwi+34IqNliY4GAbEjAGxE02WEgCIQshIQmBxEWgG+hiBEIg
gSR04Txrek1PzzvTs97p1bO+nm+eqan1dfe8/Xb30z3v2/18PTMnT54+/topnkSACBABIkAEiAAR
IAJEgAgQASJABIgAESACRIAIzDkCJ0+efuXoiQMvHuNJBIgAESACRIAIEAEiQASIABEgAkSACBAB
IkAEiMCcIwCy7kfPv/rotoM8iQARIAJEgAgQASJABIgAESACRIAIEAEiQASIABGYcwRA1h04ePSJ
HYd4EgEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASIw5wiArDv40vHtzxzmSQSIABEgAkSACBAB
IkAEiAARIAJEgAgQASJABIjAnCMAsu7Qy6/t2vsqTyJABIgAESACRIAIEAEiQASIABEgAkSACBAB
IkAE5hwBkHWv8yACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEi
QASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAAR
IAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAI
EAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAE
iAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESAC
RIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBAB
IkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgA
ESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSA
CBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJA
BIgAESACRIAIEAEiQASIABEgAkSACBABIkAEiAARIAJEgAgQASJABIgAESACRIAIEAEiQASIABEg
AkSACBABIkAEiAARmAqBpQvPOOOMBYu2TaWEmecGgazz0H/jY+HS2VZj26IFKHliqXNcy9liwtKI
wHxHQHnfz3cYxu2bJ+ZtnjRjIIOOzSQCRGDWCNDxWcTnibuYJ82w3cIAESAC8REYsWQTjtmQaJnB
mk1R8VFMSqMx/RPZq5h1zoqsLdFfGXNlTLOZSLX7fenlCUs5pmhYpra2vorMFBkmAvmAteayOlyH
CcyctbrNfW9kbd9lgfnVgR6j5jOhvvQ2oHbb854GdVsotRMBIjAbBOa/Te4IR52NNhY+2OWZ7KnP
kj1OwlS+6uB96TpEO+rOklpPg0oyjBABIjBEBGLydVPZvMxMVe3rEPtE12Yv2sYlzdTP+n2MpzKm
8s6WuHo5k1rdOifaLqKT8fPXd3JeSgwOgfFoLc9881jfbFbrmyXd7tY2JTcjeZe5f/vWff7e8Bk1
03rpD3JMZLoWU6ceviy+dCdrY9DXoMZMvEgEiED6COT2x7XFeXj+2OSO+kFnWb0QS5tfX0uTXSfr
atBVzs0xTdjnJOprn0MiWxVQZ18WX7q2kb4GafNTjggQgWEgUG/ktG2fylJlRdNRa7F+/fWp0NYX
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
JXOxB6/Ykuxnz5dAGOvZVj4ve7dS4iVc6xU0cznbe2dM0OAyl7BysaHhoLWgsEQj9devWDnWfC74
1vL/6Zk12vQ+5RKXBUyZSpmLDUyZekgAgeFHoJqADVeGYNdS8yhYIS6sHGu+MrhWpVsdzuVOVgbZ
z54vgTDWsy1ESXcYRfNyfJlQERRGTYgCv6K4rDwZTCOiWiTpW0OUjEAFMRAYIgRo5va+iA9Rf3px
hVZAYNELgKgLBIAAEAACQAAIAAEgAASAABAAAkAACAABINAOAUnNN2Dl2zU2OrXA143OtYKnQAAI
AAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAE
gAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAASAABIAAEAAC
QAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAAB
IAAEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAExhGBO958EH2Gp2fD5s/w
IANPgAAQAAKMwK5du6ampubjpyMEzj333K1bt77wwgvbt28nbPft2/f6669jsAEBIAAEgAAQAAJA
AAgAASAABGYQgWHjx4bNnxm8NGgaCAABIBBEYNGiRcRUffe7373rrrtewk8PCKxcufKKK64gMK++
+ur169c/+eSTZIwou/379weRhxAIAAEgAASAABAAAkAACAABIDAYBIaNH1vx/kPIpZfvWDqY7qMV
IAAEgMDIIcDHyohr6oGpQtUCAYKR8Vy2bNmqVavooN3LL7+8Z88eHLEbuXkBh4EAEAACQAAIAAEg
AASAwDghAL5unK4m+gIEgMAkIMD8Ehi3rhBgPK+77rrbb7/90Ucffeqpp1599VUcsZuEqYQ+AgEg
AASAABAAAkAACACBoUUAfN3QXho4BgSAABDwEaBzX+DrumLq2A7jSbfE/vKXv7z33ns3bdpER+z2
7t3rgw8JEAACQAAIAAEgAASAABAAAkBgMAiArxsMzmgFCAABINAJAuDruiXryBrzdfQ8wGuuuWbp
0qVr1659/vnnd+/e3cn1ghEgAASAABAAAkAACAABIAAEgEALBMDXtQANVYAAEAACM4UA3aeJ83Xd
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
SIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAE
SIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEBAgc
PHRkx+7967bsWrHu40UrtyxYsUl/sIlM7EIBFBOojCZIgARIgARIgARIgARIgARIgARIgARIgARI
gAQMAlDeln64dcq8D4e9tWTQsNl3Dn7rxntHdOj9ctuez17YfchZ1z327U6Dvnntw/gggU1kYhcK
oBgK4xAciMNhBKYMw0ySAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlYEdiyY8+MhR89P3bB7Y9P
vPaOV797w+BTrnzgLy/4wxfOvfMvL7z7v//Lvae2H3hG18Hn3fjsJb948dJfv/yvlQ8S2EQmdqEA
iqGwd8gFf8DhMAJTMAizMI4qrJrCQiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQVgL4KuvrU5be
/dTkdr994Ss/GvCFc+/4L9/795N+8CAkuI53jfzVoCn9Xpz31Nj335y1dtrizQtW71i+ftfqzZ+u
375v48feBwlsIhO7UADFUBiH4EAcDiMwBYMwC+OoAhWhOlRaVt70mwRIgARIgARIgARIgARIgARI
gARIgARIgARiCOBxcyOmLfvdoAmtf/bUf2tzDyS1f7qyP5bM/fbxaU+OeX/i/A3vf/TJjk8PxRxp
nYXDYQSmYBBmYRxVoCJUh0pRNRqAZljbY0ESIAESIAESIAESIAESIAESIAESIAESIAESaGkEjh07
Pm/ZxgEvvYOlbv/jX/r+9UX/8ZUOg27oN/bREYvfWrjxo217G85hGEcVqAjVoVJUjQagGWgMmoSG
NVzVtEwCJEACJEACJEACJEACJEACJEACJEACJEACRSOAN7fiBRB4lBxeD4Hny2GpW4c7Rzzx5pLZ
y7ft3ne4MVuL6lApqkYD0Aw0Bk1Cw9A8vl62MTuCdZEACZAACZAACZAACZAACZAACZAACZAACTQJ
gSNHj0EK++0j40/vMBBfR/3fnZ+4bcjb4+et37LzQJO0R1eKBqAZaAyahIaheWgkmooG6zJMkAAJ
kAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBLIvDu0vV3Dn5LKXVn3fB0v5fmzV2x/eDhAgliaAyahIah
eUq1Q4PR7JbUC/SFBEiABEiABEiABEiABEiABEiABEiABEiABPAqh0HDZl/YfchfnH/XGV2H3PfS
vPmrPz589Njxzz4r4AcNQ/PQSDQVDUaz0Xi+jYJhTAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk0DII
jJ+1suvdr/35eXd86aqHbn1i+rvLt2EZG6Q618+eA0c+3LJ30sKtL0z56ME3Puj93CL16XT/rGvv
ewcfJHQmCqAYCuMQHOhaF8qjkWgqGoxm/9l3fw8X4EjL6BF6QQIkQAIkQAIkQAIkQAIkQAIkQAIk
QAIkUE4CWJP2wNAZ37z24b/+/j3tbn999Jx123YdPHz0uP1n9ea9Y+dtfmjEipsfn6dEuWy/cTiM
wBQM2teOkmjw2Lnr0Xi4AEfgDhfalTOY6TUJkAAJkAAJkAAJkAAJkAAJkAAJkAAJNHcCMxZ+9NM+
w/+0Ve8v//DhPi/MW75+16Ejxyw/Cz7c+djolb8cPN9U57rc//aN/SffOmjcfwwePfDZN5968c1n
Xh71zCujR7755qjKz4iRI5Hz9EveLhRAMRTGITjQtNPrifcGjVqJKiwbg2JoPFyAI3AHTsG15t47
bD8JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEB5CODLrsPeWnLxz5/Gw98uveWV8e9t2L774IFDx+p+
Vm7c88e31t7x/GItr3V7YOptg8YOeGbUi6+9OWbMmEmTJk2bNm327NnvvffewoULFy9e/P7773/w
wQcrVqzA7+XLly9duhSZ2DVv3rxZs2ZNnToVh4wePfqFYSP7P/Pm7waNhUFt/PY/Lnpu0hpUWrdh
KAAX4AjcgVNwDQ7CzfL0KT0lARIgARIgARIgARIgARIgARIgARIgARJopgR27N7/8CuzTmvf/+/b
3tvjobfeW/nx3oNH636mLtn2Hy8v1UraDQ9Ouevx0c+/MnLcuHEQ6ObOnbtkyRKIcmvWrNm2bdsn
n3yyZ8+egwcPHjp06MiRI8eMn6NHjyITu1AAxbZu3bp27VpIeRDxYATy3dixY59/ZQSM/+TBKbo6
VI0G1G0kCsAdOAXX4CDchLPNtJvYbBIgARIgARIgARIgARIgARIgARIgARIggTIQwLPd7hz81t+0
vvt/XjXg/pfnr9z46af7j6R/Ji7YcveLS5R01uX+6VhNN/gFT6abMWPGokWLoNFt2LBh165dkOAg
y8UybNv1Dv2JLYADIeLt3r1748aNMIjVd2+//TaqePJFb8Vd1/unq9rRDDQmvbXYC6fgGhyEm3CW
j7OLZc5MEiABEiABEiABEiABEiABEiABEiABEiCBJiewfO32X/Qf/Sf//LtvdRk8dNLKTTv279p7
OOWDJW13Da0qddc/MK3PkFHDR47CEjh81xWq2qZNm/bu3Yv1cnX90mIdEnULQ7vbt2/f5s2bsegO
35mdMmUKKu0z+E00QKl2aBIaltJs7IJrcBBuwlm4DMfr1ssCJEACJEACJEACJEACJEACJEACJEAC
JEACJNCYBJZ+uPXGe0f8yXduO++m58bMWY+nve3Ycyjp8+GWvQ+8vlzpY3ig3L1Pjho1egwW1OHp
c/j6Kr7Him+52jfeSa/TZqEEYtneRx99hG/aYrndm6NG3zvkTf10OzQPjUxqP/LhINyEs3AZjsN9
bZkJEiABEiABEiABEiABEiABEiABEiABEiABEmhaAotWblGvgr2414uTFmzavhtyVuLn+clrfzJw
DsS6zve//R9PQKkb/c477+C1EevWrcND544fd36JQza9ThH77LPPsNxu/fr1kAohGOJFs2gSGobm
oZF4+UWKI9gFZ+GyemksIDRtL7B2EiABEiABEiABEiABEiABEiABEiABEiABEgABLC1TYl2bX74E
/WrLJweSPh9s+FS/VOJXD49/cdjI6dOnY3mbUuqSHk9XF3IevU4Zh0gI1Q7NwGsp0KSXXnvzVwPH
q+V/aDCaneQR8uEyHFeSHVfZ1e0sFiABEiABEiABEiABEiABEiABEiABEiABEmhQAivWfYxvg0Kt
uuSXL02cv2nTjgNJn/Hzt9w0aC5EsOsfmPrIcyMmTZo0f/58fPt1586d+Goq1rllbmd+vQ5VowEQ
DPEN2Q8//BAP0Js4ceKgZ4ejqWgwmo3GJ/mFfDgO9wEBKAAksyM8kARIgARIgARIgARIgARIgARI
gARIgARIgATyEMCrUfG2hf/zzN+17vniuHkb12/fn/QZMPwDtVztFwMnvDb8zVmzZuGNElu2bMFb
X/ModarxUnodWoKfw4cPb926FW+jwLd00dReD01QLYcLSd4hH+4DAlAACN8YmyeoeCwJkAAJkAAJ
kAAJkAAJkAAJkAAJkAAJkEA2Arv2HLhz8Ft/+p3bzun+7Kh316/dui/2s2rT3ntefh+S14/vm/Ef
g0eNHz9+wYIFeMsDXiqhltUplQy/szUDR+XR63TtZgJfj0XzsPYPTZ0wYQKeaIfGwwU4smLjnlg3
kQkIQAEgwAI4md3hgSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgSuDYseODhs3+m9Z3n37t469M
/XDVpj2rN++Nfhav3XXn0CVQuq67f9oTz4+YNm0a3iuxefPmvXv3QhMzJbJQ2qk9rnpdqK6kzf37
92/cuBHvoZg6derg50fABTgCd+BU1FPkAAJQAAiwAA4QOXnBwiRAAiRAAiRAAiRAAiRAAiRAAiRA
AiRAAiSQmcDLExd/7eoBX7z8gUdHvL98w6dYdRb9zFmx47dPL4TG1e2Bqc+/+ia+Xrpy5cpt27ZB
B0uSyJLy09tZV69LMls3H1/XxXdj8dVdNH7oKyPhCNyBU3At6i9ygAJAgAVwgCi92dxLAiRAAiRA
AiRAAiRAAiRAAiRAAiRAAiRAAiIEZiz8qPXPnvrbNn1//8y7763euWz9p9HP7A92/GLwfKhb3R+c
/Mrro+bMmYP3OHz88cfqgXV1hTKnAqZe53SgTWE8zg4aIxr/7rvvvvz6m90ffAtOwTU4GPUaOQAC
LIADRAAlApxGSIAESIAESIAESIAESIAESIAESIAESIAESCCJwNpNn/y0z/AvnHvXdfeOm7p469KP
dkc/767Y8ZunF0DX+ln/ScNHjp43bx4eWLdjx46GEOuguTWQXodv7KofSHZQGtesWTN37tw3RoyC
U3ANDsLNqO/IARbAASKAAq4kkswnARIgARIgARIgARIgARIgARIgARIgARIggfwEHhg64z+dfftF
PV8c/s76hWt2LYp83lv1Se/nFnkr6/pPfmPk6Pfee2/dunUQ6/A12JoA5v21WdvWJGXMRur0oUOH
INlBdfQku5Gj4RochJtwNkoAWAAHiAAKuPIzpwUSIAESIAESIAESIAESIAESIAESIAESIAESiCUw
duaK0zsMPPnKAUPGfjBv9SfvxX3uesF7wcQND04ZNnyUWlm3c+fOffv2ae0rmmgSXc6sNNqkaM6B
AwegOuKlsZDsXn1j1A0PTIGbcDYWAuAAEUABF6DFwmQmCZAACZAACZAACZAACZAACZAACZAACZAA
CeQhgK92dr37tf9y0b//8tHp05dum7NyZ/TT55X3oWJ1vX/60GHeM+vU12DxNthjeFuq3Y8pozVo
2q45gVJwBKvsINnhWXZ4gwbchLNwOcoBOUAEUMAFaPxWbJ7A47EkQAIkQAIkQAIkQAIkQAIkQAIk
QAIkQAKxBAYNm/2Fc+/8/i9eHvb2ulnLd0Q/z09eC/3qx/fNGPzCyFmzZqkXTHz66ad4/ltA9qq3
0aAynTJerwmB/RAb1c/Ro0fhDl4/sXr1ajg4eOgIOAuX//jW2igN5AAUcAEa0MUiZSYJkAAJkAAJ
kAAJkAAJkAAJkAAJkAAJkAAJZCPw7tL1F3YfcuJlDzw0fOnbyz6OfsYv2PLTh+d4682GjJ4+ffrK
lSuha+3atQuPravJXd7fgBDmspFZxHOpJFDWbLZO45UZn3zyydatW1esWAE3+w4ZBZfhONyPMkEO
cAEa0AFgNvI8igRIgARIgARIgARIgARIgARIgARIgARIgARCBI4cPXb74xP/n3Pv7HTP2DfnbJq6
ZHv0c+szC6Fc/WLgxLfeemvZsmVbtmyBWIfVaEeOHNFiVygRUMciG5DFInlub6mIHl43J9TC6CaW
2O3Zswdt27x58/vvvz9p0qRfDJwAx+F+lAlygAvQgA4AgTEElpskQAIkQAIkQAIkQAIkQAIkQAIk
QAIkQAIkkIHApDmrv9ZhwGkdHh0yduVbi7dFP/e9thyaVbcHpg5/c+zChQs3btyId0xArMM7GiBw
RVWvaI5W0rALa9iGDh3arVs3fO1U5zdcItqYaA680D94VyykSLx7YsOGDQsWLHhj5Bg4DvcBIUoG
OYAGdAAIjBng8xASIAESIAESIAESIAESIAESIAESIAESIAESMAnsO3D41wPH/ucL/nDjgCmj522e
sGBr6PPq2+t/fP87EKyeeMF7xwRex4CXMuyu/GBxnZa5VCIqhekcKHJIw8K//uu/Xn755ddcc03f
vn0bTqZTlnXt0USo5eYmlthBssMXftesWYN3Tzw+9E24DwhAEYKDTUADOgAERsA02TJNAiRAAiRA
AiRAAiRAAiRAAiRAAiRAAiRAAq4EsCrstB/2P/3Hgx8fvWLse1uin99Wvgl766BxU6dOxVPd8Gw3
fF0Uct2+fftMjUuno8qYykEBaH1XXnnlueee26ZNm6uuuqpTp054rYOgZJdUdTRftzaagAipnmKH
NYT42u8HH3wwZcoUuA/JDiiifJADdAAIjFxi5xp+LE8CJEACJEACJEACJEACJEACJEACJEACJGAS
wCPXfjdowp+f94efPDh5xLubRs3dEvoMGrUKOlWX+6fja6GLFy9W34TF2jP84HujkLbwE5W8dI4p
lCFzxowZl156aatWrS644AIkfvjDH/7617+GOJZfsjMrSkrrVkUTyhHzNwRJyJJYSYhvxS5atOj1
EaMBASgAJIQIm0AHgMAImHyKnRlgTJMACZAACZAACZAACZAACZAACZAACZAACTgRmLV43bc7Dzr1
R4MeGr58xLubo59fDJ4PkarfU2OwEA6r47Zv3w4VC2KdetOEKXClC3dKIsND4X76059ifR0ku4su
uuiyyy7r0KHDq6++mqSw5c+PSnNmTqj9evPw4cN79+6Fp1hih2/Ffvjhh++8AwijgQJAopSQA4DA
CJhA6tQFLEwCJEACJEACJEACJEACJEACJEACJEACJEACmsADQ2f8p7N/3/HusS9NX//6rE2hT//h
K6BQ4W0LEyZMxDth8cpU6FdQsfCDL8NC1NICl06Yalg0jWL4bilW1n3nO98555xzLr744iuuuOKG
G26A5fzSXMhCtPZQjm6zTsAj/YNVf3AWP9AYN23ahHfFjhs3/oYHpwAIsIRAYRMAgREwgVTjZYIE
SIAESIAESIAESIAESIAESIAESIAESIAE7Ams3rDj8l89/98vvf/O5xe8MmNj9NPrCW9x3QPPjMFL
Ij766CMsroN+pfQ6yFlK2tJiV2wiJJFhE+vWfve7351//vlnnnnmeeed17Zt2/bt2w8YMCCktjlt
RmuJzYltoc7USp1K4Nu+8FTpdVhih7WFePEEUAAIsERZIQcYARNIAda+F1iSBEiABEiABEiABEiA
BEiABEiABEiABEiABBSBYW8t+Zvv//uFN788eNyHL07fGPo8OHylWlw33lhcp/Q69fC6kMCFTa19
JSUgo2EXluq1a9cOX4nFKrsLL7wQr4u9+uqr8XA87JWV6ZKaofOjLkCm0z/4zi8W16mf6hK78ROw
2hBYACeEC5vACJhACrCMMRIgARIgARIgARIgARIgARIgARIgARIgARJwIoDXIvx64Ni/OP+u7gOm
DZ26IfrpWVlc1/epMVhXpp5cB7FO/UDIUqJWVO/SOVoTCyUgymFt3iOPPILn133rW986++yzW7du
ffnll2PRHXYJ/oTq1Zu6hdGEVupUAksBlViHt06oJXazZ88GEOh1gBMlhhzABFKA5VsnnKKRhUmA
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
IchvBm1mQQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKdIaBpOraaTv8iofcry3/c8/3/dev7f9tn
8R8/TIV6tqSy9XBLSDfCl8jgHFNgoj9OSfnxY59i6h/dNemhl5YhGISEwDoTP/uQAAmQAAmQAAmQ
AAmQAAmQAAmQAAmQAAmQwDeSQFXDiQ3788fN3tlj2KK/ueNdbEf9wQMLfvfizj5L88ceblhU2Xqg
OVjbZhhG+IINw+EEruAQbuEcU2AiTIdJMfXavbk8UeIb+etiUiRAAiRAAiRAAiRAAiRAAiRAAiRA
AiRAAhdMoKDiyOr4nDcWxGPF3b8/NuPPb3xTaHf3z/uXwRtunHjwgYU5cdvKJ2Q2zSo5uaLuzPaj
bUkng1mtofzTWuEZYSigikY8Qgd0Q2cMwUAMhxO4gkO4hXNMgYkwHSblgroLfmUcSAIkQAIkQAIk
QAIkQAIkQAIkQAIkQAIkcCUQqG06eSizcsnmw/iUXN/XVuCbcv/0wJS/uOWtb980EYLb9+6c/sOH
Fv7kqc//eeC6Xw/f/B+jtv12zA4YCqiiEY/QAd3QGUMwEMPhBK7gEG7hHFNcCSSZIwmQAAmQAAmQ
AAmQAAmQAAmQAAmQAAmQAAlcXAJHmk/nljXiAAishZu9OgmC25D3Nzz26hc9Ry7pPnDBtf3nXN1v
9lVPzoShgCoa8Qgd0A2dMQQDMRxO4OrixkZvJEACJEACJEACJEACJEACJEACJEACJEACJEACOLn1
2Mkz+OpdUdVRqHBZxQ0ZRXUwFFBFIx6hAw945U+FBEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiA
BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABC4RAUPXg2dPtTYWN5cmHivcf6xg
X9QK96MRj9AB3S5RAHRLAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAlcyAUPXAq3HTlSk1aWsLNs5
rXDd+PwVQ6u3P3/k0CtHE8cdSXglYodePpIwtungy3iUv2IIuqEzhmAghsPJlcyQuZMACZAACZAA
CZAACZAACZAACZAACZAACZDAlySgh4Jnj9c05Wwv3Ta5aNWw+j2jThdODzWtMk7tCZ9OlJYQPm2z
1kNhm+kndgXrV7TmTa3bNaJw5RA4gSs4hNsvGRiHkwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkMAV
RSB0rrW5LLl85/SSNYOOp04IHV0n1Lkzptk1OlE+FLGoWHcw3GqzloNGy8FQw6pj//1qyeqBcAvn
mOKKQspkSYAESIAESIAESIAESIAESIAESIAESIAESOB8CRiGEWg9fjR/T+G61+viRwYbVxjQ4iyZ
ThQSwmdSwudyw23l4UBVONgQDjWFtZOmnQgHm0QjHrWVhc/mhFsTwy0H7Gac3BeoXlq7fRimwESY
DpOeb5zsTwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQALfeAKhsy04PKJw7StH/nus3rw1fCZJmlpT
lxw+lx1uKw2HGsPaiQ6tORxqDmvyjgIM8t254vCZjHDLoahwd+qA1rShad8YTIdJMfU3Hi8TJAES
IAESIAESIAESIAESIAESIAESIAESIIFOEtCC507VZJdsmdSwb4x+cnv4bJIwtazubHo4UBnWjgsJ
zmHHxco6aHHBej9rCoeOhUPoY7djYtFda0r41H7LtCOb6nc+j6kRAMLoZMDsRgIkQAIkQAIkQAIk
QAIkQAIkQAIkQAIkQALfSALYi9p26kh9yoqyjYODTavEdldLrDuXKba1CqVO2TGpzlWHA+XhtpLw
uSKnFYbPwQrMOwow9CkNt1WGA3Xh4JFwEB6kYS9ta6qS7IxT+42TewNVn5WtiatP+QLBcHvsN/KX
xqRIgARIgARIgARIgARIgARIgARIgARIgARiEsA5rS11+aVb3jqe+rr4Tp1S6s4mhqHUBWvC2jFh
IehsNeFAqdTflApn3fPD56SdzQ9HLS98Vllu+KzLiqR2hyV58HlElLHW7uQ+49Q+4+R+48Seowdf
Lt38FkLiAbIx3x07kAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJfMMIYPPp8aKDJeuGBuqXm0odtsEm
hwMlUqk7Gg7VCZmuLV+Y0uXO+QpxOeJcCcvO5ISjlh0+4zV0Lgi3YZ1ek7AzBcapAziEQllb+aKS
VYMRGPfGfsN+b0yHBEiABEiABEiABEiABEiABEiABEiABEigAwKhc62NmZsrNw2Ofq1OLK47LL5E
JxbUVYfbCsNtOARWGk6DPWdT5IQ0lx0+mxU+kxW5n8kMW3Y6MywsQ5lxOsMyW0umcRqWEz6HQ2Yb
oN0ZLYnYFaskO61xQ/maOISHIDtIgY9IgARIgARIgARIgARIgARIgARIgARIgARI4JtBIHj2VF3y
irr4EUbrPrmyLlHc23LE2a9CqcNqOihpsGxpWeFzsExhEVEuQxz2Kiw9fPqwzdLCp23WmhZuTTOE
pUozCy1pBizyKA3CnVDt2mqNlsPGCUh2wvRj22u2DEGQCPWbwZxZkAAJkAAJkAAJkAAJkAAJkAAJ
kAAJkAAJkIAvgdDZFuhgDftGi+Nf8ak6sawu0WjLC4dqw234MJ0pzSmBTtwzwmdh6WL13RlLnbN0
udTwaViK+BJda7LDWpLDLUmGy04lGy1eSzFaMW+l0ZKJr9gJ1U5a3Y7nESoC9k2EjSRAAiRAAiRA
AiRAAiRAAiRAAiRAAiRAAiTQ1Qlgh2l96uq6vaOM0wekWJcoVDuIdYEyU5STuhykuYilhc8qSw2f
kQZp7nSytKRwq2WJ4dbEcIuyQ+EWZQfDpw4Zpw762Em0HzLU/VSiEbGk8JlCoyVDSnZCtdOP76rd
NhQBc2NsV//hMX4SIAESIAESIAESIAESIAESIAESIAESIAEvAS1wtil7W93e0UbLHiHTKTuXLr9N
B4HOkuZQSI3YmZTwmWRpENOknU4Mw1oTwq2HhLUclHYg3CLt1IHwqf3hk5btC8v9rfLDdHKva2Tt
3D7jBA6ElXYSh01YdlDsij2ZaDRDrxOmHd1St204wkbw3ozYQgIkQAIkQAIkQAIkQAIkQAIkQAIk
QAIkQAJdlICuhU6Up9bsHB06ui4q1p05KHW5FHEsbNSwQ9ZU55SmJzS6hPDpQ+HTB4W1QqNTAt3+
cMv+8CkhyoVP7Q2f3GMIizdOxIdPxodP7FZmnNgdsWZZwP34bgP35njTIuqc3AaLg2IPGs075SPR
HqxeXrVpOIJHCl0UPsMmARIgARIgARIgARIgARIgARIgARIgARIgAReBs8eqKraOPVv5sRTrEsJn
EozWbeEzh2zanVpxJx6JdkudExrdgXArbL+0feHWvcJaoNHtCZ+S0tzJ3WHYiZ1GxHYYJ3YYzdth
YdyPO+2YrKr78R2GsJ3SdgkdT0h58aLatMZS887kzyzf/ApScCXFKgmQAAmQAAmQAAmQAAmQAAmQ
AAmQAAmQAAl0RQI4ZbVy77yTue9JLU6Kdac2hFs2hbG+Tkh2uNvtQPiMtNP7wzCcIasEutY9YWHx
4RbYbmEndwo7sUPa9vAJCHTbjOatxnFlm43jm41jyjYZx0w7usmImHx0dIsBO7bVOLbNgIgnbIew
xs+NhmXmMrw9J1LfQgo8LrYr/vwYMwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgJ0AtpEeLdjbdPAl
/eQuqc7hrIeNxvFPhBYnbJ+f7Q2fxiI6KdAJdU7ZrvCpneFTO0zbHj65TVjzVmHHN4ebIdApUW6j
cWxDxI6uNyK2zjhi2XrjiGUbjCOwjcYRpeNtFvLdUSHf6VXTjIblSrLTGjc17B6FRLgr1v5yWSYB
EiABEiABEiABEiABEiABEiABEiABEuhyBM4ery7b/FJbzeKoWHf0w3Dr9ogcB11O2B4p0CmNLj7c
ujtqLbvCLTuFRZS67eFTkOm2CDsBg0y3SdjxjeHjSqNbZxyFrRV2ZI2wptVOWxWpNqJ9jdGIDmtN
W2c0Ke1OyncNq/SS8ToW2ol9svHniuaWrh+DdLrcK2DAJEACJEACJEACJEACJEACJEACJEACJEAC
JKAIaMFztUmfn8x6R32SzmjBurWZYnEdFDlsaFW63GlV2CWruEuzZLoWKdBBozu1Vcp0m8MnN4dP
bAqf2CiseUO4eV34GGxt+Oga4+hqYUdgq4wjK40m2BfCGmHY3+q1L4wG2AqjYaXRsMpohK02FTxo
d+v0qg/1sok6GqVk15z4BtJBUny/JEACJEACJEACJEACJEACJEACJEACJEACJNAVCbTWF1ZtGxls
WoFzXY1WnOOwwGiaJPbDtmwzIMTBxEI7m51WZanOndpqCNtinNpsnIRtMk5uNE6sF9a8Ttpa4/ga
4/hq4xhslXF0pXHkC+PI50bT50bjcqNxmfgAXcNSHVb/mbC6Tw1pKEhDi7Klet0yacv1+s/1+i/0
+pU6Ftc1rNbrl2qFL+oVU/Sj2Gy7O1D5aeXG4UiqK74LxkwCJEACJEACJEACJEACJEACJEACJEAC
JHCFE9BDgZqEz1ryp0CswxmvxvFPjca3jaMzhATXAhVOyHHhFtNat4aViZYt4RabRndyQ0SmOwGZ
bq0waHTCVhrHVhjHvjCOfi5kuiPLjaZlRtNSo3Gp0fCZ0fCpUb/YqFus13+i18EW6bXCDNxrFuo1
uFv2iV4DW6zXLtFrP9NrlXwntbuGL7SSN7XCMXr1bOO4OEC25fB7SAqpXeEvl+mTAAmQAAmQAAmQ
AAmQAAmQAAmQAAmQAAl0OQJnjlZUbBkdbPhCiHUn8LG494zGiUK1w/q6iG0yTm0SB8W2bJR3VRZV
0QGr6U6ul7bOOLHWOLHGOLHKOA5baRyXMh2UumPLjaPLjSNLhTV9ZjRBElxsNCw26j8RBo2ubqFe
C/tYr1mg18zTq21WJctV8/XqBXrVx3r1Qr16kTAId8Kkdle3VK+coRWM1orHYTEeJLtAxaflG0Yg
tS73OhgwCZAACZAACZAACZAACZAACZAACZAACZDAFU6gKXtb8+G3jFPxRstu48hso+EtoddBuDu5
1ji1TthJeZfl8Kl1yiKPxNM1EYNM1wyzZLrPhUx3bKlxFDLdZ8KalgiDUte4yGhYaNR/bNQtMGrn
G7XzpEY3V6+eo1fBZkWscpbusNl65Rxpc3WIeFWQ7xZI+U4uuqv5RMsfKSS78vf0I1v0I9uPJ7yG
1K7wl8v0SYAESIAESIAESIAESIAESIAESIAESIAEuhaBUNvpki2TAjU4WmK/cRxr3t406t80mt43
Tq6Wkh1UO7uZ0lxEo5OPINOdWGk0fyHsOA5phUaH1XSWTPepcQQyHTQ6JdN9bDTA5hv18426eUbd
XKN2jlE9W6+GRjdTr/pIr4RN1yum6eVem66Xwz7Sy2fo5bP0CiXfQbibr9bdaYWvKMlOr5ptHNt1
rmgBUkOCXeuNMFoSIAESIAESIAESIAESIAESIAESIAESIIErmcCpmuzaXaO0ozgkYovRONWon2DU
v2E0TovobyekCndihYGCuDtNaXTNnxvClhvHlwlTC+qOQqZbbBz5xDiyyGhcaDR+bDQuMBoWCJmu
HjLdHGmzjJqZRs1HRvV0vWq6XjlNr/hQr5gqjo0om6LBSifD9JLJurxrpWhRhtNgYdO1so80aHcQ
7iqw7m6eVjxBy3teSHYlb+qNa0O1a2q3Po8Er+T3y9xJgARIgARIgARIgARIgARIgARIgARIgAS6
FoH6tLWnct4Ln9pjHMXu1Ncj1jTLOL7UaF4auUcKy4xmy+RT1Y6exz8zjn0qbbFxbLFx9BPj6CLj
yEKjCaaUOsh0c416yHSzjNqZ0j6SSt00o/pDvWqqXjlFr5isl3+gYzdr2SS9dJJW8q60d7Tid/Xi
d/Sid7SiScKKYe9rxR/oJVO0kqla6YdaKVbifaRVzNSKJ2o5w0K5kOxG4XN2+pEdJ1InIsGu9UYY
LQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQwBVLAMenlm2f0la9xDi5zWiYbNS9ZtS+Ju74it2xJaYp
IQ7VT8UhFMJkOSLQoSw1umNSoxMy3cfGkQXCmuYJa5gjrH6WUOrqZhi1kOmmGzVCpjOqpxhVk42K
D/TK9/WKSXr5u3rZO3rp23rZ23rJRK34La1IWiEOfn1LF3dRkPa2Vgj57l0h35W8r5V8oJVN1cqm
QdnTsoeEcoZpeSO04jf1pg1tJR8jQZ4Se8X+wpk4CZAACZAACZAACZAACZAACZAACZAACXQtAmeb
a8s3jQw1rRVaXN0Eo/bViDXNNo4ujNqxhcaxRYbjjqpsEd0g0Jka3ZH5xhEp0zXNNRrnGI04vWKW
UT/DqP/IqJsmZLqaqUY1bLJR9YFR+Z5R8Z5RDqXuHaHRlb2ll8De0LGtteh1rWi8VviaVmBa/mua
sPHSXtfy39AKYBO1oreFcFf8nlDtit4OZQ0K5QyVS+xe0Kvnh2pWla8fgTS71nthtCRAAiRAAiRA
AiRAAiRAAiRAAiRAAiRAAlcmgebSpMb9L2nHNhkNHxo1rxo146SNNZpmCtkNdlTeocKhcNS6o6BM
PVX3uUbTHGHQ6BpnGY0zjUYp00Gpq58uxLpaTDHFqDGVuspJRsU7RrmU6Urf1PHFuZIJesl4vXi8
XviqJmyclj9Wy39Fy3PZOC3vVWER7Q6qHdbdQbjDiru3QpnPhbIGh7KHabkjtNJ3Q3VrG3aOQppX
5vtl1iRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAl2LQEP6hub0t/TGz4zaiUb1WKP6FaPmZaP6ZaPx
IwNL7PxNinJCmrN3mGXgk3dKo4NM1/CR0TDdqJ9m1H1o1E0xamEfGDXvGzXvGVWTjKp3jcp3jIqJ
RtlbRtkbeukbesnrevFrehFsnI4zXgte1vJf0vJe1PJe0HLHaDkvaDljQjljtGzYC8JEy4uhnJe1
nLFaLrQ7LLp7Xah2+a+HMgaEMgeGxK7Y4ULxq1x4POF1pNm13gujJQESIAESIAESIAESIAESIAES
IAESIAESuDIJVB1YeKZEroirHmdUvSTtRaP6RfEtO2huUO3UvQny3QxRhRYnDFXTRKPZExpdwzSj
/kOjHufMTjVlOih17+k1k/Tqd/Xqd/TKiXrlW3rFG3r5G3rZ63rpeL3kNb14nF40Vi98SS94Sc+X
Ml3eaC1nlLDskcKyRoSyRmiZI7SskVqmstGh7DEhId+9pOW8ouWO1fJeQyGU/kwow1piN0orn3Ym
dybSvDLfL7MmARIgARIgARIgARIgARIgARIgARIgARLoQgR0LVS6dVKg7nOjDntUXzIqXzQqX4jc
ayeJHbJQ3nCP2DShxSlFThTspvpIja5+ivBWZ66mw4K6mncNyHRVMKnUVb4pxTqp1JW+qpeO04vH
6kUv6YUv6gVj9LzReu5IsZUVZ7xmD9eyYEO1zKGhjKGhzCGhjCFaxlAtHTZMSx8eSn8+JBS8UVoW
1t1J1S57TDDt6VD6s2KJXZZcYlf8TqBiWenW95BsF3o1DJUESIAESIAESIAESIAESIAESIAESIAE
SOAKJBA611q2eVywar5eM9GogFI3xqiAjRZW84bQ3GrfF/f6yUb9B1KFQ6EdUxod+te+J6xmkpDp
hFL3tiFkOpiU6Spe18vH62VSpisdq5e8ohe/JMW6MXrBaD1/pJ73vJYjlbrsoVrWEC1zsJYxWEsf
GDr8nLA03AdqsLRBocODQ4eHhNKHhdKHaxkQ7kaHsl6AmhdMfSp0GEvs4kKZg0JwUjC+rWRu2cax
SPYKfMVMmQRIgARIgARIgARIgARIgARIgARIgARIoAsRaDvVVL5pdKDsfb1qvF4xRhdK3UijfJS4
V441at+V9o55n2Rg0Z2/WT3fEQJdNT6F95awqjf1yjf0ygl6JfyP18tf08uh1I3VS1/RS17Si1/U
i17QC6HUjdTzR+j5z+u5w/XcoVr2YC17oJb5nJYZp6UP0A4/K/S3tP6hVGkpT2sp/bWUZ0KpA0Kp
caE02CAtHcLdcKy1C6U9G0x5MpTWL4RRcomdlvfyudx3y9aPQrJd6NUwVBIgARIgARIgARIgARIg
ARIgARIgARIggSuQwNljVZWbn2/DqayVY/XyUXr5SJhRNsIoe14stIPsVgXlbaJRAwlOmSyj6mvo
XAWNTsh0RtUEQ8h0r+sVr+kVrwqZrmyssNKX9VIodS9oRbDRWuEorWCElv+8ljdMyxuq5UCpG6Rl
QakboGUM0NKf0Q7317C/NbWfsJSnhCWLu5bcL5T8dCgZqh2kvAEa1t2lYbnd0GDyE8HkP0WW2KVj
id3gUO6YtuzxFeuHIdkr8BUzZRIgARIgARIgARIgARIgARIgARIgARIggS5E4HRjSdW24YGCF/Ty
MXrpCL3seWVG6fNG6TCjaryQ3apel6YKuL9hVJuGsjA0KlM9XzcqxhtCpsNqunF6uZTpyl7WYSUv
6iUv6EWj9aJRUaUuf6iWN1jLHaRlP6dlxQmlLvMZLf1p7XA/Le0pDYvlhPUVlvS4sERY31Din4Ql
PRFKgoIHKU8tt3sumNAnmNRXLrHDV+wGhDJwUOzz59JHVW0cjmS70KthqCRAAiRAAiRAAiRAAiRA
AiRAAiRAAiRAAlcggdbG4qqtw9tyBuqlz+slw/WSYXqptJKheulQo/xFo3ycUTnOqHgV+pu4V8Je
a9cqxon+EY1OCnRlL+llL+il0opH68Wj9MIReuHzWsFwLX+YZil1OVKpy3o2lNE/lAGdDbtZnwql
PSE0uuTHQ8mPhpIeDSXC+oQSeocS+oQOSUt4NJTwWCgBOh5Uu36hpKdDSU8GEx4JJj6GJXZiPR62
xIqDYoecTX6uauMwJHsFvmKmTAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk0IUInDlaWblp2LmsAUKp
EzZULxlis+F6+St6+ctG+SvCKiwba1QoM1tkB9lZ9NeFTPeiXorVdGOkYUHdSL0ISt1wvXCYVjBU
yx8i1tTlPadBqcseoGU/q2X2D2U+Hcp4KpSOr89BbXs8lPJYKKlPKLF3KPERYYceEnbwodCBB4O4
H3w4dPARab1DhyDcYdHdE8GDDwuTS+zEzll89U5uiT2b+EzFhqFItgu9GoZKAiRAAiRAAiRAAiRA
AiRAAiRAAiRAAiRwBRIQ501sHHku/Wm9aKhePFQvGqwXDdKLlclyGT5qN0YvU4Zts7AX27EXIt1K
sbUWNkovgY3Ui0foRc8LpQ4yXcGQiFKH3a+5cUKpy3pGy+qvZfYLZfQTSt3hJ0Jp2Pqq1tRBpns4
mPhg8BCsV/Bgr+CB+4L7ewX33Sds//3SHgweeCh44JHgoT7Bg30CaISad6h3MPHxYPKT4nwK6HUZ
g84kPF2+fiTPm7gCf+FMmQRIgARIgARIgARIgARIgARIgARIgAS6FgGt7UzJxtfOpD4hlLpCCHQD
9cKB4h6x54SIVzJCyG5l+Lod7spG6dDxXFY6Uo8Yttaq3bXD9aJhwgqH6gWDtYJBWv5zYk0dlLrc
Z7Ts/lrW01pWPy3jyVD6E6HDfUNpj4dSHw2l9AklPxJKejiU8FAwAeLb/cGD9wYP3Bvcf09wH6xn
YO89sODee4UJ7a5XYB9Uu4dl4b7ggQeChx4JJmBL7BOh1KeDh8Un7E4feKJkw6tItmu9HUZLAiRA
AiRAAiRAAiRAAiRAAiRAAiRAAiRwpREwdL1s+9SWQ4/qhYOEUlfwnF4QpxfGyfsAvRAWJ5feDdeL
h+nFz0dMyHEQ8eyGDpah51C9cIiwgsF6AdwO1Aqg1A0Qlgvrr2VDqXtKWOYTofQ/hdIfDx1+LJTa
O5TySCj5oVDSg6GEXsGE+4OHoNTdE9x/d3Av7E5YYM+dgfg7lAXj7wrG3x2Mh3x3b2Bvr+CeuwN7
7glgAd5BCH2PBpP+FErpF0zDltjnWvY+hjSR7JX2fpkvCZAACZAACZAACZAACZAACZAACZAACZBA
lyNQtX9Bc3wvKHVaQRxMz39WL3hW3POfEYaykOyGyK2yg/XiIU7DLlpni9D9pAmZ7jk9P07LVzLd
s2JNXc7TWk4/JdNBqdMy+oYOQ6l7NJTWJ5T6SCj14VDyg6GkB0yx7p7ggZ7B/XcF90GpuyO4545g
fI+AsNsDu2E9grvRAvlOynS77wrE3yX0un3YEgu9rk8wsW8wuV8wVeh1zdseRJpd7NWUTLv+W9+6
ftrX7ExbGVXc1i7GkuGSAAmQAAmQAAmQAAmQAAmQAAmQAAmQQBciUJeyqnHz3SHsThXC2rPCINPl
Qax7Ws/rH7GCAWLFnTAswJNWaBasFlXIh+InRT/h6hlhQqN7Wsvup2U/qWU9oWX11TIfF5bxaOhw
n9DhR0JpD4dSHgqlPBhK7hVKvD+UeG/o0D3Bg3cLpW5/j+C+24N7bgvuvi0Yf1tg162BXbdEbOet
wV23BXf9UWh3u6TtviOwp2dAfNpOfcIOet1T0OsCKc80rbsXaV6OlyLlrG+5Lx99S3XsSI6jXneB
L8z9DnzoX6BnDiMBEiABEiABEiABEiABEiABEiABEiCBy0GguTSxctU9gfS+Wl5/sVM192lhef2E
5fbT86TlPqXnPStMrL6Ddmez/AF6xOSSPKXRwVWeXEqH1XTZT2nZT2jZf9IyYZDpHtPSH9XS+4TS
egulLvWhUPIDQqlLui+UcG8o4Z4QlLoDdwUP3CGUur1/DMbfGoy/JbirW3BX98COboGdNwd2wLoF
tncL7kDLLYGdt4k7hLtdWHrXM7AHet0DwYO9gwniyIlgav9zCU9UfX4f0rwcNN1akU25c8pG1Osu
0evwfQMd6aKXKA66JQESIAESIAESIAESIAESIAESIAESIIELJdB2srFwxcDThx4Wq+ByhUYntqzm
PKnlPCXuuU9ECjkQ7rDiTpm57s5cgCe0Pgh0wtRwjIVM96SQ6WBiTd1jwjKg1PXWxJo62EOhVLmm
Lvn+UJJU6hJ6hg5CqbszeEAuq9uLNXUQ67oLsW7nTQHYjhuFbVd2U3D7zVDthEGv24HVd9DrsCUW
J1BAr8ORE48Hk4Re17qnT9EXA5HmhRI6n3FSLXKpQ1EFySnZxfDr5yrGkMvwWEZ1XnlchqDsUyBA
B/+tcVIz/TqHbA+fZRIgARIgARIgARIgARIgARIgARIgARII61qofPeMU3vvFzKdWAsHqQ3L4eSK
OMf9T6JdGKQ8ZVKUE2XV37xnQaB7PGJCo+sjTMh0MLmgLvWBUApMrqmDUpfYM3To7tChu0JYU4cN
sPv/GIRSt+eW4J7uwd03Q6kLCpnuhsD26wLblF0f2Aq7IbDtxsC2mwLbbm7bDr0OW2V7BHZBr8Oh
sb0CB+QRsdDrUp4+teMhJIg0L8fLbldk88hGssGpIsnB5oq86+PiOvp+nfLnHI8ElQt7c2Ri5db+
INLZIW6FZW9nkxObnMDhxoxajZI1UTSbMbGPv3ajUsNsE/g3+Lh0xhmteRxEH7FEAiRAAiRAAiRA
AiRAAiRAAiRAAiRAAl9TAk3Z26pX3R5IfVx+Yk4th5N3JbtlQ3zrGzG1Xs57FxqdU6bzKHWaWFAH
k0qdEuvwqbqIWHenFOug19nFOuyBhV4nxTqh1EGju07YlmvlHeUbAlsh2d3ctq17YDv0OhxCIY6c
kHrdw8FDj2F9XduhvtVf3IkELxN6KQ75i0kuhU1WbbqUQ8EyRTs/qSuSia8M5Zre12d0Tldv4ViO
8I9fzSvHuFx861ueBiuBSCHaITJHux3cQUVyiDqQDdFqBEf7f9wO2+/JJyRAAiRAAiRAAiRAAiRA
AiRAAiRAAiTwdSFwuqms5Iu+pw/2EppbpnkehBDc5CbWSOFRsaE1y27mIjrViKeqp1pQZ1tT186y
OlOsO+gS624Vi+t2u8Q66HXXCqVuyzUR2wy9DgrejW1bb2rbprbESr0u/p7A3gcCB5Re90RrfO/S
5X2R4GVi3ZE45NTCnLKTHGfXvXxXvzmTcPoTz2L5lM+js/gE6/XpnFMtm4uoZT5BW8vqopqfmtQS
2LyDXFHJqtVd1K6/HisNzRY53qy4gvOpSm/RYHx6sIkESIAESIAESIAESIAESIAESIAESIAEvn4E
tOC5su1TmnfeFcroG8qQR0IIzU2cCiF3s/aWhd5aBky241HUVB/zjn2vyg4/LGS66Jo6uaxOfKru
PnECrFhWJ7fBHsTX6rCs7nZzZZ2vWIcFdUqmuzqw+RpYm7hfG4Bkt8XU67bdGthp6nXYD7v/EbW+
rnnr/UgNCV4m6j4SmDWzUqpMqckhS/mpSh25Uj5do5z+lXLmVqocQ3xmcDy3IrcV5BiRg5rNktHM
Lj4+HU2OijnIOausRTCJctxWMSiSie9404/zr/TjuxvX2Y81EiABEiABEiABEiABEiABEiABEiAB
Evg6EmjM3Fy3+vZgau9Q+qOhwzD1xblHcDYEZDfx6bn0R0wzFTlLmosIdOLzdJbJra9q96tNqRNf
qzOX1eGDdZZYtw/bYKHUecQ68c06KdZBoMPKus1XBzYJk3odqte1bbm+bQvW1+HgiVsDO24P7Loz
EH9vQH2/7tBjgYS+9SvvQmqXj3hHclL7qpRrYZwKtyNXkYRkF1Myc/e3y15RAPZW9wj0csYYHWaV
5Ji4aRDQcJnao/XUd1WgYxr7/NFhzlZRU/KcKJniYLTFLUJG/URL0mNnOkaHsEQCJEACJEACJEAC
JEACJEACJEACJEACXycCrY3FJZ/3bYm/W+p1veX5rebqOKyRS3sIX59zmE2aExqd7GNqdA/Kj9SZ
36lTa+qiSl1kWV0I58DulyvrImLdLcF45zZYdcAEVtZBptsCme4Pwjb/oW3j1W1CtcMqO+h1N7SJ
JXY4JVbpdXcFIvthxfmwLdsfwGZYpHb5SDu0Kee0UkGKSlyyGhG85KjoIzWuA1eWYzVQylIegco+
gTXAoQz6zODxEh1piyr68TmPYufj09EUOyqb5ic6qxmED5Gm9OWZ1B0k6v7z+HRkEwmQAAmQAAmQ
AAmQAAmQAAmQAAmQAAl8PQlgx2jlvvmNa28NpfUOpcpTXNVWVhzkmvpg5DhXHBWBso+hXZo49dUl
090XspS6BKXU2ZbVYRssxDq1rC6+m+ObdXaxbjOUuv9S1rbxD22bhGQXEKrddW2bhV4X2No9sO3W
NrG+Dnod1tc9GDzQO3jo8cbVdyCpy7cZFq/WoU3ZX7XUj0z1STxwCEqy4loN1q4ru1tzQdxWueDN
IWT5jndM5NPD8dwxUaRiGyP7mvtUzb62575NPs+9q/pkp7itYgIzJdF0/TSZptlk+udfEiABEiAB
EiABEiABEiABEiABEiABEviGEjhZmV62/L7Te++O6HVKfEvuFcICORznahVQbs8iS+mg0Vky3T22
T9VZSl0P8cE6sazuNrdYt0OeBusS6zabYt2G/2rbKEyKdddIvU7shw3I9XVtO3qI82Hj7xN63cE+
p3f2Kl/2AJK6rK/LT46SbXJJml1pkmqX1eDRvlSDWw3zySXS0Wd7amReaw7zk3OWBqbEvmjVDNQl
HDomlX0sl56w/QRLOcTyGTsqzCf8Ok6ZUEqoq8kRGCskQAIkQAIkQAIkQAIkQAIkQAIkQAIk8I0j
EDrXWrF7ZuOabqEUuaAOAl3S/UKsU+JbspTgsFhOmFLkXHf5SHyeTn6hDidKqAV1h+7Gd+rMT9WZ
Sl10WZ25B3bXTUFfsW7TVWJl3car2jbA/lPesb7uD20boNfBbmjbLNbXtW27rW1nj8CunoE99wf2
PRQ80KdxVQ+kg6Qu64syJa/ojlGrZIlcKiApdUXb2hloyVztZ2GO9Olq0/KsMKLyHFz6duhQJJSz
RcM2XViTy+dWTUbtbvKd1O4yGpi9NTLM6btdLLJ3J/u264QPSIAESIAESIAESIAESIAESIAESIAE
SOCrJnCqJqd02cMtO3uEknqFEqHX4SxXdZwrlsl1YD3FIjplQqOT+16FTCcW1Inv1IkTYG1KnXW0
hG0PbESs23ZdYKs6YAJHwWIbbESsC6yHUvd7Kdb9VxtW2W2AZHdN20a1H/bmNuh12//YtvOOwO57
hF63/+GWrfeULu2NdC43UVM8i8pjomSXncyIpKDkeGAfiwdumcsc6PmrxrWnTTnUMcd80pFtUuEh
pswl+zvdmC5kq6w4Y/FpcgqFTne2sJwPYsZmJ3Nene0DWSYBEiABEiABEiABEiABEiABEiABEiCB
rxMBre1MzX8vrfmiWxAr66DUJdwrxLeEe8RKuYS7hUGF69jkUjq5mk7JdPJECbX7NXKuhDwENr57
5Gt1WFa3E3tgbwxsvz7gEOuwB/aqwIarAhv/s02Jdbivv+qcuJt63abrxffrNkOvuwV6XWDnXUKv
29sruP/h2uW3IRGk83Wie6likdKUU9q6VFPRLwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQwOUmcPZ4
dfHqYUfW3hhMuCd4CNYzeAjL5KKL5bBeTpipy0UKslGsoxNL6UyNLirTqe/U2ZW6bsFdN0eUuh03
BKwP1m3Fsjqc/So2wAY2/GdErFv/u7b1v29b9/tz4n4VVDuxvm7DtWJ9HfbDbukm9boeQq/DYRN7
Hzi6+rbiVcORyOVm95XMp1a3Ua77SuBzUhIgARIgARIgARIgARIgARIgARIgARK49AR0LXSs6EDZ
p3ed3d0jePBuaXcGD0KI62GT47C5VelyTnUOAp2l0anjJKytr3tuCUbW1EWUOrkB1rmsbou5B1aI
db+XYt3v25RYt/b359b97tza/2xbJ1bZta2/Wn6/7oa2TTe2be2Gj9cFdtwhPl4Xf//ZHT3Ll/RE
Ckjk0tP66mfw22z61UfFCEiABEiABEiABEiABEiABEiABEiABEiABC4igdDZluoDiyo+vSF48K6g
+PrcneLrc/tgONTV9hk6KHIu24sjX28VtkfZLUEl01nfqZO7X51KHT5Yd01ALasT58BiA6wU6/C1
OrGa7nfC1v7u3LrfnlsrlthJve4PQq/D4rqN2Ax7U9sWtRn2zsAu8fG6qiXdETxSuIhAvsauuBf2
a/xyGBoJkAAJkAAJkAAJkAAJkAAJkAAJkAAJXDwC55rrSta/VP/5NXIdnSnWCTnutiDue6z9rZY0
ZxPo7BrdbqymkwvqXEpdZAOsPFoisqzO/GAdVtZFNsBCrPtt29rfCrFuze/PrYVwJ/fDrsP36645
twGbYW+Um2Fvbdt+u/x43b31y28uWfcSgr94JOiJBEiABEiABEiABEiABEiABEiABEiABEiABL56
AthMerIqo+iz3ic33iiW1VkaXbzU5fbKhXNCl1PWLYgVdGoRHQS6qEZ3c9Au04nv1MlDJaxzJYRS
J79WZ19WhwV10Oug1Cmxbu1vzq3B4joId9DrsB9WbIY9tx6Hw17ftgmL67qbm2HvPrn+tuLP+iDs
K2Qn7Ff/K2EEJEACJEACJEAC/z975+EexZF1/f03vvd9N3i967iOu7bXXtvrtM4JZ5wTYAw44xxx
IhibnEEICUkgCYQQAiVEECuCEqCcc87SJAX8narq7unuaSXAGKOjp56hu7rq3nN/M7JH56nuIgES
IAESIAESIAESIAESOIMEBvo8TUfjS9be5ku5vQ8Na+pg1gmD7hbZpC+XDEfO1m7SPLrEG7X7XpVN
py2oU3e/XudTTp3/Blh5D6yw6XSnLvoKb/TlHmHWSb8Op1hct+Vqz9Z/eLZe48FmE9hpAjvDipth
/+NLuNubeG/J2v9AMGSfQUhMRQIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJnjkCfq7Nqz7LyddcI
vy75tr7kW8XaObF8Tnp0iTdhg1etJQh3TjfobvRpHt0N+savsOnkra94VJ19TZ3+tDrl1G253Lv1
cjh13ujLhFMXdZknSvh13qgrveKW2L97tvxDX1x3ozdO7jSxCzvD3lux7saq1GUQfOboMBMJkAAJ
kAAJkAAJkAAJkAAJkAAJkAAJkAAJnFkCJ06ccLdWlWx5qyH8Gl/SLb7kW3xJ//Yl3exLRLvJlwhf
TlpzfndON+hwx6u46TXApou7xrfd2FRCd+rU3a9w6tA0p07adFF/U36dNwpr7a70RF8t/Lqt14rF
deJm2Ju98bd64+/A4rqmiJtLtrwNqRB8ZgkxGwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmcUQKD
/X0d5UcK1z/Su+Nf0qm7yZeAdqNvFx5Gp55HZzySTrlz+jo6tZROu+9VPaTO0anDU+mkU7flMqyp
80ZLjy7yUk8kDtAu90ReDr/OE3WV9OuuEYvrYuROE1hct+N23647XXF3FK5/DCIh9YyiYTISIAES
IAESIAESIAESIAESIAESIAESIAES+DUI4IlwDVkxhStuFGvq1II6bBth2zki/lofGtw5w6DDRhLi
8XTSo9O2k9AW1PlisM2r2vtVd+qi/uYV7tzfPJGXeZRZB79uszyFWReJxXXqZthrPFuxuO5fYnHd
jlt9O/HkunuKVt7amBXDx9b9Gh8N5iQBEiABEiABEiABEiABEiABEiABEiABEvh1CPh62ioS51at
vcq360bfzhvkja7X+3b807dDfx4dbnQVTRl0Jo8uFh6dbtNtu0pu/Oro1MkFdZGXeDbj4FLh1Amz
Dk2sr/NEKb8OO01c5912vTf2JvHkungsrruret31lYlzIO/X4cKsJEACJEACJEACJEACJEACJEAC
JEACJEACJPBrEDgxONDbVFYY/lrbpmt88TeYnDqTTQdrTjVh0Pk9OrGaztj4Vbv1FcvqLsOCOrmm
Du4cPDo4dbJtusSDtvlSt1hfh7V2aOpmWOw0ca035p/ebf7FdZ3R/y6KmAphkPdrUPkt54yf/Lvf
/W5yvF6C7VTvPmf/LVlww+9+d8OCknO2QBZ2FhCQnzLTb9lZIIkSxheB38p/6H5r/wPir/b4+j1i
tSRAAiRAAiRAAiRw1hMYHOhvL/lv3oq7fTuwsu46X9x1vu1y8wjNprvat+0qf4NBp3l05tV0yqZT
Tp1aRwez7mLPpovFK/y6CBxLs27T39ybcOky0bC4LupqT7RcXIcn18Xe6N1+i9hmYtdd+SvvgSQI
OxvhyT9ALJ7YWaXS9veR7XTsUtXfL78ZB8z6Z6xdvBMN+5ixI7LNOO0BbfF/wVMnPr9gut9saPUW
+13xX6KQMb8XUpSzJqUX/9ESP46/yzKbum62+/2FjTjAP/S0HzmicOw87anP2oDyLXV8K8+cZKe3
QH3U/MKcxgyncKzjh4t1MteUfudfo5OJ5zRnzDVKUUNoksHO9d/cMRNzws4+EiABEiABEiABEvjN
Euj39lbvWV615mrf9ut8sdf6Yq/xbfuHd9vfvTFXe8UiOvVUOmnQbVUPpjNe4dGZFtSJO151p27T
RcKsi7hImnUXuyMucUdc7Bar7OT6us24HxY3w2Jx3TVePLlOLK7DNhO34cl1NUH/ghhIOjtx+r8e
D/H9+VeWbftmazsduzj7319jj3BGZ0i5xl+LdvFONOxjTlnuaQ94yopGHcCJz6gnj6OB6i3+Zf8D
MMb3QklyWPOnXdD/olf/WqQ7jTB+hcS7OuKAX/itd0Th2PkLCzmLwsv3xPIunXlxTm+B+qz4hTmN
GU7pWMcPF+tkrin9lt+Pkwkz7Jwx1qj9+jlo0q5Yfrf96KFhxAHD6jz1i46VOnYOn+skpgwfkFdJ
gARIgARIgARI4DdF4MTgoKulMi9kUlfk373br/HG/kNz6sTmEQHr6MQdr5pH54261INm2HRqTR2c
OrTwC6VZd5Gw6cLh1wnLzoPFdfDrNmF9nboZ9h9ecTOsenLdrb74O7pjbs0PnQIxkHRWItS+OJ69
3x9tymynZyXT0ylK/oFi+ZPFHH280TDXPppj8hkNJf3PYIc/oEc3fVSjRvteWP8kt2vSrpp+I7Qe
/0CZyLTqTp2bnL8RB4yqnlMY5IjCsfMUkvzGpg7/H7ozU8xo3oLRjDGrHet489zTcax+Pfy/Hacj
pj3GaGvUflU1Oy5Qk4wzLn5zR0vMTprnJEACJEACJEACJHDOEMDNp005scXLr/FuQ5Mr67bKZXXR
V3ijL/dG+w06q0cnV9OZbTosqINTJ8y6C93hF7nD8HqhO+wiadld4gm/1BOB9XVYXHeVJxI3w17j
3YLFdbgTFovrbvfuvKt09U1NOdvO0jth8WYb3xuNgxE/AepLtfad2/R3sx7B8qVcfSe3dJmmIJfl
kgxqve5XqITpWYaUedIB/RMD/5CwZfMPFYqtwy14rJfkNFGeab6tWjuRGyZPtjy/zlS+KYj2ZmhK
TGMM3aekyhpwdFWo900TNnnBKJ7CZ5GoY1GdVowGI3+309wh+Ugo1qv+SOKiXq9ljBpi6dJFyoCB
L3KsdYyMbOlyUm6EsmSzfc50nfp7b4lqRNAOrIHEFOtwdR0lmuVYoYhI5qs2OcMXG5jfNt0k2DrW
LiKQoP7fEH2kEqmfycDWLuuZwwCTGHlo0NEvOHcYSK0V2GgHXgQKx04tm5Krvc1GDl3KiP8Ghh5d
DHNax99f8wDHd3OkARZl9v/Q2epSsSxvqhihQpi7LUGtsuQlUbxpjJ+FqVNjrc2Wqf0pbKeB0/wh
zYmsMWV1w/Exsvjj+yVY2PgH6ClMAsyIzOkCY5mvWrGpKqxB5WjVFZjfNt2k1jo2QITSYOm2dlnP
TBAtcwISmq4qBfYOozirQAHUuKR/2HTK8t+T/s2VlZhkmDTzkARIgARIgARIgATGB4ETJ074ulsK
o97vCL/SE3O1Z+tVnq1XeLZc7om+TLSov4km7nVFw5Po5IPp8Hg60eRqOsOmk2ad9OgucIehwaxT
xh18PDzIDuvr5OI6cTMsFtdd5435l9wW9lbcCdsVc3tB1PuQATFnJ3XT10bT4dBaA7/P+u0q9WXa
8nV2qBPTF1WniP6YUGLTZTsNlHpSAa1CTfIC41tNCzVR/1LviMAfzVma5c8bxwimPxpM5TtEU6lM
Y6R8x5hjUWUN6JBXUPAHtPk6BludkgNTp5gqoLpiDo7pslMPN9Rch34tjMMVyx9mjsCMMiwHNmGW
0iwq1RUZWRfu9Oe8H+MIIp0uDy3GabT5LXO+bh7h9LE3X5cRjMpktaZiHeIPLVaHaP3Yab2moPo4
6+dBpbJFN88acYA/rn5kL06GM1dvlepQrf8XxOHi0H/1Owz2f0J0dcP/6xTCLN1ptlaf5ZM+8m+I
mbljhBEHmP5DZ5elyjBHwAjZ6f/QOZY6wmUDhcNklc363tr/f+QwbYT3WlY2Eh+H67badUDDCtAZ
2d5JcWoK55DMfF1m8GMUieUM1eWQ3xRaV2n7V863D1ORbL2mTNp/L4cZYMuCU7t2rVR/DKsSh2L8
qBwunvRvrjVtoG72kAAJkAAJkAAJkMB4IIBbUFvyk4uXX++Jvsqz5SpP9BWaU4fbXUXD3awmgw42
nXg2nb6aLvwCT7juzm38qzvsr+6NF7jFwYXujWhYaIfB8Ov+5om4XNwMqxbXiSfXadtMeOLvLF19
CwScrXfC4iNg+dYoT6xfy+2fEvu3XxlB/+4r5/u/3WKu8QXXFFWN0ufYE4hzi6iRTp0C2PtGERCy
TRrtAcznWpWmAlCl5S8X0yXbYJ2HP5UaYMzQBhjnSCy7bBP8122lKaHWzsCYY1Vle0dOQxVmoOLY
ViR6oFGvUsr1E1AX/X9PjjxXDyQy4ScQiNZljNMAGQqMOZZPiRplTFLBza+ByhRJvZbA6/6qRxI5
3FyzhiGPpXpDvJbOVLGSavxWBOrRIOkhAgVZiw34RR5SmXHBKlHrDhSCC+bkaoAuS5slQ2ncRxxg
CPAfWKWIsxtuwLpXPYsMqZ/4Z/mPrPMVGft42xgx2VyXCoZB9nn+LKM8ckhkmakAWfJYhQQOkCFt
PPyniD7iAIdaLaLsv6Piogyq/zZpAwJlGz2abOMzravyA3UkY+u0nVpFGqqGjzkiQJ2XSWtgoqF6
rAr1qv2KtOA6uBHFyAH6aJVUpvB3WTMOpcvU7zhBCTHpFBPMmUYcYMqgH1ozibOz4jfXKksXy39J
gARIgARIgARIYNwR8PW252+e2RWO7SSweevlnqjLpFMn19TBrLMYdLjpVXh00qaTS+k2/kUYdKGy
4UA7hmsnfDxP2MXazbDCr7vKE6UW193gjVV3wt7Zs+2O/M3vQcBZC93+9df81dhZtH2GZZTDV1A5
3v+1Xg53zCI7YZoZP/5v7bawtlOLAtPJKQe0B9CqkN22irS0TsVa/txw+pPUMskpuGWA9ufLkHCU
EhlGH2ObbxqhV+EwwtZlCXg6qjC9UfJQ5jP+rrZftWGxDbadWidblftz6bUbo2UUndkoZ9l0GbH0
AxnTmskyZRjlDlMR1SRymLl6+sB/ZXbjVwwHesGa12GcyqnmFI56AosZptiAj26gPHuPjG/VJIYE
VKFVpCU3yzYimqWOOMCYZTowaxHHamGNOaW1died/lLM0YwkDp2OUo0JYzmQwR3f+oAocqitGsv7
bznRp5tnjTjAPFgP4DhJvyj/tc+S5wZU5/myVxvjMMLWZY2oJbd12k7VINnpjNdhvC2rKYSB3WGW
Jsf5n6EFyGT+33Q53dw3shiHETKdIVb9ShrvhLNCS69jeWZVxmhzphEHGLNMB+ZU4vjs+M2VpYyF
mKkiHpIACZAACZAACZDAOUQAN6LWZ0RXrLjCHYlHzMFYk/fAYlNX5dRFyAfT4Xl04pF0hkcHm+4v
7lA0OHXq4Hx3yF9EQ49YZXehZ+NFwq8Lw8PrcDPslVhc58WT67Ze79l2k3f7rd74O7C4rjb4JqQ+
a++E1dcMmb8zmr8bO38I1Ddm/Q8T/xd2Mdr8xVibLYdbR9ntHmtEPbLp7wtbWNtpoMzTFFDmMeTo
C6tUcDMzvwBnZeZeBxyWLvNYPa5lQABkpxnWN8JxhGWILYNIbOuyxrBdDBhvHa3qcJijLmiv8rpB
2/aJsbpJAaGGm+ugRXYZqSwHel6HWQFZIdypz1yVw3UZWU+j1aVLMLoRY2SRw1VtFqGOraP1jP7f
MnXd9rk26XcgoqvUJpkG6+mtxVo+c/qQYf91TiqmWMu5YcEC/B2uL0VyLMUsZcQBjqJEBPUOiSNR
tIjj7zG/e1Z5gbSdUTiVa41kzuEo0qnTGsJBjH3SkDr09E4DLP9lOqkBUqeewq5Jncu4xhBbFnlq
lGc50KY4ZLB12UKasvp/NWxjRsRrGy9iOnTZe52HKEHW15EEqOt+/XK2qW7nTOZe02A9tbxsvBND
FKQPdvjXHN647KjUnGnEAUYo84GIoKSKo7PkN1eU4udnlstjEiABEiABEiABEhhvBHqbyvLWPNoT
jg0mYNld5t58KfZ1lXu8ys0j1F2uYvmcYdOd7w6VLeR89wbZhFmnW3YhMPEu8IRifR02m1A7w4rF
dZ4t13li/uWJvVltM+HacWf+useR+uylrb78Wv6uUScjf42U36H1mcZw2Wv9u0DmMAYoFpY+XYR5
muzzd9jC2k7tfE97QGsCFd4vznzVWZm5V8624jB3OQY3D0A2c7jAUyXHMsZyYsg199oyiDG2LvPo
gIv28aOpwtBhPZB5Aj5Xuh71940cY2UogzjPtSoPHKgns37yHWbZiMhITn3ygvbicN1JvZNyS5+z
yMBiHKgoJeotUX+r6gJln/FBViOMUzXIJFYe2i5bP4wjF+scQ9fj8O+oJ1hyj1SKZvbZijHV6qAE
XUYOMVJNFl2Cubzkj6cE6INUNNsQx8ocO+V0eUX/FAz5LjvqHoUY2zw1w1+OvCw79czOQk29pkNT
cH/vyClM08yHpokWRWKMDK9Dsv6rCQ+YYnpXVRa/RFNWW6flVAka63ttCWFksvRaTowhgQcjC1Aj
bO+nDK+wOGcy9zpwM80XmsyjAzU69DhOGEnpufSbK2rVf58c+LCLBEiABEiABEiABMYRgcF+X8mO
OS1Bl8Csw/o6k1kn72zV7nLF2jnDo/uze4NqMOv+7A7B8fnuYPkqjLu/CrNuIxbXKb9Oe3KdZ8s/
5eK6W7zx//Huuqdjy21IitRnLWj15dj6d412NvrvkZZv2A7fweV1WzhLn8Mc+5+/tiG2Uztfp8sy
o/8PFtsQ26k9oO1cjrZVpA2xFKZPs4x3GGHpsgx2jmpTaztVcyydlgQnpcr+55hDREvXKKrQdQz1
r4znX/2FYVrQePyZY/3rOCCEZa4FhRoqr/s/DQHz9WTWIZYKtTlOfeZwDted2BhT5HhVtTy0KjCG
OR6Y5gZed6Bg+y1zmm7uk8f2j72lGIcRluv2T1GgyoAeJ9kBg9DhlMfy4dG8HJ2nHD/cAKckOjAx
WQ8kar5hgfxM6l26HNO5iCbp+PscK3PstEqRYYz01mvOZ05BbWLsE+UU23stp+h9lhN9tnnWiAPM
g/UAjpP0i/q/cpAAEDha9vgR6zNM/wbOsYdxomU3oyxjLCdaKpsQhyEOQuyfYodZpkr8h07jrALk
me0zY+4bWYzDCJlW/zyctl9tGdUq1dplPZMUHLr8dNSR1D85XozUPx+i6yz/zbVXwXMSIAESIAES
IAESOIcJNGRurVx+RS+2c92ExXUXu8PlyjrcACvMOrl2TqyjM2y689wbznMHo/3ZvV4dyONgjDH7
deJmWDeeXBf5D0+0Wlz3b2/c7d6dd7l33lMTfDOSnsVIHb6DS7Xy66//i7itAlzVv/HKKzKK3iWn
Wi7b/xzyz9EzyDl6AL8A/xfrgL8FHLKYRZ72gObg4lglMEsGBFWOomG6pHUYPfJcL10Ftnap4KYR
WjZ/j+zwQ1bX/ecyqHXMqauy/cVqlSwzWrsCRGkS/FWo2v2vmGGpQU2wdKmg0lG29Atxlg7L3AAp
yKmpsUxSvXqXnKWfKJVykq0Apz5/TTiyZdcSG+sqhlM+ksjh5lo0iBObDqPHD06lM5es5hgjAvTo
xRhzbEn0635mtgEBKgM65AQjfsBl2aGnMQ9TieyJjVJ0HsMMcMwlwlqeVa8+NLYuPXqgoAAB5iHI
6MAHXZZBqlp/l73SQN2BQVWPNa51XsAcDbIBTDv367C/CyMOCBCuqTJSWBWZzuTAyZPxXthLCEgq
Z4leTagcYM1g6wqoXIRQGXEDtPqxnAZOUD16Sn266VxECZCqdfiHWbKoxI6vIwtQof3vlf5BM3KN
UowxXldv/HdMj2jO4SjW3zlEeaoa/1ukzv2Ztd+RYQb4U5iORBjbr6ko2tblVMYQAmyVqlGWTnRZ
zgPfBZM+HpIACZAACZAACZDAeCfQXZtbtOqu7hA8tu5Sd9jFYndX3AaLh9GpG13NTp2w6f7kXm9u
50nXTrl5yq/D9Evc4Viqd4Xw66KuEYvrYtST68TiOteOe0qC7kfSs5e7/Pro/9prEiq/ezpewSDt
66u2Dk/9Y4yVFy1fUkf264zv/paQlr/FbGFtpybl6lD768Mez/Tt2RbBdhoQ0N7hlEBnIGPZU/uR
OFC3dTkFRzw9vvYO+CPa3hF1wV7RKauyBrRJFnxsXSNWYWfqpNBfsxqtB7X3Dz/XelUDp4ca6p2y
1ivT2yocss9amTW7nk6vwOmqfs34m16fZPxreo+NPnXgn2tVMVIsjB6CiOmDZvukaalHHGD66Noi
mKda9DprMQ0PGGAvPGAA1FrGjDjAIkg/0d4vkxK9JEvwoWCa/hOkz7NStH4eRBprT8C7rMqwJtfF
6v86lSoCmavQx+r/DjHHlMhJmCXkSANGTqGLsf9rRA6sYIigujB52VQEItu7jOCStcog+/zJrKcj
pBTinWLaOtU7q+s0JvmTii7nnxEFDDHAHNuqMFCMs1rzr5Q1gjm2RbWzFtNwpwGWd2zEAZZ8+okm
z5RIL8kS/Mz95qr0Zj26VP5LAiRAAiRAAiRAAuORQL+npyDyg84Nwq/zhF+M3V01v049ng5+HdbR
ifZHrQX90R30J9H8xt2f3dr6OqzKg+MHv+4y9ybsNPF3T9S1nq3/8mzD4rrbsLjOm3B/z/Z7kA5J
z1rW8vur9auqoVV9tx3qq6Tt+7J5mJxo7gj8c0gkkRHMuc0hRb8898exhbWdGrJNB6c9oCm2OjRn
MP/ZIq4qfg5/9DiU7tRljg0K8tSPK7B8cz5FLXDMKaqyBrQpEjUHdpmrgPrAAWKa6cc8Huz8b79/
jBriR2FcGX5uIB810dyPjOa41nrlcKcCnPoMUdqBSZvIICP7U5muig9MYNXDiBxxrlWKebgQIM+N
hPJM27dBKMGPX6U/kEWOMdm4bsrhUCyGmecHTtfimKIoJfLVNNwywNRv6BAH5lQOYEcxwBJOnKi8
1oQyTSAqs8RA2iKYWZ8RMrDTHAgcjJFD6RH99h9zDGcx9hl6rYo/5sgQtjLNYq3CtHAjDDDLQl1O
KQJ1oUfNs4nxj7RktXyMHTIEdpmnK9qyxw/edqrrMVDZfrOEsMCYUq652w4wIIu/wIAjBWQoAVqJ
cksWNeYs/tUWtQ2HRdY+4oAhCPnfQyNN4KdoeJjGRI2kEdKsSXWaA2G0MVKJG8v7G1AOO0iABEiA
BEiABEjgHCRQnry4aQ2eOHcp9nV1h14oVtape2CNBXXCoINNF9jg2p3nWv9nF/y6YCzJw8I83E57
qTv8cvcm3Ax7jScai+v+5d1+i3eHWFznS3qwfct/kO4chMiSSODkCJyOP09OR4yTU89ZJHAWEjiD
vxBnMNVZCJqSSIAESIAESIAESIAESIAEflECtekbq5Zd6tp4idgqQvh1fxUPo1NPqMPKOs2s+4M7
6A/udar90b3uj66gP8mm+3Ub4NdhbR5W6ImbYT2br5Y3w17vibnZu/02b7xYXOdNfKA+7Fak+0XL
YXAS+O0QkH/tO67qGH0NarmCbZXC6KdzJAmcYwTEb1Xg+qBfosjT8fv7S+hiTBIgARIgARIgARIg
ARIggXOCQNPR+NKlV/eEyH1djfV1wq+T972uE+6c7tT9wbUO7Y+utX8Ur8K10/264AvcIfLhdWGX
Sb8ON8Neh5thvbgZdscd3p13+xIfcCc+WB18G9KdE9hYBAmcBAH1B752z5D65xSdBe2urpKTEMMp
JHAOEhC/Eaf4SzUkldP/+ztkKl4gARIgARIgARIgARIgARIY9wTaitOKl93QHXyxB0vscEMrVsrh
/tb18sl1YhGdbs2t/YNr7e9d4lV37cTV81xBGIlbaC8UN8Oqh9dFXOXZjJ1hcTPsjd7YW73xd3oT
7vMlP+ROeLAi+C6kG/fICWDcErD/vX/Ky+JkwFOOMm7fDxZOAmMhcNp/f8eSnGNJgARIgARIgARI
gARIgATGGYHOyqzCFbd3BeNW1kuE5xZygWvDX8RT6eDFiUV00qDTzDrdrxOnuCT9Ojh7wfDr1Po6
8fA6z6arxcPrttzg2XazttNE4v2+lAmuhAdLg+9HunEGmOWSAAmQAAmQAAmQAAmQAAmQAAmQAAmQ
AAmQwBgI9NQXFK17qDP4ErE6Tq6vw/4R0q/7k8WvW/N7l2h/EE1bZSfvh/Wvr0OEv7nDr/Bs0m+G
jcVOE3eonSZ8ux/tTXi4NPRxpBuDOA4lARIgARIgARIgARIgARIgARIgARIgARIggXFGwNVcXrzh
mc7gy8TWrmp9Hfy6oD+71p0nFtGhKY9OmHX/Jy07ucpOuHYw9OT9sNgcVtwPe4lbPLxOvxl2q/lm
2Id9qY+5EieUhb+AdOMMMMslARIgARIgARIgARIgARIgARIgARIgARIggTEQcLfXFoW92rH+MrE6
LvRi4bwF/1Xz68TWElhQp1bW/Z9rNdrvRRNmHS4Jv048vE5tNhF6qTvscg/8OtwMG42dYW8SO8Pu
vMsrb4b17XmiN/GR0sjXkG4M4jiUBEiABEiABEiABEiABEiABEiABEiABEiABMYZAW9nY3H41I4N
+vo6PIkuWD6/Do+nU4vrlEcnzDqrXyeeXyc3m9A2h9UfXhd1rf7wutvVzrC4Gda398nepMdLI6cj
3TgDzHJJgARIgARIgARIgARIgARIgARIgARIgARIYAwEvF1NJZumdQZfLtbXhcj1dev/ItfX6X4d
1tcJy07369RT7GDlGX4dluRh4jAPr0t9zLdvoiv5ibLoN5BuDOI4lARIgARIgARIgARIgARIgARI
gARIgARIgATGGQHh122e1rnhCvH0OTyDznw/rPbwuqH8usCH113p2fwPT/Q/PeLhdbd44+/0Jtzn
S8bD6x737XvalfJU2ZY36deNs88XyyUBEiABEiABEiABEiABEiABEiABEiABEhgbAenXTe8MudLJ
r/uT3GxC+XX6q7a+bojNJiLh16mH190q/br7fSkTfHse79v/jGs3/Lq36NeN7e3haBIgARIgARIg
ARIgARIgARIgARIgARIggXFGQPh1kTM6Q69yh+OW2EvdIReJ/SNwS6zYH9Z2S6zaeMJpswlMDL/c
s+lqsdnEFvh1N3vjxGYTvsQHfCmP4OF10q+bSL9unH24WC4JkAAJkAAJkAAJkAAJkAAJkAAJkAAJ
kMCYCcCvK4Vft/Hv7vArAh5hZ7bssFGsbPrOsNpmE4EPr9tyg3fbv71xd4jNJpIelJtNPNWX9pxr
98Tyre9wfd2Y3yFOIAESIAESIAESIAESIAESIAESIAESIAESGE8ENL8u9O/uiKvkLbGmJXZBf/av
shM2nWr6nbDr/yJW4mE9XuilYmLEVfrD6/4lHl634z/eXff6kh7yyc0m+g4870p9mn7dePpksVYS
IAESIAESIAESIAESIAESIAESIAESIIGTIaD8uo6Nf+8Nv6o79LLuDZd2B1/cHXRB97q/dK89v2vN
eV1r/tS15o9dq2XDgTg9D5fEAAzDYEwJvawn7KqeiH/0RP6zJ/rG3phberf/pzf+XlfCQ66Ux9x7
Jnr2P9+7+xn6dSfzDnEOCZAACZAACZAACZAACZAACZAACZAACZDAeCLg6WzMXD958zd3rvrmxSVf
vrDsq5dWzHp55dcvr/7mlTXfvrr2+8lBsyevnzMleO5rG+ZNDZ0/beOP0zf+9Eb4gjfDF74VvuCt
jQveRAv96c0NP74ZPP+N9fNnBM1/Y90PM9bMm7F63oxVc2esmDNj+ezpa+a/sWXRs9mhryPdeKLL
WkmABEiABEiABEiABEiABEiABEiABEiABEhgDAROnDhRXnh0zcolqampaWlphw4dysrKOnbsWEFB
QUlJSUVFRXV1dX19fXNzc3t7e1dXl8vl8nq9fX19g4ODSINXHKMH/biKMRiJ8ZhVXl5eXFycn5+P
aJmZmQcPHty3b9+aVcuQDknHIJFDSYAESIAESIAESIAESIAESIAESIAESIAESGDcEBgYGFi5fMn2
7dvj4+OTkpJ27969f/9+5dodP368sLCwtLS0qqqqrq5OWXY9PT0ej8fn8xl+HY7Rg35l1mEkxmMW
5iIC3D9Eg1OHyImJiTt27EA6JB03gFkoCZAACZAACZAACZAACZAACZAACZAACZAACYyBQH9//5zZ
361bty4oKGjDhg2hoaERERFbtmyBg7dz587k5OQ9e/YcOHDg8OHD2dnZ8N/UujusnYMpV1NTg1cc
YyUe+nEVYzAS4zELcxEhNjY2OjoaMREZ8devX490SDoGiRxKAiRAAiRAAiRAAiRAAiRAAiRAAiRA
AiRAAuOGAJbJxW6LmTNnzvf6z+zZs3/44Yeffvpp8eLFy5YtW7Vq1dq1a4ODgzdu3AjbLSoqauvW
rdu2bYuLi8NiObziGD3ox1WMwUiMxyzMRQTEQbS5c+ciBV7xg3Rqbd64YcxCSYAESIAESIAESIAE
SIAESIAESIAESIAESGAMBPD0OXhrkydPfvXVV1+SPy+//DKOp0yZ8tprr02bNm3GjBlvvfXW22+/
/d57782cOfPDDz/86KOPPvnkk08//RSvOEYP+nEVYzAS4zFr6tSpiIA4r8ifSZMmIdry5cuRbgzi
OJQESIAESIAESIAESIAESIAESIAESIAESIAExhkBPE3u6NGjCxcuxEK4efPmzZ8/f8GCBYsWLVqy
ZMnSpUvhsK1cuXL16tW4ZxY/uKEVt7WGhIRgKV1YWBhecaxudFUDMBLjMQtzEQFx1BI7hMUxEvHh
dePs88VySYAESIAESIAESIAESIAESIAESIAESIAExkAAW7Vi/9bIyMiUlBTsNIFdXDMyMuCq5eXl
FRUVlZWVqc0mmpqa2traRtwfFmMwUm05gbmIgDg5OTlHjhzBQ+327t2LZ9khHfeHHcM7xKEkQAIk
QAIkQAIkQAIkQAIkQAIkQAIkQALjiQC2fsBT5mJiYrDBxK5du7BJBFy19PR05drl5+djL4mKiora
2loYcdgBFvvAut1u2/6w6FH7w2IMRmI8ZmEufD/EQTRsP4HNZ9X2E0jH/SbG00eMtZIACZAACZAA
CZAACZAACZAACZAACZAACYyBAKwz7AGB7SHws2bNGtzTig0jcKPr5s2bsYuEYeLBcEtLS8Per1lZ
WXDhcnNzsSEsls/hFcfoQT+uYozaGRbWH+Zin1nEUZtQIDL2oUAKpKNfN4Z3iENJgARIgARIgARI
gARIgARIgARIgARIgATGEwHcmvrf//73yy+/nCV/vvrqK/z77bffYpdYPMsOj57DQ+ewGwUeSQer
DQ+vw9Pq4OZhK1jcQos9YfGKY/SgH1cxBiMxXj22DhEQB9G+kT84QHCk4/2w4+kjxlpJgARIgARI
gARIgARIgARIgARIgARIgATGRgCr3XCz6uuvv/7cc89N1H+eeeYZnL7wwgvYMFZtF4sNZLHBK4Zh
71f8YBNY9aNO0Y+rapNZjMcszEUExFE/zz///PTp05GIi+vG9vZwNAmQAAmQAAmQAAmQAAmQAAmQ
AAmQAAmQwDgjgIfR4fl1eKwctnkNDQ0NDw/Hqjncyrpt27a4uLj4+PjExEQ812737t14tB32pMDO
EdiWAne/YhcJvOIYPejHVYzBSIzHLMxFBGwwgVtiERORsWMsEiHdOAPMckmABEiABEiABEiABEiA
BEiABEiABEiABEhgtAQGBwex5g3emtppAs4bLLjs7Gw8la6wsLC0tLSyshJbSDQ2Nra2tnZ2dvb2
9nq93r6+PkxEDrziGD3ox1WMwUiMxyzMRYTjx4/j0XaHDh2CoZeamgofD+nU3NFK5DgSIAESIAES
IAESIAESIAESIAESIAESIAESGDcEsNpt/vz5akGd2l0iJSVFbS2hXDtsKlFeXl5TUwMjrq2trbu7
23F/WPTjKsZgJMZjFhw/RID7t2/fPpiBcOpiY2Ox3A7puMRu3Hy+WCgJkAAJkAAJkAAJkAAJkAAJ
kAAJkAAJkMDYCOBpctgVAjtE4GZVvK5YsWL16tVBQUG4fXXTpk2w13BP644dOxISEuDj4Y5XtQAv
IyMDXhy2hcUrjmHKoR9XMQYjMV7dCYutKLAPBaIhJiKrH6TjI+zG9iZxNAmQAAmQAAmQAAmQAAmQ
AAmQAAmQAAmQwLghgK1ai4uLP/jggy+++OKzzz779NNP8YrtYr/++uvvv/9+7ty5WA63YMGCJUuW
LF++fNWqVWvXrsU+sHjS3caNG7EtLF5xjB704yrGYCTGYxbmIgLiIBqC4webw3744YdIx/1hx83n
i4WSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmMmQCeJldRUQFj7YknnsAurpMmTcJOr9jL9e23337n
nXfefffd9957b+bMme+//z5sPRhuH3300ccff/yJ/oNj9KAfVzEGIzEeszD3jTfemDp1KjaNxV6x
CI4USMSH1435HeIEEiABEiABEiABEiABEiABEiABEiABEiCBcUYAC95wjyoeOvftt9/iTlhsCYH7
W7FVBLaNaG9vx44SuDrKHwzGFEzEdARBKAREWARHBK6sG2efLJZLAiRAAiRAAiRAAiRAAiRAAiRA
AiRAAiRw8gSw8g2uGhbLLVy4EM+di4qK2rVrV3p6OnaOwLq4pqamrq4uj8ejbDc4b+oHp+jEJQzA
MAzGFEzEdARBKAREWC6rO/k3hjNJgARIgARIgARIgARIgARIgARIgARIgATGKwG4avn5+biPFU+x
wwPo8IOHzsFwwy2uuD0WN8lOmTLl1VdffeWVV15++eUX5c9LL72EY3TivlfcSDtt2jRMx42xuE8W
QXCMgDTrxusHinWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmcKgF4a9gSArbbxIkTH3vssfvkzwMP
PPDwww8/8sgj6Hn66afxPDpYdnjSHV5xjJ5HH30UAzDs7rvvvvPOO++9916cIghC0aw71beE80mA
BEiABEiABEiABEiABEiABEiABEiABMY3AdzoWltbiyVzN91001VXXXXttdfefPPNcOFgx8Gve+aZ
Z7CwDmYd9pLAK47Rg35cxRiMvP766//973/DykMQhBrfLFk9CZAACZAACZAACZAACZAACZAACZAA
CZAACZwGAvDZ8Ei6RYsWYaXc7bffftttt9111133338/1tENtb4Oft0999yD9XUYtnjxYkynWXca
3gmGIAESIAESIAESIAESIAESIAESIAESIAESIAGdwMDAAJ4+N3PmTHhxDz744IQJE5544gn4dc89
9xyW1eHJdXh9/vnn0YN+XH3ooYcwGFMwUY/Bf0mABEiABEiABEiABEiABEiABEiABEiABEiABE4b
AayRww6w5eXlq1evxg2wTz75JJbY4Qc3wBo/Tz31FC5hAIap3WNPW3oGIgESIAESIAESIAESIAES
IAESIAESIAESIAESCCAA1w7bRvT19bnd7s7OTjyYDovo8IMDnKITlzCAN8AGkGMHCZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAA
CZAACZAACZAACZAACZAACZAACZAACZAACfyGCbR29FbVt+WV1R/Jqzp0vHJvZknK4SJzQw/6cRVj
MBLjf8PVUjoJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJnE0E3N6+gopGWHCh8Ue+XZvw6qywu6cv
/eeLP1zx1PcXTph1gWznP/jFn+7/XDUcq05cxRiMxHjMwlxEQBxEQ8yzqURqIQESIAESIAESIAES
IAESIAESIAESIAESIIGzmoCvbwBL46JTcn4ISZn48Xp4bhc+8rXhyJ3KAeIgGmIiMuIjC3Kd1Swo
jgRIgARIgARIgARIgARIgARIgARIgARIgAR+JQJY9oabWNfE/PeVWRuvf3E+lsnZrLnrXvlp2sId
oXuL9xQ15TX0NvYONMnW6T3hG/xZNRyjv7G3Hw1j9hQ2hewtfn1hHObaoiE+siAXMiIvF939Sm87
05IACZAACZAACZAACZAACZAACZAACZAACZx1BHCPatiujKnfbbrmuXnnP/Sl2VibsTg+NquqrM3T
03fCO/iz0QyDbqgDY6Q8wNwT3X0nytrcMZlV0xfFm1MgI/IiOzRAyVlHh4JIgARIgARIgARIgARI
gARIgARIgARIgARI4IwQwL2oadllc4OTb5288K8Pf2V4aLe8vix0X3FBUy8cNs+Auf3sGfzZM/Cz
e+BnF177f3bprbf/Z9VUD47FgRzp6ccUc5AT7gF4d4P5Tb3I8u/Xlxp5oQFKoAeqeJ/sGfkIMAkJ
kAAJkAAJkAAJkAAJkAAJkAAJkAAJkMBZQQBuGHZ0/Wx53LXPzTvvAW23iMuemvNjTBZsNFf/CTS4
aqrhuLf/BNbXwb7r7kf7uWd0DSPFeDVRvvbokVUK9Zrf2Dt/ayayK+MOerDc7uMl26GQrt1Z8XGh
CBIgARIgARIgARIgARIgARIgARIgARIggV+SAHywjxbHXjlxtuHUPftd5MGK9k7vYG+fsOaUQQef
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
DqGfaoasakR/jMJYHMCOGgvLsA8v8KX9Xvf0oHubj+o0NHXq3IxNhcWIE9EiZkSO+JEFckFGyEsp
eMhUKXioG1Q1eKCh6u4o2VXFF402SIAESIAESIAESIAESIAESIAESIAESIAEKiagxToU1EGpg1Sl
KuggYZkC3eHDh7VAV1paunnz5k2bNuXn52dnZ69evXrlypVLly5dsGDB7Nmzp0+fPmLcpHa9x9V4
efgtDQZd46t2Skar33PK0JTVK/LLMGsVmht2fDj5zoenzn749tmP3n73o9PvffzO+5/gffb9T979
4FP8VKdox1X0QU/0xyiMhQXYgTXY1BodDuDx1mcH12o3utOA+PEJ0xAVYkOEiBPRImZEjviRhZbv
kF1IvlPVd6ABJiADMZOSXcVfJvYgARIgARIgARIgARIgARIgARIgARIgARK4YAKQoTDlE1VkmAqK
maHQqSDTnTx5EvqV0uj27du3a9eu7du3l5SUFBcX/+1vf8vLy4PwlZmZuWLFisWLF8+dO3fmzJkp
KSmTJ0+Oi4sbN27cyJEjBw8e/Hqffq06vlbvpdfvbtTn5vr9r63nldtpbe32JiPrdp/8+sTlkxbl
r8gr21R2pGgnVrc7evits1qvwzFa0I6r6IOe6I9RGKvtqAPY/2P9/tWe7/9suwGdeg0aOmwEIkE8
iAqxIULEiWgRMyJH/MgCuSAj5IXskCMyhSaptDsQAAfQABOQAR81MfaCedMACZAACZAACZAACZAA
CZAACZAACZAACZAACUQlYBbXYQbohx9++M4772CWqJ7uChVrx44dW7duha6lCupycnLWrFmTkZGh
CupmzZo1bdq0pKSk+Pj48ePHjxo1asiQIW+88cZrr73WtWvX9u3bv/zyy01eaF6vUYtHnmp1T71X
bqnT/fq6fa6t2z+ktp3fKezcWK/vn57u9UCDzjUbt2/84ittX+kAv/COGBAJ4kFUiA0RIk5Eq8rt
ED+yQC6q3A7ZIUdkinz1hFlwAA0wARmW2EX9DvECCZAACZAACZAACZAACZAACZAACZAACZBA1RG4
NHpds2bNGjduXL9+/dq1a1d/otZfH6tz58NP/emhhjc/0uz66m2vq9n1mlqvXVOn7+/rvOG97Sm0
uh19rq31+g1Pdr/pifa31mh5V42mf635XPU6Des93RD24QXaIBRC6nVV9wWhJRIgARIgARIgARIg
ARIgARIgARIgARIggUtN4OLNh+3Xr1/Pnj1fffVVaGitWrVq3rw5VLUGDRrUrVu3Zs2ajz766AMP
PHDvvffecff9t95Z7abb77/x9geu+/ODv7+l2u9uqfZb/Lz1wd//6aHrbnvoxr88cvOdj9xy96O3
3fvInX99tNpDGPooLMAOrMEmLMM+vMAXPMIvZuNiTi7nw17qLxP9kQAJkAAJkAAJkAAJkAAJkAAJ
kAAJkAAJXDABs8SuqvabmDp16qRJk2JiYsaOHTt8+PCBAwf27dtXaXcdO3Zs06ZNy5YtX3jhBSXf
1atXr1atWjVq1Khevfojjzzy4IMPVqtW7b777sNPHKMF7biKPuipBDqMhQXYgTWl0cE+vMAXPMIv
vCMG7HyB/S+438QFf0dogARIgARIgARIgARIgARIgARIgARIgARI4JIS0JIddlX4/PPPodphxTZs
jfrxxx9jr9gPPvjgvffeC20Xqxe4wxar27Zt27JlS2Fh4caNG3Nzc7OysrChQ3p6Oha4mz9/vtox
Njk5OTExEbs/YDW50aNHjxgxAiVw/fv379OnT69evbp3796lS5dOnTqhRq5du3YQ4jCzFT9xjBa0
4yr6oCf6YxTGwgLswBpswjLsK3UOHuEX3hEDIkE8iAqxIULEqTeERfyhDWGRIzJFvsgauYMAOIAG
mHBz2Ev6daQzEiABEiABEiABEiABEiABEiABEiABEiCB//s/JdlhC1RoU1Co8MIOC1CrsDUqZKvP
PvsM+hV2SlUKHnZNVQre6dOnT506deLECbWZ7MGDB7HF6u7duyGLqf1kN2/ejF0qCgoKsBkrNneA
gKb2qoCetmzZMuzWiuK3efPmzZkzBztBYAtXaG6pqanYGAI7uuInjtGCdlxFH/REf4zCWFhQe0bA
JizDPrzAFzyq/V4RAyJBPIhKbfmKOBEtYob2iPiRhVLnkBeyQ47IFPkia+SuIICG2hYWfPg1IQES
IAESIAESIAESIAESIAESIAESIAESIIFLTECpdvgJkUq9IFjhpcQrU8HTNXgQu6B6YRNVLeJhT1Wl
4508eVJJeShmg2IG3Wz//v179+5Vgl5ZWRk0vdLSUmzMCoUNOhte2Ke1qKgI5XBQ3vATx2hRl9AH
PdEfozBWyXGwBptKkVMlc/AIv0qXQyRamkOEiBPR6to5pzqHZP3U/0fTuMR3ge5IgARIgARIgARI
gARIgARIgARIgARIgARIIJKAVqvMg2ginqrEM4vxIIupejw9qRazTZWmp2rzoKRBTztz5gzEPfV6
++23obPhBcFNvdQp2v0up9FfqXBKiFNlcrCMlyqWgzstyumSOVU1Fyqc09KcmaA+jgTCFhIgARIg
ARIgARIgARIgARIgARIgARIgARL4ahLQopY60AVpOBDVePKlSvLUvFoU5ukXRDO8IKDpF+rc1Avy
WrSX30XMV9UvZUpbVgfarx9IUC+H8EKRfzXxMioSIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES
IAESIAESIAESIIEqJPD/ASCdK3cKZW5kc3RyZWFtCmVuZG9iagoyNCAwIG9iago8PAovTGVuZ3Ro
IDMzIDAgUgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDEyOQovSGVpZ2h0
IDEwMQovQ29sb3JTcGFjZSAyMCAwIFIKL1NNYXNrIDM0IDAgUgovQml0c1BlckNvbXBvbmVudCA4
Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMnAcGmK8AAQpl
bmRzdHJlYW0KZW5kb2JqCjI1IDAgb2JqCjw8Ci9MZW5ndGggMzUgMCBSCi9UeXBlIC9YT2JqZWN0
Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggNTAwCi9IZWlnaHQgNDAzCi9Db2xvclNwYWNlIDM2IDAg
UgovSW50ZXJwb2xhdGUgdHJ1ZQovSW50ZW50IC9QZXJjZXB0dWFsCi9TTWFzayAzNyAwIFIKL0Jp
dHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHtXQ2a6ywL
/fY0e5o93T3Nnt7vwFFC1Bjz1yYtPr0ZgoCAeGKdTu9//0X78Az8/f19eIRXhjfPHjMJ3pRSuXG3
8IWczJwkd7mZjKnuZCob9yZTb6sriWnXZASezvQlChnORUCBdP339xevB2XAT27QH5kBWa5z8PnI
MA8GtZwiIlvTvHTVipJuTbheO+pNm6vMZNzLueE8ezNNO1Sj8zKYNjDx80HIFq5unv6vUEj1/Pfv
AQ1O2upbmpxVAaf4abG70E4kgdgJtJEvbzenT356/kG6Y41dHYHVoVu64DFGXsUGOAGYD8rA6rx/
lYAUNApYG+n7h08/zWeswNrnkVgKO7it7dyNU/jcjP0anyU5OaspUTljwjbkv2Z0Wu1MUKer4VHl
sISAZqJKC+dByBau2vR9OaGFKwCpZfzUZMjqYwi6MHMsEhzaUlTSp8+GjsyS7n34DEJCWI70XG99
ukDnWyPOHa22Vkyo3GYfKFwI1Ba8WBKmBYkhN31OoTeA/WEZWJrvb+JLET8d1f181eGA4wUc/fmx
u2D3kMups317IlRS8on2kn27hKNjpbj643rJZiKojqvsb7Sp2IT5j9sJM4rHuX2Ww81Z/h4mZv+T
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
nzg6vue9ilrJ/klFED+FOVoq8hRV9FZQ1sRvZw5+G7Z+XD+l5/VB/TwJPa2f0a/ooxG+DHRJz8Jz
UR+jSfCwaSHiEqCKgzPUTlRjjQPiKfHytFtkkf0PQBn9ZgplbmRzdHJlYW0KZW5kb2JqCjI5IDAg
b2JqCjw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovQXNjZW50IDc3MAovQ2FwSGVpZ2h0IDcyNwov
RGVzY2VudCAtMjMwCi9GbGFncyAzMgovRm9udEJCb3ggWyAtOTUxIC00ODEgMTQ0NSAxMTIyXQov
Rm9udE5hbWUgL0JOWlRMTSMyQkhlbHZldGljYQovSXRhbGljQW5nbGUgMAovU3RlbVYgOTgKL01h
eFdpZHRoIDE1MDAKL1N0ZW1IIDg1Ci9YSGVpZ2h0IDUzMQovRm9udEZpbGUyIDQwIDAgUgo+Pgpl
bmRvYmoKMzAgMCBvYmoKWyAyNzggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMzMzIDI3OCAyNzgg
MCAwIDU1NiAwIDU1NiAwIDAgMCAwIDAgMjc4IDAgMCAwIDAgMCAwIDY2NyA2NjcgNzIyIDAgNjY3
IDYxMSAwIDAgMCAwIDAgMCA4MzMgMCAwIDY2NyAwIDcyMiA2NjcgNjExIDAgNjY3IDk0NCAwIDAg
MCAwIDAgMCAwIDAgMCA1NTYgNTU2IDUwMCA1NTYgNTU2IDI3OCA1NTYgNTU2IDIyMiAwIDAgMjIy
IDgzMyA1NTYgNTU2IDU1NiAwIDMzMyA1MDAgMjc4IDU1NiA1MDAgMCA1MDAgNTAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgNTAwXQplbmRvYmoKMzEgMCBvYmoKMTk4MjQ4CmVuZG9iagoz
MiAwIG9iagpbL0lDQ0Jhc2VkIDQxIDAgUl0KZW5kb2JqCjMzIDAgb2JqCjE5NAplbmRvYmoKMzQg
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
9ne490uzxj8SBLE3CDhBYPxPKowJJAaCINnlP66xNnaG1TmCnPvl3w//esACD/wPHkBm5QplbmRz
dHJlYW0KZW5kb2JqCjM1IDAgb2JqCjMwNzUyCmVuZG9iagozNiAwIG9iagpbL0lDQ0Jhc2VkIDQz
IDAgUl0KZW5kb2JqCjM3IDAgb2JqCjw8Ci9MZW5ndGggNDQgMCBSCi9UeXBlIC9YT2JqZWN0Ci9T
dWJ0eXBlIC9JbWFnZQovV2lkdGggNTAwCi9IZWlnaHQgNDAzCi9Db2xvclNwYWNlIC9EZXZpY2VH
cmF5Ci9JbnRlcnBvbGF0ZSB0cnVlCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlciAvRmxhdGVE
ZWNvZGUKPj4Kc3RyZWFtCngB7dCBAAAAAIAgf+oXKYQKAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB
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
z4z5jN16sfTF8MuMl9Pjhb8p/rb3ldGrn353+71nYsnE8GvR65k/St6ovjn61vZt52To5NN3ae+m
p4req74/9oH9oftj9MeR6exP+E+Vn40/d3wJ/PJ4Jm1m5t/3hPP7CmVuZHN0cmVhbQplbmRvYmoK
NDIgMCBvYmoKNDQ1OQplbmRvYmoKNDMgMCBvYmoKPDwKL0xlbmd0aCA0NyAwIFIKL04gMwovQWx0
ZXJuYXRlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngBhZRNSBRh
GMf/s40EsQbRlwjF0MEkVCYLUgLT9StTtmXVTAlinX13nRxnp5ndLUUihOiYdYwuVkSHiE7hoUOn
OkQEmXWJoKNFEAVeIrb/O5O7Y1S+MDO/eZ7/+3y9wwBVj1KOY0U0YMrOu8nemHZ6dEzb/BpVqEYU
XCnDczoSiQGfqZXP9Wv1LRRpWWqUsdb7NnyrdpkQUDQqd2QDPix5PODjki/knTw1ZyQbE6k02SE3
uEPJTvIt8tZsiMdDnBaeAVS1U5MzHJdxIjvILUUjK2M+IOt22rTJ76U97RlT1LDfyDc5C9q48v1A
2x5g04uKbcwDHtwDdtdVbPU1wM4RYPFQxfY96c9H2fXKyxxq9sMp0Rhr+lAqfa8DNt8Afl4vlX7c
LpV+3mEO1vHUMgpu0deyMOUlENQb7Gb85Br9i4OefFULsMA5jmwB+q8ANz8C+x8C2x8DiWpgqBWR
y2w3uPLiIucCdOacadfMTuS1Zl0/onXwaIXWZxtNDVrKsjTf5Wmu8IRbFOkmTFkFztlf23iPCnt4
kE/2F7kkvO7frMylU12cJZrY1qe06OomN5DvZ8yePnI9r/cZt2c4YOWAme8bCjhyyrbiPBepidTY
4/GTZMZXVCcfk/OQPOcVB2VM334udSJBrqU9OZnrl5pd3Ns+MzHEM5KsWDMTnfHf/MYtJGXefdTc
dSz/m2dtkWcYhQUBEzbvNjQk0YsYGuHARQ4ZekwqTFqlX9BqwsPkX5UWEuVdFhW9WOGeFX/PeRS4
W8Y/hVgccw3lCJr+Tv+iL+sL+l3983xtob7imXPPmsara18ZV2aW1ci4QY0yvqwpiG+w2g56LWRp
neIV9OSV9Y3h6jL2fG3Zo8kc4mp8NdSlCGVqxDjjya5l90WyxTfh51vL9q/pUft89klNJdeyunhm
Kfp8NlwNa/+zq2DSsqvw5I2QLjxroe5VD6p9aovaCk09prarbWoX346qA+Udw5yViQus22X1KfZg
Y5reyklXZovg38Ivhv+lXmEL1zQ0+Q9NuLmMaQnfEdw2cIeU/8NfswMN3gplbmRzdHJlYW0KZW5k
b2JqCjQ0IDAgb2JqCjg5OQplbmRvYmoKNDUgMCBvYmoKOTczMAplbmRvYmoKNDYgMCBvYmoKMjYx
MgplbmRvYmoKNDcgMCBvYmoKNzkyCmVuZG9iagoxNSAwIG9iaiA8PAovRm9udCA8PCAvRjI1IDkg
MCBSIC9GMzggMTggMCBSIC9GOCA1IDAgUiAvRjM5IDExIDAgUiA+PgovWE9iamVjdCA8PCAvSW0x
IDE0IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKNTAgMCBvYmogPDwK
L0xlbmd0aCAyNjk1ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42nVZS5Pb
NhK+z6/QbTlVEs03qdzsSlz2VjmV9UxVDhMfMCQkIaFIhSA9md0/v1+jG9Rj6IsANIBGE/31C/rw
ePfuY5KvqnBbFNnqcbdK0jyM83hVbJMwjvLVY7N6Cn6/r4pAP99v0iwNvmhr1d50exomwa4fmP6z
seNgnqdRNzzzoDsry9Lg/enUmlqNpu8sKHGZBOn9t8d/v/tYrbY4PSno9E0cRWFaFatNkofbKOXj
x4PGlmgbDLrW3X1SBSOPVfP9Pi8C1dXaMsV03ELijCXGYNQ1bTp0fdvvjV869tw22pq921aBE9M+
PT7+tnlW1n0Kxvo7MZCzN81gMC5pjC9YRRA7Dre5XNZp6PeDOh7509M0OOIg7Gt0y2O+sTQLLC6I
+2nQ6ZGYv9BPP/xlQ8c6zsJtloE/lLEV/u93o8amDCoxLNAgB0y1O5Nm3JVRZ9CtchrJqnLmPu92
7YOuSS08SNYXS4WHnQb+/leemy+XJo9YFAcEiY0TeTPLfHEnfBdFdVaF+Xtyiiigxa7hSdWp9vW/
WlYetBm4a+mE6T4OzKieTWtGuvxXnuPLREcfifGzuwndNFp4Nvq7qf1JDh0gzl9MgzS80mLBEn8Q
5WfbwC3MI5LIaib9EcVZ1+Cr7JoJLw4P3GdA+d1fvzzw9j+iPPqq7bibWp65MqRt8PBqR33EqnjN
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
sd0zDnX0PwoVkPjjz18/PxBeXPI7sr99Kr+teZbO0Oy+xac/VX7Os/uNpiUBdk9g4OY9ltNvuSrC
bZlW7k+DJA0TuO80LGKRL1uIO2FWoko+rwlF2I5bSX44ntC1nrUhwiluJvd6zDpOkjIs8xsd664R
lZhz6ZZzJEYr7hM9pyi0g7+rPSpO5ysLX5Fj1pey6EopW+RXpWyRn0tZ9I9n74vR6cDP1VIWSnIE
/hwqpaBdUPHDDJmMHt7QlMhIfDXnnhtBv/1QWsSvnttgp0zrHvZowG+0YLSHw7KyUl5Rb579iEB1
hN/q+F2uFmQ6se9+ebz7+46sO1rFqziFYyhytNswBzrq493Tt2jVYBIfGKbbavXilh7JKxTbFN12
9XD3n7sP7r+oYpUDVqUDTJyWYR5laJOwqsorYKXlxZ9WZQgEErSqSN4ND+N4+undu5OqD9OzDmvO
nUjU/wPDQC9dCmVuZHN0cmVhbQplbmRvYmoKNDkgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRl
bnRzIDUwIDAgUgovUmVzb3VyY2VzIDQ4IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFy
ZW50IDEzIDAgUgo+PiBlbmRvYmoKNDggMCBvYmogPDwKL0ZvbnQgPDwgL0YyNSA5IDAgUiAvRjgg
NSAwIFIgL0YxNiA0IDAgUiAvRjQzIDUxIDAgUiAvRjQyIDEyIDAgUiAvRjcgNiAwIFIgL0YyNiA4
IDAgUiAvRjM3IDEwIDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKNTQg
MCBvYmogPDwKL0xlbmd0aCAyNzg3ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVh
bQp42o1ZS5PbRg6+51fMkaqSaPElkkenMt44lcQuj1LZKseHFtmSuKZIhY+MJ/vnFx+A5lBjencv
IhqNRqPReLa+33/36k2Y3GV+vtvFd/vjXRDFfrpL7nZ56Afb5G5f3n304tUmCtLQ26+yxOuqo1l9
2v/06k2UzRYmiZ/k+d1WVtiBluxSz9S+0GZ3OZGGO5BulHYTJn6+jWTF67KshqptTF0/rbLYWxOD
beaVVWcLMNumXtWswswbbGcKUAqBubTNSeZL+1dV2F6Je5lvWl1NjFusf8SPLXW1Uhft5WKaUtec
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
y6WfwGXDSH1BunDNvTUKCjYLNOqBdxISuQhmPMi3lEu2uh90vHAk6aGo4JwUgcGNIhjz+v1bAbS6
fQJ1K12yVERUukmyAqKgRlCEljH3ciCUzoZhFyp7WWwcM03POOewmJBIWRyW08T73hZGjpBqBE9d
y5nuPPCYWoM0ed6dYO2k1jKSQolpWIwb1HPngvmbWoYQk0uny29aqjDL/RFlFbopF5Nwd1ky9ak8
eHiHydfvhVoifKy1KObZ4AhzMH2loPaBOLh7NqpWsBRG0s2thU5SA+dgt7Q99JNVUaND7Plgiwmr
czmXfCVmOeBTl3aoZisZN6i/QVdPQi5pH48k5qLQ1XSmrE4XJdA186demdHqjOa+7q8Wn984EK21
UewlzLunKO7HxtPJ9oMr4J47uEg1wwu7oSpq+381bZE2bdqnbehu5LE1om5NsgI6t18pK1CD+oif
tvv8vzs4fqQJd9RVtJ1CeK0UCNYeptvp0gFP7z5zArz7IFD0MuSrp2k2LfrKm4vAaunuALzhV6Ui
sBpusPyy+S9Wr01wvHPX4stIHkoAafOtI3k9IJC8YmwKaRZRpqUcmmJ9FSJK3UAG4tj6Ssds3KN8
zM3FYp2ovS3xlPcQAiamGNy0CSExmvLwFHgJyTGPtO7L8A1g9kfiwBb2xVCD5fxyLRNto3sU7ViX
Ava2KR3yAlr8LSE7gjGde+l5Am/Ggzxb7eQpf6Epj3d+nmeuEabqDMfNE6kj8tj7+f6HBWPcbf04
ntpndA9r2aWzA4XO5yImmdU+sXsS+rY0ee5nSej4nvCHEYShWvu6oiRs5RUA/xIkYtj5bAOSVvEg
csXpreABeWeWx7eSc5kURbkfZMltOmH3THaeRGWqgq2MOdJPz3ca8JPENS4g+cYJgzDx02wSoHBM
08zlphxxkNjzkxehj8+H+nO0TfG0dKrID5/1pv/SkBDPb5WQ7tn0cQSw+e5+/91/AEFedJ4KZW5k
c3RyZWFtCmVuZG9iago1MyAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgNTQgMCBSCi9S
ZXNvdXJjZXMgNTIgMCBSCi9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9QYXJlbnQgMTMgMCBSCj4+
IGVuZG9iago1MiAwIG9iaiA8PAovRm9udCA8PCAvRjI1IDkgMCBSIC9GMzggMTggMCBSIC9GOCA1
IDAgUiAvRjQzIDUxIDAgUiAvRjQyIDEyIDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+
PiBlbmRvYmoKNTcgMCBvYmogPDwKL0xlbmd0aCAyODE0ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVj
b2RlCj4+CnN0cmVhbQp42o1ZWY/bOBJ+z6/oRxmwFd3HvnV2JkgWM0Bj04NdIJMH2qJtITocUkq3
59dvXZTkbvXuvrTJYpEs1fkV+8Pju/cfo/Su8MssS+4ej3dRnPphGt5lZeSHQXr3WN199f61KTJP
7ze7OIm937W16lR3J5xG3rE3TP+ltoOp9+OgK175ojsrbLF3f7k09UENdd9ZoIR55KWbb4//eP+x
uCvh9ijD23dhEPhxkd3totQvg5iv/+evXx6PY7PZRVno3T985sHX7JuPo8i7t0yptD2ABDApPBQC
aXUn3NG3LXMPG1h+wj89L9m+GUUuXFdGM/1CB/XW1vtGSPixJHQSLaSOitxPg/AuEG3p/U53at/g
x7/+RMe9C0O/TEXDFnRFioxjr9MgYi4imu/2b0yuaqMPQ3PlWd/hbwLf/LM+aCtEOWE4m348nZlD
Me1iejzw+bopYs+Xr4gXgoWJXyYJiBX7URixWL/Q6btG/9zEkafBBGlUevRxutUdEofXnxhGuR9m
Th2fQdIkC0Co2vLooKze8lCrA0p15hl/DI/N2Am7kgPUYRgViJCkJXpkjB4Jd4PECfpqIhrNnEbN
Tzxao06yEq5XA49QE2hZUJslzQFNdRUPeFvuuYVPj48PPDL6x6jtIPTJGqRNIv0h3n6zi8MDBrrd
kbTBreGdt1bssMVsUJyclQyQDYTSHU/74+CG4PFDfaj/cvvlwIMarXbM/DuchXCu0Tdw1Oq2N1ce
H3u6ox8uBoIGzhim7StyyxcGyULRlgmsSxiI0CIKUlAU/CVRcCA79xJqNQXndZU5xjs3u9B74BmY
cRBD9o3PrJ/6Kbg1H40bzJZ3GL1qgoOePhf82YUdz9gAMSQJPOi8CSFpYGx2TGWnQkbd4r5bawIZ
/DShzImTG00h4aA6HoCz84G9I2jbjwZC7wB5aTCq7uDEFdnn8A9S72sYfqNPzTwDktK3/4DBWBv2
TFhQwtvUw9BoHjtawSzfP/CU9Z9OTsJXRN98ZruvKjAXZNi+Uw0HwnZ5XuYMl0KGPQ6rqidlU8KN
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
mqfuGR8GDDSpr0jL5Ysu/RMg8D7LCkkFv04SGNKnpdyop5gS3MMzNHz8fo/kuXXL+Rmatq5CntuX
99Q9R+OIWs0ccGWlmaD4h83RDPXuTAoGkuldQkzxX2iNPOuZicYadLgPKYKoU2x/5PxDM0cVibIK
MdjPIA56GBmfx1NXGgM6rQcmkv4wfkR/uKfjXzDwVpg3hKljAtkttBey6cdYD3LRWXNIXnnKdkSc
jP8DIXGnUJsoKyG5SBLLyEneaHEWL5BUPd/9+vjuPyzF74IKZW5kc3RyZWFtCmVuZG9iago1NiAw
IG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgNTcgMCBSCi9SZXNvdXJjZXMgNTUgMCBSCi9N
ZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9QYXJlbnQgMTMgMCBSCj4+IGVuZG9iago1NSAwIG9iaiA8
PAovRm9udCA8PCAvRjI1IDkgMCBSIC9GOCA1IDAgUiAvRjQyIDEyIDAgUiAvRjQzIDUxIDAgUiAv
RjE2IDQgMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago2MCAwIG9iaiA8
PAovTGVuZ3RoIDI4NTUgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjalVlL
k9u4Eb77V8yRUzWi+aZ4dLzr2t1K1hOPUj54fYBISEJMkVyCnLGSP59+gaQ0dCq5iOhGA2gA3V93
Q3/ZvXn7IUrvtn6RZcnd7nAXxomfZ+ldVkR+GKR3u+rui5fdb+Iwj7zd/Tb1enNQ9193v739EG8X
A9PUT4viLuAReoAhWe6p2mfZ7V0BolGGopsk8LM0vdtEqV8EMY/42NQXGBNFXq9L3dxHW29wHKsb
2/bcbmDqKPdeUKDtv1nmnhTSz/ijmbO/3yBxVA3TQ8tf/b2r216EunH/1o57Js7aWnU0zZHJA6wI
qt9twsQvkgS+oV+kciL70dQVi+aJV7bnrtbfmVBNxQ3ToKLDfYgqhV7fdqBS7ule7Wstsl1Xm1IN
pm1wI3nqDSc1cJ8tVa0fRM7yd9YXBU5G15UlJQNRL2P1rueNQPjQt2duDSfNjbGpdF9faBfRvAsz
GC2D2sPNkM9Pv3ODNomNrm9xl8+mcvuUsYo/1uCkVzrKEf4bjarwLnRnAxMdXVqLLLpg3R/GmrtE
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
HC4KwOU0co/YpKsPCo+KA0TtvS3phRaLnU7UxrFwMz43dycjgzs1rJ47oFjDsYDifFQkyziP/JFK
OGzt5S0Q2/w8AY1HZNIz9uWR/W+OQqbUPOUiCCAJMiGGMUqzWPzCFR33U6mDc0zndJBlFQvAUTKN
yMYvV7cbkwl7eXYijGuEaGpKrOQRCJL7s+5LoSxU5IKDU06chIkYw+LRiNlDb45HfgfhPknkoM3H
cX0yvHwpgxUzOhZazdDneiCJEqlLouk5U3wXWHA0Zam7AUswklhEhPgKlLBzTqlZMhHJ26d95BB8
wBz20nCt2reN+Zf+L+6QbF3NmeQubiJzOfcDs/aYV1MflXE4gDwJOPhET76qrZNGb6kHLp6TLQM8
jFDHY6+PkL0xe9aCkGlNz1dZRoKQPIIRWCY4/YzllR4YGPbogSF2z/267ej/EOh8NoobGoJ9/cBS
v37C03ov1G9q7/KKB5bl8FR4Ozgr2JPPXHlCWvXVxZtSVBQuzOeSzRVirNi6zo+or+XvVRCIg2CK
5+AQhCaMf/R/CHZTRjRamUVuCfgIOmPDbcWdk8UhsazJSCN89FtNKG/yCTgjh7zRNneGzoR7Z2Ar
R8F5TSCWVo40hV4ch/EAGbqmP9bwVB6YU9ZaNdLmNBnEP/38tKPcFLkYqdeRkwE3SiV8Ryk90JpN
ZXqux6jsBfai3ElfBfYHZo8NzDKMDVgx/32Yzo95UTJjDsnKc2DqUiIUXuR8a/+s8Z8oK6mTZEdM
tJKIqbW0SpIyZd3fMfrCnKq9eS66+VtznrDDP4BKl/YN8iqW4z+iMnlVQVbN/8e8+Xn35j+mHfWB
CmVuZHN0cmVhbQplbmRvYmoKNTkgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDYwIDAg
UgovUmVzb3VyY2VzIDU4IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDEzIDAg
Ugo+PiBlbmRvYmoKNTggMCBvYmogPDwKL0ZvbnQgPDwgL0YyNSA5IDAgUiAvRjM4IDE4IDAgUiAv
RjggNSAwIFIgL0Y0MyA1MSAwIFIgL0Y0MiAxMiAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0
IF0KPj4gZW5kb2JqCjY0IDAgb2JqIDw8Ci9MZW5ndGggMzA1NSAgICAgIAovRmlsdGVyIC9GbGF0
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
PUCT+f8uOMkc1McCO2IqZPipnZ9I5qnevpP/SfFMyJkPAoNdMz+JRcr/EbZkrovAn34grbuTXZdH
LJmaG28gOegtTh2zexx85QoCAtTKHZ0rjE6DnTmUKCWKYuYjOLPqOEwg/JKSBDkx2gOy0PLXgJEq
CVK2vxCkU0tf01NhJM8XBDahw5DGUNTqmURgkVq98bnxHn2SwCR09FeFgWJ5S1ZZ4sdFclNaa90f
/72u9y/rfWNMt67WCTgELnL33fPdn3co42ARLsI48fMsXYRp4CebfFGe7n79PVhUMAh+7cebYvFC
rKdFmvnZJoZms9jefbz7hn7jZosUfC6XX4a5nwYJlBaxXySXf5DifPa/NwdbiNHhikDer459f363
Xr+8vPj4PHyyvukOPPNii5VMzf2rfwz/3/qQucAujoRr/IMxB8DhptI+BGMnmv8CB6Ig2wplbmRz
dHJlYW0KZW5kb2JqCjYzIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyA2NCAwIFIKL1Jl
c291cmNlcyA2MiAwIFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCA2NiAwIFIKPj4g
ZW5kb2JqCjYyIDAgb2JqIDw8Ci9Gb250IDw8IC9GMjUgOSAwIFIgL0Y4IDUgMCBSIC9GNDIgMTIg
MCBSIC9GNyA2IDAgUiAvRjE2IDQgMCBSIC9GMTAgNyAwIFIgL0Y0MyA1MSAwIFIgL0Y0NCA2NSAw
IFIgL0YyNiA4IDAgUiAvRjM3IDEwIDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBl
bmRvYmoKNjkgMCBvYmogPDwKL0xlbmd0aCAxMzQ2ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2Rl
Cj4+CnN0cmVhbQp42q1XS4/bNhC+76/QUQ5WD1LvAD0k3U3TIm3TxEWBPhDQEr0mVhYdilpn2z/f
GQ7ltdfuoWjhg8h5ceab4Qz9enmVvOFFUMdNWebBch2wLI+rsgjKhscsLYJlF/wW1osoYxUPl4u6
CI1ai8Ufy++SN1l9pFgUcdE0QUoa0oJKWYWij1H26nZ5xYCXBixgdRmXWRPkvI7zPGi3V5+v0rjk
FSucxPHaMWdFT0i+3fLgRl/9BL+ZFc1GoyerrzE2IJ3HlqdVXLCGPH2j7uJFxJoq5DGFdYJHxmLG
D2EtNxLjYuGdHKQRPW54uNWLiNdhJ/1er0noF4RLrqKVGOWChZ2XluMo7tSAx6LUjXxQrRyJ2YqB
qO9//Lgkkt1IZYjYCStopQf0NYi8exFL46bwEVlyMgvvhJX7BXgmFrwJHxd1GV4jJw+nEc4nodGK
oROmo93b5fI9iaAD10R8hepWb99PK6+vDXE0nOWXO6N3RkkrzOOBYBGYJmx1PzpsAcYTT78hBxt0
sA4fEYOMhXvASvU9beCAgVZrbUjW+QoEZb2Ixm8aimF2B4h3p6aJ6NwGSdJgoaDPzqVPo6BTkWY9
+eNXRt8TifYzcLD88P3Hi0HdfrHSDK42cg4K0mBceeZzC4u1tC0a3dCW8gWyPr1Amo/J+czNoMpG
SySxI7AhRM+SduNr0J/gIs2figdog5Td6Eu8DhqocF66W1HGTVbCzcnihjOKQXWAOpizag3Q8aoi
N3ABnlfhRgwDZAlILOyJbmQP/nReWj/T0r+nrGz95gcd0yJvYu75a/zCgRsyi+sbYoFm4cxB+q6J
o0BooKWeDImtJtXjJYsOOWGQE9/AfNIyMFakreh76WooD9V6DyRGTGHp62wid2wRBA+t7p9M3C7f
0ubXySgSQjMe3Tw7ghdro2LOnTr3JfKXl8uP0+DEfJ9JzHZMxmk1tkbtrNLDeJ63BsDjs0KrKV9C
gWhUsDSUgvyCXdqEx7aIgog7OZ9oq7AHIQeTh181dOpBdROUsus1dOAJrnQEFIPsx/83+NZbTV4k
u2nVq3GD9+i8eLM6rqrLKPAKbn/f08KV6kmoSLUbzLkTNJIW/jRXMbh3l9LF7886AUAPVAd0S6Fk
jhC5EGdZxTyvZ3dfnMdTxDyb2RcBrbOY1fV/RNRXw+oypHkOE7i4jKlrP73vbaelQ+1GzD3K+KY2
n+VusLt2KKc9pP6sE0zlA5r1xkeC9RnO2VMbuohzU8V5+a9wxlIFX3CUNrF35BUc1cDdwdKZVtBc
3OopGOgSeZrOQYPkHp0SB8cdE9Q0LY1spaLYiADzSkF3y1tBV9wRBRnXk/V7Mn0U77WnGAkNd9aa
8YwbAOIEzgHmoIPstAcgqqvDbMzcvD+0yUM5r3Xf02A88PwTAVZGfp6kG0ogSTP1KEN+Ald+Ar+8
VKQFIM4I8tSPHnr4FLygqoXJ9mcCXTpZ91qbpEtwZpy3xucN/y0My5dkxvkhHj+p3SXBr/Vg5WAj
+7iTXgHGa68oJ8mXaL/fRzBOt9Fkejm0uoMa/mc73kS7QvGvNtbuXiboLZye4NxZifb+E7DOKzI6
BsO/JA4tnMNT2uWRl7V/QEqi+rfLSKMXCJhb/NqNGmlFpQN1SLfF2di7BxZyfS0T2YFf5yEZq0Ms
euH0771VTV8xqx9db6hrczEZ82uGp746WINv4wzexkSdJ+w98XbC4hPKa+hnmj9/eHegPNJqJBRk
666TazJA3Su7IRXUPa8+XqfQBcpDo3M5O08M/GkonnrJThixjeb/NH8Ddq5ysAplbmRzdHJlYW0K
ZW5kb2JqCjY4IDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyA2OSAwIFIKL1Jlc291cmNl
cyA2NyAwIFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCA2NiAwIFIKPj4gZW5kb2Jq
CjYxIDAgb2JqIDw8Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9Gb3JtCi9Gb3JtVHlwZSAxCi9Q
VEVYLkZpbGVOYW1lICguL21lZGlhL3B1YnN1Yi5wZGYpCi9QVEVYLlBhZ2VOdW1iZXIgMQovUFRF
WC5JbmZvRGljdCA3MCAwIFIKL0JCb3ggWzAgMCAzODYgMzk1XQovUmVzb3VyY2VzIDw8Ci9Qcm9j
U2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCi9Db2xvclNwYWNlIDw8
Ci9DczIgNzEgMCBSCi9DczEgNzIgMCBSCj4+L0ZvbnQgPDwgL0YxLjAgNzMgMCBSPj4KL1hPYmpl
Y3QgPDwKL0ltNCA3NCAwIFIKL0ltMiA3NSAwIFIKL0ltMyA3NiAwIFIKL0ltNSA3NyAwIFIKL0lt
MSA3OCAwIFIKPj4+PgovTGVuZ3RoIDc5IDAgUgovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJl
YW0KeAG1m9lyHccNhu/nKeYyueCol1kvY9lJxVUu25FeQGKokmzJjEnKSt4+34/e5iwkTzmxVS7N
4Ay60WgsP9CtX/sf+197N8zO/us/9C9e3vv++r739uf+ur9ap2Hqr2LUX9O09csa+7ub/l3/4oeb
u+ubfz18fvOxv/vQ/dqvW+/4My+9j8uwTL1fGOtT/+Lvn3z/9a3Ntcz2zbT2fvN9WPwQ5m3JXwX7
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
6rS5dffhNy5t9/c3v9zf3vXtzOby0ZWn+bcvdCnplx3+O41fbh6+3N79fHbUjfLvcZFVAVG4z2dE
/ubfDzd3v/APud5cX9/c3/cPt03s/a2h3QQ5tux1Qh1CT0TNpWOhsyqy7P0/3zy8addNf/wvhAQo
ugplbmRzdHJlYW0KZW5kb2JqCjcwIDAgb2JqCjw8Ci9BdXRob3IgKHZsYWRvdW5ldCkKL0NyZWF0
aW9uRGF0ZSAoRDoyMDA5MTAyMTA4MTAwMFopCi9DcmVhdG9yIChPbW5pR3JhZmZsZSBQcm9mZXNz
aW9uYWwgNS4wKQovTW9kRGF0ZSAoRDoyMDA5MTEwMTE3MzcwMFopCi9Qcm9kdWNlciAoTWFjIE9T
IFggMTAuNS44IFF1YXJ0eiBQREZDb250ZXh0KQovVGl0bGUgKHd3dy5ncmFmZmxlKQo+PgplbmRv
YmoKNzEgMCBvYmoKWy9JQ0NCYXNlZCA4MCAwIFJdCmVuZG9iago3MiAwIG9iagpbL0lDQ0Jhc2Vk
IDgxIDAgUl0KZW5kb2JqCjczIDAgb2JqCjw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UcnVlVHlw
ZQovQmFzZUZvbnQgL1RFQkVXViMyQkhlbHZldGljYQovRm9udERlc2NyaXB0b3IgODIgMCBSCi9X
aWR0aHMgODMgMCBSCi9GaXJzdENoYXIgMzIKL0xhc3RDaGFyIDEyMQovRW5jb2RpbmcgL01hY1Jv
bWFuRW5jb2RpbmcKPj4KZW5kb2JqCjc0IDAgb2JqCjw8Ci9MZW5ndGggODQgMCBSCi9UeXBlIC9Y
T2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggNTkKL0hlaWdodCA1OQovQ29sb3JTcGFjZSA3
MiAwIFIKL1NNYXNrIDg1IDAgUgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVj
b2RlCj4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYM
GDBgwIABAwYMGDBgwIABAwYMGLgNDCjLAAEKZW5kc3RyZWFtCmVuZG9iago3NSAwIG9iago8PAov
TGVuZ3RoIDg2IDAgUgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDc2Ci9I
ZWlnaHQgNTgKL0NvbG9yU3BhY2UgNzIgMCBSCi9TTWFzayA4NyAwIFIKL0JpdHNQZXJDb21wb25l
bnQgOAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20IX4hAYcCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMDAOzAz
qAABCmVuZHN0cmVhbQplbmRvYmoKNzYgMCBvYmoKPDwKL0xlbmd0aCA4OCAwIFIKL1R5cGUgL1hP
YmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCA4OQovSGVpZ2h0IDY3Ci9Db2xvclNwYWNlIDcy
IDAgUgovU01hc2sgODkgMCBSCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlciAvRmxhdGVEZWNv
ZGUKPj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9tCj+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDl4EBReEA
AQplbmRzdHJlYW0KZW5kb2JqCjc3IDAgb2JqCjw8Ci9MZW5ndGggOTAgMCBSCi9UeXBlIC9YT2Jq
ZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggNDMKL0hlaWdodCAyOAovQ29sb3JTcGFjZSA3MiAw
IFIKL1NNYXNrIDkxIDAgUgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2Rl
Cj4+CnN0cmVhbQp4Ae3QgQAAAADDoPlTH+SFUGHAgAEDBgwYMGDAgAED7wMDDhwAAQplbmRzdHJl
YW0KZW5kb2JqCjc4IDAgb2JqCjw8Ci9MZW5ndGggOTIgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0
eXBlIC9JbWFnZQovV2lkdGggODkKL0hlaWdodCA2NwovQ29sb3JTcGFjZSA3MiAwIFIKL1NNYXNr
IDkzIDAgUgovQml0c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVh
bQp4Ae3QMQEAAADCoPVPbQo/iEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg
wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABA5eBAUXhAAEKZW5kc3RyZWFt
CmVuZG9iago3OSAwIG9iago0ODQzCmVuZG9iago4MCAwIG9iago8PAovTGVuZ3RoIDk0IDAgUgov
TiAxCi9BbHRlcm5hdGUgL0RldmljZUdyYXkKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFt
CngBhVJPSBRRHP7NNhKEiEGFeIh3CgmVKaysoNp2dVmVbVuV0qIYZ9+6o7Mz05vZNcWTBF2iPHUP
omN07NChm5eiwKxL1yCpIAg8dej7zezqKIRveTvf+/39ft97RG2dpu87KUFUc0OVK6Wnbk5Ni4Mf
KUUd1E5YphX46WJxjLHruZK/u9fWZ9LYst7HtXb79j21lWVgIeottrcQ+iGRZgAfmZ8oZYCzwB2W
r9g+ATxYDqwa8COiAw+auTDT0Zx0pbItkVPmoigqr2I7Sa77+bnGvou1iYP+XI9m1o69s+qq0UzU
tPdEobwPrkQZz19U9mw1FKcN45xIQxop8q7V3ytMxxGRKxBKBlI1ZLmfak6ddeB1GLtdupPj+PYQ
pT7JYKiJtemymR2FfQB2KsvsEPAF6PGyYg/ngXth/1tRw5PAJ2E/ZId51q0f9heuU+B7hD014M4U
rsXx2oofXi0BQ/dUI2iMc03E09c5c6SI7zHUGZj3RjmmCzF3lqoTN4A7YR9ZqmYKsV37ruol7nsC
d9PjO9GbOQtcoBxJcrEV2RTQPAlYFH2LsEkOPD7OHlXgd6iYwBy5idzNKPce1REbZ6NSgVZ6jVfG
T+O58cX4ZWwYz4B+rHbXe3z/6eMVdde2Pjz5jXrcOa69nRtVYVZxZQvd/8cyhI/ZJzmmwdOhWVhr
2HbkD5rMTLAMKMR/BT6X+pITVdzV7u24RRLMUD4sbCW6S1RuKdTqPYNKrBwr2AB2cJLELFocuFNr
ujl4d9giem35TVey64b++vZ6+9ryHm3KqCkoE82zRGaUsVuj5N142/1mkRGfODq+572KWsn+SUUQ
P4U5WiryFFX0VlDWxG9nDn4btn5cP6Xn9UH9PAk9rZ/Rr+ijEb4MdEnPwnNRH6NJ8LBpIeISoIqD
M9ROVGONA+Ip8fK0W2SR/Q9AGf1mCmVuZHN0cmVhbQplbmRvYmoKODEgMCBvYmoKPDwKL0xlbmd0
aCA5NSAwIFIKL04gMwovQWx0ZXJuYXRlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRmxhdGVEZWNvZGUK
Pj4Kc3RyZWFtCngBhZRNSBRhGMf/s40EsQbRlwjF0MEkVCYLUgLT9StTtmXVTAlinX13nRxnp5nd
LUUihOiYdYwuVkSHiE7hoUOnOkQEmXWJoKNFEAVeIrb/O5O7Y1S+MDO/eZ7/+3y9wwBVj1KOY0U0
YMrOu8nemHZ6dEzb/BpVqEYUXCnDczoSiQGfqZXP9Wv1LRRpWWqUsdb7NnyrdpkQUDQqd2QDPix5
PODjki/knTw1ZyQbE6k02SE3uEPJTvIt8tZsiMdDnBaeAVS1U5MzHJdxIjvILUUjK2M+IOt22rTJ
76U97RlT1LDfyDc5C9q48v1A2x5g04uKbcwDHtwDdtdVbPU1wM4RYPFQxfY96c9H2fXKyxxq9sMp
0Rhr+lAqfa8DNt8Afl4vlX7cLpV+3mEO1vHUMgpu0deyMOUlENQb7Gb85Br9i4OefFULsMA5jmwB
+q8ANz8C+x8C2x8DiWpgqBWRy2w3uPLiIucCdOacadfMTuS1Zl0/onXwaIXWZxtNDVrKsjTf5Wmu
8IRbFOkmTFkFztlf23iPCnt4kE/2F7kkvO7frMylU12cJZrY1qe06OomN5DvZ8yePnI9r/cZt2c4
YOWAme8bCjhyyrbiPBepidTY4/GTZMZXVCcfk/OQPOcVB2VM334udSJBrqU9OZnrl5pd3Ns+MzHE
M5KsWDMTnfHf/MYtJGXefdTcdSz/m2dtkWcYhQUBEzbvNjQk0YsYGuHARQ4ZekwqTFqlX9BqwsPk
X5UWEuVdFhW9WOGeFX/PeRS4W8Y/hVgccw3lCJr+Tv+iL+sL+l3983xtob7imXPPmsara18ZV2aW
1ci4QY0yvqwpiG+w2g56LWRpneIV9OSV9Y3h6jL2fG3Zo8kc4mp8NdSlCGVqxDjjya5l90WyxTfh
51vL9q/pUft89klNJdeyunhmKfp8NlwNa/+zq2DSsqvw5I2QLjxroe5VD6p9aovaCk09prarbWoX
346qA+Udw5yViQus22X1KfZgY5reyklXZovg38Ivhv+lXmEL1zQ0+Q9NuLmMaQnfEdw2cIeU/8Nf
swMN3gplbmRzdHJlYW0KZW5kb2JqCjgyIDAgb2JqCjw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgov
QXNjZW50IDc3MAovQ2FwSGVpZ2h0IDcyNwovRGVzY2VudCAtMjMwCi9GbGFncyAzMgovRm9udEJC
b3ggWyAtOTUxIC00ODEgMTQ0NSAxMTIyXQovRm9udE5hbWUgL1RFQkVXViMyQkhlbHZldGljYQov
SXRhbGljQW5nbGUgMAovU3RlbVYgOTgKL01heFdpZHRoIDE1MDAKL1N0ZW1IIDg1Ci9YSGVpZ2h0
IDUzMQovRm9udEZpbGUyIDk2IDAgUgo+PgplbmRvYmoKODMgMCBvYmoKWyAyNzggMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDI3OCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
NjY3IDAgNzIyIDcyMiA2NjcgMCA3NzggMCAwIDAgMCAwIDgzMyAwIDc3OCA2NjcgMCA3MjIgNjY3
IDYxMSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NTYgNTU2IDUwMCA1NTYgNTU2IDAgMCA1NTYg
MjIyIDAgNTAwIDIyMiA4MzMgNTU2IDU1NiAwIDAgMzMzIDUwMCAyNzggNTU2IDUwMCA3MjIgNTAw
IDUwMF0KZW5kb2JqCjg0IDAgb2JqCjY5CmVuZG9iago4NSAwIG9iago8PAovTGVuZ3RoIDk3IDAg
UgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDU5Ci9IZWlnaHQgNTkKL0Nv
bG9yU3BhY2UgL0RldmljZUdyYXkKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9GbGF0ZURl
Y29kZQo+PgpzdHJlYW0KeAHdlu1LImsYxp3RcbQZXVMzC920IcKyTApmIwyxbasPUhZFRbEaQUlS
UAuF04cCT4V4EBRasU1ifSk6TUm2br5E/9o+Y6m9aHXsy+E8H4b68ON67tvnvq6bxfp/HAiC8weC
3l4Sg3EQhMtFUZTLRRAODL8Nh2A2B0F5VZhAyBwBVsVDEQ4bflUbgAjKx4QisbSmljk1UrFIiPFR
5BU4B1YJRBJZvaJBTTBH3aCol0lEgqqXYQjmcPm4SCpXqps0Wl2HXq/v0Gk1TWqlXCrC+VxO2VtD
MMLDhNK6j4RG10n29BpNfSZjbw/ZqdMQH+USIYYiZViIjfDwapmSaNGTvX1DZsvY+Pj4mMU81NdL
6jWEQlaN8xB2qW4xpEAsVzXrSOPg8MSMdX7BbrcvzFtnJoYHjaSuWSUXC3ildJnbCiT1ja1dhgHL
tM2+8m3dSW1SzvVvK3bblGXA0NXSWC8pxd6TRBtpMk/OLa05t1x7bs/fHveea8u5tmSbNJtILVGS
hTkoLq4n2rv7LbOLq5TL7fXvB4LBYGDf73W7qNXF2ZHPn9qIejGGcuBHDxNic7FqeWNb95cxq2Nj
2+0LHB6FI7FYLBI+Ogz43Nvrjq+j/Z+0ank1xn3cKhjhC2WqVrJ/1LpM7XgDocjxKX1+cXFxTp8e
R0LfvTvUsnX0M9mikgn5yENZiI3iEkVzl8kCyD3fQfiEjieuksy5SsTpk58Hvl1q+euIqatZIcHR
h7JAVCQndAbzrIPa9YeiZ/FE8jqVzmQy6dR1MhH/J3ro33U6ZswGHSEXPZKFUVyq1JADk4sbO77Q
MZ1IptLZbPbm5gZ806nkJR079P21vjg5QGqUUhwt3hji8D/IiQ6jZW5123sQpRO/UxmGuzvZTCqZ
oKMH3u1V24ixg5B/4HMKbwpGMAkQHZxeotyB8BnQzCkW2CzQPfv53U0tTQ0CWQlWbBSMCmXqdsOw
bc3lC53EC+Tt7W0OZ3TjJyGfa802bGhXy4TFG7N5orqmzr4JuxOI0on8bQFZZBN0OOB22if6Opvq
RDz2/auAOFVihYYcmlnZ8v44jifTTJ057u4D/sumk/HjH96tlZkhUqMQVyH3xUIIJm3Q9pitay7/
0enlda5FT9DM9eXpkd+1ZjX3aBukWB6FEbxG1d47Mr++tx+mr1K55j5Gb7KpKzq8v7c+P9LbrqrB
832CuYLaxg7j2AIoNXL+6+l9c/Vm07/OI6DYhTFjR2OtgHv/y4IG1xJ607id8gSjF7lSH2gyf+aK
vYgGPZR93KQnagstLqCbnmDsBTQW9GyWQytQfUetlXf4Hb/rO14T6+EbjvyrN8x6dXLA1JWZnPy8
TpWf18QZGBxqafrpvN65hL7oEsn83DHjCqb1971LzFmeugS4MS79+II3JejjkG9no4Q3sV5zxLNo
yL9LOWZLOCLjw9IXfDh84NsDHm4p4cOMLHD/lnLuH7hz/36y9Zn7s4qZM1o6czYc1tEv3W2NzzOH
9XrSWfq720HS4U+TjpXPV23pfJ1j8hVk5EvZXDrVp5lUby2T6ixQ7pt2iYcpV4joFzeYFkJZfoMB
us/2JlNxb6qTCrGS+8uddOXbGqMLlsuKdkSgXfFmytwbwJXtwzm40i2cgYF2Zbv/Hfxf/f4BZjQ7
qgplbmRzdHJlYW0KZW5kb2JqCjg2IDAgb2JqCjgxCmVuZG9iago4NyAwIG9iago8PAovTGVuZ3Ro
IDk4IDAgUgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDc2Ci9IZWlnaHQg
NTgKL0NvbG9yU3BhY2UgL0RldmljZUdyYXkKL0JpdHNQZXJDb21wb25lbnQgOAovRmlsdGVyIC9G
bGF0ZURlY29kZQo+PgpzdHJlYW0KeAHll99LImscxnX8NWqNaW6zTWOspzLdIgmm1QkMTrquShcR
K0TtRBBEF6IV1IUXkmV7EbiZ3hSSCgWlS6C1a0ku/Wv7jmeysZy3Pa03e85zIcO844fv+2Pm+zwi
0f9OYjGCIBIgKUTsOHhMLIYsD+BIZTI5iqJKpVIlKDAIHpHLZFLAa44TIxLAUanbMY0WSCcodlSD
tatVgCdpRmNJCmUbptV3ve4mekjSICiS7CGI1116LdamVDShiRGpHG3TdOJEr7HPNGi2QGUeNPUZ
ewm8U9OGyqWPSmNRKkyHG4ymIeso9c5ms9tpAdntNts7atQ6ZDIacB2megyrofSE0TxCjU9Mvv/g
8fog8no+vJ+cGKdGzEZCX4PxdkAsAVXpyf5hyuHyTftn5z8xCxAxn+Zn/dM+l4Ma7idfAZiEt52I
DAWoASvtnPIzSyuB4OraOkRrq8HAyhLjn3LS1gFSj6EypF6YWKJQ64h+67h7hlkObYQj0e2dGEQ7
21uR8EZomZlxj1v7CZ1a8VAYIlNqcOMw7f64GNiM7O59SRwkkylBJZMH+1/2diObgcWPbnrYiGuU
D4UhcnWnYZByziwGw7F46jCdyWRzEGUzx+nDVDwWDi7OOCmzoVMtr09SgmK4ccQxxQTCnxNHudOz
88IzOj87zR0lPocDzJRjxIhjqIRbMLFMpSVMlNO/vBlLpE8KF8XS5RVUl6XiReEknYhtLvtdlInQ
qmTcTiIytb73Le1jgpH40cnX0vfy9U0Fqpvr8vfS15OjeCTE+OihXr36fsEQeXvXG6tjemljN5XN
l8qV2+qzuq2US/lsandjaXrC+qar/X7BEAWG943+7V8J7x2eXnyrVH9wumui+7Fq5dvF6eFeeMU/
OdqHYwpu8RFU0z1AuWYDkXj6rFi+rbGaYOq3WF71tlw8S8cjgVkXNdCtQTmWBO0gTGPuueDW/vF5
8fpZ1N1dDXZdPD/ejwbn3GMmouN+IyVKbY/Z5plfjR5k8qUbllUvQeCCLeymlM8cbK/Oe2zmHi2P
RVpsXmZtO5ktXLIsAQLvNsu6LGSTO2uM12YhtUrugIG6SIvdu7C+w7F4/xG85Fix9QWv/U9jXYHj
JTgx3sCPauUKrNfjOUpVOoOF9i2sx1K5AmDx/gG5ZFm5FGD5aItBp5L+83K3ktWwj785xwYWe74g
M6sP/YlnonXvUOve7RZ+c1r5LWzpN/r3eoejoXewPW3o5T3tLa+ncb3W9bJe62zotaKnHiAP9wB5
QQ8gqnkTM8+bHL/cmzzxTPvAMwmaJjAE8UwNXi4IvNxWFO7loqyXCzb1cqInHjME95ghYY8pqnnf
Vw/ed+5feF/WSD9YTPCl5nlyGnhyt8cLMeVer8cNPDnd3JOLHmWFMTYrNE8L7H2bbayWFf5qmhVq
MJBh9C3IMCIAq2cr/BeyVTcunK3AmvEyXwcs9LFjHdDMx7ZKLosqfiWLKqBZlKWJWpaRa7T/4M9P
Wk6jXQplbmRzdHJlYW0KZW5kb2JqCjg4IDAgb2JqCjEwMgplbmRvYmoKODkgMCBvYmoKPDwKL0xl
bmd0aCA5OSAwIFIKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCA4OQovSGVp
Z2h0IDY3Ci9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRl
ciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCngB7Zj5O1tbF8clEonMkRBCCDGFEFFjkEZNpWmDlhou
VVFDUbeG0qaUmuc2NaQNMTcaQkhEg/vcf+1dJ4PpanHfX+96nhznJCeffH33PnuvtVxc/oubO4BC
oS8ECnXz7/7qTgTpisFi3XA4vD1wODcsFuOKRv97PECB6YbHE4gkMoVCpdJoNCqVQiGTiAQ84IH+
L6QjVIC6E8lUugfTk8Xy9mEj4ePN8mIy6TQKieiOx2Jvy0bZqAQShc708mZzArhBvOCQUCRCgnlB
XH8/NsuTQacgbAyY8isjL7+PYHHuRKB6+/oHBofxBdExoti4uLj4uLg7sSJhtIAfyuNy2CwmsPFu
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
p62+XH4vIZLLol3KsAANSRZkb0BOzJCX17YqByCLXV7f3NoxmswWSA2tkHHaAs4OAbpvNOh1a5Bs
jve/bVGUyKTxkYHedCLuUk7oIJMZ7CBBglT29DmSd09+US+uQNpt2DHumUzmA1uYITneg+wYSb0X
5lXjA+/bGp49yU27w+cCFwy+aATiBqKZ7OHD5cemZheU1zS/6RkY/zT7dXF5bUP3Q7+1bTAYduC1
vaXf1K2vLi2oZ6ZH+5XtjdUljzLFMWEBLOBeNhjhOtygs/xDhYnS3Md/1DS1K/uGx6e/zH3VaJdW
VtfWkVhbWVla1KhnVVNjgx/etr5UlBXkSOIFwRwvpG66Qq+TTKR5+gbxRUg1Vl7d0NKh7B0YGZ/6
pJqZnZtXq9Xzc7MzqunJseH+nnftr+qqSgpypYnCcC6bCZXeVT7YJIMbUDhRPLw5wYJYcXpu/tNK
RcMrqPR6+voHh0dGR8dGR4eHB/p7u9+9aW2qqy4vepQjTYIK0g+Ksd+XvUgljSfaKt5IUZIk80F+
cXlVTX1TS2t7R2cXEp0dba9fNdYpnpUVyXMz0hJikJqXAU2Aq0sxu2DkiEZDR4FM92QHBPOFccmS
jPuygqKS8sqqakXNi9oXNYrnVRXlTx/LZdn30hJjo8KRUppGwl9fpYMd0KwgkKFXwQkMjRDeSRRL
0rNy8mSP5Pn5Bfly+UMo/TOhs5AgiuaHcP1YSPEPdfSFBeJM54UzG9qdRGV4sTmBIeGRQlFcQpI4
JS1NIpGkpaWIExPuiKIjw6AV4uPpAV2WG7Ur7L+AoN3wRAqN4eXj68/lhYbxIwVR0dHC6KgoQQQ/
LATpr3h7elDJ0GC5Xc8Jek0YpH0DrSboNPn4cqAvZIsAf44f28fWESIR8bhbtYQcvtjYSB+LRKHS
6Qwmk+np6QlHBp1OtfWwoEF2i0bTJbdtnTfo5RGIECQSCY4Edzwotff0Ltx9ywtb/9EVA91CR2CQ
NuH/0Se8/PsoZ1z+4L/rax34H8he9PwKZW5kc3RyZWFtCmVuZG9iago5MCAwIG9iagozOAplbmRv
YmoKOTEgMCBvYmoKPDwKL0xlbmd0aCAxMDAgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9J
bWFnZQovV2lkdGggNDMKL0hlaWdodCAyOAovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovQml0c1Bl
ckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4AdWTyXKDMBBEESC0
gQCxiMWA4/z/P6aHRbF9SM5+VcIUtFrjmSaKPg7GWAzww/6unXRJkqQpLgltCbxvJWHKeSZAlvEn
Umx8OYfFCc+k0obQWp1IKUXGU4hDTaQUyuTWlsCCotgvuTFKZnAOWvJUxlZ104LGufqkKm2uoY3j
05bFKZfG1k3nh2EcvPd93/VYXdvUJbQ82EIqVFG1fphuy7LcpovR+9aVuRL8qoDFXGhb98O0bHew
beu6rFjLPA1dbQ3ZHhWwhEttnR9v6/3r8XiQfGfDCb4pn6Wn6zhD+v2vVBV156dlpQo2sNKC6dC5
lwLiNEMHXOvHacbfmsE0z7d5Goe+qQoteHI1dp9AXlK30C4066TvWlfBFI29pNRYoXJb1g5DaAhH
C6MoCyhDA6IIaSGtNjTOfbA0XKIwWuL4YLprMVshj8Togz03lBcKV8hLRHlNEUOevYAHewp/hXR3
fASU7Gco4ezJMuyhr+Wd8PLDbn4AKsEgUwplbmRzdHJlYW0KZW5kb2JqCjkyIDAgb2JqCjEwMgpl
bmRvYmoKOTMgMCBvYmoKPDwKL0xlbmd0aCAxMDEgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBl
IC9JbWFnZQovV2lkdGggODkKL0hlaWdodCA2NwovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovQml0
c1BlckNvbXBvbmVudCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4Ae2Y618SaRTH
5T6AICCCgigJYbIoUihoXlBLwyxNs3BJ09VM09WV1c1LmaamUqRpmuUlTVLXGxbeL5/+tX1mQAVn
uL3f36vhGfjN+XznPOc8nKCg/+WLAA6Hx+MJBAIRU+AGuI3H+XJB3cfhCUQSmQJBVCqVhhZYhSAK
mUQM0BvYksgQLZgZwmKz2Ry0wCqLyaDTIDKJEEDYODyRDNGZbC4vXCCMjBShFRkpEITzuGwmHQJR
+wsEhydR6EwOTxB1SSq7EoetWJlELBKEsRlUsr/OwBeis8IEYplcqVIna7QpKGm1mmS1Kj5OGh3B
ZdIoRDzqHWEt4IkQnc0XSRVXtenZN/P0+RjS6/NuZKVrVHJJZFgInUzwxxlPoABf8RVVara+sNRg
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
i+5U7gPTW7eT0GTAsAHuat+FpiKYZPTMfSSECgjFELKy7rAD7XagJyA8C4FBc/CjaCmEtRCegsD2
53ZD6Qh+tJsVoy/jpciJR0XVrHei2eG1S2rv2+Bi9zzjfd/+6VHYgNeiT7CjW4tUd0j4WfwjNBN5
8Yuwy7AMbgxn4KcPRuZ5m6BpN1oAoR0Co8QY7+72FHqP42wUZDG8E0IeFh/y/rogx/tZQYzgbu/J
cIyF5CceKEVTvCfcz3j/yz3bexzC3mTTngj0OOTd7Z7n3eSJ4ae7vRvpQqfbuyGZ3O+GVw9550e2
eGcWKO1jtsTI3m5vKbRPiqq9JYP83mL3FW9eOCZiKOe4x3gzC37mTYcXoZsPBg1GDV6Xe5N3MDR5
3NXhwRCO4j14G8rE27qDo7wvQxbQPTgyMmhLDH/v4IiMAjhqXBYtGZGxJTIiHIyM8QYjw8NhyE86
K6wU7hLuEAqFLLi0C46dkCqYRaOoF3WiRpREWM7G8EvdFV7+KN6LKoAsew+KvAj29sdQyR7F+5TK
fYdFViQiEs2xxMdwUIIRLPP29oDIYQSZQ7yS42N4H9yToFX7ol6YChixSoMepJDejaAxIlgkaBTc
jnwsxqNV1rYKe4VxqKF0eNX/FTUpLTdj6kn+Hz87dndtgft5XXvcDXAVEjIJd8PNvuBc/D+/xfdD
h5ZKxQk52LZg7izlameguqUJbnh2PdoGV23bp/t8B+YuoA30TmHT9BmtNG1u6VoQaKnqmhuo8h1o
U977RvMs2twWqDqAZlVPrD8wK9pS1d0WbaumV1wPTq9c1Hjbt9b2f2tR5T/4ViUdbBH91nTlvW98
q5E2T6ffaqTfaqTfmh6drnyLkqB6Tl3lfYtBOuH6J1y/zKjrGjl+Sj3ccm6oiuEd9E7o/eh/AI7Y
pcwKZW5kc3RyZWFtCmVuZG9iago5NyAwIG9iagoxMjQwCmVuZG9iago5OCAwIG9iagoxMTIzCmVu
ZG9iago5OSAwIG9iagoyODQ4CmVuZG9iagoxMDAgMCBvYmoKMzgwCmVuZG9iagoxMDEgMCBvYmoK
MTk4MgplbmRvYmoKMTAyIDAgb2JqCjg4OTkKZW5kb2JqCjY3IDAgb2JqIDw8Ci9Gb250IDw8IC9G
MjUgOSAwIFIgL0YzOCAxOCAwIFIgL0YzOSAxMSAwIFIgL0Y4IDUgMCBSIC9GNDMgNTEgMCBSIC9G
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
40td10HEiSkZRu7MQ0bDc31ZqSlfZlx+CAVBEi/82IN06b9mXJBQJXl4nXKBTmIo31JWTZi6MSRJ
KLQsSq6egcJ08psrdYMgxAou8/KrNJdTTbft9pJlXq2/lnmpe1Md/n+Ln04nt+33BpcfBfEfATk6
sQplbmRzdHJlYW0KZW5kb2JqCjEwNCAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgMTA1
IDAgUgovUmVzb3VyY2VzIDEwMyAwIFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCA2
NiAwIFIKPj4gZW5kb2JqCjEwMyAwIG9iaiA8PAovRm9udCA8PCAvRjI1IDkgMCBSIC9GOCA1IDAg
UiAvRjQ0IDY1IDAgUiAvRjcgNiAwIFIgL0YxNCAxMDYgMCBSIC9GMTYgNCAwIFIgL0Y0MyA1MSAw
IFIgL0YyNiA4IDAgUiAvRjM3IDEwIDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBl
bmRvYmoKMTExIDAgb2JqIDw8Ci9MZW5ndGggMjUwNSAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29k
ZQo+PgpzdHJlYW0KeNqtWk2P2zgSvfev8GUBGWgz/P7Y2w52gp0FBthNfJuZg2Kr28LaViLJ6el/
v0UWKVPdiiZOCwEiilWsVyw+ydRr/rS9e/eeq5UlTmu52j6smJDEaLXSjhNG1Wq7X/1WMLrecK1s
sV1bVbT1Q7n+Y/vvd++FzUYqRZRzK4pDqn69EdoU5ZGgr105cOXau26i74Yr4qjAEWq9kcIUXbVr
zvuO+DsAPKxZ0VbrDSsqtLeXc4etQ7nmtvjq/6vQ+xOkaYqqOuPtZ7xtH5r2VO2x76nuDzFQ1XkH
GLzra4xyfEaTonjdV1/rXdXd41BGqZ8KzHDDGHEqFidzghjleY8NTik2oj2a+77ceaxDtSfYtT1U
2OjrU2y11ZdL3a7DnFkRApqib5JxV/l8YWb3aPncNmEigJKnkeeqU67HONUWlgfmVB6PvgHRfRa+
UWHos/fqu2hs0Ls5R6fdsY4eaDiU0fMTVtSvgL89VWV3aav9fUTzxRFY+8sxRS/bCs3dofExn+Lg
+jxV7vf14wUHiEIEbt39vL1j4EZXDOirCVNupRgQ07LV7nT35Y4SKIkVwSVvB6OioXvF4xU63/1y
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
KHf+MCa2u/rkTZdjH/4uEDJqLtAK4qz/y4XXyQzP/kIAo/pD21weD3jzr+32P2srgiwKt172m0g/
idsqywfvM3EbbjKprQ3ynx/xUsKXXqBtq3IfOKuTxgndOLcULar1eiTRovTnfYN6B9a672YOz/qi
Ar3Auzl5AZxb5LDvDeWD8h/DYga/ymftfa5iZwyBuYWF87chOe/4SmIOtfSWX84vXL1a3PpC+t5d
2VX3U4lLGs73wmJk538NDTWr0IDL4VutX+1wbBlu4glkaDEMQXP6xDAqBh9N0Hfg+WLw4OqVx/3V
Jf7e/B/oO12hCmVuZHN0cmVhbQplbmRvYmoKMTEwIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250
ZW50cyAxMTEgMCBSCi9SZXNvdXJjZXMgMTA5IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQov
UGFyZW50IDY2IDAgUgo+PiBlbmRvYmoKMTA3IDAgb2JqIDw8Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0
eXBlIC9JbWFnZQovV2lkdGggNTAwCi9IZWlnaHQgMjAwCi9CaXRzUGVyQ29tcG9uZW50IDgKL0Nv
bG9yU3BhY2UgWy9JbmRleGVkIC9EZXZpY2VSR0IgMTA4IDExMiAwIFJdCi9MZW5ndGggNDc2NQov
RmlsdGVyIC9GbGF0ZURlY29kZQovRGVjb2RlUGFybXMgPDwgL0NvbG9ycyAxIC9Db2x1bW5zIDUw
MCAvQml0c1BlckNvbXBvbmVudCA4IC9QcmVkaWN0b3IgMTAgPj4KPj4Kc3RyZWFtCnic7V3boqwm
DNXtzJd6b/v/z5WrRBFDQEWG1dNx62hQ10BCEqCqNminrq/rdXfZ67vWuleQC2oOtTeI3Xqw7BVk
g76b2pX0vh7bqh3r3rK3RV2QFDyJ1xdMmu1pt7e/yrOUS0SUm6BK0KR3kt6p7nZ7waVcIqLcBFWC
Jr2vhdHW8joO94JLKbgUZNLhH/vD/qV8CyIARSLmJPP8C0gH96s2YGfZ/G2PVdWH73w+H70BO3cc
u73A05tAkYg5yTz/CtLFpwfpjG75qB8GtQE7dxy7vcDTm0CRiDnJPJ+m09llfwtv1o8v/+vJNjEX
cNIP37P8COiyRbTev7KFFzsHNd04lmolS+ImUCRiTjLPv6Cf/pW8ix1P0hNSp9GPNcumkZ9wc7Rz
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
QAwThDKIIZRBzOQMoQxiJjGEMjhBOAbJTP+Pgqo9j2ftXVuPlQRgZlYh0CKE95vpAxEUA53T6oRa
YIFENavRSPV3dRfS0aZw/9VV7emiEwp/v0x2Dcs4jgdGVnirwpEZ6fWoBXNkdLjY0rxuhtWtheZt
PBtmkp1YjZJ7T8eOaKNaen4cclS1Lg0N+r7HqeDyxImYUJs4YqmlPfPDtH7mf2qcpfmRWT+MEq/r
ejwe27Y9n89938/zPI5jA3bgBP4BTZGZbAplbmRzdHJlYW0KZW5kb2JqCjEwOCAwIG9iaiA8PAov
VHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDUwMAovSGVpZ2h0IDIwMAovQml0
c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIFsvSW5kZXhlZCAvRGV2aWNlUkdCIDEwNSAxMTMg
MCBSXQovTGVuZ3RoIDQ0MzcKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0RlY29kZVBhcm1zIDw8IC9D
b2xvcnMgMSAvQ29sdW1ucyA1MDAgL0JpdHNQZXJDb21wb25lbnQgOCAvUHJlZGljdG9yIDEwID4+
Cj4+CnN0cmVhbQp4nO1dCZKDIBDUNXmp9/8/sHIpA4jDrYaurWQ9IbYDw9BA0yjol2Fs22Nz2xqH
3rhV8Ra0FGJrYpvtZNiqeA3GYekP0sd27pt+bkfDloq24lZwJH6/YNnZXrQt/SrHVJKgZkLAm/SB
07u0g7YVnEoS1EwIeJM+tsxp66mNw63gVCqSwpt0+I++OygVFV+G0233E3JccdtMtGDHNQqRLn2a
tlEn/Lle8fl8bDvCT8hxhemEFuy4xptJ/8ATPgSWHeEn5LjCdEILdlzDs04nl/1tT93z4/v3rYgH
b9Kzeu+sCgq0dG0HsGxhER+OF1h6R8C3ux0hlp6xnf79Rine1R2grvvwh/M5O+EudXq37egkTtm2
xOmx4/SW3nW6W0TOJQkFhHFeLEn74La/G3wYNvaKBJnAncA4ZTg4vbjlfoG8o5V3XAFE8Vxi7/6k
u7UtrPgDW4JssCdaWgLqo+3+OvWEzrLdyZBu2GknnO4wwYkOGLp16GVzJH1/WyNSDvHROad1fCgu
KDVwDK/h2ztzCsc4Ti+RJ1bmSjr7jEz5ziknO4Fl2+0WcNzZsJ8fhWMN9yU9tpXrVIdzrpXecI+N
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
XPdlN9TFE/kE8FyoriylKJ3WspUUwRz42z5y86URX/TSkistVjAw/dLAqNMXTxTRShYsF2TLvU/i
tEGLVot903wcKbvSYgXFQuXcC6PBsHgiW1xlEgvzsL7RSe592t+NhfZLDfKRcaJdVeyLCxBDVlqs
iALO5spVDfriiY20RyyiOMur1wjSF/m85tjXiy++Jk8t2YuDC4PY6APT4om0lt8LZLrOllhsi2Gv
0xv5W/offIWttFgRBYCsVid9kvc0bNVU08pqWNKvV1qsSA7F0rXFEUe2iJokvhihobuS3oSstFgR
BUqdrpmwsM+dsmNVPfk0J9LVjYrMULx3bXHEka6suByNrEUVEbmRDlZarCgEYzv9MHK+ZzjIHBXC
3EgX96+uXFHAiJy2OCIfpXuQOSuEuZEOVlqseAj6Wh3/HGDMreIXcCiGK34GNJxeUVFR8TL8A9dq
X7cKZW5kc3RyZWFtCmVuZG9iagoxMTMgMCBvYmogPDwKL0xlbmd0aCAxOTggICAgICAgCi9GaWx0
ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42h1PW3HEQAwThDI4QyiDmEkMoQxiJmcIZRBBOAbJ
TP+Pgqo9j2ftXVuPlQRgZlYh0CKE95vpAxEUA53T6oRaYIFENavRSPV3dRfS0aZw/9VV7emiEwp/
v0x2Dcs4jgdGVnirwpEZ6fWoBXNkdLjY0rxuhtWtheZtPBtmkp1YjZJ7T8eOaKNaen4cclS1Lg0N
+r7HqeDyxImYUJs4YqmlPfPDtH7mf2qcpfmRWT+MEq/r2vf98Xic57lt2/P5PI7jH+zimG8KZW5k
c3RyZWFtCmVuZG9iagoxMDkgMCBvYmogPDwKL0ZvbnQgPDwgL0YyNSA5IDAgUiAvRjM4IDE4IDAg
UiAvRjggNSAwIFIgL0YzOSAxMSAwIFIgPj4KL1hPYmplY3QgPDwgL0ltMyAxMDcgMCBSIC9JbTQg
MTA4IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQyAvSW1hZ2VJIF0KPj4gZW5k
b2JqCjExNiAwIG9iaiA8PAovTGVuZ3RoIDI2OTYgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUK
Pj4Kc3RyZWFtCnja3Vpfc9s4Dn/vp/DLzSgzCZf/KT220+3c3Vz35raZ6UO3D4qtNJraVlaSm/bb
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
b3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDY2IDAgUgo+PiBlbmRvYmoKMTE0IDAgb2JqIDw8Ci9G
b250IDw8IC9GMjUgOSAwIFIgL0Y4IDUgMCBSIC9GMzkgMTEgMCBSIC9GNDIgMTIgMCBSIC9GNDMg
NTEgMCBSIC9GMTEgMTE3IDAgUiAvRjcgNiAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0K
Pj4gZW5kb2JqCjEyMiAwIG9iaiA8PAovTGVuZ3RoIDE4NTAgICAgICAKL0ZpbHRlciAvRmxhdGVE
ZWNvZGUKPj4Kc3RyZWFtCnjanVhLj9s2EL7vr/BRBmKt3o/jBknaFE36WAM5ND3QEm0RkUWHlLLx
v++85JU37qFFgNVwOBwOh998HOf19u7+XZKvqrAuimy13a/iNAvLIl8VdRLGUb7atqu/gjhZb5Ii
r4LtusoDZ/Zq/ff2l/t3abVYmedhXteriJfocb1JizJQfci21aoG06RA043YbpI8rKOUV4ydnQ4d
rKqi4M8PjyCUdaBGVij+jOao2V0cL/zFURbmZTzvPbJJuSrCuoQYwSKF/arVJg6zWs6U/BhWFmZF
vVrYhLzrttOL7UlqzecoTrXTQ3MroDoPi7r4P/HE2cIN2NfJMqDPURTdPH+Y/Mfjxz8evwqTPF3u
1ljntD/B3VeBHVovSbB8NeNVVsAbXGcWh1FWwEZxWOfixemvk3G6RTxkvLpIg8ZpNWrWqUEmW+NP
amzWsF8n5p3YMCJg4VF7rw6i3Tt7fGH46fEjGx7Ifxw8oTuFf87P22G4kcRZzHE22nxDO/SUZoFB
7KUpHJ2/vAVMeDN8IVTfvd3eYdqjVXwpnCzPwhoS2hzvvt5FYVpXGVksRJqa14ni/v0xX72xd3/A
v3lqM/vcLJy+xpJN6xslm8E3ijI+zTtzAPTGdRnkUoBXZZ7GYX7B59vveMd1oJ05ruNAD5iEUfXr
TRbVgdfjBPNZzFePqqNWfnJalJgW1PaQ8KE5s9buWQn3FrJm+8GO2rN256xqG+VHnmKIwfYbxhFH
twFY13nNMVoyaU2j+h7vMS0DCnM6riHyncRPKEuLQPM9Djg3ejZvFNILKni8Q1lc7ZTXLPlRjYZv
vIByy6MH+BOHPMlEgFaAAJGmnW+cgbRJDLIb4RxcQLisQFzOqFucCyOt55Tj2jyXegBBqwZnOx4J
+4BEyIRvQ8UCBvqyUhYuz88qKRX004kbLhUQ8Jxj54R/aQNxCNUvWYKBZAnVkqUbB3qN+QKrqOQw
owKtHTkEnWIVnsWxZuyU2D0ZSlZUzrmcl9uTALQVw04P11ssitezRrEB8waMBzsiZ2fNfL8YzI65
bRrnUPTVkSo+kleU+Cz5Ia9ZOucVpBFAQKkFmVMLwk/IQs8khLmEJ/TGmxhDhWcZlHoRVpUU8aM5
ml45BHxSVoQp/NrJsQDsPPWYWRyYQawwBhTwtA5LDAf6+6XIjoI2nKgh6WPHJh6qHysK67hlVau/
mUb7VzxS/NlPWIJUqHPQS77/ebv9fYNQwcsqcyFsMxx46M9+1EeWG8IrCKNTgz/SZZbwDKhRsV6S
CxI8F7040IO3juVBaIEuHVbSYW5yu/J2ULseqQqKsdW9oMWdWYOAxHOirJClUkhIZ9HmaWC1kS9T
K0qFfN/LDBU7eetkI+C4i9tn8JRU6qgbtG719XMkaewhbXCoJMYCwTQlUVBErDnOM5a/COOSygUG
p8l3lHuQJX/kBJl9ttj1BozctZelidDaTjATsnbbGc+RzFx/I3C+1Jqj4scUBo0dvGmFoWvctNeO
LwSH9FLP+SHNnu4Yp4ApDvyw4JDJET3AjW1wGcQ5IgE3OCCUwGyrTz3d3nmGuw9vRfvbDie/GTt5
AHWVBoj1XPqJBKgOoDI3D6h/wtuzU9/y8HJGHHhzGIRjeEsqXPABNXzAbKMRnQuVL1LseRpoiqeR
o64CIRa6cYJfHz5yf6I8tyfSp6TCfSDAc/uF0f6KTSi3MGH2L1ububhAOUAPj/CnE7svrJy4rnE7
XiGcMZpNZ0/izUrP2NsD5DRjurswXJyESSLUSjyZRTfviycoX1kUMUQGvi1nh+NVmwI1YQczWkc8
g+ZOOY35x7mObnDu7djaicTVhVIe/TupCRGCYVFc2hUeYZ951WOiklCKAtzaqeegCmAx6klRb8TX
JUyQO3PoZq8SVoFA0AtX+kUINwDhNRRbi9QEqHnNRJwJorK8APRCsTiW5QV5xRZPc4awt7BD00+t
jPiRxhWKFfwIkLgkfBx7209X3cGCiIk/ABFUEdTIQcn5CYqmaIxQIyu5/sG0sX2vm5EfkOryOoAJ
EjJqCKbnE/aGrLigGORnFFeCYjRo9KCcsZ4dXbHPjYxKv5FiqLsN55fRf+l5cZKfUpQ6KoqhBbqT
orRSaZjWCX5WzU8wzrm1EODXaZY8d60pJ4yKER8K6RviYsXhJdg5QLBpGiaZ/I4uYH2c5MEb45vJ
e7mI62Yjop/eSSl9xkd7SZFqFV7CeX7zPyEn6p00ACfAMjdQnrsH6BnhZvTcoRg+lj4w0NGCr4v6
BnqMUHfhDMIzajz0NFRf1IhM8hPwxlUgySUJcNvj4/0DbUZOQbOHDFHUIO+AeWb5qE6zqMcmZOlB
3DC7gkDQmyiw3aW8cQIvjgxe4AhNWp5CuBE8cTAzxS0YSX8LPy0H/P3rNdJxhBXD6mcDJmSYAkvB
yrK9zfnRBkPfKadZ5JeR1lzdwpU/qR5WnVk6OWmjJv7PDPxZ+w+Oy7y1CmVuZHN0cmVhbQplbmRv
YmoKMTIxIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxMjIgMCBSCi9SZXNvdXJjZXMg
MTIwIDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDY2IDAgUgo+PiBlbmRvYmoK
MTE4IDAgb2JqIDw8Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9Gb3JtCi9Gb3JtVHlwZSAxCi9Q
VEVYLkZpbGVOYW1lICguL21lZGlhL2xhdGVuY3lfcm1zLnBkZikKL1BURVguUGFnZU51bWJlciAx
Ci9QVEVYLkluZm9EaWN0IDEyMyAwIFIKL0JCb3ggWzAgMCA4NjggNDEyXQovUmVzb3VyY2VzIDw8
Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdCi9Db2xvclNw
YWNlIDw8Ci9DczEgMTI0IDAgUgovQ3MyIDEyNSAwIFIKPj4vRm9udCA8PCAvRjEuMCAxMjYgMCBS
L0YyLjAgMTI3IDAgUj4+Ci9YT2JqZWN0IDw8Ci9JbTIgMTI4IDAgUgovSW0zIDEyOSAwIFIKL0lt
MSAxMzAgMCBSCj4+Pj4KL0xlbmd0aCAxMzEgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0
cmVhbQp4AZ2ZSW8byRmG7/0r6mgfWK59OcbOggSYYBwJmIOdgyxRET3aRpRj+JLfnuerblItdpO0
ZMK20Op669uXl3+oj+oPZXQy7Y9aqXcf1ladr5Vtn/W5WhSno1pYkz3/W2uLsjEl9bBUl+20L0X7
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
t/iLsErRdQmajA4pdMmIVTpMwQimh6m0kUUWABt99BIggim0dmKKyJVB77p/VggQ3uOJEI1X08Pb
+JiqeECtFqM0eVhoJMGYvQi0e74oIn5rse6l/F/TqwY5z3cF6NdjGvjMTpZK+B6hq0RVtE4KJjOZ
Ct2w1ev54edc2eC5w/SfM/1KHCEebEphEAEWuLTvQ4ywFIO7fpZT790FX8sXKlC0kLSDrTzrTApa
RrWIrUQvxhanUisiUGxbveLz06LYx/8DeFsQjAplbmRzdHJlYW0KZW5kb2JqCjEyMyAwIG9iago8
PAovQXV0aG9yICh2bGFkb3VuZXQpCi9DcmVhdGlvbkRhdGUgKEQ6MjAxMDA0MjcxMDIxMDBaKQov
Q3JlYXRvciAoT21uaUdyYWZmbGUgUHJvZmVzc2lvbmFsIDUuMCkKL01vZERhdGUgKEQ6MjAxMDA0
MjcxMjI1MDBaKQovUHJvZHVjZXIgKE1hYyBPUyBYIDEwLjUuOCBRdWFydHogUERGQ29udGV4dCkK
L1RpdGxlIChsYXRlbmN5X3Jtcy5ncmFmZmxlKQo+PgplbmRvYmoKMTI0IDAgb2JqClsvSUNDQmFz
ZWQgMTMyIDAgUl0KZW5kb2JqCjEyNSAwIG9iagpbL0lDQ0Jhc2VkIDEzMyAwIFJdCmVuZG9iagox
MjYgMCBvYmoKPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1RydWVUeXBlCi9CYXNlRm9udCAvSkpa
WFBXIzJCRVRILUxpZ2h0Ci9Gb250RGVzY3JpcHRvciAxMzQgMCBSCi9XaWR0aHMgMTM1IDAgUgov
Rmlyc3RDaGFyIDMyCi9MYXN0Q2hhciAxMjYKL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nCj4+
CmVuZG9iagoxMjcgMCBvYmoKPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1RydWVUeXBlCi9CYXNl
Rm9udCAvSkpGSlJUIzJCRVRILUxpZ2h0SXRhbGljCi9Gb250RGVzY3JpcHRvciAxMzYgMCBSCi9X
aWR0aHMgMTM3IDAgUgovRmlyc3RDaGFyIDgzCi9MYXN0Q2hhciAxMjEKL0VuY29kaW5nIC9NYWNS
b21hbkVuY29kaW5nCj4+CmVuZG9iagoxMjggMCBvYmoKPDwKL0xlbmd0aCAxMzggMCBSCi9UeXBl
IC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggMTAwMwovSGVpZ2h0IDY0MgovQ29sb3JT
cGFjZSAxMzkgMCBSCi9JbnRlcnBvbGF0ZSB0cnVlCi9JbnRlbnQgL1JlbGF0aXZlQ29sb3JpbWV0
cmljCi9CaXRzUGVyQ29tcG9uZW50IDgKL0ZpbHRlciAvRENURGVjb2RlCj4+CnN0cmVhbQr/2P/g
ABBKRklGAAECAQBIAEgAAP/hFahFeGlmAABNTQAqAAAACAAHARIAAwAAAAEAAQAAARoABQAAAAEA
AABiARsABQAAAAEAAABqASgAAwAAAAEAAgAAATEAAgAAABwAAAByATIAAgAAABQAAACOh2kABAAA
AAEAAACkAAAA0AAK/IAAACcQAAr8gAAAJxBBZG9iZSBQaG90b3Nob3AgQ1MyIFdpbmRvd3MAMjAw
NToxMjoxMiAxMzoyNTo0MQAAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAProAMABAAAAAEAAAKC
AAAAAAAAAAYBAwADAAAAAQAGAAABGgAFAAAAAQAAAR4BGwAFAAAAAQAAASYBKAADAAAAAQACAAAC
AQAEAAAAAQAAAS4CAgAEAAAAAQAAFHIAAAAAAAAASAAAAAEAAABIAAAAAf/Y/+AAEEpGSUYAAQIA
AEgASAAA/+0ADEFkb2JlX0NNAAH/7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEV
DwwMDxUYExMVExMYEQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAO
DhAUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/
wAARCABmAKADASIAAhEBAxEB/90ABAAK/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoL
AQABBQEBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVB
UWETInGBMgYUkaGxQiMkFVLBYjM0coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOE
w9N14/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQF
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
6i9kB4bP6Slzne303/yv+MToyrQ7FBHbd8vw+n5/X7qsTBFttdLX77rHwS20g2m+5rn10Yvs9lO+
3f8ApP8ASL0v6s/UvC6TXXa8C3Jb9G0tgMn/ALjVO/m//DFn6w//AINbXTOj4fTcdmPjVNqrZqGN
4n99xd77bf8AhbFeSM70GgQI9TqVmtawbWiAnSSTVykkkklKSSSSUpJJJJSkkkklP//V9UPnws8s
rNkNfDOxgz8OF8zJJKfqLGGKARQQT3PeP/Io6+VkklP1SkvlZJJT9UpL5WSSU/VKS+VkklP1Skvl
ZJJT9UpL5WSSU/VKS+VkklP1SkvlZJJT9UpL5WSSU//Z/+0aRlBob3Rvc2hvcCAzLjAAOEJJTQQl
AAAAAAAQAAAAAAAAAAAAAAAAAAAAADhCSU0D7QAAAAAAEABIAAAAAQACAEgAAAABAAI4QklNBCYA
AAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAHg4QklNBBkAAAAAAAQAAAAeOEJJTQPz
AAAAAAAJAAAAAAAAAAABADhCSU0ECgAAAAAAAQAAOEJJTScQAAAAAAAKAAEAAAAAAAAAAjhCSU0D
9QAAAAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAyAAAAAQBaAAAABgAA
AAAAAQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA////////////////////////////
/wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////
A+gAAAAA/////////////////////////////wPoAAA4QklNBAgAAAAAABAAAAABAAACQAAAAkAA
AAAAOEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADSQAAAAYAAAAAAAAAAAAAAoIAAAPrAAAACgBV
AG4AdABpAHQAbABlAGQALQAyAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAPrAAAC
ggAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIA
AAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxv
bmcAAAAAAAAAAEJ0b21sb25nAAACggAAAABSZ2h0bG9uZwAAA+sAAAAGc2xpY2VzVmxMcwAAAAFP
YmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcA
AAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlw
ZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAA
AAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAoIAAAAAUmdo
dGxvbmcAAAPrAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQA
AAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxU
ZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZh
dWx0AAAACXZlcnRBbGlnbmVudW0AAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdD
b2xvclR5cGVlbnVtAAAAEUVTbGljZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9u
ZwAAAAAAAAAKbGVmdE91dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3Jp
Z2h0T3V0c2V0bG9uZwAAAAAAOEJJTQQoAAAAAAAMAAAAAT/wAAAAAAAAOEJJTQQUAAAAAAAEAAAA
AjhCSU0EDAAAAAAUjgAAAAEAAACgAAAAZgAAAeAAAL9AAAAUcgAYAAH/2P/gABBKRklGAAECAABI
AEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8M
DA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4Q
FA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AA
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
1+VbVk9Ysbm5FRH2bEraW4dB7fZMT/DW/wDdjI32K303pQFTMXp9LacYH2hoME9z+/fZ/Ld/1yxd
N07oFOP+ku91h58f7Th/1Ff/AIIlSrcjC6Fk51huyJa0/SE/9W8f9RX/AOBro8fpeJRR6LWAtgt4
gAHnY38xWgA0BrQABoAOE6KHmeufV9uTW1m/0rq9xw8sNDiwu+kx7HS2yp/+Eq/6/V+mqXmt/rdI
szMDN9TGyLCzfZWQXe079zTa6r7Ri5H/ABn+j/0fpr257GvaWvEtPZc99YPqnhdaZTTl1lxpfuov
ZAeGz+kpc53t9N/8r/jE6Mq0OxQR23fL8Pp+f1+6rEwRbbXS1++6x8EttINpvua59dGL7PZTvt3/
AKT/AEi9L+rP1Lwuk112vAtyW/RtLYDJ/wC41Tv5v/wxZ+sP/wCDW10zo+H03HZj41Taq2ahjeJ/
fcXe+23/AIWxXkjO9BoECPU6lZrWsG1ogJ0kk1cpJJJJSkkkklKSSSSUpJJJJT//1fVD58LPLKzZ
DXwzsYM/DhfMySSn6ixhigEUEE9z3j/yKOvlZJJT9UpL5WSSU/VKS+VkklP1SkvlZJJT9UpL5WSS
U/VKS+VkklP1SkvlZJJT9UpL5WSSU/VKS+VkklP/2ThCSU0EIQAAAAAAVQAAAAEBAAAADwBBAGQA
bwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAAABMAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABv
AHAAIABDAFMAMgAAAAEAOEJJTQQGAAAAAAAHAAQAAAABAQD/4TlkaHR0cDovL25zLmFkb2JlLmNv
bS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6
a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSIzLjEu
MS0xMTEiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIv
MjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgog
ICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgog
ICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL2pwZWc8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVz
Y3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAg
IHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4YXA6
Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENTMiBXaW5kb3dzPC94YXA6Q3JlYXRvclRvb2w+
CiAgICAgICAgIDx4YXA6Q3JlYXRlRGF0ZT4yMDA1LTEyLTEyVDEzOjI1KzAxOjAwPC94YXA6Q3Jl
YXRlRGF0ZT4KICAgICAgICAgPHhhcDpNb2RpZnlEYXRlPjIwMDUtMTItMTJUMTM6MjU6NDErMDE6
MDA8L3hhcDpNb2RpZnlEYXRlPgogICAgICAgICA8eGFwOk1ldGFkYXRhRGF0ZT4yMDA1LTEyLTEy
VDEzOjI1OjQxKzAxOjAwPC94YXA6TWV0YWRhdGFEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlv
bj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6
eGFwTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iPgogICAgICAgICA8eGFwTU06
RG9jdW1lbnRJRD51dWlkOkMwQjk1MTNDMEE2QkRBMTFBODIyOUNCMjFFMkQxMDc0PC94YXBNTTpE
b2N1bWVudElEPgogICAgICAgICA8eGFwTU06SW5zdGFuY2VJRD51dWlkOkMxQjk1MTNDMEE2QkRB
MTFBODIyOUNCMjFFMkQxMDc0PC94YXBNTTpJbnN0YW5jZUlEPgogICAgICA8L3JkZjpEZXNjcmlw
dGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1s
bnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpP
cmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlv
bj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0
aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1
dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6TmF0aXZlRGln
ZXN0PjI1NiwyNTcsMjU4LDI1OSwyNjIsMjc0LDI3NywyODQsNTMwLDUzMSwyODIsMjgzLDI5Niwz
MDEsMzE4LDMxOSw1MjksNTMyLDMwNiwyNzAsMjcxLDI3MiwzMDUsMzE1LDMzNDMyO0E3RUNDQzVG
OUUyREVENkE0ODdFQkFGMzJDNjdCMEEwPC90aWZmOk5hdGl2ZURpZ2VzdD4KICAgICAgPC9yZGY6
RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAg
ICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAg
PGV4aWY6UGl4ZWxYRGltZW5zaW9uPjEwMDM8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAg
ICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NjQyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAg
ICAgPGV4aWY6Q29sb3JTcGFjZT4xPC9leGlmOkNvbG9yU3BhY2U+CiAgICAgICAgIDxleGlmOk5h
dGl2ZURpZ2VzdD4zNjg2NCw0MDk2MCw0MDk2MSwzNzEyMSwzNzEyMiw0MDk2Miw0MDk2MywzNzUx
MCw0MDk2NCwzNjg2NywzNjg2OCwzMzQzNCwzMzQzNywzNDg1MCwzNDg1MiwzNDg1NSwzNDg1Niwz
NzM3NywzNzM3OCwzNzM3OSwzNzM4MCwzNzM4MSwzNzM4MiwzNzM4MywzNzM4NCwzNzM4NSwzNzM4
NiwzNzM5Niw0MTQ4Myw0MTQ4NCw0MTQ4Niw0MTQ4Nyw0MTQ4OCw0MTQ5Miw0MTQ5Myw0MTQ5NSw0
MTcyOCw0MTcyOSw0MTczMCw0MTk4NSw0MTk4Niw0MTk4Nyw0MTk4OCw0MTk4OSw0MTk5MCw0MTk5
MSw0MTk5Miw0MTk5Myw0MTk5NCw0MTk5NSw0MTk5Niw0MjAxNiwwLDIsNCw1LDYsNyw4LDksMTAs
MTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMjAsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMzA7NTU2QTVE
Rjk5NkU4N0E3RTQ0QjlEQTk5QkY3MUY1QUQ8L2V4aWY6TmF0aXZlRGlnZXN0PgogICAgICA8L3Jk
ZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAg
ICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAv
Ij4KICAgICAgICAgPHBob3Rvc2hvcDpIaXN0b3J5Lz4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xv
ck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9m
aWxlPnNSR0IgSUVDNjE5NjYtMi4xPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgPC9yZGY6
RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCjw/eHBhY2tldCBlbmQ9InciPz7/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRy
UkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAQAA9tYA
AQAAAADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ABFjcHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAAC
GAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVk
AAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxy
VFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykg
MTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0y
LjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAA
AAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAA
JKAAAA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklF
QyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj
ZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFj
ZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdp
bmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5n
IENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcA
AAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAA
AAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAA
BQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQ
AJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUB
KwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6
AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsD
FgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRx
BH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYG
JwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgf
CDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoK
gQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0m
DUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQ
QxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOk
E8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UX
iReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2Mbihuy
G9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEg
bCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVo
JZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8r
Ais2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDb
MRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3
YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4g
PmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVF
mkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1K
TZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVV
wlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5s
Xr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn
6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGV
cfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8
IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobX
hzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGS
epLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5A
nq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+r
Aqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfg
uFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvF
yMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG
1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi
2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/
8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////7gAOQWRv
YmUAZAAAAAAB/9sAhAAGBAQEBQQGBQUGCQYFBgkLCAYGCAsMCgoLCgoMEAwMDAwMDBAMDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDAwMDAwMAQcHBw0MDRgQEBgUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwM
EQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAKCA+sDAREAAhEBAxEB/90ABAB+/8QB
ogAAAAcBAQEBAQAAAAAAAAAABAUDAgYBAAcICQoLAQACAgMBAQEBAQAAAAAAAAABAAIDBAUGBwgJ
CgsQAAIBAwMCBAIGBwMEAgYCcwECAxEEAAUhEjFBUQYTYSJxgRQykaEHFbFCI8FS0eEzFmLwJHKC
8SVDNFOSorJjc8I1RCeTo7M2F1RkdMPS4ggmgwkKGBmElEVGpLRW01UoGvLj88TU5PRldYWVpbXF
1eX1ZnaGlqa2xtbm9jdHV2d3h5ent8fX5/c4SFhoeIiYqLjI2Oj4KTlJWWl5iZmpucnZ6fkqOkpa
anqKmqq6ytrq+hEAAgIBAgMFBQQFBgQIAwNtAQACEQMEIRIxQQVRE2EiBnGBkTKhsfAUwdHhI0IV
UmJy8TMkNEOCFpJTJaJjssIHc9I14kSDF1STCAkKGBkmNkUaJ2R0VTfyo7PDKCnT4/OElKS0xNTk
9GV1hZWltcXV5fVGVmZ2hpamtsbW5vZHV2d3h5ent8fX5/c4SFhoeIiYqLjI2Oj4OUlZaXmJmam5
ydnp+So6SlpqeoqaqrrK2ur6/9oADAMBAAIRAxEAPwD1R2xVuuKurirq4q6uKurirq4q6uKurirq
4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKu
rirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q
6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKuri
rq4q6uKurirq4q6uKurirq4q6uKtBhigF3MYLTTROSWlC4u4baIzTusUSirs3YDBGJLGc4xeZ+a/
zt0mzElvo6/WbgbCY09MeO9Sa/7HMuGnJddl18Ysc8vfntqMN1x1hPrFsTsYgvJQT8kr9+TlpKFt
OPtIGQBeueXPN2ia9bevp1wJOzRn7QNK77nMSUCHZxzxlyKdAjINtNhhjS23XFLq4q6uKurirq4q
6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKurirq4q6uKuri
rq4q6uKtVxV//9D1T2xVrFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX
Yq7FVtKNWu3YYCxCjc3VtbQtNdOkUaAszOwAAG/fGMSVlkp5t5t/PDRdNV4NJ43d0u3Kp9MfSP8A
mrMzHpiXCya0B4r5n8/65r8zvez84zWkCEhBX5k5nw08Q6bJqpy72MSXsjAAmlNgPDMgQAcOUZHm
tjuZFNQ1D44EgBMdL129spVltX9CVG5cgepGVZMES3Ys0oci9a8n/nrdwKlvr0RntwKJcR8ufX9t
fiLZgZNPXJ22n1xPN7BofmbQ9chWfTryK5HdAw5Akd1rVcxJRIdpHLGXIi03HQjp4jIs21pxFOmK
t4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FW8Vf/R
9U9sVaxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku
xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux
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
7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX/9kKZW5kc3RyZWFtCmVuZG9iagox
MjkgMCBvYmoKPDwKL0xlbmd0aCAxNDAgMCBSCi9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFn
ZQovV2lkdGggMTI0Ci9IZWlnaHQgMTE3Ci9Db2xvclNwYWNlIDE0MSAwIFIKL0ludGVycG9sYXRl
IHRydWUKL0ludGVudCAvUGVyY2VwdHVhbAovU01hc2sgMTQyIDAgUgovQml0c1BlckNvbXBvbmVu
dCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4AdS9BXhUWd7uu2JVcVdCQgIJcU8q
7u7u7u7u7gFCcHfSwSEhSHC3YIEQQxvo6YbGJcTqvpXqZnrmnnNn7vnmPB/fftazWbVrV2XXb73r
Xf8lezMz82Nt9Gk6EvOapulT39MMffrL+GfGuzN0+hTjHMZ+nE6fpNMnZtO3PzN4yTyIE3AyEn16
ZnpycuLLt/FP0+Of6FPf/vg4TkCapE9N0icnGCfic18mJr/gJfIz9M/f6PjWb/TJb/Txr/QPX+lv
x+mvJ+i/TdJ/nWakVzP01zP0dzhxBmfN4CsmkJmhf/0zIY+EgxMzM1Oz6ceizbwaBo3/FfOpmcnp
abxHn5qYZhCZRhnMnD9xoaGqZePqredOXHo6+uLj718nPk8hjX+ZnAa3bzPjX759/vz129dxxmdn
4TOAI01MMcoLpQPms39xfBzfO4OSnWIkxuGpGfrHr/QvkzNfUV70qanZz0zSP36jv5mgv5qmv0Oa
oX9gAgdPFCzSLGEm6r8A/7GZ/791wJT6+DgYMbYvX74w1fv53Zeq0uoAP//Q4JCYqOjE+ITszKza
6rq1q9ft3r13ZPjRs6cv3775OIECmmF8AmIe/zpFnwFaIJye+TY9PT4z+WXq6+fxL58+owpMTH78
Nvnu8zhK7uMMQ+az5Gf3yDMT48PTE5NTX5m6ZXJmlhqz+BjXzxT2P8ibKXLs/2dsTObfvqGWMzYG
/Nnf//urN7ExUdl5yVl5CamZ0fFJ4ZExgRHRQbEJkYnJcYFhQaGREXFJyQUl5R0r13T39t0eGHn+
4tevXz4BL0PL+BIofParZqaZxvSFTv80m5AZn5r+OjHB+FuMKjNO//aFkVBFGGzxqT8qwz9nQPwf
sTI5/w9jzvwJoA1/mJrdmOTv378fmxAekeQVkeoek+mdXBCSVR6bXR6fVhSXlBuTU56ZkpccmRwV
GB0cEBkWFh+TkJmRkZdXUlZaX1+7Yd36vmPHB+7cffbk6fu376anYMWT9OnxqW8fxj+/+fLx9bcv
7/GSUSmYbFE6f4WMl6g+/3Rk1qNmmTNM6s+Ey/+nUvjHMvmBX4Hz5OTkd4d59+Ht3v17EjOjaA7y
qlZCCiY8KpZCxp7ybtFGoemOUdmeySUhmZUxRU3plUvyq9tLy1oL8mqzssrTiivzC0tykYrL8vML
srKy04qK85oa63/q3HHq+LFHI8NT47MtLExkfGLqy/j0p8/0L1/p36YYhCfoU5/oX99OfPwd7eqf
2BmogRUVBwUHPc+6Fz7OTH+H/+OS/x6oIPOHwmf1A+bQ+NdvX1DXv02Of/r2sXFxQ3xumJqtkLID
Rc2ZS89byCJsrn2solOcimOssn20kn2UimOMmluirn+WaVSpU3q9b15zRFF9anFVRlltdmVDXllV
ZklFZtuSup2dW1YsW97StKi6tL6iqK6urHnl4nU9e47dunLr4+uXX9+8mPr4mj7xlRFG4WL+Qd64
HLTEX+n0z3T6B+wZ1/wd+PfM38n/iLL+3zGfnmRcLWhP0Sc/T3yapE/kludE5wWou/Gp+XHohPAY
xwrZpki5ZMt6FSr4lyoHlKkEVaiEVaqFV6kjhVQoBZYqBOSrROaZxec75dT4li+KKG+JKG+OXra+
fF/vppu3L169evn82UtHD5/auv6nxupFJXkVpfnFpXkplcXJjdX5q5c2Hvhpx/WLF188fvrxzYc/
yDMUzmT+8X80c/BkkgfkP3T1p9QnplDJ0aB9HXx2LzQ5KDDTVdaBmKYJqoYS23xxhwIR01RqaNsC
9zJh21yOyHaZok69qPY5ccvnlOzWzNw8v/wn/Zqt1sv2+lWttUyqUUqtVUuq1Igt1E0rd6xpS2xf
Xd1zZM+RY70dHR3V1dWtrc2trbVLl9QsXVy+qLm8rrqovCS/OD+vtLCorKS8trph1Yq1Rw4fRbPy
8pdn796/mpqG1Ce/fv2GAInRyDLMcPrbt8kpBJ2MSjozMTHx6RPa6B/LZIAawL8z/3sMhurMqJ6M
OO3L9Odx+pe+q0fDM0K90+2MkyS1ktk0Ell0U1lN8ig6KcS2nMOtjit6rVTLOdP9fws/+Fto2DIW
72aSv1e06vC8yi75toMay47prj1jvPGcRUePcWOnyaJOt6x6K584ba8I05hM/+zS2Jq2vLaVpTWt
WfUtBS2Lyha31yxaUtfcUlPfUF1bi1Tf1tqek10QHBIREhqZlp5dWVXT0tK2ZMnSM2fO3b599+XL
l1+/Ip5kbGiGvgddAP7+/Xvm8R9k///NHBcP3X/49h7Ml25dEl0U4ZhkqpMoohBP7BulaQWczi3i
5pXsxiXEqJB4trOuH3M6MR278YlVzfl5cTtJ9BZS0stV38dTcZA0HmdbeVW447xAy3HBxX3zV5w0
zlqu7JosYujDZ+o3x8Jfxi50gWuskluUWmyOf0p+XEFlRkVDYV1bZVN7fduy1sXL29valxSUlCal
ZuUVVrQsWtmxfHNT44rS0vr8/Pyc3Ayk4pL8lpam7du3njp14ubNGy9e/Pzs2RPGT/jBNibzCfo3
SB2X9g86n6ZDLQzmU++/0D+mV6XEV0SbxeiYFc03KBN2aJWbG0OMKrlMqqnh2+cHrBcr6FOvuaJb
eVHJpJpk9/In7CZZPdS+KYdld/jrTpPG86TtCqk5QZrPkbW3pFdfUwtuZHPMZrNJ5rdPlTSPEtT2
ZdEPIjYx4kY+C8y8ta38dBxCDD1jbEJS3OPyglOLoyrbisoaC8sayutaGhrbltQ2LKqoaiuvaly0
pKVtUT1qRENjZU1teVl5ITM6qqmtyMrKqKmp+fDhww9FHcwB/B+Yw1VmI2HEYggUmWb+y+fngRl+
cZVRBuFq+nmyelWSOmUiC3M47BbLqOaTlB7DhP3qa54Gr3zsFb9X2rKJGFYQtw6y8bltH92n8hSp
PUuW3iUd90hrP1k7Qt3ySLblwpywpWxOJSzGKSzWWYKuJXPs84XMM9isM3kNw0UNgiT1fIW1vfh0
vPh0vfkNfISNfMRMfeY4hWqEpTlmlEYW1GRUNZW3r+zYsnNz86LKxubS+sbihqaS1kVVS5c1rVy9
aM3ajtKywtDQYGNj499+++1/BvNZ7NA5mGO46fLQRd8Ur4jiEN1wZfl4Qek0jrmprHbLlEN+MpFJ
Ia5r5nutl9v3reQYvVKriDTctAvaJCQdSzJ65JaPmOZ0k7oLZNFNUneVVF8iS+9TFt8SyjnIWXBw
QcTqeSbZXKpRRC+FQyeFRT2e6KYSszROs2Ru02SKaRKbaQKhRRO9YKLlS3T9iLY70XFi1Xfi07OT
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
5MLC4ujoWHt7Rx8fP4ZQ/QLwuLbc3HxVVXUNDS00o2GhwY6O9jY2Vq7ubnZOziZWVp6BwfmV1VlF
pTEp6YFhUcHhUfEJKSnJGfgef39fjwBHzyBHD09nZ3sHNxt3P8fgAJcYT4doO6tgc0s/Iyt3I3tX
Kw8P1AO/GH/XLHvbVcbmu9Tse3WdzunZX1G3uLbA+JqE/nV+2m1+w1uchjc5jG+wm1xhN7/AYXGW
zfIMu/FhYnaYmB8lFseI5TFic5TVoZfXtUfIYy+P5zaOsK38tsUs7pkL3MIsExLLkmMbMV7EdHLI
769hwz8yB7fv6e/vMBbbM54jybiph5lmV7UxHjaNxwZOYFR4agZLUJDHFBoDOGZbv4x/w3I8bDP0
J0+erVi+BiZgYmxhYW6DfXxcckJ8SmZGbm5OYX1ds5mplSHNVE1Vy83Vy8c7IDEhtaV5sZOjG+DT
aDT4T1RUTEhouJGxqZe3r52TK273y8rOLymtTEvPTEhIiotLQEJIn5ic4OBki+AnPDQiJCjc2c7V
3gYVwN/Oxt3R0dPeyd3MylbP0MjA2MjO2d4rxNs7zss91dmzwNm3xTlos0tIt73vWRO3qxpml6SM
rwsCu+4tVq1+onGNqF8lepeI/hFi2kNo3URrL9HcQ3T3E9o+FloXRX891WazpFGTmF7enHne4kGl
4bbBAY3L12NF1N8h/m9z34H/08l/p/0Hdsa0NWOgDEhBG3iRkGGMksweQUFg/dXTJy86lq4ESVAF
Q3c3n/KymsaGtuysAg93Xy9Pf2+vAFh0gH9oZkZeYEAYTtDS1JebpxgSHJmRnhMeFp2ZmY2IEfBV
VNRMTMzi4xNRHRQVlTw9vWNj41NT02tq6pCSk1PDwyORUDqhoeGoNdbWtjgzICDIzMzCzc3D1tYe
HzcyMjE3t7SyssHexMjcydbFycEVTbF7tJNXvrNPs4PnWkvnnXpuR7Uczi20ujLX5IaQznWq2jWy
8ApRucToWOkeZdPoJgv3EcU9RGkPUdxO5NeQBUs4NFrEFmQJy4SIyXvK++eHWwe67jx0AA9Z+i9v
/0R+5t27D0ANtt9pAzhD3jP0+/eGly9bHRIcYW5m7WDvgrkSRwfXqMh4QA4PiwHzkuLKoMBwC3Nb
fT1j7CvKa/Gug72rn28wkouzp8ICZRRTQUFRUFAIWklYkJ2dg5OTi7q6pq+vP9OUNDW1HR2dw8Ii
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
Zvv0Zj63RS+19PyZx2f7oMxjMustPT7zvZn1bOdhMg6TFRHSiK5LS0t1rB7GPoY5JqTmz58vSWv9
Fbtws2Q7T+ZnZdazHd/S/ZnnzKxnO09Lj/k2x2e+N7PezHdLej2C37Bhw6pVq8SQs2bNkoCl85yc
HF2tUzXvFZmflVnP9rkt3Z95zsx6tvO09Jhvc3zmezPr2b5bBDP61khuGz8ay3uwFGuZ3nrrrfiL
kQcOHHC2ZvIkmZ+VWc/2uS3dn3nOzHq287T0mG9zfOZ7M+vNfDf2EsEM/hGEBH874xaw06midZo5
T+bHJfVsx7d0f3LCJpVs58k87L/qli5QCmVuZHN0cmVhbQplbmRvYmoKMTMwIDAgb2JqCjw8Ci9M
ZW5ndGggMTQzIDAgUgovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDI4Mwov
SGVpZ2h0IDM1MAovQ29sb3JTcGFjZSAxMjQgMCBSCi9JbnRlcnBvbGF0ZSB0cnVlCi9CaXRzUGVy
Q29tcG9uZW50IDgKL0ZpbHRlciAvRENURGVjb2RlCj4+CnN0cmVhbQr/2P/gABBKRklGAAECAQBI
AEgAAP/AABEIAV4BGwMBIgACEQEDEQH/2wCEAAUDAwQDAwUEBAQFBQUGBw0IBwcHBxALDAkNExAU
ExIQEhIVFx4ZFRYcFhISGiMaHB8gISIhFBklJyQgJx4hISABBQUFBwYHDwgIDyAVEhUVICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIP/EAaIAAAEFAQEBAQEB
AAAAAAAAAAABAgMEBQYHCAkKCxAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKB
kaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn
aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT
1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgsR
AAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJ
ipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz
9PX29/j5+v/aAAwDAQACEQMRAD8A+y6KKKACiiigAooooAKKKKACiiigAooooAKKMiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA6Vn
69rtn4c0yXUL6URwxLkkmrzuI1LMQABkmvj39rj46nUtWi8IaNcfuIpALhkPU56VLdtEVGN99jof
E37d9hpOrTWlnohmiicrvL4zip9B/b38OXsix6hpM8HqVINfGGpnfczMecuTWdb8SHiqUB8y7H6V
+Gf2nPh74lCiPWI7d2/hl+Wu/wBN8TaRq8avZahbTqemyQGvyiilkj5jdlI9DW7o3jvxFoTh7DVb
mEr02yEU3Tkthc0XufqirK3Qgilr8+PCv7WvxA8P7Ek1D7XGvG2Ybq9a8Kft2Rvsj13Rfq8L/wBD
Sakt0HKnsz6torynwx+1J8P/ABEFU6kbORv4Zhtr0HS/Fmi61GHsNStp1PTZIDS5kDhJGrRSK4YA
ggilFMkKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo6UVFeXMdn
ayTysFSNSzE+lAHk/wC0v8X4vhr4Plht5B/aF0uyMA8rnvX5+zahPq+ui8uZGklll3MT3r0L9o74
myfEb4i6m8UxaytJFghAPHGcn8xXm+mjOoQ+xz+lEF1NJ+77qIL7l3PvVC3XLmr93/FiqlmvzGtE
ZdCdE7YqdYjjOOKI06VoWGEjnfapIj2qSM4yQM/WtCCkidOKlWP2oOlSJzBdOvswyKafttscOkEg
Azw+04+hp7DtfYtws8Z+Rip9jW1o/i3W9FkD2WoTwleRsciucXVIoji4hmhP+0mRVu2u7a5x5U8b
H0Dc/lSsnuNScdj2Lwr+1D448PlVfUXuY1/hlG6vWPC37aaSbI9Z0tT6tE2D+Rr5RiTnkVaiXmod
GPQv2r6n3v4c/aN8DeIAq/2j9kkb+GdSv69K7vT9f0zVYxJZ31vOpHBRwa/NmCSaFgYnZcehrf0X
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
rKyg2nZ1WZVtW5XSohhn37qjszPTm9k1xZMEXaI8dQ+iY3Ts0KGbl6LArEvXIKkgCDx16PvN7Ooo
hG95O9/7/f1+33tEbZ2m7zspQVRzQ5UrpaduTk2Lgx8pRR3UTlimFfjpYnGMseu5kr+719Zn0tiy
3se1dvv2PbWVZWAh6i22txD6IZFmAB+ZnyhlgLPAHZav2D4BPFgOrBrwI6IDD5q5MNPRnHSlsi2R
U+aiKCqvYjtJrvv5uca+i7WJg/5cj2bWjr2z6qrRTNS090ShvA+uRBnPX1T2bDUUpw3jnEhDGiny
rtXfK0zHEZErEEoGUjVkuZ9qTp114HUYu126k+P49hClPslgqIm16bKZHYV9AHYqy+wQ8AXo8bJi
D+eBe2H/W1HDk8AnYT9kh3nWrR/2F65T4HuEPTXgzhSuxfHaih9eLQFD91QjaIxzTcTT1zlzpIjv
MdQZmPdGOaYLMXeWqhM3gDthH1mqZgqxXfuu6iXuewJ30+M70Zs5C1ygHElysRXZFNA8CVgUfYuw
SQ48Ps4eVeB3qJjAHLmJ3M0o9x7VERtno1KBVnqNV8ZP47nxxfhlbBjPgH6sdtd7fP/p4xV117Y+
PPmNetw5rr2dG1VhVnFlC93/xzKEj9knOabB06FZWGvYduQPmsxMsAwoxH8FPpf6khNV3NXu7bhF
EsxQPixsJbpLVG4p1Oo9g0qsHCvYAHZwksQsWhy4U2u6OXh32CJ6bflNV7Lrhv769nr72vIebcqo
KSgTzbNEZpSxW6Pk3Xjb/WaREZ84Or7nvYpayf5JRRA/hTlaKvIUVfRWUNbEb2cOfhu2flw/pef1
Qf08CT2tn9Gv6KMRvgx0Sc/Cc1Efo0nwsGkh4hKgioMz1E5UY40D4inx8rRbZJH9D0AZ/WYKZW5k
c3RyZWFtCmVuZG9iagoxMzQgMCBvYmoKPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Bc2NlbnQg
ODgwCi9DYXBIZWlnaHQgNjc5Ci9EZXNjZW50IC0yNjMKL0ZsYWdzIDMyCi9Gb250QkJveCBbIC03
NiAtNDIzIDE3NTggMTE2Nl0KL0ZvbnROYW1lIC9KSlpYUFcjMkJFVEgtTGlnaHQKL0l0YWxpY0Fu
Z2xlIDAKL1N0ZW1WIDAKL01heFdpZHRoIDE5NjMKL1hIZWlnaHQgNTAxCi9Gb250RmlsZTIgMTQ2
IDAgUgo+PgplbmRvYmoKMTM1IDAgb2JqClsgMjE4IDAgMCAwIDAgMCAwIDAgMzAxIDMwMSAwIDAg
MCAwIDIwOCA0MTUgNjE3IDAgMCA0NjMgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2MDggNTYz
IDAgMCAwIDAgNjg3IDAgMCAwIDAgMCA4OTUgNzE0IDAgNTE5IDAgNTQ0IDUwNCAwIDAgMCA5NTMg
MCAwIDAgMCAwIDAgMCAwIDAgNTE5IDU1OCA0NDMgNTU2IDUwMyAwIDU1NiA1NzkgMjU1IDAgNDcz
IDI1NSA4ODggNTc5IDU0MCA1NTggMCAzNTQgNDMxIDM2OSA1NzkgNDcxIDc5MSAwIDQ2NCAwIDAg
MCAwIDU4NF0KZW5kb2JqCjEzNiAwIG9iago8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0FzY2Vu
dCA4ODAKL0NhcEhlaWdodCA2NzkKL0Rlc2NlbnQgLTI1OQovRmxhZ3MgOTYKL0ZvbnRCQm94IFsg
LTE4OCAtNDIzIDE3NTkgMTE2Nl0KL0ZvbnROYW1lIC9KSkZKUlQjMkJFVEgtTGlnaHRJdGFsaWMK
L0l0YWxpY0FuZ2xlIC0xMQovU3RlbVYgMAovTWF4V2lkdGggMTk2MwovWEhlaWdodCA1MTIKL0Zv
bnRGaWxlMiAxNDcgMCBSCj4+CmVuZG9iagoxMzcgMCBvYmoKWyA0NDkgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1MzQgMCAyNDkgMCAwIDAgMCA1NjYgMCA1MzUgMCAwIDAg
MCAwIDAgMCAwIDQ2N10KZW5kb2JqCjEzOCAwIG9iagoxNDIxNDMKZW5kb2JqCjEzOSAwIG9iagpb
L0lDQ0Jhc2VkIDE0OCAwIFJdCmVuZG9iagoxNDAgMCBvYmoKMjI3ODkKZW5kb2JqCjE0MSAwIG9i
agpbL0lDQ0Jhc2VkIDE0OSAwIFJdCmVuZG9iagoxNDIgMCBvYmoKPDwKL0xlbmd0aCAxNTAgMCBS
Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggMTI0Ci9IZWlnaHQgMTE3Ci9D
b2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9JbnRlcnBvbGF0ZSB0cnVlCi9CaXRzUGVyQ29tcG9uZW50
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
UqFG4YTCoMKUIk3RRjFMMVuxVPGw4mXFJ0p4JUMlXyWeUqHSAaXzSiM0hKZHY9O4tHW0OtoF2igd
RzeiB9Iz6CX07+i99EllJWV75RjlAuUa5VPKQwyEYcgIZGQxyhjHGLcY71Q0VbxU+CqbVJpUBlSm
VeeoeqryVYtVm1Vvqr5TY6r5qmWqbVVrU3ugjlE3VY9Qz1ffo35BfWIOfY7rHO6c4jnH5tzVgDVM
NSI1lmkc0OjRmNLU0vTXFGnu1DyvOaHF0PLUytCq0DqtNa5N03bXFmhXaJ/RfspUZnoxs5hVzC7m
pI6GToCOVGe/Tq/OjK6R7nzdtbrNug/0SHosvVS9Cr1OvUl9bf1Q/eX6jfp3DYgGLIN0gx0G3QbT
hkaGsYYbDNsMnxipGgUaLTVqNLpvTDX2MF5sXGt8wwRnwjLJNNltcs0UNnUwTTetMe0zg80czQRm
u836zbHmzuZC81rzQQuKhZdFnkWjxbAlwzLEcq1lm+VzK32rBKutVt1WH60drLOs66zv2SjZBNms
temw+d3W1JZrW2N7w45q52e3yq7d7oW9mT3ffo/9bQeaQ6jDBodOhw+OTo5ixybHcSd9p2SnXU6D
LDornFXKuuSMdfZ2XuV80vmti6OLxOWYy2+uFq6Zroddn8w1msufWzd3xE3XjeO2323Ineme7L7P
fchDx4PjUevxyFPPk+dZ7znmZeKV4XXE67m3tbfYu8V7mu3CXsE+64P4+PsU+/T6KvnO9632fein
65fm1+g36e/gv8z/bAA2IDhga8BgoGYgN7AhcDLIKWhFUFcwJTgquDr4UYhpiDikIxQODQrdFnp/
nsE84by2MBAWGLYt7EG4Ufji8B8jcBHhETURjyNtIpdHdkfRopKiDke9jvaOLou+N994vnR+Z4x8
TGJMQ8x0rE9seexQnFXcirir8erxgvj2BHxCTEJ9wtQC3wXbF4wmOiQWJd5aaLSwYOHlReqLshad
SpJP4iQdT8YmxyYfTn7PCePUcqZSAlN2pUxy2dwd3Gc8T14Fb5zvxi/nj6W6pZanPklzS9uWNp7u
kV6ZPiFgC6oFLzICMvZmTGeGZR7MnM2KzWrOJmQnZ58QKgkzhV05WjkFOf0iM1GRaGixy+LtiyfF
weL6XCh3YW67hI7+TPVIjaXrpcN57nk1eW/yY/KPFygWCAt6lpgu2bRkbKnf0m+XYZZxl3Uu11m+
ZvnwCq8V+1dCK1NWdq7SW1W4anS1/+pDa0hrMtf8tNZ6bfnaV+ti13UUahauLhxZ77++sUiuSFw0
uMF1w96NmI2Cjb2b7Dbt3PSxmFd8pcS6pLLkfSm39Mo3Nt9UfTO7OXVzb5lj2Z4tuC3CLbe2emw9
VK5YvrR8ZFvottYKZkVxxavtSdsvV9pX7t1B2iHdMVQVUtW+U3/nlp3vq9Orb9Z41zTv0ti1adf0
bt7ugT2ee5r2au4t2ftun2Df7f3++1trDWsrD+AO5B14XBdT1/0t69uGevX6kvoPB4UHhw5FHupq
cGpoOKxxuKwRbpQ2jh9JPHLtO5/v2pssmvY3M5pLjoKj0qNPv0/+/tax4GOdx1nHm34w+GFXC62l
uBVqXdI62ZbeNtQe395/IuhEZ4drR8uPlj8ePKlzsuaU8qmy06TThadnzyw9M3VWdHbiXNq5kc6k
znvn487f6Iro6r0QfOHSRb+L57u9us9ccrt08rLL5RNXWFfarjpebe1x6Gn5yeGnll7H3tY+p772
a87XOvrn9p8e8Bg4d93n+sUbgTeu3px3s//W/Fu3BxMHh27zbj+5k3Xnxd28uzP3Vt/H3i9+oPCg
8qHGw9qfTX5uHnIcOjXsM9zzKOrRvRHuyLNfcn95P1r4mPq4ckx7rOGJ7ZOT437j154ueDr6TPRs
ZqLoV8Vfdz03fv7Db56/9UzGTY6+EL+Y/b30pdrLg6/sX3VOhU89fJ39ema6+I3am0NvWW+738W+
G5vJf49/X/XB5EPHx+CP92ezZ2f/AAOY8/wKZW5kc3RyZWFtCmVuZG9iagoxNDkgMCBvYmoKPDwK
L0xlbmd0aCAxNTQgMCBSCi9OIDMKL0FsdGVybmF0ZSAvRGV2aWNlUkdCCi9GaWx0ZXIgL0ZsYXRl
RGVjb2RlCj4+CnN0cmVhbQp4AYWUTUgUYRjH/7ONBLEG0ZcIxdDBJFQmC1IC0/UrU7Zl1UwJYp19
d50cZ6eZ3S1FIoTomHWMLlZEh4hO4aFDpzpEBJl1iaCjRRAFXiK2/zuTu2NUvjAzv3me//t8vcMA
VY9SjmNFNGDKzrvJ3ph2enRM2/waVahGFFwpw3M6EokBn6mVz/Vr9S0UaVlqlLHW+zZ8q3aZEFA0
KndkAz4seTzg45Iv5J08NWckGxOpNNkhN7hDyU7yLfLWbIjHQ5wWngFUtVOTMxyXcSI7yC1FIytj
PiDrdtq0ye+lPe0ZU9Sw38g3OQvauPL9QNseYNOLim3MAx7cA3bXVWz1NcDOEWDxUMX2PenPR9n1
ysscavbDKdEYa/pQKn2vAzbfAH5eL5V+3C6Vft5hDtbx1DIKbtHXsjDlJRDUG+xm/OQa/YuDnnxV
C7DAOY5sAfqvADc/AvsfAtsfA4lqYKgVkctsN7jy4iLnAnTmnGnXzE7ktWZdP6J18GiF1mcbTQ1a
yrI03+VprvCEWxTpJkxZBc7ZX9t4jwp7eJBP9he5JLzu36zMpVNdnCWa2NantOjqJjeQ72fMnj5y
Pa/3GbdnOGDlgJnvGwo4csq24jwXqYnU2OPxk2TGV1QnH5PzkDznFQdlTN9+LnUiQa6lPTmZ65ea
XdzbPjMxxDOSrFgzE53x3/zGLSRl3n3U3HUs/5tnbZFnGIUFARM27zY0JNGLGBrhwEUOGXpMKkxa
pV/QasLD5F+VFhLlXRYVvVjhnhV/z3kUuFvGP4VYHHMN5Qia/k7/oi/rC/pd/fN8baG+4plzz5rG
q2tfGVdmltXIuEGNMr6sKYhvsNoOei1kaZ3iFfTklfWN4eoy9nxt2aPJHOJqfDXUpQhlasQ448mu
ZfdFssU34edby/av6VH7fPZJTSXXsrp4Zin6fDZcDWv/s6tg0rKr8OSNkC48a6HuVQ+qfWqL2gpN
Paa2q21qF9+OqgPlHcOclYkLrNtl9Sn2YGOa3spJV2aL4N/CL4b/pV5hC9c0NPkPTbi5jGkJ3xHc
NnCHlP/DX7MDDd4KZW5kc3RyZWFtCmVuZG9iagoxNTAgMCBvYmoKODcKZW5kb2JqCjE1MSAwIG9i
ago0MzExCmVuZG9iagoxNTIgMCBvYmoKMTQwMwplbmRvYmoKMTUzIDAgb2JqCjI2MTUKZW5kb2Jq
CjE1NCAwIG9iago3OTIKZW5kb2JqCjEyMCAwIG9iaiA8PAovRm9udCA8PCAvRjI1IDkgMCBSIC9G
MzggMTggMCBSIC9GOCA1IDAgUiAvRjExIDExNyAwIFIgL0Y3IDYgMCBSIC9GMTQgMTA2IDAgUiAv
RjM5IDExIDAgUiAvRjE2IDQgMCBSID4+Ci9YT2JqZWN0IDw8IC9JbTUgMTE4IDAgUiA+PgovUHJv
Y1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMTU3IDAgb2JqIDw8Ci9MZW5ndGggMTgzNiAg
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
SJHgWEz2lLODlQ0OAiBGP+1xkPOtKciRkyBHcsr0G+DpZwiahZdw+u+N/wHNNJ5nCmVuZHN0cmVh
bQplbmRvYmoKMTU2IDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxNTcgMCBSCi9SZXNv
dXJjZXMgMTU1IDAgUgovTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDE1OCAwIFIKPj4g
ZW5kb2JqCjExOSAwIG9iaiA8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvRm9ybQovRm9ybVR5
cGUgMQovUFRFWC5GaWxlTmFtZSAoLi9tZWRpYS9ldmVudFBlcmZHcmFwaC5wZGYpCi9QVEVYLlBh
Z2VOdW1iZXIgMQovUFRFWC5JbmZvRGljdCAxNTkgMCBSCi9NYXRyaXggWzAgLTEgMSAwIDAgNTk1
LjIyXQovQkJveCBbMCAwIDU5NS4yMiA4NDJdCi9SZXNvdXJjZXMgPDwKL0ZvbnQgPDwgL1RUMiAx
NjAgMCBSL1RUNCAxNjEgMCBSPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0KL0V4dEdTdGF0ZSA8
PAovR1MxIDE2MiAwIFIKPj4+PgovTGVuZ3RoIDE3MTkKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4K
c3RyZWFtCkiJbFdLbxw3DL7Pr9BxHWAVSRSp0bVoECBAgALZW5JD6zhugjgt4rb5+/0oiZqZtQ/2
DikOxcfHx0R3v7x8/S66+8elsK/iuPjK0eWcfM6uJPZR3I+75fNSg1+zi4SDEh0J+bw6SdWntQsE
93qJ7o0L7quLvib308Xg3rr3H4P7hJMvbsmcPSVXJPrC7jyUnDct/ZJx/rA8LsFHVXR1+4NpMsa3
yUjFy/MSVMmXvYQxNgkivW4nMRhTIpXkJe8kjLFJxOTDQWIwpkTkqLHdJIwxJYazU+Do/Ldr1x6u
4qoCdW/3s+HqEitU015iMKZEQm4o7iSMsUmUq5AbY0pQEg8nNwljbBIle97fYowpkVPy6/4WY2wS
JXra32KMKcGx+rK/xRibhKw+lJ1Ap+e5RPG8v8MYm4RkX/d3GGNKlEie6j5tg7FJGP6v8/oO9RCY
W6F9dUELFrWRA2m57XIZYoPcSiOXVEuXkMnIfgVdW7UrHT2LizUZY2UfIFEr/G+MsmqxpMCTwV5A
r5NOSsfoY/OFpLYXYp4MUYNTLJORFfcphclI2m5SooEwkgBKjOLV7/F3pFGtaF54m4KX7iQXUNFc
ZtEmkyhbtTNrUBLBnmgMFYDdvKPRCnt2VAPCmjIP8CoDxZ84jAwro8AEph1jhQ5YFmgvIWGnQ81C
K+S9VcIWFGBAwwYk8pCAqFZZmiqSJi8VsuRpQ4FOZMg8Ce2SWZhXDMQurxq7MgGR4RoE1jRKiHJu
vq7ZoqtxwStrMTMQuFUlqhmKyMJOYGp4Qj3fwF4vOkprZ+DWLpGi+koAWS9+imoWAWSp2w14IXwE
UI14BgUyAUKdTkA6jNgaTIJiQtvr+tRaeEFkkVF/lF6HBQkwBwQJOe42apghgBD3yCWFNQR4XiDw
UiUMNklawnS40WAkTSlBMAwdsKkEX/qVePPQ8a4YGCGAD1CkJTg04nZknJCd3N0GapBxQoHLYGQF
CWF01PEKaUHnEMwIuKRdM1TzDKjBLRmx5WoMBCujSZphUZXmZF3TJJD5Ohg4BraiUQqRDLDTZCA7
Gb6naQRilQtPq8hr566jtyutrRxpYj4w6ryEFEQZw3yTQOdGDzTP2x0MUFWjiwrAcRo0EsjowomG
U8gwa2efcQh5NyyuGJqg0KZFmltArpoP1v2p06tGjjHSu025qNGcZuBQbwgVA6lt3rQmo3Q2BdSc
IDGg57Z4MBVzM8dmA5lbWo4wQdntnAqIbARezWXchY7ZJKs5nHJjAEMD4wmKFfG1bTi1mcqKxka3
vs4SxsUAEFoHK+q77bHtWSzmCzYiVY8WR0arryKmoO1Dc/Yead2o2j7EYp6CVoMw7od8AJHGoaYZ
wiimfhjarsmlDG8GvYaNhjhG5yQVDOt0vm2kvFazPWpZceWNVlsrOpv5gmAI0DhpJfNGopAllI3W
nSFoPxrXIbaCnwFuPCkd5zmIifxmuyD+/RBa9O65olwxEMnQuqWgy/bMhDauJNb5ho5AQVse51kz
KcC5naN2QPPoIbovwH1BYzeGNAbGsDG0OgW4HvTapoZQmYxWCZKDMUrLkKBCesOMAIK+gp5nDF1F
BIDsgIuiq4hgaxo0t1Vk28SuGLqCt9EkxSZ51GKARLHBHXN3HcAwRtAmINqIWiwita5QkOre3CKG
EJpAQZCNocnf1j1b5+4Xbcv6CbBb4cZOl23ZVojs1/MhAAPHjntU8W3540XbHcpxRWorE7pMGRtX
g+fTnYrn1nTQ0LUiE4fdYSwTa5wLCbUl5+m6MXfBg4qmVUeYTu7d1BtjsNhsRlrX5+ZktJ54VNHV
osuxHHp1b97JKrxPyme6u4x5cNTQtSIbrefNltTLHqZYnWZNz9MeNofrQcNQyj4dqrOX67bc9Eb5
TEGTNbe9hqY06n6ZD1Af2F8HCqO0inxaHHEsF1cqulq0DNp/yxi2kdfSoM6a8Q3r4zzYwLtS0JT+
clleXi4Atbt8XoKLbac595/g9OMIjSFGHZFB3OUBMvf4u9zqv5/LKdxcvi5nbZUrFixclIu7/Lqc
Yju4vFhOqT0FPQz9jDaOiecpzvNJ2hOyW6W6c9LkJlZpXb1LVRven0K8ORdfTon6b2bpD2WtN0m/
Rk/xBrsbMg9bdaCmjRFvGEtC3hjpWoJuPl7eaISyRQgxRabO/QdDr2OK0LtiDdwjBMtOr/67+/7P
o/v77od7d3f71/dPLVD2WjANVFvDwqcf83jdhxBVxVmfkrQwv737/bv77d/HP93ly8Od+3B6eLy7
/XCjOl9dlv8FGADZK5hwCmVuZHN0cmVhbQplbmRvYmoKMTU5IDAgb2JqCjw8Ci9DcmVhdGlvbkRh
dGUgKEQ6MjAxMDAxMDQyMDU3MzErMDInMDAnKQovQXV0aG9yIChha2FtaWwwMSkKL0NyZWF0b3Ig
KFBTY3JpcHQ1LmRsbCBWZXJzaW9uIDUuMi4yKQovUHJvZHVjZXIgKEFjcm9iYXQgRGlzdGlsbGVy
IDcuMC41IFwoV2luZG93c1wpKQovTW9kRGF0ZSAoRDoyMDEwMDEwNDIwNTczMSswMicwMCcpCi9U
aXRsZSAoZXZhbHVhdGlvbiBBZnJlZC54bHMpCj4+CmVuZG9iagoxNjAgMCBvYmoKPDwKL1N1YnR5
cGUgL1RydWVUeXBlCi9Gb250RGVzY3JpcHRvciAxNjMgMCBSCi9MYXN0Q2hhciA1NwovV2lkdGhz
IFsgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2XQovQmFzZUZvbnQgL0JK
SEpERiMyQkFyaWFsTVQKL0ZpcnN0Q2hhciA0OAovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwov
VHlwZSAvRm9udAo+PgplbmRvYmoKMTYxIDAgb2JqCjw8Ci9TdWJ0eXBlIC9UcnVlVHlwZQovRm9u
dERlc2NyaXB0b3IgMTY0IDAgUgovTGFzdENoYXIgMTE4Ci9XaWR0aHMgWyAyNzggMCAwIDAgMCAw
IDAgMCAzMzMgMzMzIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDY2NyAwIDAgMCAwIDAgMCAwIDgzMyAwIDAgNjY3IDAgMCA2NjcgNjExIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDU1NiAwIDU1NiA2MTEgNTU2IDAgMCA2MTEgMjc4IDAgMCAwIDg4
OSA2MTEgNjExIDYxMSAwIDM4OSA1NTYgMzMzIDYxMSA1NTZdCi9CYXNlRm9udCAvQkpISkRIIzJC
QXJpYWwtQm9sZE1UCi9GaXJzdENoYXIgMzIKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKL1R5
cGUgL0ZvbnQKPj4KZW5kb2JqCjE2MiAwIG9iago8PAovT1BNIDEKL09QIGZhbHNlCi9CRzIgL0Rl
ZmF1bHQKL29wIGZhbHNlCi9UeXBlIC9FeHRHU3RhdGUKL1NBIGZhbHNlCi9VQ1IyIC9EZWZhdWx0
Ci9TTSAwLjAyCj4+CmVuZG9iagoxNjMgMCBvYmoKPDwKL1N0ZW1WIDg4Ci9Gb250TmFtZSAvQkpI
SkRGIzJCQXJpYWxNVAovRm9udFN0cmV0Y2ggL05vcm1hbAovRm9udEZpbGUyIDE2NSAwIFIKL0Zv
bnRXZWlnaHQgNDAwCi9GbGFncyAzMgovRGVzY2VudCAtMjExCi9Gb250QkJveCBbIC02NjUgLTMy
NSAyMDAwIDEwMDZdCi9Bc2NlbnQgOTA1Ci9Gb250RmFtaWx5IChBcmlhbCkKL0NhcEhlaWdodCA3
MTgKL1hIZWlnaHQgNTE1Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovSXRhbGljQW5nbGUgMAo+Pgpl
bmRvYmoKMTY0IDAgb2JqCjw8Ci9TdGVtViAxMzgKL0ZvbnROYW1lIC9CSkhKREgjMkJBcmlhbC1C
b2xkTVQKL0ZvbnRTdHJldGNoIC9Ob3JtYWwKL0ZvbnRGaWxlMiAxNjYgMCBSCi9Gb250V2VpZ2h0
IDcwMAovRmxhZ3MgMzIKL0Rlc2NlbnQgLTIxMQovRm9udEJCb3ggWyAtNjI4IC0zNzYgMjAwMCAx
MDEwXQovQXNjZW50IDkwNQovRm9udEZhbWlseSAoQXJpYWwpCi9DYXBIZWlnaHQgNzE4Ci9YSGVp
Z2h0IDUxNQovVHlwZSAvRm9udERlc2NyaXB0b3IKL0l0YWxpY0FuZ2xlIDAKPj4KZW5kb2JqCjE2
NSAwIG9iago8PAovTGVuZ3RoIDE1MTc3Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGgxIDMy
ODg0Cj4+CnN0cmVhbQpIidRWezyU+Rr/zdU99xJDr1u5DH4zQu4it8KIcYmSMQ0GY2Znxt0pM0e6
bZFQbEVSLmtT0damUKuVwonktGmrjVxKUc5KW9h3ot2tc87uf+fy+33ez/s+19/zvM/3ed4XYAAA
i0AWwIHINYHengaOb4ZRzhgAmpm0QAuq/ENqPABasSgvmMlh8MwLPIsBSMMDgHFgJguRIpOeZFTe
AgARRvNiOB1pG0oA0J1A6cSYhLTopqIJAgC+tQAom8SyGFu6Di3PByDLAfVnHYsyVCxV5gAwikRp
g1iOMHXRylAXlM5GzzdK4DIZILHqEAARd1GazGGk8uQ85atQexKqjyQyOKyeCPc3AKSj9oRGHlcg
RPNAV7qLRM7js3gBs62jALii58ui5wDM+y25A80Y9K4G3i/NzVCsGU6UMcnxynmtgJHClok1fVCW
FxaDoSyC8kTpeQmWQAAwkihrSsTgMWIbLAZfFgD9Ifl3HFK5Dhqdw/tNA1FAALggAbCAEL2cJBsi
H/vDK1W4d146NLjT4+evxqfpjyP1y8Rql6AYK7kMsUprl/as+ly8gXRik2Cz+qb7x6HCr3Fi8Gg4
oqOUZVCbiAvCy6ouDmbx2YHsmESEzk8SCBE/ljCFy4+nLIHqEgU51UUfFMiIdyLTnEKGJvMC/d8s
2RwWEihkcHjsxBgkkMVPZjNZSACXK6SshNR5bVM/GuLjvdrV28ebvgFZ7ebm7k93X0NGjJjGtjbI
x2dAnSUKtjbQikKF71fYEgW4ElKgDdXSytbKNux/PwFR6e/fOYYAcKK96HvfhRWJwG1zZCI2k2xm
LiKdIZ6tlDuvrBByL/Bu0kC7pcnZ3imZ8JWTo3mzMvK3+rXCvukcntp55kjLDsNnfwlVEsSl3vxM
fea70CnjL0MjivAzZlHKoSLSjc8K7uiFWtzpUCNkW18sqGnwXTv6wl7vq+DirbqHE3Ja1noejGs4
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
rEzjM1dWCav58yJD54vWYrTBr0DT0CR0FApDIagd8kNCXWtF/ZjRaDc5DwWgeyBdPoJ4vYjVape7
jFlWTSfTb1eTCvmcwHpwc1YgCMtYgV7YG1Zgn4hU0BkSkGEQPYOZOwWfssRl3D5dtF9YYg520hKd
sL1W4F7YHitwXkSq6cNEOCTaZ/suvLf0nZbYjWoPWaIF1mYFmmXtVjzIj7stNEYuw/02ta74pCZL
bIE1WmKzrO0iATnx1EnaVfeWQdJ5Gh26OktjDmrcJT4QL4grwP+GgcXncUnPOGAX/Bm626gU8+2v
onJEWJFKWR/7w7TtpvQzYtI/Kl5GW9Q/I14U94rx9owLl0+g36PqEZY4qmfYKWOFGBZBMdB+WRwQ
D4qviZ1irx/XLfFVMS+7SfppjJ2aEVE0+EW8hd8SD/gzqos7xPeEIQJisz4vx5dsKrYbbp+XI0BC
xadvwPi2+jPyG384nKHLjVbtmpbU9mhbtS1ak9aordUatDpXrcvjqnFVuSpdLpfT5XAxF3HVZQp5
o43gs63DcQ7mdMjUofIeJlMkSAmjLkYeJOYK3sN6dm2lPWb2UdKzTzf/vqspQysf+oq5rGkrNWt7
SE/fVnNTW09GK+w0w209phbdE5umdLwfV012LENJXyxDC/LSSL1Zuw03yciJ+llC6d0jJ/r7ic/7
ZLevu7Zr+eYd2z8midtp23/+fLdmG8wf9eyKmT9v6DdD/ya9emObuq74vfe95+d37ec820ns/HH9
7Fc7GY+Qf07AwZCXxGEwC0QaWuytngKVSaAfwCQhdNICrNMQKx9SaRRNTCKbGNBqEnbSVUlaNhhT
Jb7RbQKqqRsVbKXTAlMbUVSIs3OfEwpavu3Z9577zvnde84795zz3mWDBV8qkTvSq76cnCYlRO6O
TxMHI6nkNL+PlHS/wPj8vngKYHdMGESzA2CohhGAWTuRymBQTzoZDPaoiAvDdMAFGAEclVHYxIWp
bOJ4zHD5m2p3PK+qJgaOUTdNzM0QegoDEQNz4/lw2ERpKk4yFE5qqmnYt8yF/H6A1PlNCIbvOnMh
PzaV5eq/gYQWIS1PIC2mLg5/g/EXMaW1S5jSWsDo/+eV6dTxZOPw6JXujNbdp3VnoPXl3jgw4M0d
3qmq+dFhJlBzXLhv5ysDjO7I5Ia1TDw3qsXVfOOVZcRXmLhRi+fRle5tyfwVIxOfaDQau7Ud8dRk
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
/aZV+sBOLwA6wT5UbkX/Ia/aVRoIouhgEdIZEAsL4VY2sptHF0iTRxEDMbLZNDYyuLPJknEnzE4U
f8HPsNLGzsLvEBtbwQ8QbIKCZ8YQbHygVsoyd+6cOfcxO3fvKpZimDmLWBMrDd1KDjxxDAIiYe9D
azmc/9BTcZEZ4cYUsOmCkwHbwvwar8yqeErMm2sVh9ZhITEHsBkiB+OsAvjLMDQ7hIzA0tjnYF64
XG0mEXYOMGs2BqbwZr5/CgIqED9BVOPi2qiEteWYudcBTkioTGtPbMPF60L2EDt2p+HgWzsBrzb/
I2dpvfnh8UTEfF/QOYUjQV2VKgOImkpPlOYmUSlN5L5PLW74J6SidUZ9JacWyWgrhV25Wi15EBWf
6lJSkAxHJqNAZEIfiqjRaXda7c26Trj0GkpG3fBrkNPPKNQ8Egdcj0nFH+ZGWgyTzAgtIkpSMqAO
+rTDDW1Q2KVeHPvE04iEzMTRCDT/n9d2g3VYG6MFufmm0gNXkVNotsbfY3nYsZlFOF34q6w/8M3Z
rpw7YQ+shsg5dN4C7nQAbLug0F1f/9VL98Pm9e3u3nLtMb+Wd2389K62buerm8uV2ezpucDyq1ja
Pu76/IsAAwDfCsYRCmVuZHN0cmVhbQplbmRvYmoKMTU1IDAgb2JqIDw8Ci9Gb250IDw8IC9GMjUg
OSAwIFIgL0YzOSAxMSAwIFIgL0Y4IDUgMCBSIC9GNDIgMTIgMCBSID4+Ci9YT2JqZWN0IDw8IC9J
bTYgMTE5IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMTY5IDAgb2Jq
IDw8Ci9MZW5ndGggMjYwMSAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqN
WUuv47YV3s+v8NIGrjXWy5KW06KDpkDSIOMiiyYLWqItYiTRQ0pze/vrc160ZEcXyMY6/PjQ0Xkf
+m+nDx8/J/mmjKrjMducLps4zaLimG+OVRLFh3xzajb/3cbZbp8c83J72pX51pmL2v1++tfHz2m5
2JnnUV5VmwNv0eNunx6LreoiXltuKliaHHHpPjtExzzf7JM8qg4p7/h5OnfGt9p52HmIt2pomPDT
eQe/u328rZ05AyvFdl7lNBOdhYlya73u3hip7XTrtBwyWnwetlrVO9jfMmpHeB9PjK2z01VwgJmY
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
jpaL2wOx7P3Y9wF8anrpsFWDkmyTYK9LNQVST/ceCTSqJ4yvNBme7K14N2YUX81hj+smLae1fKlT
3K89iEErILRZfXixnQOxYwQdUnHgXeF5ra2QFjOl+5XeM8mdBjTpkC+G+o1ByT1FKAihGnyRGR8m
JBMpTHLfdzld9VGRyrED1py5mJSYQDmS7sFW2J3YeJKknANDQirjMmewnb3S/Q2iaOA0S2U/+Ms9
0aKq9iGMdbwKutP5/sFcW897ZDNeT3g5F8WDz2fhRQxjRFjhffbgKsHeTOo1HLEvphW7XbiMxZlF
y4TDmoJd9ZgIGCEBTkPjdCPvIJXhJqitJudC2F1JkJCCnVTDfKNyL2sfT0WE2pI4X1SQWE//uQB8
qK3JD2nhdN57DRxJhR7MCXT5slo4zXeVGdgwXQInxXPLyiAHHyB66wk6AjVAEeH4c/Bq4+EWDREJ
g0Ddw6DmvRiqwonD4oYVGv/1NM4WyX9N3CsiqZHYWGBzCDENo3aS/zJmezgGrzkGm0OIXBKeKw67
mMVLX+WMtzLm0qic/yTAYNCt3pYuevPy3pvjoAhNZCJXUwX/9VDOV8wgKb4sw9XncIsNK4K/rl4v
IUoJpKQbdmeXIkOQXa8s/lqPim13kUqVN9+mk2XRDF+pF9n2gqoeav5PANcVxG/BRRE++c3FU4qi
zY42c+OHYzRxCgj4bjaZFQ97ujliA/rwj9OHPwDlEmfeCmVuZHN0cmVhbQplbmRvYmoKMTY4IDAg
b2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxNjkgMCBSCi9SZXNvdXJjZXMgMTY3IDAgUgov
TWVkaWFCb3ggWzAgMCA2MTIgNzkyXQovUGFyZW50IDE1OCAwIFIKPj4gZW5kb2JqCjE2NyAwIG9i
aiA8PAovRm9udCA8PCAvRjI1IDkgMCBSIC9GMzggMTggMCBSIC9GOCA1IDAgUiAvRjE2IDQgMCBS
ID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNzIgMCBvYmogPDwKL0xlbmd0
aCAzMDE3ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42o1ZS3fbNhbe91d4
V+oci+VbpHeyLSd24sRjqvFpp7OATNjCmCJVPpLjZjF/fe4LpGxLaVcC7gVA4D6/e3W6/OmXiyA+
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
8v6vnpoYOLliGBTKU+EWA/wjfttv+T8V/nsj8m3pi/iof3yU/15gWtXV9KGvOPbgW2VVI60R3UwP
Wl5nEM+GXsYQAn6/mUaLhfneWDgDp9rFsmJhni8WBvx8cUua+XJ5tsiZ9LOXCnOP+XlSJ3iZmB98
DyXPJFtt7zG4x4buh8iXAlVMXT4KmUydMpEad/z3IFadx0y9438XsTLhHIjMc3SuM1sPzLiFa4vV
BdPO6g2C077TjXxUfNZogdeH+y/pqzaa9z1MqE3302L50/8B2S+ZigplbmRzdHJlYW0KZW5kb2Jq
CjE3MSAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgMTcyIDAgUgovUmVzb3VyY2VzIDE3
MCAwIFIKL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KL1BhcmVudCAxNTggMCBSCj4+IGVuZG9iagox
NzAgMCBvYmogPDwKL0ZvbnQgPDwgL0YyNSA5IDAgUiAvRjE2IDQgMCBSIC9GMzkgMTEgMCBSID4+
Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNzMgMCBvYmoKWzM2MS4xXQplbmRv
YmoKMTc0IDAgb2JqCls3NzcuOCAyNzcuOCA3NzcuOCA1MDAgNzc3LjggNTAwIDc3Ny44IDc3Ny44
IDc3Ny44IDc3Ny44IDc3Ny44IDc3Ny44IDc3Ny44IDEwMDAgNTAwIDUwMCA3NzcuOCA3NzcuOCA3
NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3NzcuOCA3Nzcu
OCAxMDAwIDEwMDAgNzc3LjggNzc3LjggMTAwMCAxMDAwIDUwMCA1MDAgMTAwMCAxMDAwIDEwMDAg
Nzc3LjggMTAwMCAxMDAwIDYxMS4xIDYxMS4xIDEwMDAgMTAwMCAxMDAwIDc3Ny44IDI3NSAxMDAw
IDY2Ni43IDY2Ni43IDg4OC45IDg4OC45IDAgMCA1NTUuNiA1NTUuNiA2NjYuNyA1MDAgNzIyLjIg
NzIyLjIgNzc3LjggNzc3LjggNjExLjEgNzk4LjUgNjU2LjggNTI2LjUgNzcxLjQgNTI3LjggNzE4
LjcgNTk0LjkgODQ0LjUgNTQ0LjUgNjc3LjggNzYyIDY4OS43IDEyMDAuOSA4MjAuNSA3OTYuMSA2
OTUuNiA4MTYuNyA4NDcuNSA2MDUuNiA1NDQuNiA2MjUuOCA2MTIuOCA5ODcuOCA3MTMuMyA2Njgu
MyA3MjQuNyA2NjYuNyA2NjYuNyA2NjYuNyA2NjYuNyA2NjYuNyA2MTEuMSA2MTEuMSA0NDQuNCA0
NDQuNCA0NDQuNCA0NDQuNCA1MDAgNTAwXQplbmRvYmoKMTc1IDAgb2JqCls1MjUgNTI1IDUyNSA1
MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUy
NSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1
IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUg
NTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1
MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUy
NSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjVdCmVuZG9iagoxNzYgMCBv
YmoKWzM4My4zIDMxOS40IDU3NSA1NzUgNTc1IDU3NSA1NzUgNTc1IDU3NSA1NzUgNTc1IDU3NSA1
NzUgMzE5LjQgMzE5LjQgMzUwIDg5NC40IDU0My4xIDU0My4xIDg5NC40IDg2OS40IDgxOC4xIDgz
MC42IDg4MS45IDc1NS42IDcyMy42IDkwNC4yIDkwMCA0MzYuMSA1OTQuNCA5MDEuNCA2OTEuNyAx
MDkxLjcgOTAwIDg2My45IDc4Ni4xIDg2My45IDg2Mi41IDYzOC45IDgwMCA4ODQuNyA4NjkuNCAx
MTg4LjkgODY5LjQgODY5LjQgNzAyLjggMzE5LjQgNjAyLjggMzE5LjQgNTc1IDMxOS40IDMxOS40
IDU1OSA2MzguOSA1MTEuMSA2MzguOSA1MjcuMSAzNTEuNCA1NzUgNjM4LjkgMzE5LjQgMzUxLjQg
NjA2LjkgMzE5LjQgOTU4LjMgNjM4LjkgNTc1IDYzOC45IDYwNi45IDQ3My42IDQ1My42IDQ0Ny4y
IDYzOC45IDYwNi45IDgzMC42IDYwNi45IDYwNi45IDUxMS4xIDU3NV0KZW5kb2JqCjE3NyAwIG9i
agpbMzE0LjggNTI0LjcgNTI0LjcgNTI0LjcgNTI0LjcgNTI0LjcgNTI0LjcgNTI0LjcgNTI0Ljcg
NTI0LjcgNTI0LjcgNTI0LjcgMzE0LjggMzE0LjggMzE0LjggNzg3IDUyNC43IDUyNC43IDc4NyA3
NjMgNzIyLjUgNzM0LjYgNzc1IDY5Ni4zIDY3MC4xIDc5NC4xIDc2MyAzOTUuNyA1MzguOSA3ODku
MiA2NDMuOCA5MjAuNCA3NjMgNzg3IDY5Ni4zIDc4NyA3NDguOCA1NzcuMiA3MzQuNiA3NjMgNzYz
IDEwMjUuMyA3NjMgNzYzIDYyOS42IDMxNC44IDUyNy44IDMxNC44IDUyNC43IDMxNC44IDMxNC44
IDUyNC43IDQ3Mi4yIDQ3Mi4yIDUyNC43IDQ3Mi4yIDMxNC44IDQ3Mi4yIDUyNC43IDMxNC44IDMx
NC44IDQ3Mi4yIDI2Mi4zIDgzOS41IDU3Ny4yIDUyNC43IDUyNC43IDQ3Mi4yIDQzMi45IDQxOS44
IDM0MS4xIDU1MC45IDQ3Mi4yIDY4Mi4xIDQ3My44IDQ5OC41XQplbmRvYmoKMTc4IDAgb2JqCls0
MDguOSA0MDguOSA1MTEuMSA3NjYuNyAzMDYuNyAzNTcuOCAzMDYuNyA1MTEuMSA1MTEuMSA1MTEu
MSA1MTEuMSA1MTEuMSA1MTEuMSA1MTEuMSA1MTEuMSA1MTEuMSA1MTEuMSA1MTEuMSAzMDYuNyAz
MDYuNyAzMDYuNyA3NjYuNyA1MTEuMSA1MTEuMSA3NjYuNyA3NDMuMyA3MDMuOSA3MTUuNiA3NTUg
Njc4LjMgNjUyLjggNzczLjYgNzQzLjMgMzg1LjYgNTI1IDc2OC45IDYyNy4yIDg5Ni43IDc0My4z
IDc2Ni43IDY3OC4zIDc2Ni43IDcyOS40IDU2Mi4yIDcxNS42IDc0My4zIDc0My4zIDk5OC45IDc0
My4zIDc0My4zIDYxMy4zIDMwNi43IDUxNC40IDMwNi43IDUxMS4xIDMwNi43IDMwNi43IDUxMS4x
IDQ2MCA0NjAgNTExLjEgNDYwIDMwNi43IDQ2MCA1MTEuMSAzMDYuNyAzMDYuNyA0NjAgMjU1LjYg
ODE3LjggNTYyLjIgNTExLjEgNTExLjEgNDYwIDQyMS43IDQwOC45IDMzMi4yIDUzNi43IDQ2MCA2
NjQuNCA0NjMuOSA0ODUuNl0KZW5kb2JqCjE3OSAwIG9iagpbMzI4LjcgNTkxLjcgNTkxLjcgNTkx
LjcgNTkxLjcgNTkxLjcgNTkxLjcgNTkxLjcgNTkxLjcgNTkxLjcgNTkxLjcgNTkxLjcgMzI4Ljcg
MzI4LjcgMzYwLjIgOTIwLjQgNTU4LjggNTU4LjggOTIwLjQgODkyLjkgODQwLjkgODU0LjYgOTA2
LjYgNzc2LjUgNzQzLjcgOTI5LjkgOTI0LjQgNDQ2LjMgNjEwLjggOTI1LjggNzEwLjggMTEyMS42
IDkyNC40IDg4OC45IDgwOCA4ODguOSA4ODYuNyA2NTcuNCA4MjMuMSA5MDguNiA4OTIuOSAxMjIx
LjYgODkyLjkgODkyLjkgNzIzLjEgMzI4LjcgNjE3LjYgMzI4LjcgNTkxLjcgMzI4LjcgMzI4Ljcg
NTc1LjIgNjU3LjQgNTI1LjkgNjU3LjQgNTQzIDM2MS42IDU5MS43IDY1Ny40IDMyOC43IDM2MS42
IDYyNC41IDMyOC43IDk4Ni4xIDY1Ny40IDU5MS43IDY1Ny40IDYyNC41IDQ4OC4xIDQ2Ni44IDQ2
MC4yXQplbmRvYmoKMTgwIDAgb2JqCls1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUy
NSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1
IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUg
NTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1
MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUy
NSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1XQplbmRvYmoKMTgxIDAgb2JqCls1OTku
NSA1NzEgNTcxIDg1Ni41IDg1Ni41IDI4NS41IDMxNCA1MTMuOSA1MTMuOSA1MTMuOSA1MTMuOSA1
MTMuOSA3NzAuNyA0NTYuOCA1MTMuOSA3NDIuMyA3OTkuNCA1MTMuOSA5MjcuOCAxMDQyIDc5OS40
IDI4NS41IDI4NS41IDUxMy45IDg1Ni41IDUxMy45IDg1Ni41IDc5OS40IDI4NS41IDM5OS43IDM5
OS43IDUxMy45IDc5OS40IDI4NS41IDM0Mi42IDI4NS41IDUxMy45IDUxMy45IDUxMy45IDUxMy45
IDUxMy45IDUxMy45IDUxMy45IDUxMy45IDUxMy45IDUxMy45IDUxMy45IDI4NS41IDI4NS41IDI4
NS41IDc5OS40IDQ4NS4zIDQ4NS4zIDc5OS40IDc3MC43IDcyNy45IDc0Mi4zIDc4NSA2OTkuNCA2
NzAuOCA4MDYuNSA3NzAuNyAzNzEgNTI4LjEgNzk5LjIgNjQyLjMgOTQyIDc3MC43IDc5OS40IDY5
OS40IDc5OS40IDc1Ni41IDU3MSA3NDIuMyA3NzAuNyA3NzAuNyAxMDU2LjIgNzcwLjcgNzcwLjcg
NjI4LjEgMjg1LjUgNTEzLjkgMjg1LjUgNTEzLjkgMjg1LjUgMjg1LjUgNTEzLjkgNTcxIDQ1Ni44
IDU3MSA0NTcuMiAzMTQgNTEzLjkgNTcxIDI4NS41IDMxNCA1NDIuNCAyODUuNSA4NTYuNSA1NzEg
NTEzLjkgNTcxIDU0Mi40IDQwMiA0MDUuNCAzOTkuNyA1NzEgNTQyLjQgNzQyLjMgNTQyLjQgNTQy
LjQgNDU2LjggNTEzLjkgMTAyNy44IDUxMy45IDUxMy45IDUxMy45XQplbmRvYmoKMTgyIDAgb2Jq
Cls2MTEuMSA2MTEuMSA2MTEuMSA2MTEuMSA2MTEuMSA2MTEuMSA2MTEuMSA2MTEuMV0KZW5kb2Jq
CjE4MyAwIG9iagpbMzM5LjMgODkyLjkgNTg1LjMgODkyLjkgNTg1LjMgNjEwLjEgODU5LjEgODYz
LjIgODE5LjQgOTM0LjEgODM4LjcgNzI0LjUgODg5LjQgOTM1LjYgNTA2LjMgNjMyIDk1OS45IDc4
My43IDEwODkuNCA5MDQuOSA4NjguOSA3MjcuMyA4OTkuNyA4NjAuNiA3MDEuNSA2NzQuOCA3Nzgu
MiA2NzQuNiAxMDc0LjQgOTM2LjkgNjcxLjUgNzc4LjQgNDYyLjMgNDYyLjMgNDYyLjMgMTEzOC45
IDExMzguOSA0NzguMiA2MTkuNyA1MDIuNCA1MTAuNSA1OTQuNyA1NDIgNTU3LjEgNTU3LjMgNjY4
LjggNDA0LjIgNDcyLjcgNjA3LjMgMzYxLjMgMTAxMy43IDcwNi4yIDU2My45IDU4OC45IDUyMy42
IDUzMC40XQplbmRvYmoKMTg0IDAgb2JqCls1NjkuNSA1NjkuNSA1NjkuNSA1NjkuNSA1NjkuNSA1
NjkuNSA1NjkuNSA1NjkuNV0KZW5kb2JqCjE4NSAwIG9iagpbNTgzLjMgNTU1LjYgNTU1LjYgODMz
LjMgODMzLjMgMjc3LjggMzA1LjYgNTAwIDUwMCA1MDAgNTAwIDUwMCA3NTAgNDQ0LjQgNTAwIDcy
Mi4yIDc3Ny44IDUwMCA5MDIuOCAxMDEzLjkgNzc3LjggMjc3LjggMjc3LjggNTAwIDgzMy4zIDUw
MCA4MzMuMyA3NzcuOCAyNzcuOCAzODguOSAzODguOSA1MDAgNzc3LjggMjc3LjggMzMzLjMgMjc3
LjggNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCAyNzcuOCAyNzcu
OCAyNzcuOCA3NzcuOCA0NzIuMiA0NzIuMiA3NzcuOCA3NTAgNzA4LjMgNzIyLjIgNzYzLjkgNjgw
LjYgNjUyLjggNzg0LjcgNzUwIDM2MS4xIDUxMy45IDc3Ny44IDYyNSA5MTYuNyA3NTAgNzc3Ljgg
NjgwLjYgNzc3LjggNzM2LjEgNTU1LjYgNzIyLjIgNzUwIDc1MCAxMDI3LjggNzUwIDc1MCA2MTEu
MSAyNzcuOCA1MDAgMjc3LjggNTAwIDI3Ny44IDI3Ny44IDUwMCA1NTUuNiA0NDQuNCA1NTUuNiA0
NDQuNCAzMDUuNiA1MDAgNTU1LjYgMjc3LjggMzA1LjYgNTI3LjggMjc3LjggODMzLjMgNTU1LjYg
NTAwIDU1NS42IDUyNy44IDM5MS43IDM5NC40IDM4OC45IDU1NS42IDUyNy44IDcyMi4yIDUyNy44
IDUyNy44IDQ0NC40IDUwMF0KZW5kb2JqCjE4NiAwIG9iagpbMzc1IDMxMi41IDU2Mi41IDU2Mi41
IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDU2Mi41IDMx
Mi41IDMxMi41IDM0Mi42IDg3NSA1MzEuMiA1MzEuMiA4NzUgODQ5LjUgNzk5LjggODEyLjUgODYy
LjMgNzM4LjQgNzA3LjIgODg0LjMgODc5LjYgNDE5IDU4MSA4ODAuOCA2NzUuOSAxMDY3LjEgODc5
LjYgODQ0LjkgNzY4LjUgODQ0LjkgODM5LjEgNjI1IDc4Mi40IDg2NC42IDg0OS41IDExNjIgODQ5
LjUgODQ5LjUgNjg3LjUgMzEyLjUgNTgxIDMxMi41IDU2Mi41IDMxMi41IDMxMi41IDU0Ni45IDYy
NSA1MDAgNjI1IDUxMy4zIDM0My43IDU2Mi41IDYyNSAzMTIuNSAzNDMuNyA1OTMuNyAzMTIuNSA5
MzcuNSA2MjUgNTYyLjUgNjI1IDU5My43IDQ1OS41IDQ0My44IDQzNy41IDYyNSA1OTMuN10KZW5k
b2JqCjE4NyAwIG9iaiA8PAovTGVuZ3RoMSAxMzMxCi9MZW5ndGgyIDc5MDYKL0xlbmd0aDMgMAov
TGVuZ3RoIDg2OTMgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjarZR1XJTd
toDpbkkRGLoZurtBGqQFBhhgJIYYWpHulG6QVEBCpLu7kVAapJEuiTvfd+759J7z7/3N/PE+e6+1
17PXfvfLSKulyyljDbUEK0KdYJw8XDyiADl1WUMebgAPFze3LBYjo5wrGASDQJ3kQTCwKIBHRIQX
oAi2hD/A/6IC/KLcgliMADmos7crxNYOBmCRY/0rSAgg4wh2hViBnADqIJgd2BG+hhXIAaALtYKA
Yd5cABkHB4DOXxluAB2wG9jVA2zNhcXDA7CGWMEAlmBbiBMW8C8nFScbKEDoX8PW7s7/nvIAu7rB
pQAsf2uyAuCS1lAnB2+ANdgGC6gBhVcDw13+P7T+c3FFdwcHDZDjX8v/3an/mgc5Qhy8/zcC6ujs
DgO7AtSh1mBXp/8MNQD/S04W6vBfZVRgIAeIlYyTrQMYwP2vIYibIsQLbK0FgVnZAWxADm7gv8fB
Ttb/qQBv3N8CQANtbUMdI/b/PdO/J7VAECeYnrfzP8v+Ff038/xmeHdcIV4AE254e3nggfDfv59e
/kcxBScrqDXEyRbAKyAIALm6gryx4G8PnAQAvjwAiJM12AsA9oIbA7mcoDB4CgDekjcAG6gr1l8H
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
FLMEw3bTn6abJqx82cso+B/0WPymCmVuZHN0cmVhbQplbmRvYmoKMTg4IDAgb2JqIDw8Ci9UeXBl
IC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL1dRUVhSWStDTUJYMTAKL0ZsYWdzIDQKL0ZvbnRC
Qm94IFstMzAxIC0yNTAgMTE2NCA5NDZdCi9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjg2Ci9EZXNj
ZW50IC0xOTQKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDExNAovWEhlaWdodCA0NDQKL0NoYXJTZXQg
KC9BL0MvRC9FL0gvTC9OL1AvUi9TL1QvVy9hL2IvYy9kL2UvZW5kYXNoL2YvaC9oeXBoZW4vaS9r
L2wvbS9uL28vb25lL3AvcGVyaW9kL3Ivcy90L3RocmVlL3R3by91L3Yvdy94L3kpCi9Gb250Rmls
ZSAxODcgMCBSCj4+IGVuZG9iagoxODkgMCBvYmogPDwKL0xlbmd0aDEgMTMxMwovTGVuZ3RoMiA2
NjgxCi9MZW5ndGgzIDAKL0xlbmd0aCA3NDYwICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+
CnN0cmVhbQp42q2UZVzU67bHRUJAuhGQAWkkhgalu0O6a4AhZphhKCnp7hSQEJCQRlI6lW5EulPp
kLyz97ln6z3n7f3Mm/mu/D3rWc+fkU7jFYekNdQSJAeFIDiAnEARgLSqlD6QBwDk5MZmZJSGgywQ
YChExgIBEgEAhYWBAElXWwAPNwAoIMLLJ8LPh80IkIY6e8LBtnYIAIs0619BggBJJxAcbGUBAaha
IOxATsgaVhaOgFdQKzAI4ckJkHR0BGj9leEC0AK5gOBuIGtObCAQYA22QgAsQbZgCDbXX4oUITZQ
gOC/zNauzv92uYHgLkhRABakSFYAUqI1FOLoCbAG2WBzqUGRvUBIJf8fov6zuJyro6OahdNf5f+e
0n/5LZzAjp7/GwF1cnZFgOAAVag1CA75z1A90L/ESUEd/6uNIsLCEWwlCbF1BAG4/2UCu8iBPUDW
GmCElR3AxsLRBfS3HQSx/k8JyLH9LYBLR8NAVkmD/X/v82+nhgUYgtD2dP6n7F/RfzPwNyOnAwd7
AIy4Obm5gchA5O/f/0z+o5ksxApqDYYgF4JfAGABh1t4YiM3A0n8AC8gAAyxBnkAQB5IxVycECgC
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
E2208A/J53eq+AfX+ekftPA4Lnrvfki+En4TClw2m52zZHjba/punDQ++XM86zAOrt3MzvuHD7U3
HNzha7x2rs1HoOatSC/cadxkvb6kUbHNSpL1Q2F3jHAU61BxZaJWxyMwezlsWp4gP/ToDUddLwg1
hXbMXl3AVAUz9Yojfs8ziftCinyisnfuHoTvLAF3gF8JD4Yy3F2Xl4lvt2ijYL97h12RWvkkLv8m
WJAGsTnl+4W6wb68RiDmG/3DrkyFapxrOrLHRafkoybUIIv9PNCxJopWMEcydeW8mQ/3M4pHq0+j
O6Ykk3UgvGTnOunCePOy5z8KIvGuF1R+3eZsHLfX07SpKVq0keNnjeqfZgttFaCWW+gocaA5x+TB
uOZ0GPuuFwrTgg7x32BmcEkO8Chr7jdUaJ66KhQPatF3y80gYq7ye5gzueUGZCRcjsfpllgVTCQu
nrutnvei0z0QMaiNLCJSKARfTCiqVAIleMTod1h9iY6/WDJ/7CEWCuOcpe5nq8OUSmm8QGOg6Klb
jHe1UJEYtc9vYsTQhbApSvhTGJYZXCTIzoA00msfcSl/7F9rvMZybBR/h7gZuUMHDu1d29JTi+6m
VJabNrfk8QhB8Xtzf5l77jWcYnFTBSrLy9g+cg483eb6nrv6WiBvYYwu8VJ9uGX0vBghm1tVY367
aNrrlcyqupbH96gDxR3DcNOKLMurvd8cE1tPLnxdfX0TPzJSIfVi+DSEPWQKTS0eFl4/FJrWpmEm
eALvuKuzchIl8FfNCsczHdy1aob3E2AWlpkwSZY30QgQJxIzwzivR6sX9kfic/2B9ggzmf8BYGin
UgplbmRzdHJlYW0KZW5kb2JqCjE5MCAwIG9iaiA8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0Zv
bnROYW1lIC9VUFlFSlArQ01CWDEyCi9GbGFncyA0Ci9Gb250QkJveCBbLTUzIC0yNTEgMTEzOSA3
NTBdCi9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjg2Ci9EZXNjZW50IC0xOTQKL0l0YWxpY0FuZ2xl
IDAKL1N0ZW1WIDEwOQovWEhlaWdodCA0NDQKL0NoYXJTZXQgKC9BL0IvQy9EL0UvSS9NL08vUi9T
L1QvVy9hL2IvYy9jb2xvbi9kL2UvZi9maXZlL2ZvdXIvZy9oeXBoZW4vaS9rL2wvbi9vL29uZS9w
L3Ivcy9zZXZlbi9zaXgvdC90aHJlZS90d28vdS92KQovRm9udEZpbGUgMTg5IDAgUgo+PiBlbmRv
YmoKMTkxIDAgb2JqIDw8Ci9MZW5ndGgxIDEwNjMKL0xlbmd0aDIgNDE2NAovTGVuZ3RoMyAwCi9M
ZW5ndGggNDg0NyAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqtU3VcVGu7
JaRBaQVENt0TpHSDNAhIIwwMMDDMEDOUNEgI0iEtXYoCEkOroBISAiMHBJVGRQSk647n3O947vn+
vb/9z17rXc961n7eZ/Nzm5iJq7mgYXBtNAojDgVB5QENQ3UrOQAKglDz82v4wp0wCDRK0wkDlweg
cnJQQA3rBkhAAKiMvKSMvIQ0NT+ggfYO8kW4uWMAIQ3hXyJZQM0L7otwdkIBhk4Yd7gXwcPZCQmY
oZ0RcEwQCFBDIoGbvyr8gJtwP7ivP9wFRA2FAi4IZwwAg7shUNTgX4F0Ua5oQPYv2gXr/Z8jf7iv
HyEUIEQIKQwQIrqgUcggwAXuSg02QhN6wQlJ/j9C/dtcG4tEGjl5/bL/NaT/OnbyQiCD/leA9vLG
YuC+gCHaBe6L+rfUEv5XNnU08r+66GKckAhnNZQbEg5A/qIQftqIQLiLCQLj7A64OiH94H/ycJTL
vyMQpvZnALCN+U0LPRPRv27zzzMTJwQKYx7k/bfrL/GfGPobE2bjiwgEbCEgCARKEBKe/7zZ/6uX
FsoZ7YJAEdZBWgZw8vV1CqIm7AUBSQN3oAAC5QIPBOCBhMBgEAqNIZQAhImEAq5oX+pflykjDYDV
flF/IlkIANb+G12XAsDmfyPC3YGdfqPrABj2G8kBYOe/EZSQFAz/G0pLAmBXhP8/CAkCgcb6/qOA
IHH7BySEQvwDEnoh/4ZShF5o1G83KRkA7E3YKbTL7wooIfk/7KEEP7/f7X8huD8c9ZshyP0I8/5d
QPDE/D4mfA7G3Rf+jy8gzAkTgP6dgZAwGO77F/Hfu6Cujg68Iy59HRCXIFRCoXLSgKw0JPT/CJ2x
vr5wFObPv4ywUf/BrgjC/sHhgXBn6j/waGeFGI+cltiaMK2ysVoyEWJ1t9ZUo6beiS6a6Ok0YmTl
oL6PyHyj1VFdHtPFFbIVroATDr97nSGmb7U3I31SH0ydrfg7ruQF4zistvMMg5a9efajv17qaJn8
+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
N0vk/TZfco23RqWNX12pak6tPBIX17CVxiPfdsQYG+BIJryHUBIdeZHH2EA78v241rioJsog7OzU
TWpOaeKVll8GHyUiN0ImSX1GNJeRsjCBtfISPoyjFQiVby985K/x1KecmieNE/qKASQVa0ZM0Y4i
vpDZJifg5JXwwCUc9cGk6bVCb8HI4XPsFlfI+FdXCkd8vGHgAesVg2SLnhdPiSXDFKx5Te3wWPg9
nFvMonFjGHG6X8MwLAHHMUlBVyTImxy9UDkwHW2ixBj5mPHkGbepIh5enX0cY+JrbfgCcejDHgeo
vrmkGJzR0O7OPxSJ52SkHeJ38uxOLFtqjnavrGkYytmerkf+cHdUyrgJ1cRfDUg1r8l4JF+2N7ML
J9vaOmfYIKX25FFuX19h+qZ8Zz7/1pmA5lbexQmdx6LNOgzdpibF7srmLOEFte/aTNg/vdaYzx5l
DrBc160TTumiDG5k9YdqucT7hKRw3i3mR6iFv+x3c1fMC2g4q6nfNHSIhDJOXSqUStG9LVY09WIg
/65HSLr2Wjc1SVUBF1Hqp/MWVu7KZzbmOKOgjfclDpu8jsfM+/fjBzrCgtz+B3r5aAUKZW5kc3Ry
ZWFtCmVuZG9iagoxOTIgMCBvYmogPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAv
WlRSVUpQK0NNQlg5Ci9GbGFncyA0Ci9Gb250QkJveCBbLTU4IC0yNTAgMTE5NSA3NTBdCi9Bc2Nl
bnQgNjk0Ci9DYXBIZWlnaHQgNjg2Ci9EZXNjZW50IC0xOTQKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1W
IDExNwovWEhlaWdodCA0NDQKL0NoYXJTZXQgKC9BL0YvVC9hL2IvYy9lL2ZpdmUvZm91ci9nL2kv
bC9vbmUvcGVyaW9kL3Ivcy9zZXZlbi9zaXgvdC90aHJlZS90d28vemVybykKL0ZvbnRGaWxlIDE5
MSAwIFIKPj4gZW5kb2JqCjE5MyAwIG9iaiA8PAovTGVuZ3RoMSA3NDkKL0xlbmd0aDIgMTA2OQov
TGVuZ3RoMyAwCi9MZW5ndGggMTU5MyAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJl
YW0KeNqtkmtQE1cUxy3iVINtRWgl9cGlGCViwm4kgYTyCAgSIRV5KCIoIXsDK8kus9kwwfCw1EeF
llKtwchYEFREqDr1AbQgllpCrbaAoqTKq8BYK/igigJSu6BOp/Rr536555z/Ped3//dynMIieFKM
TIBBJEHzUD4qAQFyuQxFALNHEBaHE0BBBY2TxEoFDSUAFYtFYLVODQQrAOIhEa6QCD1YHBBApqRR
eGISDVwCuBMiDyDVQApXKgggV9BJUMP0UCrUIIJU4pBO4wOpWg3CJ05oQTjUQioVYnwWigIMV9Ig
ASbiBMttgklGqEjg8SKN6VJelVIhpWWggMskJhcwkBhJqNMABlUstw9IZhpkWP4PrKnNg3Rq9QcK
zUT7Saf+U1docHXaSwWpSdHRkAJyEoMUMVW6Hr6Ak0MM12mmVmW0Qo0rpUSiGgIe6s5H3F/kcW0Q
rodYGE4rk4BKodbCyTwksKkkjH+THG6ykLUhodGuL592shimwAk6Mi0FAuQf9WSM/hMzJlG4HmxE
+AiCMkJmvdrFTRkWSChJDCcSgUAoAgqKUqSxmE/EREJgQAFOYFAPoJ4hduMTJM0cAYwzGUBFUqyJ
d0VREXCjJ3Ks/17C35/UG3grBIAnEDJNEXdP4CFEMv4lVOooChL05EdhrHgVq3DGPQj1UMmyXCeV
Xtu3FJzbWZ4ZWNp8fAZXu8BUtv3y+R1nTF78u51ec69RVb9EwkVDtjtst+AVc4yDIV+5YSphN/uc
NN1siHDb0W5rfsOee+hAxOv3lXdjN1k1FTU2vKU5uPu2xbEvpcr1/q/Oj7tSz884GXoH9ShhD+ZY
l9+4Pv5nZnLWlW6LzX7Mud/Iiiv6NnQfXPd7V/5PowOryFLScqRpXuyBx3Z/WdgNHa3Jt94wiXOL
5NPbTN7PZiFcvarnCgstTHa0RH8pXh0hmblAdG1dsQlMe9fbyRTtU1MdIr83s7eFK+51Ms1ulWVn
GIPXy6KG5x8/NFdZPl/tveoI+zV4qiGmXuNDfLer79Ta7LnJp5oF3l+gKVX7OOHxI+OcocWfWj+K
GxvrfPI8l11/X2lwmuZwwmq9q2ehb6qL613uZYQ94+rHZqcNiqS9t2mpb3CnjV9uo+Zn3570mqdy
EC1u22Z//djHzhYB645kRFNQvFwe4/p1tXlPbKB+mnjDReL9npIHf1yszy0UbAoK2NgZXxt5w7Wp
8uyF0pV2lbus48zVQUGli6tnku29/vOcfOwWeL09RxrbFwmS8izfterzB5Lq0ucKR0cWVkhEB1uf
efX/YowyVw2WiRZmzuj/aH5yHn8gcpnB89708yGV8WnNnpWnzT++s7QAi0znrS1IrigPKd+pSXso
nrXvuPjUA3R6cXrdI2n1D6oiKh+cdAnJeryM28jZfKnyIT0nP2ysJJ5PbfCtrW8gKKLvxIghVVC7
ZrPQKzbxr1afsvDDRwyfZd1/eMN94e7NLIlNT3uvmJ0SuNWY+Xz7cPsqnY1tYPXljRbi9nFTx4/d
uLj3o7rDtjpn7+ivlvjUs09e+O2p31qewFYVaUDUG1xzXusZ5WA1JZpKew5m39fkr0h0sTiY5Xbf
yx45EOaalNydQTTn6PjpUuM6t8y+dr8zIic69GmJhIhYIjunXjbNqsP66Z9Gh77H1IcHrwZ7nC3O
w3xvHQqLGT406t3VMqrbZndpMOfKzW9XyFXy5xsj9sXPU6VWVM2ve7M/OfTingtwadh76QNJ2d0N
JTI4tGd3a9fW7Kyoq7uUrVXWjiZzGzWLJfHofpvvEt/y7N7+IYffM4u/d4xwyopetrRjJN/5lrY5
WLVp0A85dvQCJVi9S7JJtKTkfBGyJSEn5ha5uoDjafXNE//CwT15dYtbyUsJVsFNeeaem4J+rw81
5drpny8yxG2vQWYHlHxZW6YNeIvrauRxyhvXZN3pCsjx/LzSnu21JDP29EmQsPfuWM7WJ2OFN1Of
LJq942zOJ8pOunlcVJhVOEyELw8K3uxeETzadqNx1Z0DKx/MmelYZrNyeVR0J2fbNuOJM8a2Ax0t
DTEDfuhn19Kl4xmXyha0/fCTVuk4lDGcyKt9/3llfLyfj1gvgZb0qJaM28Xzfnvd0yZ7598yxP1X
CmVuZHN0cmVhbQplbmRvYmoKMTk0IDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9u
dE5hbWUgL0lLUUtMWCtDTU1JMTAKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMzIgLTI1MCAxMDQ4IDc1
MF0KL0FzY2VudCA2OTQKL0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovSXRhbGljQW5nbGUg
LTE0Ci9TdGVtViA3MgovWEhlaWdodCA0MzEKL0NoYXJTZXQgKC90KQovRm9udEZpbGUgMTkzIDAg
Ugo+PiBlbmRvYmoKMTk1IDAgb2JqIDw8Ci9MZW5ndGgxIDc3NwovTGVuZ3RoMiAxNDM1Ci9MZW5n
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
phu8ozT9+D1bDosU4LnEOoDadvmNBH0IbvTKr13WvCtuXvnV1f8KG7qzckWpwrCpxFYLY3VysMTs
9NR+rm1pZjCRuavbCYLOHzZx30AbLTIQDFzHfV15432iQNdxvej0Qwe5/QbooGhN8hO3Vu3sgMLz
N4gGEceXdnixB/uPqbqH7H4ecIkgJn8SqkstzvYb7zBaxbRiPVLp0o7jqNYv0sDid5o0q7ktKNiU
bA2TvLMcs07FoRy1agxjxef6HwzODBBwYL2CsMhnJonhR7wpUf0PlITN2AplbmRzdHJlYW0KZW5k
b2JqCjE5NiAwIG9iaiA8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9BSENXT1Ir
Q01NSTcKL0ZsYWdzIDQKL0ZvbnRCQm94IFswIC0yNTAgMTE3MSA3NTBdCi9Bc2NlbnQgNjk0Ci9D
YXBIZWlnaHQgNjgzCi9EZXNjZW50IC0xOTQKL0l0YWxpY0FuZ2xlIC0xNAovU3RlbVYgODEKL1hI
ZWlnaHQgNDMxCi9DaGFyU2V0ICgvY29tbWEvZC9yKQovRm9udEZpbGUgMTk1IDAgUgo+PiBlbmRv
YmoKMTk3IDAgb2JqIDw8Ci9MZW5ndGgxIDE5NTgKL0xlbmd0aDIgMTQ2OTEKL0xlbmd0aDMgMAov
TGVuZ3RoIDE1NzQ1ICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjarZtjdJ7d
1u9js7Hv2DYa27Zt27Zt27Yb22gaN7aapNHJs/d5d7vf8/WMZGTcv7km/mvOda17XB9CSiivRCtg
bGdoImpn60zLSMfIBRCSUWRkADDSMTAIwpCSCjmaGDhb2NkKGzibcAEYOTmZAKImhp8fPn+5WFm4
WJlgSAFCdvYejhZm5s4ACiHKf5zYAQI2Jo4WRga2ABkDZ3MTm88cRgbWACU7IwsTZw86gIC1NUDx
nwgngKKJk4mjq4kxHQwjI8DYwsgZYGhiZmELQ/+PJAlbUzsA+7/Nxi72/7PkauLo9CkKQPEvmZSA
T5HGdrbWHgBjE1MYelm7z2omn1r+f8j638lFXaytZQ1s/kn/T6P+n2UDGwtrj//rYGdj7+Js4giQ
sTM2cbT9365qJv/WJmNibOFi879XJZwNrC2MBGzNrE0ADP82WTiJWribGMtbOBuZA0wNrJ1M/mU3
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
MDkgOTY5XQovQXNjZW50IDY5NAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk0Ci9JdGFsaWNB
bmdsZSAwCi9TdGVtViA2OQovWEhlaWdodCA0MzEKL0NoYXJTZXQgKC9BL0IvQy9EL0UvRi9HL0gv
SS9KL0svTC9NL04vTy9QL1EvUi9TL1QvVS9WL1cvWC9ZL1ovYS9iL2JyYWNrZXRsZWZ0L2JyYWNr
ZXRyaWdodC9jL2NvbG9uL2NvbW1hL2QvZS9laWdodC9lbmRhc2gvZi9mZi9mZmkvZmkvZml2ZS9m
bC9mb3VyL2cvaC9oeXBoZW4vaS9qL2svbC9tL24vbmluZS9vL29uZS9wL3BhcmVubGVmdC9wYXJl
bnJpZ2h0L3BlcmNlbnQvcGVyaW9kL3EvcXVvdGVyaWdodC9yL3Mvc2V2ZW4vc2l4L3NsYXNoL3Qv
dGhyZWUvdHdvL3Uvdi93L3gveS96L3plcm8pCi9Gb250RmlsZSAxOTcgMCBSCj4+IGVuZG9iagox
OTkgMCBvYmogPDwKL0xlbmd0aDEgODU1Ci9MZW5ndGgyIDIyNzYKL0xlbmd0aDMgMAovTGVuZ3Ro
IDI4NTcgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjarVJ5PJSLGiZEowjV
lCUfIuswtix1ZI3EjC1rmOUbhlmYxb5GycEpUcRkXyKhEi2E7GvIWiFyzZFkOfatO9U9y+3+e3/f
P9/zvM/7fs/3vK+0BNJGSR9LRoMmZBJNCQ6D6wCGFtaaABymApGWNqSAKBqeTDJC0UAdAK6tDQf0
6R6AqgoA19RR09ZRUYVIA4Zkn0AK3sOTBsgayn0TnQL0iSAFj0GRAAsUzRMksmZgUATAhozBg7RA
GKBPIADW3zqogDVIBSl+IBYGgcMBLB5DA9CgB54EUf7mx4yEIwOnftBYus+fJT+QQmWZAmRZJuUA
lkUsmUQIBLAgDqJsSWZ9C2Q5+X+Y+nm4CZ1AsEQRv41nZfQ/VRQRTwj8T51M9KHTQApgQcaCFNLP
UnvwhzULEIunE3+umtFQBDxGn+RBAAGVHxSeaoIPALFIPA3jCeBQBCr4nQdJ2J9NsGL7bkHZAul0
0fycwvdtfi8hUXgSzTbQ56+h37TfMfxvzMqGgg8AnFVgKipwlpD1/Pl26adPGZMwZCyexDoHDU0A
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
/hCOiOrAv04KdY6FtwYxCvz2d3obdTH0j/1WE+NEQwjxL/IWSI6dTyu3O7nFXt/Yqre/WcKItNJ0
tNe5wTtMYX1pqOCLedw1vj1tq6L6C+iX9dVPTQGcObROMI5bK0E9WhNmGx7nZdFjyi1XeMPr4lxL
lFSV2nYptWJrj8KG5ZTw5zRhTlpmX7nQQ2WY2JjpXoWeTyLiDosnHD1DrHrtuv0vOV3YInCLu4Wr
DElowEi8BVsvyDfV0loZFJcPv9fINyXI6/QC7US90yloBMK+xf5ekHQlbq1qqSBJNN7GfVNP4GjQ
1QulR2hNuWPTUVOdh7jkquY6zAyQ9Uwr8buCDs9SFQ8fFuy/58HTnHTrge0eyZBsmp11gerx31sh
CYBw14X9QpgI71xxJUTsoeLlaDrHnPkfMyZzV/Bv30JDAuIictRXXE1Pzt94CT7e/eB4n5Lcsdrt
e577nABTKqGpCG/CQCNd7yg3T69EWknFOrUpdEaWRmApt16o5wmOyWOCTZLUxfdpzj+KFHl6KXK3
U3emwWYA2o7I9DiGZrZt2WQTGZ/atm1VYWgPzyoOxyPctqEZ5oe+4FMXVFWpmWrZEfW0/H1rwznD
4rVgiwHdZmwto63dWdIh2y3K9sg0Lx2qIZz4cUdoxp6x5+2C70h1WPvBzbPjnrLZ6bVQcIAr0jDe
xUguA2ZujToOfZc/owKPedEfBScGn45q/iqO3JkkFqwNu/ENPaG1Wk7B+qElX1USFOMQsS1cS6J8
xgGhkzxs4UXnHGdOza2MpnppsqXfPCM1FaplOhBcvvfr9RN9d3TsBsn54kH/BuU+izQKZW5kc3Ry
ZWFtCmVuZG9iagoyMDAgMCBvYmogPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAv
TVBaVktHK0NNUjYKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMjAgLTI1MCAxMTkzIDc1MF0KL0FzY2Vu
dCA2OTQKL0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovSXRhbGljQW5nbGUgMAovU3RlbVYg
ODMKL1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvZWlnaHQvZml2ZS9mb3VyL29uZS9zZXZlbi9zaXgv
dGhyZWUvdHdvKQovRm9udEZpbGUgMTk5IDAgUgo+PiBlbmRvYmoKMjAxIDAgb2JqIDw8Ci9MZW5n
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
9UXuHGBHP8Ha7Lx+iYGZrSg5ia1m7y1qKbfKJss+NnPZh382nmduAunGjE8uy2VdJGWvFSyutpho
CguXoG7tFUCx2WneCnZS0JJTB+VYD6vQtHeFe2CsD42J71J4jCNH9ym3XyGWXOuZ/pTXPhJ8JDZM
2Cu/zmd9g/SNGZkbnEC4e1phyxbegPLGs2laH/c90vXXPW/4KtE+Lxizc0Tg5M1rrPlTdYVH2zjl
0stn1SZMEEG81bmWYtnUnva4/wAr23jECmVuZHN0cmVhbQplbmRvYmoKMjAyIDAgb2JqIDw8Ci9U
eXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL1ZQV1JEUCtDTVI3Ci9GbGFncyA0Ci9Gb250
QkJveCBbLTI3IC0yNTAgMTEyMiA3NTBdCi9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNj
ZW50IC0xOTQKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDc5Ci9YSGVpZ2h0IDQzMQovQ2hhclNldCAo
L2VpZ2h0L2ZpdmUvZm91ci9vbmUvc2V2ZW4vc2l4L3RocmVlL3R3bykKL0ZvbnRGaWxlIDIwMSAw
IFIKPj4gZW5kb2JqCjIwMyAwIG9iaiA8PAovTGVuZ3RoMSAxOTQzCi9MZW5ndGgyIDEzMDY5Ci9M
ZW5ndGgzIDAKL0xlbmd0aCAxNDEyNCAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVh
bQp42q2XVVhc3bKuAwQP7t64u2twdwvuDTTuwSXB3d3dgrsHJ7gGDxLc3eH0v9bZK1n73J6nb/qt
qlH1jaoxx+ymJFVWYxQxszcBStrbuTCyMrHyAcQUVHkBrEwsCJSUYk5AYxeQvZ24sQuQD8DKy8sK
EHG1ALCxAFi5+Nh5+Th5ESgBYvYOHk4gC0sXAI0Y7T9B3AARW6ATyNTYDqBg7GIJtAXnMDW2AajZ
m4KALh5MABEbG4DqPyucAapAZ6CTG9CMCYGVFWAGMnUBmAAtQHYIzP/okbEztwdw/9ts5urwPy43
oJMzWBSABiySFgCWaGZvZ+MBMAOaIzAr2oNrAcFK/n+I+t/JJV1tbBSNbf9JD+7R/+M1tgXZePxf
v72tg6sL0AmgYG8GdLL736GfgP+WpgA0A7na/m+vjIuxDchUxM7CBghg+bcJ5CwJcgeaKYNcTC0B
5sY2zsB/2YF2Zv9bBLht/5LArKMlLiepQP+vaf7LpWwMsnNR93D4T9J/Yv/FrH8Y3BsnkDtAl4WJ
hYUVHAj+/M83/f9VSsLO1N4MZAc+DpxcAGMnJ2MPBPC5ABMnwIsVALIzA7oDgO5gvcxMdvYu4CUA
cEt8AOb2Tgj/DJOLE8As8o/p38QFYBb9Q9wAZrE/xANgFv9DvABmif8QNwuAWfIPsQKYpf4QG4BZ
+g+xA5hl/hAHgFn2D4G1yP0hsBb5PwTWovCHwFoU/xBYi9J/iAesRfkPgbWo/CGwFtU/BNai9ofA
WtT/EFiLxh8Ca9H8Q2Atn/4QuLr2f4gXXF3nD4Ejjf8QWLXJHwIrM3EyNrUGutgAzV3+2Nn/Y//3
o/MfB7iQ6X+IE5zM1N4G/AD+j4WD4x+Lre2fgqwsYDVmf5ANLMcMBHQCOoOc/woCCwH+yQveKvC/
6rKygRWBz7ixs+Vfi8CdNP+D4BTmfyHHPwj6KwOY/yAn+z/o9lfNf/z2rk5/pQeHWPyF4IR/inOA
Z2Pp4WAJtPsrAmz7qyALeBdWfyF449Z/Ibh3Nn8huLG2f+0F3LQ/mTnBS+1AdsC//ODN2v8RA15s
/19u8GYc/rjByRyMnYB2/zVjDtb/a/3vCbODazkAnUyBdn+Fcv3LBrL/a46s4O44/lkFVuDoag++
5/57bP9M4a+WsoI79GfqnP8Q0O2vFnKCw53Bl85/CoPFONv819BZwVr+FOAEb8LF0gn41xzBm3X5
bP/XAnAO178Q3He3vxAs/PNfhwS82v0vBKf3+AvBbfX8Iw6cyRPo9O9S/+/dKypq7+7FCG4MIxtY
E/g0cYEvFxaf/wo0dXUCD8DlX6818On+HzYHge97INAdaIqwtGBvyh9oldIUXOYrUTBVDk0HIWrR
HKtY3zPbifh1MQ7CpviHnCPdep3WY0U6BvIu9C7J52cC5/AOb5VxybMAx9jU+dddN6PddM9WAq3L
dAWPHQeyu69HKO1Nc9fHnBBKM+ujZYnahQNZ54NHeco04up7sKuk777rujV8zwjk4taSTLfRCAmq
o2InVUVNdSwL5QhZ+4yaGP9+bfKrr1UIXAv9yoV9hyv6YwFcbsKr3h1WDJppBwm76hYdpurex+PS
whBUlNq3/uFq4QyAhZoTYBd6GU71h8zXbIzg6ixPfAnD6XOcCYlQBbczhtYOLdIXSi799eLfhuz0
hpaFsotFLOfxBfbfmjwmtdpeZneIXmYxW/GNNLB+0p4C+imhXxThOAWyuHQxe6A6bGdVz8nCI7FJ
cBgpVcYJLcYRCUjX59mg3ttXP9Six1nEEy0yaJs9rP3amLG0dO2ENRzGZS0TuUQeGI99jwDPpJFj
S8SPnNGMw66ts3FolPAQzO2ZDIN4QZfXSDmeUyLyCk00L8vWNa5RarlmipYu5nDPxjB6HJrRW0I+
Koz1LFuGsO98iLmOwcNQNokU9QQ8rzh5STdr/6jgTMxEmI4TRhZzLYJNjuDQxzsSkOwGSVdPoJep
lX4ALwcfClD5Jsn93REpYX8NzUvRSyowoZW4mMV+5WPxT57yWpmnOvx3lXRpmaTi+ts4fqSLTeX1
PKDhL8ZCxY3HmlLWmhy4xKPn/K8rn849Dif42ZXseeR+ZTlUdWozRE+Sckeolzau3I3Gf9m0KsLZ
lBaLTeBt3BvQhYq4apf5yB8qS9hrmB3Tij66xZr2LYtB6BM3tQNBAYSqjXmfsVcS5sIFCVoCIlHK
d3fsYV2Cl4wUPjwC9jF+XlysSkmq4Lghkbo56VLhC/SoDObMcx9Y+FcPa/JSLhGvu8ZaRos7cbVh
ZkPKu3pYiIXbuetVE4EP1AvFT8dDrHQC0/Bsz96oQYQCqhTN+ofhZhF+HDeORDX7YiOYW5qmA6i4
un1eK64J33u1SRfXvrGnMrBbXzq11V1HW5K6QL3mqId4UXBhlvqauStQJ5+KeDw9GJNPd22fhS18
aaBuU0LPYw3/dBGxsxbLg0WFHYQUKdGAtmgYRx+NSiPkL7ZO5iVwMxz2pondz/LaEDzTMJvX1FJs
d83E1o7ouEho8gTB4RMWpClnb7dPwTrViFEUBIVNQVRhYnKWP6ZdK/pS+olGz847nwd1obeWrYBj
cdPaCoeGBJvtgmDyqWMpCQcUhIh5ejTM6EqGPFJcN8ImYuF1ykMp6dfvne+zEIKKJ2Zgc9v0gZCw
hrIpv+k2umEkgs+MQvXCdHDv2yz8W687XaOi1VQZEdlAABJ63IU7PbaNsYSJZ9T9t4VPkSzY+IlW
5wQLkBBb3KoeX4mj8d6RGqWeG7ZCDdWW9o5hLZ4uf34k8EB9Hj3WWXLSdY6J8P0UeWYa+UoWgI8v
nSW1F0uxq04iQ/iuCnXwUE1JsXUf7vbDFR1/79C7fUlayVooR/uk66qyVDJc5O48h/3wHo3PHSL+
b1bsmmHEDM2g95LAsOkfud7N0UmPw20T+bulNaQkQ6KtsaLzaVIp7rvF+oe8iiogm4UREdJNiy90
OuF+G43tpYStCxgASopZ+E3WxHzUHTXj/N5G3bluGKDh6rQuVmSmo6Wc+0Wm2UjXr/QPDBdfEDYf
zZT9ey6luRZq/PuUWBn30vCicWwOLFUYMe0mTr/FQnsKXMKeuoEEuU/TPfxXyI39yQYVGtg1B8i1
T+JUC1JoUnbvZpl1ocW6W2hOPjUnSQ2K/aQpHYOpX0SNPfeeRXBAreRfE0E3s/pwCGLyPJ/bZapZ
qsZSIP1+u/Ve4Fkh0XhJMj/wl9VYb8rW49spa4xxS+SBQilHG90ATXboKh0lVhWELAij0y/bl4+r
rPLEMXzTQRVSdBC6P2y/dBnjBvbg/GhRVZkVm7KA6AhV4VU/CF8pjnyvHgWbnZER5e7aVPSnbqsr
ck3W2F6fcRUvL0SORCVAnDHyjmsd8b0Yfv6B1lPxVVYEpyWj7iNtrAOi84O6L25mDfd4SfJlSXVQ
dzAZgfJwfbmsOL3YYYFuP9lk/lJMpPMNOsRZiaiWPvO72/tZ/H4k1+t9vtIf/CHjgxukAndnP0dP
Fr/DD+FsfcQPCKh4TOGlsMMlV6dECWP4btmq41eyN8+QNNSFdnsGdH+dEuyGeDng9nx+sGN9sZfE
oiuE3zPoQ9x0CouheCoIHJSR+ZBcAicz7Ywp429E7b2BWgavFybu2Sl5ine7cgx1229vj5ZYhvCl
TX1Bl3LsmQ0SsHQFE94QYNFF5YsQ5asgFYJkkogEf96lJaM0lt+/UaAzhJfybFLG8+0EwlQ4h8EM
6ccELFcEQfOpRL+Fjbce4jgUzjitS3U3AXwum2Lo/B29v0sjkvsHmKxL6I18VNtzx1cv8dDxmGBD
savbV7hGRI1GuOZ8pfjfHfLVDLoNcBdXP8tR3pe8yabPdXOvLdi1cM23UIp9FnI1VjOFqYPNo1Ro
hdm4lDvOvyWWrQJNjXysgadmJsYukBWgCZeV1/rsVvRTnuiUBNnQ3d3Rj3cAXXMG0ZmMw0OwupEg
vhQjBtOqW5R+EQI+EI3S715tkTyXVWvuQTlyej0Go8y409dJKC6eVrHUiKbpJNLtJpKIprgiu6p+
rnFqKqjL72VFRnvecMBEMee1qYtq9PSA6SsHc0RinclGldwNphLT+g7PHB/DfIBi0lkBQskXvFaH
U96Ms61q+6V8E7WmX4J7/F8ATCGrEzc1rVrmDOY+3WmIgUO/hqg7I8rn6rNcty0fNKI5DHTNWKit
MS8+jpQivOkYRxw0z0+hTeyrZ5VguvgmkgWD3CU7aE+5O0VHXe9iFosHT7L0hd26uI33nZ3uxwaW
UnU1ZYXMHT0NdDTpGXy5Ss21JnqjqZTyx1T98hHXZ5BqVbsKr+SI5euF9mPLGHt45ytYYN9zt1jl
JcBSu52PWc1+1BU+BGZS2O5+mbikMVqE8xyQ2aFNvtw9KXfziYV3IS5LY1zWiyXfF3KZGLIwGFxE
CfxcHuOtVYN91aM9NhrcMPQDZzhdZ80zo4VftjJ/W/ej34HpcpIALJ/S+Vt16ge+pRqxJQUA1f6F
hKAFQcOXvBCaD1FU9eLatS5zG/wT3d2mdLrvxWShXx0Rx0ttVSzpxRwf5hNG7l4YfXS6/NaWxcca
31tNmnXFd78kXo7L13UGfq9OlNb+kccz7+ackD7TCZnGbRVLavDJnv2Xe+lvlhra0N0mgo8N1CUE
gdhCv3LpwlrvOqRxpA3ljLIRBCh1lSo+l4aIBn2hEvqmSvMTJYKR8jKAZ33RtTt+3xkfsvIiHif6
cvw67g66//juhSiQ0XWxaxB9bHCplGQ3NMmL9VqNer/TwlqPRJyZumuax47IvaRraywY+8ZX9WGz
oaoLmXFVHuv4s0ZnZsmmsOMsTtpqS7R+2DLNkjXxay23EDQLv3Nehdr8kBf/+di0wIFrC+yWnHaO
me/+bx9013xfSc++inD67CRbzp7vMwh9B+lZCQevgnCEUBbJnghoyWvHMnUO69vc39qM05gDoe/e
zlvCfuUI15fXkS4mkmlq8udJJbHmyLK7wSg2CiXxX8kCelCuMLTVUF7dj0cL/A3dy+Tsm4D8mlqG
Mh48QwZWNG7VFxRSTdw7PBEijyPUXx55Sy8Stk5qbE9pl+ZHm3/oq8muogZYYNTIYluvnvSMTKGd
StPfh9x24WOu2mh+XOzelT36isJWSFDhzH4zor/pYnBJRM61aMg0jjfkXCMVaYDhXnTBSvbc4EdF
kLTGIjs5yBCXFiXQLn2hpoeDF+dC9d1Lfr5vx005kq9iR+F2F4FT8HYQBl9bt5wX/kGQHyq4fqhh
5hhS7eMnUintXorpeU2HCM3v1yUzuY9oNYZNs1ckC46ezi0jdZdS/I3crC65IhoSsxBuyaSt1557
VFihhKUyJN2B6TNRWidw7JakOUhw/WM1lPQHvWX0HXSK2IfBRM6hL0eDC9W6OFotL5zSi6cU5W+J
QtlBeDb8BvbgX/dZ3vI58EUr1H07XF0Jai/wyITe6jSIaV6OhTwpcqGfiJQZkGeCUDD6XLhEmbtt
v3b5dXKysYo0lvtBqZHVE+0LRf1EDTM36I2rrBKu0foVO49B57bXTiQoZ6hUGEorKILNp+BPdBE6
QW/zBRLX78Cpd8ujeHXv/uqUhIhCH9kwk22qs+ns+O1l9a3kBbFbFHsQtOnxzvItSz+J3bw3WTYF
5f1eLYW+uFX2aFtwQc3j57oKNnqCZl/JKMZMAvI81hhV6e6IPQbRQUY8H4diUSedqWcensIOLlGP
dvIZomJhR6c5KeGWV3wGI12CtNOdGCxZF+5kTARFPu460NcWqXuk/mNypWHuEN7oD7PXye12ZygI
4fAeubwSPdc+X7pAw96h8By/3m3SMlKJV8ztBgLuIjBecd2DS4gnQ0txlfgt3/f9WHx1tb1m5XrQ
nVibHnsmTMK9SDK+9F9EFmvnszg/YkWp1KcoWMRU6lbKZX1gRKWQpYwZCnid/AWwd8fEVEioV/3l
lwBwC5PUkbItnUjrE7hQKaQi5oFaXrZwtC2U8OahQ53Rxr5bzqh6y67sYe/tfSV2/7b2HbGDjo17
Ybw04+zGrFJa84cDUYz4LbJKBQdj+hjnFEFYd1w275IchPsKDCmhHz8OZD7MC35a4qoe6234tVpn
icXJBz+kO6xSWhKZrZICzP2SCfVFU6YR5XxE4Tv5D8riUc0GPcuoECVdhHslDBDbRl7LaDDC8oSh
DLigSlRMWIdTiZ32Mp3iWS+7npe57XzOC150ZfXK31+7aNPed7QMDo8JYEwheyVbMEaQMrXuZk6r
MCQREn7qKtFwmf/5M29VkVuD46d8cIsiA0EkdGRGjG85NKm7neQX70UlXLf7E5J7+uTp+eZ0+N9M
kU3EongmOG7pqlp77XJpulQYnKtsnokoQ1iv44+3P2Px2sWG+lYN0RqnPIqgvsuHQVZHbsNv3/t9
m1uAhtEPsue2DzHgRA9hL3IdfbJTBJKKN4X+0o2FQZ9gHf3mZb9Q6tmcGDySXXRj7QVicJXAvVor
RTGEbPGa0NFET8I3C6wS8QyRTXtlSH6VEv8+yXBcdry+11f7JbnGEV01WNVbKw6/OE/O7/0DqpPZ
XU7MJoa6lRFilRnM1pObn0gGqz2bFDoEN1sHopjjW5J+wjF1xTKX3Ye7Do+9TMC3ny1sDrz4S13m
y8v7679sv/ZcDPHYTstaGRsqwW6fMEzjl4n0y+H1fvAYYzF8SuaSPgB5DLflsgfU094H1la8CE5L
64c23VIIam2dbVU542dkyjrM0LuW2jMx49jBe9E6SpZ38k1juq+p0T/uCUcSVMjYseE4UC3F/qZL
mDUTh7bv/ryYOkZFSdxs3iM0i/4BmivnE+zaOHP5RelZTwSczRSD9fQptKsHxjN8KBwkebc0Zxmr
N91CJ93oeCj9xHWk+TekvjzfatWI+p916Guq5ozf4yroRCMP7xxoTD9xnKGzcMExUP9m/qC2lY1K
mHsH03w5WY4n6fX7NW2poAxftuLZAOKuH+2zaRfnuMHNV7XlSaL8Add1AZh255hP57tvCaI7k6qt
+W8N7d8FwiQIaV6+9ZvsNAxNvmCql1fSWJFhSoxe2zt4NyFcN1DB3NeOSC2w42RYVM324EVylper
L36ER2hPQvwwPOxY9n4MEdbd6245Mqoi91BXezNX2LdF9+g73y991k4/qBoss3Ci2scKDRL4392A
qgr6k+pMwrv89SkjQZXKsG/7SR+DPAswwihjLnR8C0SXEIByUj29xKACW+v1kNgvSkoNEdi7X7eb
zLL5TEjnYDytRtpgdQ3whivSYq1nJPetljnzBUQ75SA7FrQc1a6kfimVDVv20uvkQsKUqij9kNyY
/4WW2qiVlzeq4VeEHX3dgRX6VdXR1WXTriVyQICuzP17hUE0DsdMWk5i/y3BvTJ5Q83HJexGsXsa
5AVLw2hHYu0bzyjjoR8qbVsmQwwQg0zmFJ1PKl29Od0eRnTZGeWi74wp1MQjxQXacQbmfrURJTUd
MnvLwoKUj2OtcUcLnnTCwu7EudurejnsthyZzm/M9yU1AAEt3C2BAUUvWDVa+KOZwklhwVt26mOl
Co30oekDKovtLp+jRZxTJUranU0YJWFt/YK8NJNapZ2WW48HGzdOWwSVPYGzWW0d+nxwHksdd4jX
7Wl+R/KojQPSXTLy6ttq9PzG467bqF8KbSZM1kb6w0L2WCnrn26mKdsxv6Edxjb95l1yu2+TrGGw
ESr6sGkGdV8DOVNtkJ0GW1Ah2NX2ohXouvk9kHdp0n+HQ7Ylym+lA3RBUeMVGcv8Rl7IxTU1wLeY
AOwRQFAraI8YuhsTVCykPqpfPrTjc4TSEoQg7/C5vtcJoHkde/hE/o74vfYsc6lhXhh9KUjR87p8
XDuCUQrGInGiPgnyYORUPKhX9DoNlTxQfLU9jHOsjyOyhpnxB6gLG89vhF8TqFPT6lwmXWoAhE/E
DMscwS92SRjLOSNWUmhB97zRMWNWrzqomfwA/uORC4euUJFsrv2OfBjZ1Z8JiXb7Cfn203gBNaEd
MmDn7Vx6tlOThEw3x5rb8/wdeeWLN0EWMhbWNQrS8K27jap1nBFKUKDAGjVuCExr2DkKrw8z+m9N
Jc0DhKa818aYLxp2FvTEXZeht3l4Z5JbfihK0QRlfTPCgbThpfWpxxyi/qRGH1z7y7R+OMNCI7Hw
JOw8ui9mk2KF6lezXNzXDbRv7eJZtMSddpsVJYSaZRrNzU9GTriIhBe40i9NjP+qBj2RbIrf7xwB
RVuakJtyRrfoUd1MRS0+1q2yfAqexpUKLTuBfDO7UzuiVxN+Obkqs/nNyZipijiqcKI4NKNAyMHN
8G5pIKtQaa1Ay8cIv9FQNfHj3PQWlHs1h+5rUwvNO+MUp4drAYp7tm76xuzcyeb4ill+vjh9MdWA
lpVH32iWXiPpDCF4fSpPoczsaSSaK2FPOfa15Aem6XFjzMco3O97V1sZB6PD8Q0b53zfwixEV8s2
5uhN4vYRn7/Dx2+3+QrlH7bOsJjddRNw/UyBsjAF/qLY6NWaFcmHIv7eH2hEx9v/Tj3t4v2hsYdd
JyzdAAxp/oUQb5gB3bcCkXuM4ceyAIkmyWemVLrhUVGCmXyJXZOxm89WgjsyhXYiyjPZz6wxPHpw
gibcld71UR01qLwhnNlNpTEfWDSfTnNLlqxcX5TTFi+RQqoHJAXyMFnC6uSOKYHUeV42Cb88i58Q
it5w1NvunLd7evZiuD/5XJKwLSVA1FxrfW0rsX9j7mWs1SNW7LfRiMx6zY6YdJimAr8fds8tlfHI
l3CcbRnX50bGLtglSotXVlXwZC+AcHgfJhRSf6mMhpP9qthvSixN30JJ4MJ+PwKlIVQJOeW9IFKC
GCzY33oyf+KpM1FKsSvS8hJcHYUe0K1RPFXd8nwQOvg+xW0E41id076ypfkti8eBu6Kz+E2LtvLh
iSbh5reF2fecEzUymRUUKuOetG4NZyx8OgzCSVBA1rcftQaogBfJDSzkTRt0bmrOWp+D4pVUrs7x
kqolCtupOsiHcDw3il8Tql0HKbl9wDtGjQ0MY18XZgWdZqa9PDW+G2n6OndUVZxAsUpdk11USgVa
ak5tqZaYGlA9zcw4KmAHYh3pWTxs4nxfnumHfEakULXxb7I7hXz1egYypmiVrAUt06KC4KkkhyGI
KqK5J54BpEVzPM+0AgwPw1u44BnL9psqYz4tNSYqLe730wyBifQOOSg67fqc3dy4cr1IuBkYfnAK
rRdyCm1MNZba9bhsv0+YJYBrCLpUJYdyCCc2hNjIexbUWvHDY/ZI7qo3A/w2dOSF7YCCNhGMdUFU
824Ziwh9Fx91d63YfLNGUjMzIfQSceyw9+ArQdZU4TmwTnC5vN2l7+fk7yDI6BS4aP7LQEQZySYp
q7rHmolpBFtkLeTrrsDXb4KKoh9ZlvOwtETzx7v6xcSg9VEz6r+Aih1rjqg0iBxBXphTAsSHQak+
Ix+O71DxBcMPAGvoxmFtmrdDKS2uJlmkidoUo3zpSWk/Y5YysVKlfTMVOWHWJRZv75C/hqM6Rrgo
6XvGF/9Egha7W0YsJiXHkltIcIMzfb/UDeK3mRgoEN3f4dtdCyvmnXHBxBTmlzaJj80TphfwqnKb
oE+2nV63MZL/1bBENk59OFvinKTtv9KTOtzUbDmiurDIjpRcRjPqxU1lRRRsrRLFniu+qldVhRWs
3M88YvGxSKjRocr0XXjx62FeIdNL1vQPeijzX9tt1NFzuo4V/FHz57M4gmLfp6+K6bE+SOcH02D7
scB+opjPb/tBjDXB2BS2NrpCaByE/DIL3PuIqGm6KfQ1Kd5PVj/ExUQwpgg9S0/qlptFXoVCxXyG
S7rfXK37DOeLIqBFbWbrcD2tPs0gjnNL11b8PCxtH+M1yehW067Tlz8kHZ3yXNQ3EmPSlnfko88n
UER0/ICt30FwBIhRVt2RfNb/sX3M2zy/jp0ouLIrOKpSHPYqQmdHn1L0/Xp+ued2cpAaxrtomVPS
Kl0mFq/1TfYlAwU3MkvqjEBnopfm66POFQRCCrWsOuHq5aQyXTOHLdHY4ym0DfH9kpS7B0VFOa9P
WUXsG11tJrQM2t7E2IOPumWhdwO6CpPcssmJKQcBTY+HlqUzzsbPy5+dyDiuW4SHrDa4NnKsVh7p
96W93g0yJze4qjTVLZ7HDyqEZqyQknVdcScYP/L56rkxzMSvPmM8UmNcldN/V2m9LEjjLJr9lKEG
mZY5J46COFlBCRGVVjnc0J10Jcwb/prKRO+RAwnP11XxWphhqJYLzJE1aNZ/VGrpSmxVXo3Ykqyn
nsMJJ9L9sfXUzr3pk7QLW2wyYIqo6ThuuFOH1l4PP3PnP1oJN+cmkoZz8Q4R5kmIAqXLnujNmecY
//SWDKTcpVT7qNcXiSLE/LsCfWACMbCh4dzKhZNE0HNx8uZp7sPJ0F64vo+EMilh7WkDqz5eCW76
AMOIMhvCTS4VubV+m+Tch8tEqqbFaYNXvZJC2sqvHqPsooV9dt/Y7ry9JMkLSkr89GK4SPcZUW0d
pqH7FrBNvrLr/+ZKVMnBDLndM4LG+2yLFzrDy9to/btkcGuWOQrOv1pGjd9l1kFd8NPegV5xBTWF
yYh4fhI95mqGiZYcyteSUWG2ut5tjPUQc/5QP3xgLqq6oVzbESEc9lndk5cN/CNppjKr/odEt/DL
Sy8E8cQ4jycKTesY+ShFcgGrLhEmE4w2E1yS7tzdFP2DkEAoM6kQuccM/fUl6rxvrPJ3eo27lyLC
OZVbYiH8lpJT8DW0mvpq63jvHR+S0gue0Byh5e8tJKBfmbz4UN8txtBXQx5YJb7118ZMHtWLBrbU
IyPMqWAxihh0942DPsF1SUPDjDlbJ3WhfTZShlkIeZE8ZB3+SCdD/UhioqTGOFiETSwrYFpPHqJq
o0UrRAiFUS0UAQVR4GDm/1GwtTf9GwMO9DAfIHWdPG/vbQNdLOU20dmzhZJYjmaxKW1p+BWCc57U
+GZuhnKrvWeVQesl6QQju2JeptOWQkHrZ1Aq1mOcdd0LDmO2Je7XS+MizoEgEZGgHe6XY3t1Iy7+
7Q1h253RE/VYecZnr4fVd/SN5BBsYfJDwewatzA+ztsFU0UCxWqTupPSV5oRAz7i2Svi4lYcJwSY
AMwQbULsdkpk5Z8YbdVNI+vY7Vg2i7qwdclcU4lf2xFjtHfj+z791l5KMlOAOKuUz7kKEOj43WpN
hchkNMmbuPV0xr1qYzmQqcUj7iK1rn7TFtfLiYgFwt1uOgwKAQhSRWKb/HpEM6tjlHF1Ms/Q0agx
hzE0x+xYSqa3y5NQYIu9nkaDRqGEZfGeJrGWJFAtmplsOmR4d8P8wBlT7eMRWaMb8/5s1e/Gv+L8
wMSI/hoOR7uufKuRnwNKhMs8oKWR9zbSTFH+KtWve0NeZf6Niu1X0g0CAWsYq+KFy6d0/6gjCFpX
ckjph8jFbctgvAF4nUKsHGSadBJ89JuN3zZWolLX8CsWyxCTzu9WQ5oQa7CIoMN7uNkj8C/w2pwb
DVg2Egx3jjeBYQItdbklHGLvVw98N8cqDayt4Jg7Gu1kWyZalKswXk9LN8x50IrOi1lcFy75SU/o
HS+IQxmC8AlUx7Spz0HzsMVbS3A6DY6TKpQ4Adx3crWtLjsrYs2qqBYZlPZr9TUIG2ybh8p5TcLD
TdYGR5lu7qQqu0jrksGiCGJ4YtWZqVP727QjvRcWGWp1x90hk1HKdxmux0dfavRv8XRMuaPPCG+W
cz9RCMwNaYw7v18iyzm++42kUF/FyBNLz1XfUv3UA2mN0P3DrRYKSsFeAYEMXW1TSljno+lntZOw
y8M02zap48VVyWSfy3bKrVxRjDMGtuyPr0qSU01HFblM2eWCKxjkA6p6Zbf89SUbTgE4LqE7ByPH
OVFfJ1lmc1Yz3O6rH37eDkQwPnz/QPJBMaCLy2q+no/q1TG69/vB/Cs/P8DgseEnrUHZSie364nH
zu1ZTFGm0MeGgNl1gZIUVKGxoVQfYfO9Xgjub8QVjSbi96w3x84uwypRWAMG/rZFX3CML13S4bAG
cBhCH2b0uGdQbN2K3jere8nPRSl5O91MGKUqUQfyNwrUACk6I0qe/ZILl881+cN+Quf1Qga3TZ0y
5XLTtX0xJvWRQSgUi0SZNLAxZQ5oYsQMnwtN47rqU7kraR+ktThp42PYG45uEAWgN0Jl0fm0UB/V
3FO9Cpwn9c/DIqi6Wlf9tCV/sbWvFXrrTFkgGNjkQdX74C0YWFs3wkyBmzr7C4OGjl46zlEvN+/W
zYKM3PKU0r/T4b5ldtDUkUW/iRxD7FkQwhKOLJQkVdXpZ5BKmHDq9ODALmXZYAT8rI1UyvGYSdcP
JnYoFVQ9S3M5uZTn4TJnSbUFBNYoNJoQ8cUNTAnBVb2++9ndkuxt2V8c6nM/rCPq9MgS6jSk1BE/
R9NS0q1FTqzkVpxzv6a8GcERhzgop+F/JZlE5KLQxDWjOq7zel9QiUFcb1S+38emyPALuOZDCguZ
8Y2om6f4K+WFnzzUVoFpMlL6mVNG4/h2JGyPVZKl4zdzjmNI8v38OndfTuhPtLBfdJvarJM0JwRN
5SJaOF55bykCENrLmdjCypb00DoaNNMQpVjgWk8Km2wmKnC8+Ghwrc00WEzljUuQKE3GkVanjaAi
kPlFLwwrsnVsu0aFpeJZ32g5v3JqLNZAyqrYu3DJbvndy3KIux9ANEzOcgue9NrGcrORQIhFkGSs
v4h2X42psXYMobgM/0hrCOJdPEzkkulpgIs3IeatgfmY4wxxY6ZNaRhA2Tt+NdpARXcE6iAiIhlb
Tl5udobJbi9e6j1UNN7dEH18p2UdYvwqec3oG4VfXhbgodQqDiKl93kJ2jfEOu2VgcLrH7NliTc5
nuNcda/3cJC0cKck3Q9ahOX6JDyY1MXIqL47GwkqkRdXLa/Lr08P4CCu3bwUWR40iA7OLottINFE
/UQrNDv/NQi/Ddmam5JFzgNkPtbT5rsbTjCXWmITdN3WgjzFWd0AkWH++aeRdbHAZc8Xy1kb6RQx
nWumNTtIIMJBNLT6qbMQ/Qza4YFi9Q1FYfu4S6xIKrO/0exN5LLrovcJ9Y7i/JE5g3Ys2qeaurPi
CKvwlmyNqS079x2mxGZSiXjxIVzxIHgWI17ggsJEmXRt03d1mbIUwxSCI8yUU+UM+3jc8mTfDIwf
dBZ+R9OiW9lDHlQbgUxvuN5H8IeVSg2ZwnuVHw3z7+UuLVYNG5g7mOlR9QunPP1KCfBvriDbH7VK
HzBL+PD0qzYGLK3uR6YC2nkZy3dlSdULBz0krJk5MUjzhWT5uzAFLs3wbMc/WbK13J2ofDUg/6G9
Vnye4+JASeH58xorl+NqCmGkQyRNR2HP8UXmrIfPJzsNTcg2N5lFCkkn3Rt54Al5GXnsEWLTFTI9
0fp2i9mG5QvilGQiwS+25w6uVWaFLjM1+aF3NLT4VJHpMjTCWHRp8huRYVZ6KS9RG5CIgq4028p3
GstrBQ2Lxvp0X6GVXUzKpsLSoKUe1bnCzvVwPgtU/XJq7/FYm7evKiEkvLtJ0Ol9LXh0eG3VRSLy
Sm6OPUYvQVbH9XPkJei0nxtpOenuUkBhEQemzzB6xglOu2P7E2i8roaxNTAkZZMv4DN962PcV0Qy
l7QhIw30OHpVRncw9P9gAMQmZCNnpD/r7pstrVMuliptbBwUs5cBBlJhOGOVElvNwMZR1UM2DGSa
hKHVa9FBSJsHj/keWKIw+P/QY92htAGcs0Cbf5+1mheuPYxuhWGHoU5/eY9Rbq/eeY2heR7BaJXI
+mW0KL6rljOYE9NBCbC05CWIoIQVafd+lWqokKugcgjtgF45WxW3Jzf7CA+7nE3YMl0rgnVkOXLR
t4SMxLDDoOKnPsdpzcPh9/158sL7N49a0MtQwaicFA53do0UM3onEZ3LJsJ6dQT3ZywieydLNHwT
yb6hXiC9OomG5PNNIg3iS6KIXSeqMclVnyK+37nIvU81N7elqfbucZOa4wk+/w9lvlF+C27mqpSl
DrG+rK3ZeFuKCz88WVGVUuqbTMiydGZRtQVBkDM2U4reorUx7uLoCZHmhJxUywwyI4BrJdX//t7L
Hwd586XIwysDwxOFaOumoIEDCPMV0uwyhDPV4FBkmgXiZGl6S4cmDOncdKObXAFBYykVorOik4kB
LQTpi9zYz83XxLBdRzIu7mC3+2SWgSML4vqSuqFmC+wfPI3YJzxFAtYhJ7qbGo5BUHfJpKvU5Yyf
DfomOeIgLBsuHoq36WCPsIXyaONhrx2BPTI0m4xJzStT9ZSdEUdGLMM0qIypqC2V7jgzMHtuqrr5
VLy0LbHSk8ZVAY0LuRMIvIwNic/2iK713fjwfXGbXco9XZHBVd9Kt5/0iZHNXAqZtbDz8t+jW+i4
a7NhLnYwX+9/OiL6iYMpMNikhH5ek+04MO5yhzB68vnJaRH4m61JiUejYLYujbY/MTsL09eFvH8x
vt5XU+U4lI/0jommweEctu2tNDP+abqPM12YxYwm3NCOG2tIA2Oi3sQFNidsXjeYUkD2VrSLi+7u
0sUkFm3MGL+XDaC5Vi5GGgJZ1XzWudPbMTqUvIRhajz/+1cvQ4zdg4fLzxQD4ckOuTg7OWDYqJYv
9PNMEg5lJ7LTBrNfGx+BMIuEXtgOhbJXZzdygfizxxST0NKjpHf+xuQuX/DsLA22S9bx24OEEPdX
9mvufUnrxJSjWW9iRzQz2VTHDe760+4fNPedeb91MUwWPzEkmbEx8p1JNr9X9VHZJ+wR79d/fte3
S0QT65EPiOlC5xoq+SLkeqm1HR4VJ9O/sQiXEXumiatN9fEbCSaXy6jaZVBFgNOd45bsLEv4CLUj
O9SdNXen/ugh3jvKKUbEuUcr9kpMrIHVD4uXXnJdO2/jz64YvY2U45RsVnWmWV6IXgI/l2cLfaJS
0P3WAw1Cy7xZCG+66CXS01ds+qKScht+Q7INGTpYdWR5EHaR8XwYWnKSRZ8jd+mVaAHSBeh+fK6G
rSpR7YOUl4qQVnJ4LeuY9rc30NZ1FnC5Bllx9/mRu3rMj6gdqW5ucAqOZkW9G6z8sS971hYSKjYU
tpKkdLCMYqT65WyO0/YZBXsslgSNlE2rkXWxz2EWlBAh5/xNfqw7dtDQKuWdK+w7Vvv2oSV/9XHH
z1A/NWFb0aSJRrrMJW4dCqsYShQ1Ea9gTUWmkylqhfxG56fjsFe7H6yJ/EVz+Ac+aisPfPB8oxDg
22VI4qPoJeTe4w4gg7EiJ0iFjICsFMWIk/RzUk5uZ9IsogOyW1fWFB3HPxC4n/3acz3Tk+kig0C5
8hHGpzj1U+Hnt+1QfwURooqB2LFvjIAOUH3Bb3EkZ/c+bTKBsXrhKphYyUtXdh0OQsZic5dzDSXT
6XYJyAHa6V5tYsTkF3unbZJfEaz6I5UkFLh1SYQoIMw18DKZ1VCI6fsd3rHSF8fOp8tQ1rWH3eZ4
MFmylY6zMpHQg4rkaxO0NMqXma8b5ssqICYwQ7G3SJ/bJthE6VYue1YUKmZuPLMkpmIymkrsZM/T
Tz8Ya3w07oZuXaKOZUR4nxkHCdc8nx3dAnxOO0gXfCqAvM9QV/w2W54x8xTYNn2YzXliMzfGA0Uq
q9tzZg8hqdMfafmy/kG4LMUawFLErsNHfqtsA1rFPLl0eU3CjroZZIjWeGUq1aLVyZ97PXHKE6OK
lqFCaRM3cTXb/bT3TdCeiV/zTSmuYsnwF6j/rkBV2rHXLBLNr33MyPqah9p9IkJxNzg+wy5ozlJE
voNvt2GEyJYQifbYsyZcxo8ZniHY6DEs0opxnSI5ZRGgYfRQlzyaaVtb0R4jDKD2vnftpeRf3BVF
8G2HPHgZnwjOzMizOMTFs3/s18omG3snwBIyXHg26/oR4qs9hUIKzeeS46td1ImNY/jcdT7oIksI
hKF1BoE1fViOyIG+JLP50+AK9Zye+KjI73U4CF+QXNgH3+xq50KY03w8OE8qMxSkVJfXjgkojvy5
YtSbC1I/5+y/znAdoX0yBaIRb/Jkp8DDn6Ghuq+eWZVNHbepDX5D8qFNeOZ18q+QyncSm0UFMUnO
QbiAMGR53svK/dhY4GBdF/8M2pEbnJt7cw5uC66WZZG3QNPwYH4ATtFAzt5XsFjLFNyUKcJVMFQZ
Q+tsvx4Kd5z36D2CGAYn6Do40KwJMoMyVOA0dJ9YSO0xpk1mwxHvjLfTgNvYtkW6Z86fnz8nDa4p
1sc9+717dadSmM2JMzW3mZM3dhmTVoJRYGTcJZ7oyM4/sRJM553OBdF71JSLKOKLes6orhjGev8o
ceaXs3hmmLovqLufGrJ7zMFxmUT4DSNmcyeiNe7WPVFTE0gepP3S1MgNJ9sBi74ETbsKkbOIZzT8
jpSPH51WvN2y45qIg9qMgWLmzJSv50QWkBr5LS8RSM0wLBU+LhhujFRu2c5RH7wEVwCxCmMX9ZRE
U1JEX8q6ylUU0gJaw4ndxRKt0v+kMCspaL5VwWOTuvYFZ3sTwHvGzDa2IC3ZNrHTqF0uHZNO4zIL
b2Xm2y39+TckNhJT1ej8T0xSod9fWWdZX3+mHRwM821yT1y0bA9lg+pE71xZVVQwGJ0nmBAM1pz8
senyBdskLR4UGtQS5radUCLOIkwz5PVCClre1dNwXUJVvb9j+jGzBHlNWWh3/8vcdHe58P1otytk
ONHgeRPfh35LkJkH+5QiRHP4Wywc+i5gBKR9Tie39V7YNdd//3bM1WTxq9WBTk5bNZz9BJntgHiP
+iHygc1jdFJtftPDzBSZaeW4+cpCx+rt991LRnaNHVeZQLX9MZP+aM5LnWS3QizDFsyWRW+tuc8n
Z8Q6dhdqQmPdqj0+VzqPbb3jJfcMJ6GOqdirPpK5WGutEFFLCDSuWQY/oEeMGnVpJJKR1Ur8RW4K
F7gEf4Znbjk8jGL/yClSDAlHHVikbMageYs7s/elwdQ7Q5lgD12iZju797V58GcCQb5EwJHUzq0K
yp6tvBCfyouLbsrWyse/NS8vIct3bRUFFrN0ReiVIWZ6C9iVew5NrII8tWXx0IqPAu22hQXP9ZR4
1jPbr/2P4HD3FCshZMQGt+lmvkhbacbzogUh4Cvvnbm8KG83J+FqWr4FdAlBJWDSIu6gZu+TkLJV
YtiTpJNbxsd+NCmxve+5kkD2ftjWN6v/Uqp02eJBtThKgsXnEY3yxnWhJENvWla7JNG01Im+6IDW
x0KJKdy93hVw4byam/fwilMh/8Mm9LYs/qPcklK4X5aiCy5G/N2Isu1trf2WI+9PuqIlLjf52GYT
AFGayej2eLF6Rw+VouJ2imT0kPLzzaMhlDXw400kznQWbIdi/fVqU0w4CYTccwMSKK43MZ9ZZ1fn
7CYoPwu4ROmnwOdWW20v4WfBZKkSkIK/mLqzQIP2fYwwWCByU3cDLeherGHW0hP3cyiBbN7jF7nf
uNn6L5H1EDdG70zhVnoPSmDmlFeBb84YF0ucWJ5GQ26Rl6akeeHXvo8wFTuEDUE5EvPUOuiKZFDE
e0ntoSE8/nRbonbrQ6zJVzw0PXTQW7h6kBBsnwQDlNr8JAyq4JePxHKaGePxh88mKH8nrOZxmWcD
U5+CwsZWsteZwuhzLsdoA0+O6RWp+7sWUrAkMJLfnu7PBzwgSjYpjyk3OW2ycnRN5Y/jk/kNoM8P
aY7fUSQLJZyLrbTazTbcpmbVOj4/XQt91xilyAbFuCUqlxzibu5gkEFp0xLdD2bOpT8C68wVdFpS
TmqUdAXfdhV5/Me9Dp1/xf4ovkI5ZWAtCJ1zLXjVgmQTpIjHnbV552o7oygtsuHtyhK+O1D6BbYv
Os4ogkStrs+rs0XTPEA5Tosfp1HlfW7HcKaO21UQhNQ3hOJK8j29fpxHEm99jm/Sq05+77efC27O
6g/VZGl1PbocTV9DOXOYk0LtmgNozB+3fqokRHjy3zsKNvKgKpBB7lKNXzTe4yXTOrKtT6njcsWK
OdBqn1K+wC/rCKle2zJXkcZTyBmc8XMoyjefXItUoXK69NOFk78WbMPe7jThnH3dzzPfhbZ89R+H
6PI3zIOT1F35Xjn7rV1ys1t5KX2WKJR8QX1l11gq6PIAEqdZi1tLzkA5IlNZFC1Th/PzK4wpb0j4
Cgant0og/LJm9eS72wrIvjqWgKrRrD2fBigU+jDIVrMm71ucRhla2O/uJkmvPW1tnTGAMZUGWzJg
tgX9LIPyrgpvy92F5Zkr78H1Pdme5WgfrGWyQEh3hOgTyj07F6Qjfz2uhxImYeRLCOk2bQ/qjVa4
8HNiqK8nZxlOWIEdVu0j8ku5QRSciVvRDTwbI4Y7dXvy6oN/S2vEni91AfA+OKxkJ4Wy8Yn4CkNq
JoCBSeHyuHCUu3ZYN15KbzYptAwxb46uFe2eQE2/iK93zKQSjcEjCpt1W/yK7KgHdNaab6D+YCXQ
WjBhuhDmv0SoM8C9GWPwYywWQFWI7TvlPjR5Ommc87iDLTAgjV+Xr6CizEjuiEkyXpwlniqQY7Q/
9LIjiVBXDM9SeSlJ+VOqlvKpW5r0ysqKjfk6KwkJwj2NyKhZ+m6DtuTwJrRf3fmjLCb3kZt8s6Qu
pH6m3SBnsQaxlVCT5QtIgScrPGqivSJucDsMu57WvpcnbQ9BnyVVXnmSJEliHy2VHJV1X8HXrkB+
1dPthrUTWT2+Oylqq4kdVmKfWBAO97uY13W5hG40axxlF3uIJUUed0dDYqkghxLckWuxwUfQCJ/k
s8rk73dk9VLQvumCAg0J0BC8tc1kiyytxCoSeFRsqwvMjjyzjFqUxnNUHWoh66DvO63m0F/DHUUu
jdvLV1z1P3Jz1gtEm5cXnujVN5pApihKulR+Vb8/wCiPGaY2i8Vt4lr4PwuOsvkKZW5kc3RyZWFt
CmVuZG9iagoyMDQgMCBvYmogPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAvWlhE
S0ZNK0NNUjkKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMzkgLTI1MCAxMDM2IDc1MF0KL0FzY2VudCA2
OTQKL0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovSXRhbGljQW5nbGUgMAovU3RlbVYgNzQK
L1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvQS9CL0MvRC9FL0YvRy9IL0kvSi9LL0wvTS9OL08vUC9R
L1IvUy9UL1UvVi9XL1kvWi9hL2IvYnJhY2tldGxlZnQvYnJhY2tldHJpZ2h0L2MvY29sb24vY29t
bWEvZC9kaWVyZXNpcy9lL2VpZ2h0L2VuZGFzaC9mL2ZmL2ZmaS9maS9maXZlL2ZvdXIvZy9oL2h5
cGhlbi9pL2ovay9sL20vbi9uaW5lL28vb25lL3AvcGFyZW5sZWZ0L3BhcmVucmlnaHQvcGVyY2Vu
dC9wZXJpb2QvcS9xdW90ZXJpZ2h0L3Ivcy9zZXZlbi9zaXgvc2xhc2gvdC90aHJlZS90d28vdS92
L3cveC95L3ovemVybykKL0ZvbnRGaWxlIDIwMyAwIFIKPj4gZW5kb2JqCjIwNSAwIG9iaiA8PAov
TGVuZ3RoMSA3OTUKL0xlbmd0aDIgOTYwCi9MZW5ndGgzIDAKL0xlbmd0aCAxNTA0ICAgICAgCi9G
aWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42q1SezhUaRze1LoM2kQNyeOLVYSZORjTsFrX
ETEuU0k3jpkznJo5ozNn7KBBu6K1iexGWyiStl3Xdsk+RJHrxqYLacvmbrtuhbKJPW5Pz+rffb5/
vt/7vt/ve7/395ms8eVZOgkkIQhHghGWEA2yAy7evECIASAag2Ji4oIjMIFKMFeYQOwAxGZDwEkW
CiAmYLDsrBh2TBbFBLhIwiNxNDSMAKYuZtMiFnASIzjKhzHgDRNhiJjswYdFgCfhowgRSQNOIhHw
nz4hBf6IFMEjEAGNAkFAgPIJEIKEohiFPu3IAxNKAGsWFsjC56kIBJeSpoApadIMkBYFEkwUCQSI
kELnSsi7ENLJ/2FqYXOOTCTiwuLp9jMpfcDDYlQUOaeQiMNlBIIDb4kAwbGF0gBk1pw3IkBl4oWs
BwGLUL4TFipCgCVkQ2NYM2cJVMpB5YjAFyX4YUAIi6TIDI5ggoVWyPhmjNC9tnp4uHPM5+Y6Q/rC
KEZsiQxHAOO9eqaG3tdkSjgqBzsZNAYDIoXkmt/tXnCZG8aXCFAsFFgxbQGM43AkhfxBZMUE0RBA
MQEiB4icdEynYRKCPALIaBRAKMEp02OFGFaAHoLDfESECIlpbg62noNnBzmPMwBdjGIy6Qzw4aud
nSXyaEsrNrBk25IuIMgWsFhMxX+EfBmOIxgx87HI7OZrIUrmjSByhE/p6pDw7eP3ZpQnXIhxO3vj
x4/pauNNhX91qVzZXhFzChUoeMxsvzWhRN6jnN6yo3XUfe26nnz749r4L3rJ3CN7RnK1C8qSzuRv
T41j1tDu8qiRXyWla06ar3vkUbd/24nMQ736djV438mvjS26RoxjmzSyBcPOO85Wv+7uUF++3j9t
vdEqVtcPKg8WraRGPhi6ZfiyIjaj0YH/rPWel4cvVcpJWtcu3KgeMgKP9VN2CyPa2839Bp2u3h7u
/UJXMLHM50jNTvkTg8NGiSYvrvHy5aNJMfrRnS3hKtSbhx8n54we8FGj1Bg41z+4URff2EtPiXOv
NvBa3dRnHfZ2VZM5N10nlNFtrXRxsELvt739W0uLocSpYZVV52Le5MP7Mi99Z+D6JGr/+UqH11up
yQra5vITgc/zKuvUOypXQNqf3+5ySRk/rca9rpxk5S0rG0uvCDv6mE4deGpzveOGe15fnPgjDb2s
A367L1GSfWDOpHLy1YHub+rDoaii857xFu/WjgfqCkfPnOIWSo+P6u2z/T7WIHD4INLszh7yMnf8
8pMjGebUPZ1Zic19xnWtd2qrBx1TqREym57TbsVtFsJEqY1fIU3Wvtx5iXrhVOroxKuXqYbd+XqD
3mKNYNM1e+VDtX7LS265mhZtsONcmVSYFWX36BhxxysVjZCKZbV0bykzhQVrsEJeCksXhYaVuCi/
KlB1KE7YKG9x1DdVo6Q1FF+bCF5tnJHrunbZpvTRmzeHED3n80sf2l5wGchibinimGeraZWlyDxb
zzErDkxu03l+b82hIEmmYe1uyz95eVnJF3RTHBRUdCBos+NFrfaCkvirAW0rVc/KDbS5DaoNOfkv
Jqkql0t+L9Xq2qXboVWTw9shaubmCibdbBSO9+/UszUT1jeYGbiWqFhZKBXd2pbB3dlVe83GZanv
H/1K6kyjxW6/VtQmFnsVtNz1euU3uUHeoF8UoHnscIR6/7fvepvr/fqr+rQXZxJbHr9xtyICl+jH
irPUwGLv2MlRnSeQeXBqSfRU35DnUBXL8ZaKxUl5KVb589NejfIB5bFyLDGujL/68uu7ZdzRol2F
B83KG7fgY/djUq+ce9g2wTzM35mnVL7J/8xn9o/cAzrZcZecpkLYQex7/8iXxLSld2es6PypgDOe
ZgRyOQmt41RmKgcesAhqiIoIzrrQGe/w6YrATF7TyIYU55AqPdOsYa/wsZiSfKs054Q9mlVv77f1
9Gj93VVgd+eyT8tqNs2a+u5YapjSpSyFam/UsyWOrScHjlyv8klg1Kmetlcz/Bc+vNpVCmVuZHN0
cmVhbQplbmRvYmoKMjA2IDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUg
L0xVSUlHRitDTVNZMTAKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMjkgLTk2MCAxMTE2IDc3NV0KL0Fz
Y2VudCA3NTAKL0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovSXRhbGljQW5nbGUgLTE0Ci9T
dGVtViA4NQovWEhlaWdodCA0MzEKL0NoYXJTZXQgKC9icmFjZWxlZnQvYnJhY2VyaWdodC9taW51
cykKL0ZvbnRGaWxlIDIwNSAwIFIKPj4gZW5kb2JqCjIwNyAwIG9iaiA8PAovTGVuZ3RoMSAxMjgw
Ci9MZW5ndGgyIDg0OTcKL0xlbmd0aDMgMAovTGVuZ3RoIDkyNjMgICAgICAKL0ZpbHRlciAvRmxh
dGVEZWNvZGUKPj4Kc3RyZWFtCnjarZRlXFvP1qjRAoHixSW4e/ECxd3dJQQIhODulOJailuB4sW9
OJTiRYtrcXencDn/876nved+vb/kw37WrJn1zJo9m45KTZNN3NLBAizjAHNl42LnEgJKKmvJc3EC
udg5OSUAdHSSzmBzV4gDTMrcFSwE5BIU5AbKgC2eH57/Qrx8Qlx8ADqgpIOjlzPE2sYVyCjJ9K8k
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
bQplbmRvYmoKMjA4IDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL1RC
RU1ETCtDTVRJMTAKL0ZsYWdzIDQKL0ZvbnRCQm94IFstMTYzIC0yNTAgMTE0NiA5NjldCi9Bc2Nl
bnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNjZW50IC0xOTQKL0l0YWxpY0FuZ2xlIC0xNAovU3Rl
bVYgNjgKL1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvQS9DL0QvRS9ML04vUC9SL1MvVC9XL2EvYi9j
L2QvZS9mL2cvaC9oeXBoZW4vaS9rL2wvbS9uL28vcC9wYXJlbmxlZnQvcGFyZW5yaWdodC9xL3Iv
cy90L3Uvdy95KQovRm9udEZpbGUgMjA3IDAgUgo+PiBlbmRvYmoKMjA5IDAgb2JqIDw8Ci9MZW5n
dGgxIDk1NgovTGVuZ3RoMiAzNTAzCi9MZW5ndGgzIDAKL0xlbmd0aCA0MTM0ICAgICAgCi9GaWx0
ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42q2SaTyU/dvGrcmQLWvCZadiZjCNJSRZZyw3ypoa
MxcNY2bMDCVrZRQhhdBizVaE7GOXrClJlsKoSIUUNUWW/9T93E899//t87neXN9zOc7jc54/VUVH
Zy0zHMkHtCQRaVpwbbghYG7nYmMAwLVhEFVVcwqIoeFJxMMYGmgIwA0M4IBZsB8A1wd04IYwfUMY
EqIKmJPIoRS830kaoGGu+bMICZgFghQ8FkME7DC0k2AgWwOLIQDOJCwepIVqA2YEAuD0s4MKOIFU
kBIC4rQhcDiAw2NpgA/ohydCoD8N2RB9SQDy7zAumPxPKgSkUNmmAA22SU2AbRFHIhJCARzoC4Ha
k9izQLaT/w9T/xa3DCYQ7DGBP+V/Lum/0phAPCH0fwpIgeRgGkgB7Eg4kEL8d6kr+Lc3OxCHDw78
d9aGhiHgsWZEPwIIaMH1tGF6f8fxVEv8aRDniKdhTwK+GAIV/BUHibh/O2Ev75cPqKW7o5vtkb1/
H/VXzhGDJ9JcQskgAPtd/Ivhv5m9Igr+NOAJ04bB4OxC9vfP37F/zbIgYkk4PNEP0EHsBzAUCiYU
AmNL6SAQQBgcwBNx4GkAPM02DNUmkmjsFoC9mAjAl0SB/LwpEglA7X6GfhH7TFDMbzIAoNj/JYQ+
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
ZW5kc3RyZWFtCmVuZG9iagoyMTAgMCBvYmogPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250
TmFtZSAvRllQWEpVK0NNVEk5Ci9GbGFncyA0Ci9Gb250QkJveCBbLTM1IC0yNTAgMTE0OCA3NTBd
Ci9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNjZW50IC0xOTQKL0l0YWxpY0FuZ2xlIC0x
NAovU3RlbVYgNzAKL1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvTS9hL2MvY29sb24vZC9lL2kvbC9u
L3BlcmlvZC9yL3MvdC92L3kpCi9Gb250RmlsZSAyMDkgMCBSCj4+IGVuZG9iagoyMTEgMCBvYmog
PDwKL0xlbmd0aDEgMTM5MQovTGVuZ3RoMiA3NjcxCi9MZW5ndGgzIDAKL0xlbmd0aCA4NDk4ICAg
ICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42q2UdVwUatP36Vi6lVxKSliWTukO
KV26F1hqYZeWRhoBAUmlS6RBVgQJQRpB6QYB6RJQmnfPuZ9z9Lmff9/P7h/7nZlr5jdzzbWcrHqG
/Ar2cFuoKtzdix8sAJYCKukYGYEFgWABQUFFACenEgJq4wWDuyvbeEGlgGBJSSGgggcCKCQGBAtK
iQihvwBOoBLcwx8Bc3TyAnIr8fwVJA5UcIMiYHY27kAdGy8nqBs6h52NK9AQbgeDevkLABVcXYEG
f51AAg2gSCjCB2ovAACDgfYwOy+gLdQR5g4A/aVJw90BDhT/j9ne2+Mflw8UgUSLAnL/LZMHiBZp
D3d39QfaQx0AIF04uhoUreX/h6z/Tq7q7eqqa+P2V/q/J/V//DZuMFf//4mAu3l4e0ERQB24PRTh
/t+hEOh/xOlA7WHebv/t1fCycYXZKbg7ukKBgv8xwZCqMD+ovR7My84J6IXwhv5thrrb/7cG9OT+
VgAy0TLQegTh+59L/dupZwNz9zLy9/g361/RfzP4N6PHg4D5Ac0E0fMFowPRn39+WfxXMRV3O7g9
zN0RKCQqBrRBIGz8Aej1QZMo8AkYCHO3h/oBoX5owSABd7gX+ggQPZMgoAMcAfjrRsXEgSClv0x/
k7gQEKT+mySBoIf/koQgEKT3m4SBIMPfJAIEGf1L6IsG2fxLwhJocvNAr4wNelL/WEXQlWyQ6MuB
IV1+H0SH2v4mdHm7f0kU7bODu6K37h8LWBCtyP4PBANB0H9R7C/y9Eav1+8AdE2H3wn/Irg34g8/
uifHPxDdlNNvwaJo8vdwgv4pAG2D/YHovl3+QLTiP6uj23H7jeh9AP1OJYo+6g5zh/7hR+uH/66O
Pgz/X260eo/fbjE0oWcJ/2McYLT8P5oDo7Uifx9A10O62iCd/ghA5/D6LQgtz8sX/ocbfcL7992g
s3mjdwuBtIMj/pSF7tnnD0TL9v2NQuikfn8gukX/PxDdUsDf+H+fk6Ii3O8JvwiQX0hYFCguDEZv
o2DQ/wqz80YgoO5ef/9VoZ/kP+wAQ79fKNQPageYmYTbST91zmiKeh2sUjRagcuLqeiIStZt6Bj7
QBQx/RzTtXRAy5N3sd744k02Fel33O8svlcMyLjWQP1h1YMwz+TMiZvvPtbfswOaGYx/ZOv4r3uw
/YrYIWtpGj/ZFcV8+HVx8HWaSfGnV4c9OwV63MpGG/jzrBidZj6NnTlPxcSNVbNdH0VH1t8TZjUg
z/R8HSMSveBLnpaCszASEewcTfCOb+4I3upNeVFEkJ96Y4VxbocXHy6kmDuNGnGWjc7mvyuxYK7s
eL6QYEEPxGgobQdx2uZUd2ZVx4+/d59p+TXbPrpi+L6u0x9j/OoboS3v8N2NXm1u/FFJJGQP/40q
iQHOjpQKqlKH3AWJXRWhHikoVKZyQpcml/NwD8oXYVqcwVXeSBFwy6T1OYL5LXlTJF36aBssHOUA
HJRZ/ni/ckEl9Ydyp+4uqWmgZjd7yhkjZqsi5IayRvikffs5wS3FSAa1zuSuR2F359oxd8EO55oo
5yUzbUcw95Doq58sii5BCtvOxE8X7LgMX5RgV2wRrPTxS+R94WXdhGX554ZwvE5TEyggrfYldCRs
I6Go+KopOONOU8KEAFxKk39drnzWWQDU2kRYYkytvoZn+bXeFfcQmZElIFZ6vu7f9fD8it1/kCKP
2aztNf03MhEZe2AbM9+onQvO1RDRPsnHCTeHQ7d6DgkVbrbB7cMHW9vlkklc7h0zvCHNfp1+uHMg
zaDLEvhkTZTHjthDzMWkgcsaaJBTVz6Y8jlE7PObiviSjkpO7giYhcaHWJY3B5uwbMDqXmRj3CAb
Wy6NrXBWv+zGjChSc3Y2gNq2k2Jcc+JBkRlkffTtFZH6HeCaENtc4tXEGCnN+XvBh+X+kgLLrR0r
pcxeDQVXUrJ0WHemOFRCeytIeizuerGU3MAT2q05AUNcKlrtBBkDWskvI0ocEC+iDfa0LP1Xoqx9
HtJYRh3mXuT5RP44xQruM/U1iG4gBcIWdXUglBujwur0hoUefGVG9z3xWJHYyYIj3NPNPdKP0l83
8glvzLClaUp4CkeM2cdpHlkX1fYdi+cUi/N929jWqHjvXb3/aWFlut1JXUaWlYsy9E0zk9FQWHqo
kMAbxAonwIeob/7WP4m3vfvYMDUl01y7gaMWA8Fj7MaMzfooz7EDcu2PdVc5ubhTeNaf7LidvUCG
jwG2jzLROyeH8xWsDkD7yU5TmaoOZYvjLiNtrgQ8MaI5Ga4U3xHxBMjWzlLF+bC9Bs/ySBN7EYaO
r+Kmm3bniWt7CSR172d5EikwXqdJPwu7IxhuwjrB/BDHOLSojNh34TYY+vMt9ldWrWpPTQB8rrZe
OqWjZf/20mDk5FmP5EJ27Hg9eVVrIl5w5dYY2Sh9Chn3E7ww2uyY5b6ON2ZDofKWPzzKaa1DOBLM
mcwfY5smXbrUlOpVHQgG5Z551mYduifPsMzpUew5qhnYtJhwpStnb57XP7kPpq2KhQgai6eGuuCE
7EU51eYBxu7UVS/pDDEcyEf2eHDM02Wv54KqhTi/xGBqjdS+q4pVJubsnwmka3ELWNkbvegeI1En
L94bi5tfIOqx6ngj9+hy4LlQNaGjp+yG93o9s+tKoKpQffmXAC5dWIposShmSOK8ayUZNutkkf13
s6dO4kuY1l3TkSXUmWNvWI+VkuemegIJVt/uPwucQfxI9PNeMXnAdNYTMclT9nLA9NqRUHPRq5P9
Q6PiIJP+CFfBybOIHY54A/HE4KFNbm4Lq8EWnKmg7heWT2mTsnu2BTj7uhIJgFyoUhm3Ef3PXjgA
C30i7sMA+9xzv8II/4q76y3DlTrHbvaEyce8Eb7CWvaJwYbjHP2qltfC8tGh6XVcqbOpYQOPmfmK
YmZFXhRz8mV309/6Amx3yE6GN+blXH0/TmLAlqodeKWEhxXomHzwHFeE3ebwA/Z9kQmoOb53Q2Q1
EEKUmvrPo3n1JkE6RTZ1ywzpaipmroY2wSmH1NLCmxFVduOL43KJBwyFtmzTb86yVfWewDRa53IL
NaaULJbYF5DnChGCSfH4cgYmSZDA9icZaZeGOxxVChsS7jvsDWSKJLbDKSwQUg+KOlWN4Rjeky0G
d0m1C84QSSnbb1yv6o2a6Uz4dk9tVfv3lFxy9RRxWlpUcUn6Hcrzkzit9lzfGpThyEmzOdGkn4oM
dXmI1FG01b2iwdLGHigQVNhdxNVFxJU+HIgKkOusuRzVX9poVmOYHcg+Cl2n6d83lSbsejkLYPy+
U7a3nKlqjQGlBd0I8mzU52ulmUCPu1oko8+1n1kxc4tJkUrWax3WtSo2puG7qBn6hxjPmIpnNHz9
SkuJ7/SEbaov3Si5L5zasRA3kSOmjjR9RnA6IOEdwmPYPJQWXwLyTjgrtZXuzAQVElghdv9VbwyG
XyVhb7+RQoDokC/0DeThi417K3Z444Nh8gQAWcEz31TTofC3Fde0OpF3nOZypf01e6a2T75tzGEd
EDYI01/76CVvjMh5Crv0HaYtNapSx646hH82HexndcEf+VBOqx0auvjDne1Cc0AgQiW0kBE57gN0
mbs9FlFaEDYLXmNjZ/d15PnBmqS/TrPTzG1/v5+5ktwpVK7TSTsZeP2IAov1zoPxaDrNFN3XXmP1
lAlBbp2XbdMi5GPqvCg5XHMFnfu7ALjn2K8PvFOPnTL3eyYZhukrPOu9zkXC83AIRZeNWsHT7BE/
JcSIn71kGK3p0g3FEH6bDcn1SJYX0Vq/RVLiqud7I0/MElX4zQp5pjxJCIMj2tnnD9yrr8pS8+5R
xXEIYWm7T8gKB9BuIQpIAP73OWl1wHYHbw8uKGVM1TeLPuPBxlMEzM3negOsO8sTbUNtgt2scpme
BfmyWnyK7JCqTjARK9bJDBOIo3uaai3kbBD1UtIgsQiTLeQmNbxjcqtkwZ6K0ZlSpGdHFwu/Nwbi
lXF3QqBZTbZ10XurjPjsGHq5Of4Sg/yq27foM+XbVMbrUUV6q4v9KXpLu6FP3rsrTgdsyazRqu1c
jHV7weoQ7ZEGgd7vZA+39dzPqPv0BDkcPt4E4YR5dBWj/FNLB4jm0ky6UixnzefV7rQfRAedAQEM
c856ouvpySZvlxMSp/xugD0JMOKhC66qlBfBGLLb7ArSbY2NGPpxHnCZtoHcAdB1rlnhp9aF7EcF
YoX4UephvuWtcUPpjEqLtwJ8zE/0p35JZizcc8h9Ht1o7ePuBGZjt352JskWXIUf89os0S7yYqbh
OyiXp06twtX+fJmDJ+7j87fcP+fb8YvvKqf/KMQVGq+zbn0v5vLarTdv80GLA27Ui/v3GTfvpOxm
x2dsIc31v1YwNRLkQ4aOfp37xJ9qTJgktaQ19+uT59FrJKUwxX3I9cW4u5zBQOEtfBeXjOYK/8nQ
C2f9zmUDAyFqDQUuqyTTO+LlPRRATXKBgODVOllbH7LkWekAl3ken1ekL4Efc6eDXrRinckCsgqb
h7PEfOZVCBnnPWRDaDCZy4vK2jPCRJM2eqRLxSfLrBsbzWRDCKnWBppnT4ZkHwOkdbC84k47SKWj
+qQ7MpkN4ObyTTczEtkg5owfam5xeBQ+7ijnir2UXhuB4/qcA8kLVpq3atFCgUJQfuzQNQXAbDzF
E6zOpsPuwoIq8QDF91Ja5G8kog2I75QfehcSqgQaBWLVzq19ypBDPP1MNQpIa4xtsjS8730otQz2
u3JXdsNfmqZvX0VdZM1LUV4KK1C/jioowTxGYoxl6QDnVmQDwktbrdpCsuNg4Lp1V15tmadIu18N
elIsBjQEKW82RRwWFqLv+VKmP8HGrWcbhAWL4woGZi1Y4eQX2y7zhhMRn0nEojpaGRojHj+p/1ku
Sn2+qLva47TId5NOvasPLtoOMJKcyExzi5ADENklMn0MMP1BA77b3nwV+bqeZOYo06nMC9fi8/rN
B/o+CqjO5H27EqErA4cYpHHVoXN2dHJeTGu2bDoOu0T8F/KJLW+pJ98QwZ88fUOnAzRSfhLVORfb
zzpKR+liXlyYTF+qzLnRPRfZsVYuiForGn1xPQ68/MJQExQOo/k0t6z0CUtCsUbKYZ/PfXkixalL
5zLfNJFleTHXPDYI1ovAdizfCyOlorlcFiPafIeCEZidZX2875ndIXFxqsm6CFblw7I6e3e1c9ty
vjwI0txvUaCCrmTLjLlkyDe5cqlWam32OOc1ljL7jz/K3NAvwbicJ0yUrzJ6Zpj8rnHvp0utclZC
B77pwpNRpVeX/KOB+1/fpOBpnikMZf/0L1zt9eLK5jAimnmvTK4rU5aUNGSiOv+dU+vcYy5jKSAB
sLGrzZ3payGgEMicNqsOM9EnjI0gdaaYw+4ioGH8zsd0vB4BI7T/oABIRcobEolIzQin2u+QBV2E
qLsD5nzKkUIV6R9fTsmuGnpSrH8o2AiiyBF9Ttya7YzTmN2ccKZ9I3M8AOPW+qCEaV3vC6IyHpUz
BF8wf0HeGFb4l0uo9vp3HirFdc9MbAfFCS0IJFYN7d+bX+Tce2R7WND6o2PKikXNkidaUj7uVnMP
S55vkhnn54iGNM09TcX2nyu7VBc0+zOYb+sANWvr1BklxVhfNV6E8a4kMhl1SoXqdsibltWtNlHZ
jAKx/Mdx541mc30XdjfALVpbhKE/7gZITMd2nwp73s27uFoSHryEYZe4UKwwB60HhcwT90uQykv/
INHrMUvz48xrUzSvGpH2cbxUZ7guI0EoxfjcJw55fx3yXQb/4oPvNjcLsdhih0ljkF7Qg2cI6EoM
8jIpc91qS/2NqaTUzPziGkWtz95ItrU1QbZQUEEhiJgqwQjqxcYMo49qMuVtljNs8VYXzajdE2cy
w/cca19+LFdHLL68k/4zVG+n9szRr+ylII/CobjXWdYogdGMa8xCTnzzdExOGO2v+DYGAJS8YDac
cPVB/vzLmLoFltNLDl2fwXy6/gSD6vRryZMEFcjdaF4Fhoes5l+KwbStPqNDv1R22+U3DaT6On2/
DZz7aN+4L+Ln9oZDbp7KKUQc4TOe6a2qG8gUEW1jNNGVZ/90cC2fsCThdl9+o1aOeoz7tLut08Vg
eUstlbklva5HRWxSWiKx/00mrGrkfpZfUwfkS0u7zzq7nAin5dP2LFtI1giOFp4E5YX1nsflttIT
4Nb9AwrHCQH1MdT40xd8Az98bzVdJymUdqpUW8YOv6kBW8ie1x+r3R1lbaBQyyjtl75uat0a3Z/w
/fBTlUpD2lDAhFD+TbqmmrYJ6odKiobrs5tKCq9VmkB9QsK9DzFbA+B42sxk4Bl1LAc2ThucFEO9
4ArJyCu5qreL+a0Qw4wiHTWfLusc2Ictk7gQny1ERcVztxN2u7Ys1rrq5/bRHEmVe7VnzEFlj1wm
OFzoyScAHLs+mhyYLooXZayUHByC5mt04+TAqfXxzOqfXc+78gkzuWOenYdqLle0+nb6i+LOva60
zvy4GP1jwtEbxU8hQ0Osxh2wz5wuJP8qIOUH7idyKSvW0fkPpRSRfaOOxMGdA72r19FjGU55SJkN
bNJ9vMt9eZyu1QvYDbHEvEoKUxPP2xZIr8CJKAtfszL1xF0D8kp5NxexwyFx2kfvz2iYanOmSYTZ
yHjYv1JmGJhppBk34SkoW42ZtPI/6UN9mj1syMO1XCLxN18XmIvZ1sGnsWztmHKn9ODwjKz16Ra2
lGAxVks3C85BShsydOEscdVeRLaKMT13Pk7dLBb/9mpSDUTFILu3QzznYKP08VMJZFj/poHEv5Tr
kUldzMDbpabTt3IjdyZEuHd8fAiC2Ce1UhqNOoZZ6Cav+9rPerQgoAK3Eqq1QpqZRVtmyeQ12pLv
mnnhu5SveodK175hJ4CsYiK/1hoZS3AyB6pdEgyDmAEPOzbo9cJ0L9qyYwHDkg9Ji0nE13MaIwjH
+LZVkzx02LlVRUerdKZzp1AzUOWwGMWRykLWivlG2lw59cHN92VkSfpYNUne2OOngmBNxfVCG1F3
rFQWK2rud7mZPzZxHgeDlpURGDfajbUMDx9+51OBAXfpph5HkLa7zm0p3iiz99BckY3W7uSYxfoR
/rw0OoO/3W5N37I4tNVSGMrLoAmSE/aT9uol46GkJLwxvOjMGG0OpkpyWwx7C24qrPRFzuyGCZI9
F4KsvMf3c/gQE7UhhSm8CrQacdWru/CuZ5auNsmOYGLkb5wBKTvlJuNUyltZr7u3H+KNrbLVlQfQ
BiawUtXTf71HX+Z1NV8g7IkLEZKfsYgFwcIvfl3QwmxDSc6rLnscKD/or2hvYwKnk9Ja5rBkiUP2
muhP+++kTBk9QG2N1QViPHthcWohxnGam/oitw3j2vpJJ7kcf8m4vcfk3nQ/CPxorCr/nFtNKXZb
XBT1SGOD27rBRqKXp+Q0/NRZu9u97pb1Z7Bew2vvraVETQdc8Pec3s2vUzYiB59Tuup3QNXrrg3F
rHpe5eopFy5NSJc4oqqwonufnAH34OULhUmVIxsz6+TDKtKrRG2Biv5OT4LOxN6ghvrrUscctSqB
gxVf1gwKWVUGYyXLCGavjH5QB7mO4Zvh2DOFeRs7bJvFYk2QPvDDSX780kpI3po01qFDS+DLl32s
WGvD50MhCHbKpOmXt5Z5OLGDFzfGzZyySibnEGHCic89L028WyUMO7aijreeFootGxxkfnggZ3rE
DGC8HACR69wp7W0LwX6F3eUZwNFTmbYNDx4qeUi3tSFYeDyseWUp4WUiCtJOMUgChbqQ9G/xQupZ
cEJRnvw/KKpOqjNj0qBXS5ePLKnCE9SAfbzV94jLsEO0XUTXnEceFyg7wSms7TMkzbn3rezsnX2P
jFYUX5dteD2bFCK0Kyemm6RXEOhjL8+JBeDGw1D6BGCwjlzsgD2pKhGml0aPg0Va+/XshlGD7YcH
z0+/NlQpdTlJ9exLXgbHRLKQsjKcYQhWBhvP2OMrAftYiLIKzvUjt82B4ASOQhGf8BAnTPgAeyY+
alI3kjpmEXeiuISt1opjihdiX5wsX5zQNYjXV6Omm0S9MyHMiLclTcsQnjg1kLxsDux9t9zZsYaP
//2ox1oq79Mla1Jycgs74S+S5QfyFwHLpkEtdfQ+FsD3AAmGmgN5ovT2aOzjltKqm/nBWSoqFYbA
IQ/VgWjhTP2Ce3UsYCmHVm1fJnwX/kL8Go8D4Wtw1oD9fB7oVZpufVFQ8LJEWOayXHVBxZBJ6YM7
tPk2kKeMbz3Ky5rq1b4RrXmXXYwSfYLsR4fzyRN+nRkp7frih+d7Hn5qAbh3SlwD4Ir41R45YDo+
rbSRHO7xuZKjt+oW2EgFCnjIxjazlJWJi+m6csA/A9IDIOZ4UqUKO46W5GZ6R1imo6hQjVfKKIuu
TI52KB1vhx72BNEkYvxFguuYBilFxb0re6b3HvFHgXRfRId18y1k/b6/gIxc6VCnOw3xsCQtsaqU
pOUD6ugkhkUdUZCehaXWwd04n5kzq4/iLDYea52672YMGbyqubXJmYcPi/BYC8pHhiV2YyQgkoyL
FCi+JDKp2m+MtAw17RIip3yoVsf1Rb/+3nY/A7ctpkEThqM8+hblZONwYWq3LRjGeyupLXsRx3s5
OpJfBuo2YYa/3u1+PmFC+lOsvZWJZLKnd39xU/3ZljI6gIMv+b3XdxRtsAQ+l/3X8zzbIdYhLoTT
FBcbgyZRkvNweuLAeVm/xZZCgcwJBiVHow47pejovrXHBoRImEF52cxWy/c0kBk1rSSW7R0DOdfw
sOPqjTmmgUFAbD1N9O7xFcPiiTqcRwYYFndrxPkZeJRKqN7ej4jz8nW73Q76Ukqs+LFhMaWYjCS0
+ERQK9RT4wFq9etNkNjPz6oNu6DE8xPFac1HZlADgwr9o2pzLnOZQVQEAcC2EygqX84PygGPbfzc
QtDzVdDHc4RYeTdjuNkV5Y0rqfhIhj+IepHQpP7l/sF+6UOKfYkhQbME0uhj82CQk0I8f4cc2zNa
XXWTYtPGqC3drJhL64g5VDCTs1uBrpSl9telhSb4XPASwvjBfotPUH/WWBLDXUx1xnePXVqw/Hsu
ix6PTZI1GgVdz7JBNK8UZzFfbxZeimGLz7UH6/MjO3wuBbJu1alKhmQYfS6oyglfYYuGxLggOtdv
zR+JXlAThwFCH6myUCxmaWtJL1uVWCVfO88lnRy6B35L8zkpkngJuotp0ZLMf/TpZ/vR0jlhHBXc
1bj3HP9X4aOgWP4Hn4t2HAn9eP1fBY/rBrwy8en0IZ3ApkfKhFfcdxLnDDrI6W5PXTcPHaIdq5uy
1h6rYiZbIaJ3YnmqvAGFb04+UtNoIuwfaY+Ets0ENvLdEnZbc3mx5GIp35iGRib4X5ctz2PbJyTQ
IJk1NN4zYbM3dt4xUG/5YA3z9fU0i20yliHLarbhfgYW3BWot4NenksHx1kQEij5rfCs0jiUtyvd
DtGIptSG7gJNOyQPyWzt8f0XzjIyeNvwbFZX42U6MoZXTzIVRVZeWV0WJpEP/LTqBuDORD0gjXIf
c0i3ULGd9RjyehxVBf82Zqw6VXRREZBuMTQUGU5CPrKeaO31YoX9ma/uN52I21+ouLXUu9JurozN
Vhz2JYQlt9mJNjIOVpwu8stP5p5I19dwF7aIGEDG0rkMxeedns7MbR/sKInNuoV/qj/IB5lGU+cy
r8y9Dh18nGi3sgcFOm9jUsHFnQMfrxWCVVJfwu3DbCNTvn+Bnf3sLf9hzdrO725Syfvr2fvLs6ev
kTWfhbpnGbqkQnPWN4XGWKVLKaTL4ZvjRxHnFmGobibxQfzmg+Io7iWvrowrfwg2y7k2pMzEnFze
TobuhKaFdKvymVVlM0N3NPbH0hbIq13kfYv3PMr6O+ViR42jv2RchcjxmiN0D5jKVESS3tyoi39q
/cm7Jo3ren1YSyFO3lVr7tPXoB4qal452c9QZmkJrnV+Wa3GNyVZWgu6eV+EJE7VfJnDbD4pjZxS
DZcTF8Cs+hj0YXiH5GIH1N1ugyx/0KyuZk11KzCTJNMh+oBL8ChZH8ft/IxZfeLJZj1XRWROkkT5
8HIulI49w0+81GdhnTr5W0uOyIxOKP9T3pAcDu5xgT1mA9DmKHReSzDEJuZ9cGbsVdhzusUyqJiA
rNELtsStK6dPAhqzrIBNYG5gZfOA8B2vp0QHI0juNiqrhftYtk3OETGhRI1heglt6d9Gdb/FJCMm
SMaLEO23XTSm2Eg2zbfQr1QYckj70k/ZxC3ZX3auYB8LGGH74Djm/EQwgTgHzi5Cq3S2nvTUxilQ
YjNVeX/X3njXWSV5c7iTmLHmE+Qm6KH7ibOCPq3A5KFwpE2LrUwqKdPu8rRXV7n/ZShUY5yu3hpF
kmRBHRUfoNf/8fH77Iw3TTf2Z2uEkiVOU6gP06CxeTLP0GIrckEVZq472fGDVl+EjuVmgGeEkhcI
4RGGlfx81vaUUGVrPEUkrDxZPAAocuiXFj7GcwYgiHRmZqKgCrQdtvT+YpgVOIE41aMscmlpEGXO
U71AibZdWkm2umHdKTZr9fhJ8w4D0xP6aTCdFdENAZPu9ttGSEiMX7yEKPmDJ90GDswd55k5XjLu
yRLz9g0UCYiqkOc75YNwjgZVqDWfGswijD+kHS+H4TDxRA0zNho7nEOyC7+OckXvNkholXytacK+
DIiKEQGV1R/gC4w8JcGBM+CxYJg3hKt/FqekfEGyZtDK2CldQeEI3d2+l508i6l5V73R66QrczzI
+P7EBuGMQMDetLr6iUcM556dRVmgRh5BW8+Dnj1Fb7qbjmsUGG95ynecPfcbgZ6hlZXIzFJpB8/r
l/HCx0yWMvVflwaz2o9T6PyeVp51Pff+iI9ahMFpUTREw0d6rFE8PIeMwSSWV6wfO3xpqJQnJ/IE
ziKESJhc2kv8ApjvJgnrLc6GeesUEIy+uMFhWsgzmGE1iuw/1gdxauYY0Xo7vq/TjO8oBACv43mL
D6vHQ7WK5k4Gr/yXrqoP6p9nW2GC+ixPTTW27O7OE8YGFs3bEURarwmMgPjHrfujkhJCX183uWbp
K1q4dW+zPOimm5PrTKu4T9jnnN6Md4+F8EUwMhG/bh6VZQMpH0wkvuoyImnFlVOVejR3EFzwWAp6
EoN3Shv/5XigY4xF1dsqk49oquEozOLr7S3GEZcdO3c5W5pLBqsx8bmRUarwHDjjMPNz5buLG0fr
mnBH/KC2Of58KsUWeNlGY6rMPdR+eLQ/LyLZJ4z6Qu826f20aYwOGcV+1Jfwo7j6ucTH9jSImngH
5RrV/FdhVE2End+tjFq0sX493VVSnJ0neIQ33PO6h/T5x/8H4eCFYAplbmRzdHJlYW0KZW5kb2Jq
CjIxMiAwIG9iaiA8PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9ZS1JLVVcrQ01U
VDEwCi9GbGFncyA0Ci9Gb250QkJveCBbLTQgLTIzNSA3MzEgODAwXQovQXNjZW50IDYxMQovQ2Fw
SGVpZ2h0IDYxMQovRGVzY2VudCAtMjIyCi9JdGFsaWNBbmdsZSAwCi9TdGVtViA2OQovWEhlaWdo
dCA0MzEKL0NoYXJTZXQgKC9DL0gvTy9QL1MvVC9hL2FtcGVyc2FuZC9hc3Rlcmlzay9iL2MvY29s
b24vZC9lL2VxdWFsL2YvZm91ci9nL2gvaHlwaGVuL2kvay9sL20vbi9uaW5lL28vb25lL3AvcGVy
aW9kL3Ivcy9zbGFzaC90L3R3by91L3VuZGVyc2NvcmUvdi93L3gveS96KQovRm9udEZpbGUgMjEx
IDAgUgo+PiBlbmRvYmoKMjEzIDAgb2JqIDw8Ci9MZW5ndGgxIDEwNzEKL0xlbmd0aDIgNDA2Mwov
TGVuZ3RoMyAwCi9MZW5ndGggNDczNyAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJl
YW0KeNqtlmc4XGvXxwkJ0YXoZKthhDEYPZHoRCdRog0z6piRMYMheg0iokUI0YJEF10keu9E9HD0
ElFTEN5JznvO8Zzn63PtL/u31rrX+l/r/u/r2vzc+kYit+BoW4QaGoUVgYhC5ABlHWNjWQAiKkbB
z6+MQcCwTmiUCgyLkAMgsrIQ4BbOARAXAyBScpJScuKSFPyAMtoNj3FycMQCgspCv4qkgVuuCIyT
HQwF6MCwjghXQg87GBIwQts5IbB4UeAWEgkY/jrhDhgi3BEYDwRclAICAeBOdljAFuHghKIA/xKk
ibJHA9J/huE4t79SHgiMO0EUIEgQKQQQJMLRKCQegCPsKcC6aMIsBEHJ/0LUv5ur4ZBIXZjrr/a/
lvRfaZirExL//wVoVzccFoEBdNBwBAb171ITxJ/adBBwJ5zrv7OaWBjSye4WygGJAMT+DDm5qzl5
IeD6Tlg7RwCLwSF+hxEo+L81ENb2WwHYSF3d5O4d4T+v83dOH+aEwhrj3f5u+qv4N0P+YcJyME5e
wD0xUTExCKGQ8Pz1ZvmvWaooOzTcCUXwA1QKgGEwMDwFwRgEggI+EMAJBUd4AQgvgl6wKAqNJRwB
CCvxBezRGIpft0m4EjDsV+g3SUkSCPs3ysoAYNt/SBYA2/1NUELODo0kOOCvCERMDADDzyAEACPO
oDgAtj+DEgDY4QwSJjueQSgAdjqDhGHIM0hQ4voPEkwLRp9BwiC3v1FSikAEz6HPKIMQhmHOIGGY
+z8HCBtxR8Lcz6iBEHpgzyChAncGCeI8ziBBnOdv/G9TKCmhvXxEpAARcQkJACopDkjJyvj+R5kd
DoNBoLC/vzaCsf5ieyeCCxEIL4QdxcQY2k4+xPlpVdgrP9XswdfnQcRKDtWxum8aRxoog8efECNz
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
s3m9gSjIMXBZJVR+hZ12L86lJAdHXAOp2BiyFKAusTqU7UgqUm23TlydNwFrq/Wfj0tfkTZSHw5C
EV8vyNo7uUF+rzbOPt9w/qf2UQoT1x1r1VL64CRGgTdTpl0KjbATOxsKZXpetVdBUx9Dzwtk//ip
mph2saDcBSXQUdE/rcponTokHm3F9UVOx6yTCJWT7b3OTnIRttHygNUEs2t22qJD7X7g8ZjuWNQZ
nOKtsPCh/trgnHQsq37tg7KWS5+IyCYs/Y+ZE3oaJFWteQMbN6RjPz5nVWM+L7+amVqfcAwNhu/G
Xz7XrP5xscOZe12jb8Vz+bMGQ8tsznpfthyV40WibUXwtTf1PbybCtP89L6PneV6xy/bit14I/f0
euEgdH5C0KEvdnRZJDjOt2zymwwPi0L5QPvLWlZ0Jfm4Vl6fFwvXpdTANTIjFa/YJx/XKZ9xhcp5
ShtJLfP0P/iGRTaqCQZltWbGjj5fyioOfsy0lp3hMr03Rak5kGcW3PGIfy9jY6HA3NX8g9k31w/D
ZaJO/wf1f1UxCmVuZHN0cmVhbQplbmRvYmoKMjE0IDAgb2JqIDw8Ci9UeXBlIC9Gb250RGVzY3Jp
cHRvcgovRm9udE5hbWUgL1NHR1dWVStDTVRUOQovRmxhZ3MgNAovRm9udEJCb3ggWy02IC0yMzMg
NTQyIDY5OF0KL0FzY2VudCA2MTEKL0NhcEhlaWdodCA2MTEKL0Rlc2NlbnQgLTIyMgovSXRhbGlj
QW5nbGUgMAovU3RlbVYgNzQKL1hIZWlnaHQgNDMxCi9DaGFyU2V0ICgvYS9hdC9iL2MvY29sb24v
ZC9lL2YvZy9oL2kvbC9tL28vcC9wZXJpb2Qvci9zL3NsYXNoL3QvdS92L3cpCi9Gb250RmlsZSAy
MTMgMCBSCj4+IGVuZG9iago1MSAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEK
L0Jhc2VGb250IC9XUVFYUlkrQ01CWDEwCi9Gb250RGVzY3JpcHRvciAxODggMCBSCi9GaXJzdENo
YXIgNDUKL0xhc3RDaGFyIDEyMwovV2lkdGhzIDE3NiAwIFIKPj4gZW5kb2JqCjQgMCBvYmogPDwK
L1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvVVBZRUpQK0NNQlgxMgovRm9u
dERlc2NyaXB0b3IgMTkwIDAgUgovRmlyc3RDaGFyIDQ1Ci9MYXN0Q2hhciAxMTgKL1dpZHRocyAx
ODYgMCBSCj4+IGVuZG9iagoxMSAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEK
L0Jhc2VGb250IC9aVFJVSlArQ01CWDkKL0ZvbnREZXNjcmlwdG9yIDE5MiAwIFIKL0ZpcnN0Q2hh
ciA0NgovTGFzdENoYXIgMTE2Ci9XaWR0aHMgMTc5IDAgUgo+PiBlbmRvYmoKMTE3IDAgb2JqIDw8
Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL0lLUUtMWCtDTU1JMTAKL0Zv
bnREZXNjcmlwdG9yIDE5NCAwIFIKL0ZpcnN0Q2hhciAxMTYKL0xhc3RDaGFyIDExNgovV2lkdGhz
IDE3MyAwIFIKPj4gZW5kb2JqCjcgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUx
Ci9CYXNlRm9udCAvQUhDV09SK0NNTUk3Ci9Gb250RGVzY3JpcHRvciAxOTYgMCBSCi9GaXJzdENo
YXIgNTkKL0xhc3RDaGFyIDExNAovV2lkdGhzIDE4MyAwIFIKPj4gZW5kb2JqCjUgMCBvYmogPDwK
L1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvWUJGWk9DK0NNUjEwCi9Gb250
RGVzY3JpcHRvciAxOTggMCBSCi9GaXJzdENoYXIgMTEKL0xhc3RDaGFyIDEyMwovV2lkdGhzIDE4
NSAwIFIKPj4gZW5kb2JqCjggMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9C
YXNlRm9udCAvTVBaVktHK0NNUjYKL0ZvbnREZXNjcmlwdG9yIDIwMCAwIFIKL0ZpcnN0Q2hhciA0
OQovTGFzdENoYXIgNTYKL1dpZHRocyAxODIgMCBSCj4+IGVuZG9iago2IDAgb2JqIDw8Ci9UeXBl
IC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQgL1ZQV1JEUCtDTVI3Ci9Gb250RGVzY3Jp
cHRvciAyMDIgMCBSCi9GaXJzdENoYXIgNDkKL0xhc3RDaGFyIDU2Ci9XaWR0aHMgMTg0IDAgUgo+
PiBlbmRvYmoKOSAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0Jhc2VGb250
IC9aWERLRk0rQ01SOQovRm9udERlc2NyaXB0b3IgMjA0IDAgUgovRmlyc3RDaGFyIDExCi9MYXN0
Q2hhciAxMjcKL1dpZHRocyAxODEgMCBSCj4+IGVuZG9iagoxMDYgMCBvYmogPDwKL1R5cGUgL0Zv
bnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvTFVJSUdGK0NNU1kxMAovRm9udERlc2NyaXB0
b3IgMjA2IDAgUgovRmlyc3RDaGFyIDAKL0xhc3RDaGFyIDEwMwovV2lkdGhzIDE3NCAwIFIKPj4g
ZW5kb2JqCjEyIDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQg
L1RCRU1ETCtDTVRJMTAKL0ZvbnREZXNjcmlwdG9yIDIwOCAwIFIKL0ZpcnN0Q2hhciA0MAovTGFz
dENoYXIgMTIxCi9XaWR0aHMgMTc4IDAgUgo+PiBlbmRvYmoKMTggMCBvYmogPDwKL1R5cGUgL0Zv
bnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvRllQWEpVK0NNVEk5Ci9Gb250RGVzY3JpcHRv
ciAyMTAgMCBSCi9GaXJzdENoYXIgNDYKL0xhc3RDaGFyIDEyMQovV2lkdGhzIDE3NyAwIFIKPj4g
ZW5kb2JqCjY1IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovQmFzZUZvbnQg
L1lLUktVVytDTVRUMTAKL0ZvbnREZXNjcmlwdG9yIDIxMiAwIFIKL0ZpcnN0Q2hhciAzOAovTGFz
dENoYXIgMTIyCi9XaWR0aHMgMTc1IDAgUgo+PiBlbmRvYmoKMTAgMCBvYmogPDwKL1R5cGUgL0Zv
bnQKL1N1YnR5cGUgL1R5cGUxCi9CYXNlRm9udCAvU0dHV1ZVK0NNVFQ5Ci9Gb250RGVzY3JpcHRv
ciAyMTQgMCBSCi9GaXJzdENoYXIgNDYKL0xhc3RDaGFyIDExOQovV2lkdGhzIDE4MCAwIFIKPj4g
ZW5kb2JqCjEzIDAgb2JqIDw8Ci9UeXBlIC9QYWdlcwovQ291bnQgNgovUGFyZW50IDIxNSAwIFIK
L0tpZHMgWzIgMCBSIDE2IDAgUiA0OSAwIFIgNTMgMCBSIDU2IDAgUiA1OSAwIFJdCj4+IGVuZG9i
ago2NiAwIG9iaiA8PAovVHlwZSAvUGFnZXMKL0NvdW50IDYKL1BhcmVudCAyMTUgMCBSCi9LaWRz
IFs2MyAwIFIgNjggMCBSIDEwNCAwIFIgMTEwIDAgUiAxMTUgMCBSIDEyMSAwIFJdCj4+IGVuZG9i
agoxNTggMCBvYmogPDwKL1R5cGUgL1BhZ2VzCi9Db3VudCAzCi9QYXJlbnQgMjE1IDAgUgovS2lk
cyBbMTU2IDAgUiAxNjggMCBSIDE3MSAwIFJdCj4+IGVuZG9iagoyMTUgMCBvYmogPDwKL1R5cGUg
L1BhZ2VzCi9Db3VudCAxNQovS2lkcyBbMTMgMCBSIDY2IDAgUiAxNTggMCBSXQo+PiBlbmRvYmoK
MjE2IDAgb2JqIDw8Ci9UeXBlIC9DYXRhbG9nCi9QYWdlcyAyMTUgMCBSCj4+IGVuZG9iagoyMTcg
MCBvYmogPDwKL1Byb2R1Y2VyIChwZGZUZVgtMS40MC4zKQovQ3JlYXRvciAoVGVYKQovQ3JlYXRp
b25EYXRlIChEOjIwMTAwNTA0MjAxNTExKzAyJzAwJykKL01vZERhdGUgKEQ6MjAxMDA1MDQyMDE1
MTErMDInMDAnKQovVHJhcHBlZCAvRmFsc2UKL1BURVguRnVsbGJhbm5lciAoVGhpcyBpcyBwZGZU
ZVgsIFZlcnNpb24gMy4xNDE1OTItMS40MC4zLTIuMiAoV2ViMkMgNy41LjYpIGtwYXRoc2VhIHZl
cnNpb24gMy41LjYpCj4+IGVuZG9iagp4cmVmCjAgMjE4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAw
MDAwMjg0OCAwMDAwMCBuIAowMDAwMDAyNzQzIDAwMDAwIG4gCjAwMDAwMDAwMTUgMDAwMDAgbiAK
MDAwMDY3MTE2NCAwMDAwMCBuIAowMDAwNjcxNzM0IDAwMDAwIG4gCjAwMDA2NzIwMTQgMDAwMDAg
biAKMDAwMDY3MTU5MyAwMDAwMCBuIAowMDAwNjcxODc1IDAwMDAwIG4gCjAwMDA2NzIxNTMgMDAw
MDAgbiAKMDAwMDY3Mjg2NCAwMDAwMCBuIAowMDAwNjcxMzA2IDAwMDAwIG4gCjAwMDA2NzI0MzYg
MDAwMDAgbiAKMDAwMDY3MzAwNiAwMDAwMCBuIAowMDAwMDA0NzQ2IDAwMDAwIG4gCjAwMDAyNjI4
NTYgMDAwMDAgbiAKMDAwMDAwNDYzOCAwMDAwMCBuIAowMDAwMDAzMDA1IDAwMDAwIG4gCjAwMDA2
NzI1NzkgMDAwMDAgbiAKMDAwMDAxMDcxMSAwMDAwMCBuIAowMDAwMDEwOTIzIDAwMDAwIG4gCjAw
MDAwMTA5NTggMDAwMDAgbiAKMDAwMDAxMDk5MyAwMDAwMCBuIAowMDAwMDExMTcwIDAwMDAwIG4g
CjAwMDAyMDk2MjcgMDAwMDAgbiAKMDAwMDIxMDAwNCAwMDAwMCBuIAowMDAwMjQwOTc3IDAwMDAw
IG4gCjAwMDAyNDA5OTggMDAwMDAgbiAKMDAwMDI0MTg5MyAwMDAwMCBuIAowMDAwMjQyNzAxIDAw
MDAwIG4gCjAwMDAyNDI5NDAgMDAwMDAgbiAKMDAwMDI0MzQyMyAwMDAwMCBuIAowMDAwMjQzNDQ2
IDAwMDAwIG4gCjAwMDAyNDM0ODEgMDAwMDAgbiAKMDAwMDI0MzUwMSAwMDAwMCBuIAowMDAwMjQ4
MTM0IDAwMDAwIG4gCjAwMDAyNDgxNTYgMDAwMDAgbiAKMDAwMDI0ODE5MSAwMDAwMCBuIAowMDAw
MjQ5MjgyIDAwMDAwIG4gCjAwMDAyNDkzMDIgMDAwMDAgbiAKMDAwMDI0OTMyMiAwMDAwMCBuIAow
MDAwMjU5MTQzIDAwMDAwIG4gCjAwMDAyNjE4NTggMDAwMDAgbiAKMDAwMDI2MTg3OSAwMDAwMCBu
IAowMDAwMjYyNzc0IDAwMDAwIG4gCjAwMDAyNjI3OTQgMDAwMDAgbiAKMDAwMDI2MjgxNSAwMDAw
MCBuIAowMDAwMjYyODM2IDAwMDAwIG4gCjAwMDAyNjU4NjkgMDAwMDAgbiAKMDAwMDI2NTc2MSAw
MDAwMCBuIAowMDAwMjYyOTg2IDAwMDAwIG4gCjAwMDA2NzEwMjEgMDAwMDAgbiAKMDAwMDI2ODk5
MSAwMDAwMCBuIAowMDAwMjY4ODgzIDAwMDAwIG4gCjAwMDAyNjYwMTYgMDAwMDAgbiAKMDAwMDI3
MjEwOCAwMDAwMCBuIAowMDAwMjcyMDAwIDAwMDAwIG4gCjAwMDAyNjkxMDYgMDAwMDAgbiAKMDAw
MDI3NTI2NSAwMDAwMCBuIAowMDAwMjc1MTU3IDAwMDAwIG4gCjAwMDAyNzIyMjIgMDAwMDAgbiAK
MDAwMDI4MDMyNyAwMDAwMCBuIAowMDAwMjc4NjIzIDAwMDAwIG4gCjAwMDAyNzg1MTUgMDAwMDAg
biAKMDAwMDI3NTM4MCAwMDAwMCBuIAowMDAwNjcyNzIxIDAwMDAwIG4gCjAwMDA2NzMxMTUgMDAw
MDAgbiAKMDAwMDMwNzI2NCAwMDAwMCBuIAowMDAwMjgwMjE5IDAwMDAwIG4gCjAwMDAyNzg3OTMg
MDAwMDAgbiAKMDAwMDI4NTU4OSAwMDAwMCBuIAowMDAwMjg1ODAxIDAwMDAwIG4gCjAwMDAyODU4
MzYgMDAwMDAgbiAKMDAwMDI4NTg3MSAwMDAwMCBuIAowMDAwMjg2MDQ4IDAwMDAwIG4gCjAwMDAy
ODYyOTggMDAwMDAgbiAKMDAwMDI4NjU2MCAwMDAwMCBuIAowMDAwMjg2ODQzIDAwMDAwIG4gCjAw
MDAyODcwNjIgMDAwMDAgbiAKMDAwMDI4NzM0NSAwMDAwMCBuIAowMDAwMjg3MzY2IDAwMDAwIG4g
CjAwMDAyODgxNzQgMDAwMDAgbiAKMDAwMDI4OTA2OSAwMDAwMCBuIAowMDAwMjg5MzA4IDAwMDAw
IG4gCjAwMDAyODk1NzMgMDAwMDAgbiAKMDAwMDI4OTU5MiAwMDAwMCBuIAowMDAwMjkxMDA0IDAw
MDAwIG4gCjAwMDAyOTEwMjMgMDAwMDAgbiAKMDAwMDI5MjMxOCAwMDAwMCBuIAowMDAwMjkyMzM4
IDAwMDAwIG4gCjAwMDAyOTUzNTggMDAwMDAgbiAKMDAwMDI5NTM3NyAwMDAwMCBuIAowMDAwMjk1
OTMwIDAwMDAwIG4gCjAwMDAyOTU5NTAgMDAwMDAgbiAKMDAwMDI5ODEwNSAwMDAwMCBuIAowMDAw
Mjk4MTI1IDAwMDAwIG4gCjAwMDAyOTgxNDUgMDAwMDAgbiAKMDAwMDMwNzEzNiAwMDAwMCBuIAow
MDAwMzA3MTU3IDAwMDAwIG4gCjAwMDAzMDcxNzggMDAwMDAgbiAKMDAwMDMwNzE5OSAwMDAwMCBu
IAowMDAwMzA3MjIwIDAwMDAwIG4gCjAwMDAzMDcyNDIgMDAwMDAgbiAKMDAwMDMxMDMyNCAwMDAw
MCBuIAowMDAwMzEwMjEzIDAwMDAwIG4gCjAwMDAzMDc0MTggMDAwMDAgbiAKMDAwMDY3MjI5MyAw
MDAwMCBuIAowMDAwMzEzMTgyIDAwMDAwIG4gCjAwMDAzMTg1MDIgMDAwMDAgbiAKMDAwMDMyMzQ4
OSAwMDAwMCBuIAowMDAwMzEzMDcxIDAwMDAwIG4gCjAwMDAzMTA0ODUgMDAwMDAgbiAKMDAwMDMx
ODIxOCAwMDAwMCBuIAowMDAwMzIzMjEwIDAwMDAwIG4gCjAwMDAzMjY1MzggMDAwMDAgbiAKMDAw
MDMyNjQyNyAwMDAwMCBuIAowMDAwMzIzNjUwIDAwMDAwIG4gCjAwMDA2NzE0NDggMDAwMDAgbiAK
MDAwMDMyODcxOSAwMDAwMCBuIAowMDAwNTI3MzE0IDAwMDAwIG4gCjAwMDA1MjUxMDYgMDAwMDAg
biAKMDAwMDMyODYwOCAwMDAwMCBuIAowMDAwMzI2Njc3IDAwMDAwIG4gCjAwMDAzMzEyNzMgMDAw
MDAgbiAKMDAwMDMzMTQ5NCAwMDAwMCBuIAowMDAwMzMxNTMxIDAwMDAwIG4gCjAwMDAzMzE1Njgg
MDAwMDAgbiAKMDAwMDMzMTc0OCAwMDAwMCBuIAowMDAwMzMxOTM0IDAwMDAwIG4gCjAwMDA0NzQy
OTYgMDAwMDAgbiAKMDAwMDQ5NzMxMCAwMDAwMCBuIAowMDAwNTEyNDI1IDAwMDAwIG4gCjAwMDA1
MTI0NDcgMDAwMDAgbiAKMDAwMDUxMzM0NCAwMDAwMCBuIAowMDAwNTE0MTU0IDAwMDAwIG4gCjAw
MDA1MTQzODMgMDAwMDAgbiAKMDAwMDUxNDY2OSAwMDAwMCBuIAowMDAwNTE0OTA3IDAwMDAwIG4g
CjAwMDA1MTUwMTcgMDAwMDAgbiAKMDAwMDUxNTA0MSAwMDAwMCBuIAowMDAwNTE1MDc4IDAwMDAw
IG4gCjAwMDA1MTUxMDEgMDAwMDAgbiAKMDAwMDUxNTEzOCAwMDAwMCBuIAowMDAwNTE1NDE5IDAw
MDAwIG4gCjAwMDA1MTU0NDIgMDAwMDAgbiAKMDAwMDUxNTQ2MyAwMDAwMCBuIAowMDAwNTE1NDg0
IDAwMDAwIG4gCjAwMDA1MTk4ODcgMDAwMDAgbiAKMDAwMDUyMTM4MiAwMDAwMCBuIAowMDAwNTI0
MTAyIDAwMDAwIG4gCjAwMDA1MjQ5OTkgMDAwMDAgbiAKMDAwMDUyNTAxOSAwMDAwMCBuIAowMDAw
NTI1MDQxIDAwMDAwIG4gCjAwMDA1MjUwNjMgMDAwMDAgbiAKMDAwMDUyNTA4NSAwMDAwMCBuIAow
MDAwNTY1MDE0IDAwMDAwIG4gCjAwMDA1MjcyMDIgMDAwMDAgbiAKMDAwMDUyNTI4NSAwMDAwMCBu
IAowMDAwNjczMjI5IDAwMDAwIG4gCjAwMDA1MjkzOTIgMDAwMDAgbiAKMDAwMDUyOTYyNSAwMDAw
MCBuIAowMDAwNTI5ODM2IDAwMDAwIG4gCjAwMDA1MzAyMzMgMDAwMDAgbiAKMDAwMDUzMDM0OCAw
MDAwMCBuIAowMDAwNTMwNjE5IDAwMDAwIG4gCjAwMDA1MzA4OTYgMDAwMDAgbiAKMDAwMDU0NjE2
MyAwMDAwMCBuIAowMDAwNTY3OTQwIDAwMDAwIG4gCjAwMDA1Njc4MjggMDAwMDAgbiAKMDAwMDU2
NTE0NiAwMDAwMCBuIAowMDAwNTcxMjUzIDAwMDAwIG4gCjAwMDA1NzExNDEgMDAwMDAgbiAKMDAw
MDU2ODA0MyAwMDAwMCBuIAowMDAwNTcxMzQ2IDAwMDAwIG4gCjAwMDA1NzEzNzEgMDAwMDAgbiAK
MDAwMDU3MTk3MSAwMDAwMCBuIAowMDAwNTcyMzMwIDAwMDAwIG4gCjAwMDA1NzI3ODUgMDAwMDAg
biAKMDAwMDU3MzIzNyAwMDAwMCBuIAowMDAwNTczNzMwIDAwMDAwIG4gCjAwMDA1NzQxNzMgMDAw
MDAgbiAKMDAwMDU3NDQ4OCAwMDAwMCBuIAowMDAwNTc1MTc4IDAwMDAwIG4gCjAwMDA1NzUyNDUg
MDAwMDAgbiAKMDAwMDU3NTYwMSAwMDAwMCBuIAowMDAwNTc1NjY4IDAwMDAwIG4gCjAwMDA1NzYy
OTUgMDAwMDAgbiAKMDAwMDU3NjczMCAwMDAwMCBuIAowMDAwNTg1NTQzIDAwMDAwIG4gCjAwMDA1
ODU4NjYgMDAwMDAgbiAKMDAwMDU5MzQ0NiAwMDAwMCBuIAowMDAwNTkzNzcyIDAwMDAwIG4gCjAw
MDA1OTg3MzkgMDAwMDAgbiAKMDAwMDU5OTAyOSAwMDAwMCBuIAowMDAwNjAwNzQxIDAwMDAwIG4g
CjAwMDA2MDA5NjMgMDAwMDAgbiAKMDAwMDYwMzA2NCAwMDAwMCBuIAowMDAwNjAzMjkxIDAwMDAw
IG4gCjAwMDA2MTkxNTcgMDAwMDAgbiAKMDAwMDYxOTY0NiAwMDAwMCBuIAowMDAwNjIyNjIyIDAw
MDAwIG4gCjAwMDA2MjI4NzggMDAwMDAgbiAKMDAwMDYyNTg0NSAwMDAwMCBuIAowMDAwNjI2MTAx
IDAwMDAwIG4gCjAwMDA2NDAzNDYgMDAwMDAgbiAKMDAwMDY0MDgzNyAwMDAwMCBuIAowMDAwNjQy
NDU5IDAwMDAwIG4gCjAwMDA2NDI3MDYgMDAwMDAgbiAKMDAwMDY1MjA4OSAwMDAwMCBuIAowMDAw
NjUyNDA0IDAwMDAwIG4gCjAwMDA2NTY2NTcgMDAwMDAgbiAKMDAwMDY1NjkxNSAwMDAwMCBuIAow
MDAwNjY1NTMzIDAwMDAwIG4gCjAwMDA2NjU4ODkgMDAwMDAgbiAKMDAwMDY3MDc0NiAwMDAwMCBu
IAowMDAwNjczMzIyIDAwMDAwIG4gCjAwMDA2NzMzOTggMDAwMDAgbiAKMDAwMDY3MzQ1MSAwMDAw
MCBuIAp0cmFpbGVyCjw8IC9TaXplIDIxOAovUm9vdCAyMTYgMCBSCi9JbmZvIDIxNyAwIFIKL0lE
IFs8N0RFQUQ3MTkzMTlBN0M2QUNFNzRCOTBCNkQ1QzkyRjA+IDw3REVBRDcxOTMxOUE3QzZBQ0U3
NEI5MEI2RDVDOTJGMD5dID4+CnN0YXJ0eHJlZgo2NzM3MDYKJSVFT0YK

--Apple-Mail-7-973792869
Content-Type: text/html; charset="WINDOWS-1252"
Content-Transfer-Encoding: quoted-printable

<html><body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
-webkit-line-break: after-white-space; "><br><br><br>Please let me know =
your =
thoughts/comments/questions,&nbsp;thx!<br><br>Vlad<div><br></div><div><br>=
<div apple-content-edited=3D"true"> <span class=3D"Apple-style-span" =
style=3D"border-collapse: separate; color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: medium; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; =
white-space: normal; widows: 2; word-spacing: 0px; =
-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: =
0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0px; "><div style=3D"word-wrap: =
break-word; -webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space; "><span class=3D"Apple-style-span" =
style=3D"border-collapse: separate; color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: medium; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; =
widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; =
-webkit-border-vertical-spacing: 0px; =
-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0px; "><div style=3D"word-wrap: =
break-word; -webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space; "><div><div><font class=3D"Apple-style-span" =
face=3D"Courier" size=3D"3"><span class=3D"Apple-style-span" =
style=3D"font-size: 12px; ">---</span></font></div><div><font =
class=3D"Apple-style-span" face=3D"Courier" size=3D"3"><span =
class=3D"Apple-style-span" style=3D"font-size: 12px; ">vlad m. trifa - =
institute for pervasive computing</span></font></div><div><font =
class=3D"Apple-style-span" face=3D"Courier" size=3D"3"><span =
class=3D"Apple-style-span" style=3D"font-size: 12px; ">swiss federal =
institute of technology, eth zurich</span></font></div><div><font =
class=3D"Apple-style-span" face=3D"Courier" size=3D"3"><span =
class=3D"Apple-style-span" style=3D"font-size: 12px; ">phone: +41 44 632 =
08 62 -- web: <a =
href=3D"http://www.vladtrifa.com">www.vladtrifa.com</a></span></font></div=
></div></div></span></div></span> </div><br><div><div>On Jun 4, 2010, at =
12:00 AM, Stuber, Michael wrote:</div><br =
class=3D"Apple-interchange-newline"><blockquote type=3D"cite"><span =
class=3D"Apple-style-span" style=3D"border-collapse: separate; color: =
rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: =
normal; font-variant: normal; font-weight: normal; letter-spacing: =
normal; line-height: normal; orphans: 2; text-align: auto; text-indent: =
0px; text-transform: none; white-space: normal; widows: 2; word-spacing: =
0px; -webkit-border-horizontal-spacing: 0px; =
-webkit-border-vertical-spacing: 0px; =
-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0px; "><div bgcolor=3D"white" =
lang=3D"EN-US" link=3D"blue" vlink=3D"purple"><div class=3D"Section1"><div=
 style=3D"margin-right: 0in; margin-left: 0in; font-size: 12pt; =
font-family: 'Times New Roman', serif; color: black; margin-top: 0in; =
margin-bottom: 0.0001pt; "><span style=3D"font-size: 11pt; font-family: =
Calibri, sans-serif; color: rgb(31, 73, 125); ">I think you=92ve =
captured it well, though my hope is that the transaction models aren=92t =
actually that far apart.&nbsp; Clearly I favor approach #2.&nbsp; I =
don=92t believe we need HTTP for embedded.&nbsp; If folks want HTTP for =
embedded devices, run HTTP, and tune it as much as you reasonable =
can.&nbsp; I believe we need a protocol that addresses the unique needs =
of the embedded/constrained space as a primary goal.&nbsp; Mapping to =
HTTP is necessary and desired, as it allows these devices to easily tie =
into the larger internet, but it is reasonable to expect that the device =
that bridges the gap should have the resources to facilitate the =
conversion.<o:p></o:p></span></div><div style=3D"margin-right: 0in; =
margin-left: 0in; font-size: 12pt; font-family: 'Times New Roman', =
serif; color: black; margin-top: 0in; margin-bottom: 0.0001pt; "><span =
style=3D"font-size: 11pt; font-family: Calibri, sans-serif; color: =
rgb(31, 73, 125); "><o:p>&nbsp;</o:p></span></div><div><div =
style=3D"border-right-style: none; border-bottom-style: none; =
border-left-style: none; border-width: initial; border-color: initial; =
border-top-style: solid; border-top-color: rgb(181, 196, 223); =
border-top-width: 1pt; padding-top: 3pt; padding-right: 0in; =
padding-bottom: 0in; padding-left: 0in; "><div style=3D"margin-right: =
0in; margin-left: 0in; font-size: 12pt; font-family: 'Times New Roman', =
serif; color: black; margin-top: 0in; margin-bottom: 0.0001pt; =
"><b><span style=3D"font-size: 10pt; font-family: Tahoma, sans-serif; =
color: windowtext; ">From:</span></b><span style=3D"font-size: 10pt; =
font-family: Tahoma, sans-serif; color: windowtext; "><span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:core-bounces@ietf.org" style=3D"color: blue; =
text-decoration: underline; ">core-bounces@ietf.org</a><span =
class=3D"Apple-converted-space">&nbsp;</span>[<a =
href=3D"mailto:core-bounces@ietf.org" style=3D"color: blue; =
text-decoration: underline; ">mailto:core-bounces@ietf.org</a>]<span =
class=3D"Apple-converted-space">&nbsp;</span><b>On Behalf Of<span =
class=3D"Apple-converted-space">&nbsp;</span></b>Robert =
Cragie<br><b>Sent:</b><span =
class=3D"Apple-converted-space">&nbsp;</span>Thursday, June 03, 2010 =
12:59 PM<br><b>To:</b><span =
class=3D"Apple-converted-space">&nbsp;</span><a =
href=3D"mailto:core@ietf.org" style=3D"color: blue; text-decoration: =
underline; ">core@ietf.org</a><br><b>Subject:</b><span =
class=3D"Apple-converted-space">&nbsp;</span>Re: [core] Subscribe/Notify =
for CoAP<o:p></o:p></span></div></div></div><div style=3D"margin-right: =
0in; margin-left: 0in; font-size: 12pt; font-family: 'Times New Roman', =
serif; color: black; margin-top: 0in; margin-bottom: 0.0001pt; =
"><o:p>&nbsp;</o:p></div><div style=3D"margin-right: 0in; margin-left: =
0in; font-size: 12pt; font-family: 'Times New Roman', serif; color: =
black; margin-top: 0in; margin-bottom: 0.0001pt; ">HTTP was designed to =
work on a synchronous client/server model. Whilst that may suit desktop =
PC's running browsers and servers running httpd, it is not entirely =
appropriate for M2M. The plethora of schemes to implement push =
processing for HTTP (all incompatible) goes to show that there is no one =
clean solution for this and most of the ones I have looked at are no =
more than ingenious kludges to get HTTP to do something it isn't used to =
doing. A lot of them already use HTTP asynchronously, thus moving away =
from the traditional usage model. Even then, most of them are there to =
service server-to-server transactions or web mashups etc. and don't =
really address the requirements for distributed control entities e.g. =
sensors and actuators (to use abstract terms), especially those built on =
constrained embedded systems.<br><br>We seem to be at a fork in the road =
now with the two paths of:<o:p></o:p></div><ol start=3D"1" type=3D"1" =
style=3D"margin-bottom: 0in; "><li class=3D"MsoNormal" =
style=3D"margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; =
margin-left: 0in; font-size: 12pt; font-family: 'Times New Roman', =
serif; color: black; ">Basing CoAP on the HTTP transaction =
model<o:p></o:p></li><li class=3D"MsoNormal" style=3D"margin-top: 0in; =
margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: =
12pt; font-family: 'Times New Roman', serif; color: black; ">Basing CoAP =
on a more typical M2M transaction model<o:p></o:p></li></ol><div =
style=3D"margin-right: 0in; margin-left: 0in; font-size: 12pt; =
font-family: 'Times New Roman', serif; color: black; margin-top: 0in; =
margin-bottom: 0.0001pt; ">The advantage of using (1) would be an easier =
job at a gateway node. The clear disadvantage of (1) is that it doesn't =
map well to the threading models typically used in embedded systems (see =
my earlier post). It could be made to map but there will inevitably have =
to be some additional specification over the underlying communication to =
fit embedded device models. This will then become in effect yet another =
RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).<br><br>The =
advantage of (2) is that it gives an opportunity to model transactions =
more closely to those typical to an embedded environment. There is =
nothing to prevent this model extending into the web generally using =
translations at a gateway or indeed building wider CoAP systems in the =
internet which can handle the asynchronous multi-threaded transaction =
models natively.<br><br>In a nutshell, using (1) is propagating the =
status quo, which is by no means a bad thing, but I am not sure if it is =
appropriate for CORE. (2) is acknowledging the unique properties of =
constrained and embedded environments and building a transaction model =
more appropriate to such devices.<br><br>Robert<o:p></o:p></div><div><p =
class=3D"name" style=3D"margin-right: 0in; margin-left: 0in; font-size: =
12pt; font-family: Verdana, sans-serif; color: black; ">Robert Cragie =
(Pacific Gas &amp; Electric)<o:p></o:p></p><p style=3D"margin-right: =
0in; margin-left: 0in; font-size: 8pt; font-family: Verdana, sans-serif; =
color: black; ">Gridmerge Ltd.<br>89 Greenfield Crescent,<br>Wakefield, =
WF4 4WA, UK<br>+44 1924 910888<br>+1 415 513 0064<br><a =
href=3D"http://www.gridmerge.com/" style=3D"color: blue; =
text-decoration: underline; =
">http://www.gridmerge.com</a><o:p></o:p></p></div><div =
style=3D"margin-right: 0in; margin-left: 0in; font-size: 12pt; =
font-family: 'Times New Roman', serif; color: black; margin-top: 0in; =
margin-bottom: 0.0001pt; "><br>On 03/06/2010 3:31 AM, Richard Kelsey =
wrote:<o:p></o:p></div><blockquote style=3D"margin-top: 5pt; =
margin-bottom: 5pt; "><pre style=3D"margin-top: 0in; margin-right: 0in; =
margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; font-family: =
'Courier New'; color: black; ">Date: Wed, 02 Jun 2010 20:17:17 =
-0400<o:p></o:p></pre><pre style=3D"margin-top: 0in; margin-right: 0in; =
margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; font-family: =
'Courier New'; color: black; ">From: Paul Duffy <a =
href=3D"mailto:paduffy@cisco.com" style=3D"color: blue; text-decoration: =
underline; ">&lt;paduffy@cisco.com&gt;</a><o:p></o:p></pre><pre =
style=3D"margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; =
margin-left: 0in; font-size: 10pt; font-family: 'Courier New'; color: =
black; "><o:p>&nbsp;</o:p></pre><pre style=3D"margin-top: 0in; =
margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: =
10pt; font-family: 'Courier New'; color: black; ">My understanding is =
that COAP is directed to the WEB of things.&nbsp; I take =
<o:p></o:p></pre><pre style=3D"margin-top: 0in; margin-right: 0in; =
margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; font-family: =
'Courier New'; color: black; ">that to mean going with the grain of =
pervasively&nbsp; deployed WEB <o:p></o:p></pre><pre style=3D"margin-top: =
0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; =
font-size: 10pt; font-family: 'Courier New'; color: black; =
">infrastructure.&nbsp; Unless there is an overwhelming compelling =
reason to do <o:p></o:p></pre><pre style=3D"margin-top: 0in; =
margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: =
10pt; font-family: 'Courier New'; color: black; ">otherwise, IMO COAP =
needs to implement a strict subset of HTTP <o:p></o:p></pre><pre =
style=3D"margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; =
margin-left: 0in; font-size: 10pt; font-family: 'Courier New'; color: =
black; ">semantics.&nbsp; Otherwise, we open the door to complexity re: =
translating <o:p></o:p></pre><pre style=3D"margin-top: 0in; =
margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: =
10pt; font-family: 'Courier New'; color: black; ">HTTP/COAP, and history =
has shown complex app gateways will always be a <o:p></o:p></pre><pre =
style=3D"margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; =
margin-left: 0in; font-size: 10pt; font-family: 'Courier New'; color: =
black; ">challenge.<o:p></o:p></pre><pre style=3D"margin-top: 0in; =
margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: =
10pt; font-family: 'Courier New'; color: black; =
"><o:p>&nbsp;</o:p></pre><pre style=3D"margin-top: 0in; margin-right: =
0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; =
font-family: 'Courier New'; color: black; ">There are several ways to =
support pub/sub using stock HTTP methods.&nbsp; I <o:p></o:p></pre><pre =
style=3D"margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; =
margin-left: 0in; font-size: 10pt; font-family: 'Courier New'; color: =
black; ">suggest we do so.<o:p></o:p></pre><pre style=3D"margin-top: =
0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; =
font-size: 10pt; font-family: 'Courier New'; color: black; =
">&nbsp;&nbsp;&nbsp; <o:p></o:p></pre></blockquote><pre =
style=3D"margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; =
margin-left: 0in; font-size: 10pt; font-family: 'Courier New'; color: =
black; ">Given the variety of ways people do pub/sub using stock =
HTTP<o:p></o:p></pre><pre style=3D"margin-top: 0in; margin-right: 0in; =
margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; font-family: =
'Courier New'; color: black; ">methods, it isn't clear that we can keep =
both COAP and the<o:p></o:p></pre><pre style=3D"margin-top: 0in; =
margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: =
10pt; font-family: 'Courier New'; color: black; ">COAP/HTTP gateways =
simple while still supporting multiple<o:p></o:p></pre><pre =
style=3D"margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; =
margin-left: 0in; font-size: 10pt; font-family: 'Courier New'; color: =
black; ">pub/sub methods on the HTTP side.&nbsp; By making the =
translation<o:p></o:p></pre><pre style=3D"margin-top: 0in; margin-right: =
0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; =
font-family: 'Courier New'; color: black; ">of one form of HTTP pub/sub =
easy, we could easily make the<o:p></o:p></pre><pre style=3D"margin-top: =
0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; =
font-size: 10pt; font-family: 'Courier New'; color: black; ">translation =
of others harder.<o:p></o:p></pre><pre style=3D"margin-top: 0in; =
margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: =
10pt; font-family: 'Courier New'; color: black; =
"><o:p>&nbsp;</o:p></pre><pre style=3D"margin-top: 0in; margin-right: =
0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; =
font-family: 'Courier New'; color: black; ">If we want to have COAP/HTTP =
gateways that support different<o:p></o:p></pre><pre style=3D"margin-top: =
0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; =
font-size: 10pt; font-family: 'Courier New'; color: black; ">HTTP =
pub/sub methods, then it might be better to add =
pub/sub<o:p></o:p></pre><pre style=3D"margin-top: 0in; margin-right: =
0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; =
font-family: 'Courier New'; color: black; ">to COAP directly, in a way =
that is not a strict subset of<o:p></o:p></pre><pre style=3D"margin-top: =
0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; =
font-size: 10pt; font-family: 'Courier New'; color: black; =
">HTTP.<o:p></o:p></pre><pre style=3D"margin-top: 0in; margin-right: =
0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; =
font-family: 'Courier New'; color: black; "><o:p>&nbsp;</o:p></pre><pre =
style=3D"margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; =
margin-left: 0in; font-size: 10pt; font-family: 'Courier New'; color: =
black; ">Do we support several ways of doing pub/sub in HTTP, or =
just<o:p></o:p></pre><pre style=3D"margin-top: 0in; margin-right: 0in; =
margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; font-family: =
'Courier New'; color: black; ">one?&nbsp; If we do pick just one, can =
others be easily translated<o:p></o:p></pre><pre style=3D"margin-top: =
0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; =
font-size: 10pt; font-family: 'Courier New'; color: black; ">into =
it?<o:p></o:p></pre><pre style=3D"margin-top: 0in; margin-right: 0in; =
margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; font-family: =
'Courier New'; color: black; =
">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -Richard =
Kelsey<o:p></o:p></pre><pre style=3D"margin-top: 0in; margin-right: 0in; =
margin-bottom: 0.0001pt; margin-left: 0in; font-size: 10pt; font-family: =
'Courier New'; color: black; =
">_______________________________________________<o:p></o:p></pre><pre =
style=3D"margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; =
margin-left: 0in; font-size: 10pt; font-family: 'Courier New'; color: =
black; ">core mailing list<o:p></o:p></pre><pre style=3D"margin-top: =
0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; =
font-size: 10pt; font-family: 'Courier New'; color: black; "><a =
href=3D"mailto:core@ietf.org" style=3D"color: blue; text-decoration: =
underline; ">core@ietf.org</a><o:p></o:p></pre><pre style=3D"margin-top: =
0in; margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; =
font-size: 10pt; font-family: 'Courier New'; color: black; "><a =
href=3D"https://www.ietf.org/mailman/listinfo/core" style=3D"color: =
blue; text-decoration: underline; =
">https://www.ietf.org/mailman/listinfo/core</a><o:p></o:p></pre><pre =
style=3D"margin-top: 0in; margin-right: 0in; margin-bottom: 0.0001pt; =
margin-left: 0in; font-size: 10pt; font-family: 'Courier New'; color: =
black; "><o:p>&nbsp;</o:p></pre><pre style=3D"margin-top: 0in; =
margin-right: 0in; margin-bottom: 0.0001pt; margin-left: 0in; font-size: =
10pt; font-family: 'Courier New'; color: black; ">&nbsp; =
<o:p></o:p></pre></div>_______________________________________________<br>=
core mailing list<br><a href=3D"mailto:core@ietf.org" style=3D"color: =
blue; text-decoration: underline; ">core@ietf.org</a><br><a =
href=3D"https://www.ietf.org/mailman/listinfo/core" style=3D"color: =
blue; text-decoration: underline; =
">https://www.ietf.org/mailman/listinfo/core</a><br></div></span></blockqu=
ote></div><br></div></body></html>=

--Apple-Mail-7-973792869--

--Apple-Mail-6-973792868--

From robert.cragie@gridmerge.com  Fri Jun  4 03:56:06 2010
Return-Path: <robert.cragie@gridmerge.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 928483A67A7 for <core@core3.amsl.com>; Fri,  4 Jun 2010 03:56:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.615
X-Spam-Level: 
X-Spam-Status: No, score=-0.615 tagged_above=-999 required=5 tests=[AWL=0.383,  BAYES_50=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id u2XYtwPPtI0t for <core@core3.amsl.com>; Fri,  4 Jun 2010 03:56:05 -0700 (PDT)
Received: from mail78.extendcp.co.uk (mail78.extendcp.co.uk [79.170.40.78]) by core3.amsl.com (Postfix) with ESMTP id C390C3A635F for <core@ietf.org>; Fri,  4 Jun 2010 03:56:00 -0700 (PDT)
Received: from client-86-29-249-143.pete.adsl.virginmedia.com ([86.29.249.143] helo=[192.168.1.70]) by mail78.extendcp.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.71) id 1OKUYx-0005MA-PG for core@ietf.org; Fri, 04 Jun 2010 11:55:44 +0100
Message-ID: <4C08DBAC.8030108@gridmerge.com>
Date: Fri, 04 Jun 2010 11:55:40 +0100
From: Robert Cragie <robert.cragie@gridmerge.com>
Organization: Gridmerge Ltd.
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100317 Lightning/1.0b1 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>	<4C06F48D.1020600@cisco.com>	<87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<4C08098E.50305@gridmerge.com> <4C083143.1060905@cisco.com>
In-Reply-To: <4C083143.1060905@cisco.com>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms020207020509050309040204"
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: robert.cragie@gridmerge.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 10:56:06 -0000

This is a cryptographically signed message in MIME format.

--------------ms020207020509050309040204
Content-Type: multipart/alternative;
 boundary="------------060207050505020708080109"

This is a multi-part message in MIME format.
--------------060207050505020708080109
Content-Type: text/plain; charset=windows-1251; format=flowed
Content-Transfer-Encoding: quoted-printable

Hi Paul,

I'm not overly fond of SUBSCRIBE as a method either, to be honest. I=20
think to be truly RESTful, there are two approaches to subscription:

   1. Don't separate it from the resource and use synchronous
      request/response with long polling. The subscription is effected
      by a blocking wait on the resource which gets responded to when it
      has been updated.
   2. Have an explicit separate subscription resource where a notify
      resource is registered and to where notifications are sent

(1) is more elegant in some respects because in (2) there is a logical=20
separation from the subscription and the resource itself. In (1), the=20
subscription is effectively dynamic, i.e. the server has to keep tags on =

the client requests and respond to all requests as appropriate. There=20
are then variations with respect to the delivery mechanism, e.g. update=20
only (queue in client potentially), queue in server, streaming=20
(multipart delivery).

If you consider the transaction models, I still think there is a benefit =

for adding the notify message type to request/response, i.e. an=20
asynchronous message which is not paired with any other message,=20
although I accept it is not strictly necessary. This has benefits for=20
streaming models etc. With regard to the actual methods, I think we=20
should stick to the CRUD methods used in RESTful architectures.

Robert

Robert Cragie (Pacific Gas & Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
http://www.gridmerge.com <http://www.gridmerge.com/>


On 03/06/2010 11:48 PM, Paul Duffy wrote:
> We seem to be at a fork in the road now with the two paths of:
>>
>>    1. Basing CoAP on the HTTP transaction model
>>    2. Basing CoAP on a more typical M2M transaction model
>>
>> The advantage of using (1) would be an easier job at a gateway node.=20
>> The clear disadvantage of (1) is that it doesn't map well to the=20
>> threading models typically used in embedded systems (see my earlier=20
>> post). It could be made to map but there will inevitably have to be=20
>> some additional specification over the underlying communication to=20
>> fit embedded device models. This will then become in effect yet=20
>> another RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).
>>
>> The advantage of (2) is that it gives an opportunity to model=20
>> transactions more closely to those typical to an embedded=20
>> environment. There is nothing to prevent this model extending into=20
>> the web generally using translations at a gateway or indeed building=20
>> wider CoAP systems in the internet which can handle the asynchronous=20
>> multi-threaded transaction models natively.
>>
>> In a nutshell, using (1) is propagating the status quo, which is by=20
>> no means a bad thing,=20
>
> Which is my main issue.
>
> 1. HTTP semantics are not a perfect fit, but IMO (like it or not) the=20
> WEB of things needs to align with those semantics (warts and all). =20
> Its a close enough, good enough fit.
>
> 2. Subscriptions are resources.  They are created, have a lifetime,=20
> can be enumerated, and are destroyed.  From coap-2 "servers keep track =

> of subscriptions...", "a subscription SHOULD be removed...", etc. =20
> Subscriptions are resources.
>
> Example. I use SUBSCRIBE to create a subscription.  Would I=20
> subsequently do GET to enumerate?  DELETE to remove?  PUT to modify? =20
> SUBSCRIBE method seems a RESTfully twisted special case of POST.
>
> Cheers
>
>
>> but I am not sure if it is appropriate for CORE. (2) is acknowledging =

>> the unique properties of constrained and embedded environments and=20
>> building a transaction model more appropriate to such devices.
>>
>> Robert
>>
>> Robert Cragie (Pacific Gas & Electric)
>>
>> Gridmerge Ltd.
>> 89 Greenfield Crescent,
>> Wakefield, WF4 4WA, UK
>> +44 1924 910888
>> +1 415 513 0064
>> http://www.gridmerge.com <http://www.gridmerge.com/>
>>
>>
>> On 03/06/2010 3:31 AM, Richard Kelsey wrote:
>>>> Date: Wed, 02 Jun 2010 20:17:17 -0400
>>>> From: Paul Duffy<paduffy@cisco.com>
>>>>
>>>> My understanding is that COAP is directed to the WEB of things.  I t=
ake
>>>> that to mean going with the grain of pervasively  deployed WEB
>>>> infrastructure.  Unless there is an overwhelming compelling reason t=
o do
>>>> otherwise, IMO COAP needs to implement a strict subset of HTTP
>>>> semantics.  Otherwise, we open the door to complexity re: translatin=
g
>>>> HTTP/COAP, and history has shown complex app gateways will always be=
 a
>>>> challenge.
>>>>
>>>> There are several ways to support pub/sub using stock HTTP methods. =
 I
>>>> suggest we do so.
>>>>     =20
>>> Given the variety of ways people do pub/sub using stock HTTP
>>> methods, it isn't clear that we can keep both COAP and the
>>> COAP/HTTP gateways simple while still supporting multiple
>>> pub/sub methods on the HTTP side.  By making the translation
>>> of one form of HTTP pub/sub easy, we could easily make the
>>> translation of others harder.
>>>
>>> If we want to have COAP/HTTP gateways that support different
>>> HTTP pub/sub methods, then it might be better to add pub/sub
>>> to COAP directly, in a way that is not a strict subset of
>>> HTTP.
>>>
>>> Do we support several ways of doing pub/sub in HTTP, or just
>>> one?  If we do pick just one, can others be easily translated
>>> into it?
>>>                                  -Richard Kelsey
>>> _______________________________________________
>>> core mailing list
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>>   =20
>>
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>   =20
>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>   =20

--------------060207050505020708080109
Content-Type: text/html; charset=windows-1251
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content=3D"text/html; charset=3Dwindows-1251"
 http-equiv=3D"Content-Type">
  <title></title>
</head>
<body bgcolor=3D"#ffffff" text=3D"#000000">
Hi Paul,<br>
<br>
I'm not overly fond of SUBSCRIBE as a method either, to be honest. I
think to be truly RESTful, there are two approaches to subscription:<br>
<ol>
  <li>Don't separate it from the resource and use synchronous
request/response with long polling. The subscription is effected by a
blocking wait on the resource which gets responded to when it has been
updated.</li>
  <li>Have an explicit separate subscription resource where a notify
resource is registered and to where notifications are sent<br>
  </li>
</ol>
(1) is more elegant in some respects because in (2) there is a logical
separation from the subscription and the resource itself. In (1), the
subscription is effectively dynamic, i.e. the server has to keep tags
on the client requests and respond to all requests as appropriate.
There are then variations with respect to the delivery mechanism, e.g.
update only (queue in client potentially), queue in server, streaming
(multipart delivery).<br>
<br>
If you consider the transaction models, I still think there is a
benefit for adding the notify message type to request/response, i.e. an
asynchronous message which is not paired with any other message,
although I accept it is not strictly necessary. This has benefits for
streaming models etc. With regard to the actual methods, I think we
should stick to the CRUD methods used in RESTful architectures.<br>
<br>
Robert<br>
<div class=3D"moz-signature">
<style type=3D"text/css">
p
{
font-family:Verdana,Arial,sans-serif;
font-size:8pt;
}
=2Ename
{
font-size:12pt;
}
</style>
<p class=3D"name">Robert Cragie (Pacific Gas &amp; Electric)</p>
<p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
<a href=3D"http://www.gridmerge.com/">http://www.gridmerge.com</a></p>
</div>
<br>
On 03/06/2010 11:48 PM, Paul Duffy wrote:
<blockquote cite=3D"mid:4C083143.1060905@cisco.com" type=3D"cite">
  <meta content=3D"text/html; charset=3Dwindows-1251"
 http-equiv=3D"Content-Type">
We seem to be at a
fork in the road now with the two paths of:<br>
  <blockquote cite=3D"mid:4C08098E.50305@gridmerge.com" type=3D"cite">
    <ol>
      <li>Basing CoAP on the HTTP transaction model</li>
      <li>Basing CoAP on a more typical M2M transaction model</li>
    </ol>
The advantage of using (1) would be an easier job at a gateway node.
The clear disadvantage of (1) is that it
doesn't map well to the threading models typically used in embedded
systems (see my earlier post). It could be made to map but there will
inevitably have to be some additional specification over the underlying
communication to fit embedded device models. This will then become in
effect yet
another RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).<br>
    <br>
The advantage of (2) is that it gives an opportunity to model
transactions more closely to those typical to an embedded environment.
There is nothing to prevent this model extending into the web generally
using translations at a gateway or indeed building wider CoAP systems
in the internet which can handle the asynchronous multi-threaded
transaction models natively.<br>
    <br>
In a nutshell, using (1) is propagating the status quo, which is by no
means a bad thing, </blockquote>
  <br>
Which is my main issue.<br>
  <br>
1. HTTP semantics are not a perfect fit, but IMO (like it or not) the
WEB of things needs to align with those semantics (warts and all).=A0 Its=

a close enough, good enough fit.<br>
  <br>
2. Subscriptions are resources.=A0 They are created, have a lifetime, can=

be enumerated, and are destroyed.=A0 From coap-2 "servers keep track of
subscriptions...", "a subscription SHOULD be removed...", etc.=A0
Subscriptions are resources. <br>
  <br>
Example. I use SUBSCRIBE to create a subscription.=A0 Would I
subsequently do GET to enumerate?=A0 DELETE to remove?=A0 PUT to modify?=A0=

SUBSCRIBE method seems a RESTfully twisted special case of POST.<br>
  <br>
Cheers<br>
  <br>
  <br>
  <blockquote cite=3D"mid:4C08098E.50305@gridmerge.com" type=3D"cite">but=
 I
am not sure if it is appropriate for CORE. (2)
is acknowledging the unique properties of constrained and embedded
environments and building a transaction model more appropriate to such
devices.<br>
    <br>
Robert<br>
    <div class=3D"moz-signature">
    <style type=3D"text/css">
p
{
font-family:Verdana,Arial,sans-serif;
font-size:8pt;
}
=2Ename
{
font-size:12pt;
}
  </style>
    <p class=3D"name">Robert Cragie (Pacific Gas &amp; Electric)</p>
    <p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
    <a moz-do-not-send=3D"true" href=3D"http://www.gridmerge.com/">http:/=
/www.gridmerge.com</a></p>
    </div>
    <br>
On 03/06/2010 3:31 AM, Richard Kelsey wrote:
    <blockquote cite=3D"mid:87vda0u9ry.fsf@kelsey-ws.hq.ember.com"
 type=3D"cite">
      <blockquote type=3D"cite">
        <pre wrap=3D"">Date: Wed, 02 Jun 2010 20:17:17 -0400
From: Paul Duffy <a moz-do-not-send=3D"true" class=3D"moz-txt-link-rfc239=
6E"
 href=3D"mailto:paduffy@cisco.com">&lt;paduffy@cisco.com&gt;</a>

My understanding is that COAP is directed to the WEB of things.  I take=20
that to mean going with the grain of pervasively  deployed WEB=20
infrastructure.  Unless there is an overwhelming compelling reason to do =

otherwise, IMO COAP needs to implement a strict subset of HTTP=20
semantics.  Otherwise, we open the door to complexity re: translating=20
HTTP/COAP, and history has shown complex app gateways will always be a=20
challenge.

There are several ways to support pub/sub using stock HTTP methods.  I=20
suggest we do so.
    </pre>
      </blockquote>
      <pre wrap=3D"">Given the variety of ways people do pub/sub using st=
ock HTTP
methods, it isn't clear that we can keep both COAP and the
COAP/HTTP gateways simple while still supporting multiple
pub/sub methods on the HTTP side.  By making the translation
of one form of HTTP pub/sub easy, we could easily make the
translation of others harder.

If we want to have COAP/HTTP gateways that support different
HTTP pub/sub methods, then it might be better to add pub/sub
to COAP directly, in a way that is not a strict subset of
HTTP.

Do we support several ways of doing pub/sub in HTTP, or just
one?  If we do pick just one, can others be easily translated
into it?
                                -Richard Kelsey
_______________________________________________
core mailing list
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated"
 href=3D"mailto:core@ietf.org">core@ietf.org</a>
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a>

  </pre>
    </blockquote>
    <pre wrap=3D""><fieldset class=3D"mimeAttachmentHeader"></fieldset>
_______________________________________________
core mailing list
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated"
 href=3D"mailto:core@ietf.org">core@ietf.org</a>
<a moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a>
  </pre>
  </blockquote>
  <br>
  <pre wrap=3D"">
<fieldset class=3D"mimeAttachmentHeader"></fieldset>
_______________________________________________
core mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
  </pre>
</blockquote>
</body>
</html>

--------------060207050505020708080109--

--------------ms020207020509050309040204
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

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
NTlaMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBM
dGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxKY8VXNV+065yplaHmjAdQRwnd/p/6Me7L3N9Vvy
Gna9fww6YfK/Uc4B1OVQCjDXAmNaLIkVcI7dyfArhVqqP3FWy688Cwfn8R+RNiQqE88r1fOC
dz0Dviv+uxg+B79AgAJk16emu59l0cUqVIUPSAR/p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCB
kTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwudGhh
d3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWlsQ0EuY3JsMAsGA1UdDwQEAwIBBjApBgNV
HREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxhYmVsMi0xMzgwDQYJKoZIhvcNAQEFBQAD
gYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/TCG4+DYfqi2fNi/A9BxQIJNwPP2t4WFi
w9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amcOY6MIE9lX5Xa9/eH1sYITq726jTlEBpb
NU1341YheILcIRk13iSx0x1G/11fZU8xggNxMIIDbQIBATB2MGIxCzAJBgNVBAYTAlpBMSUw
IwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUg
UGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQdBWGHEaYIBO/4g+d746QHzAJBgUrDgMC
GgUAoIIB0DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA2
MDQxMDU1NDBaMCMGCSqGSIb3DQEJBDEWBBTmw0f3wcMc+PrnbTAjK6ViK7V1ZDBfBgkqhkiG
9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYI
KoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwgYUGCSsGAQQBgjcQBDF4MHYw
YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x
LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpgg
E7/iD53vjpAfMIGHBgsqhkiG9w0BCRACCzF4oHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpggE7/iD53vjpAfMA0GCSqGSIb3DQEBAQUA
BIIBAH3gp9p/RZfDe98v1c2GSJvYyoHVQQCJdYk+I8q/z+VYv5JL3Bfkyd17CNwwAMFYRl1e
1lwMzkiFAUMCdQhqGEWqt0KYNC1wWrvHcsR8Op+6ccQ+fX9r98yNAcbkdZuzk4B/Zzyv2Fdn
ONpN7//1u6WBcmNG1cNO7DE7efiHHrH6u6M9BC1xkX/acpY4ekqvwcoWHlzi2IjEb3mr+REe
cZJ9hmf/76Dqkf/4WuQElNQoDZ6+lfNeZWNcJPnrbY/4v2h51NMUr9onHKTLUDDYnJSEYPfJ
YBhWvFS6osP4Qv89Tvucsz6TCFM/r7gn7sdIUdrLFKfgEkFBQjXNBZjrIHwAAAAAAAA=
--------------ms020207020509050309040204--

From zach@sensinode.com  Fri Jun  4 05:59:28 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 0CF8A3A67B3 for <core@core3.amsl.com>; Fri,  4 Jun 2010 05:59:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.651
X-Spam-Level: 
X-Spam-Status: No, score=0.651 tagged_above=-999 required=5 tests=[AWL=-0.650,  BAYES_50=0.001, MANGLED_TOOL=2.3, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3MNYfbKJudxz for <core@core3.amsl.com>; Fri,  4 Jun 2010 05:59:24 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id B35F328C0E4 for <core@ietf.org>; Fri,  4 Jun 2010 05:59:22 -0700 (PDT)
Received: from [62.145.172.52] ([62.145.172.52]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o54Cx3HZ028790 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Fri, 4 Jun 2010 15:59:03 +0300
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=windows-1252
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <AANLkTil0iB7pPhF_N56T_KMEAOu7dfA0lAdeBSFGqtjE@mail.gmail.com>
Date: Fri, 4 Jun 2010 15:59:05 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <506445AB-DEEC-4EFF-ACE8-AEF9CEE895BA@sensinode.com>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com> <OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com> <0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com> <6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com> <AANLkTil1Vx4fVvrSn5X0LhDcFhDNrXAKNfUBODRkAL3a@mail.gmail.com> <4BFFFBE4.4090108@gridmerge.com> <AANLkTil0iB7pPhF_N56T_KMEAOu7dfA0lAdeBSFGqtjE@mail.gmail.com>
To: Brian Frank <brian.tridium@gmail.com>
X-Mailer: Apple Mail (2.1078)
Cc: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 12:59:28 -0000

On May 29, 2010, at 12:21 AM, Brian Frank wrote:

> My two cents:=20
>=20
> Personally I find it confusing to have both a message type *and* a =
method.
>=20
> Do we really need both?  It seems we just combine the two into a =
single method byte.  Maybe reserve a bit to say a message is a response =
to a GET, PUT, DELETE, etc.

Interesting way of looking at things. Maybe we are making this too =
complex with having both messages and methods. Instead we could think of =
this simply as sending Methods and receiving a Response. That would save =
a couple bits (and parsing) from the header too. In the end, does HTTP =
even have messages types at all? In practice an HTTP client is just =
sending a method and receiving a response code.=20

Another good concept we discussed off-line with Guido Moritz was whether =
we should think of the CoAP message as being synchronous at all. Already =
we have determined that talking about CoAP in terms of clients and =
servers doesn't work (coap-01 tries to avoid that terminology). Instead =
we just talk about peer CoAP end-points, which seems to work.

As we are working with UDP the message model can be thought of as being =
just asyncronous, when the A bit is not set then no response will come. =
If the A bit is set a response should come, but even with a large delay =
and we may need to retransmit. So the A bit achieves the same as the =
HTTP req/res model, but we could think of it as two asynchronous CoAP =
messages.=20

Does that make sense to people?=20

Zach

>=20
>=20
>=20
> On Fri, May 28, 2010 at 1:22 PM, Robert Cragie =
<robert.cragie@gridmerge.com> wrote:
> I think sometimes it makes more sense to think about threads of =
execution.
>=20
> Forgive me for this lengthy preamble but it will hopefully put things =
into context.
>=20
> In the most abstract sense, processing is governed by a thread of =
execution, which sequences a series of data transformations to expedite =
the required processing. If a data transformation can be completed =
synchronously in the thread of execution, then the thread is =
conceptually easier to understand and follow. Most threading models =
assume this to be the case and if the data transformation cannot =
complete, it usually blocks pending the required event to complete the =
transformation. During blocking, the thread is suspended. In simple CPU =
models without any sort of scheduler, there are two threads of =
execution: A main thread, pre-emptable by an interrupt thread, usually =
not pre-emptable. In the main thread, sub-threads are emulated; data =
transformations can be simply function calls which don't block and =
therefore return effectively immediately and synchronously. Blocking =
data transformations are emulated by storing state relevant to each =
sub-thread then marshaling each event as it is received e.g. through =
interrupt handling, which causes the second thread to run and thus =
allows changing sub-thread state so when the main thread runs, the =
blocking data transformation can complete. Operating system schedulers =
for these simple CPUs simply abstract this operation through a kernel =
and associated task/thread scheduling calls. Continuations are a simpler =
form used in memory-constrained implementations.
>=20
> Why the lengthy pre-amble? However you look at it, what essentially is =
required for any threading model (using kernel/scheduler, continuations, =
emulated, whatever) are fundamentally three primitives:
> 	=95 Request
> 	=95 Response
> 	=95 Notify
> A thread of execution will call request and will typically (though not =
necessarily - see emulated blocking/continuations) wait for a response. =
If the thread blocks, it is typically woken by another worker thread =
handling a notify. The worker thread handles notifies asynchronously and =
buffers and/or signals the associated task accordingly.
>=20
> This is why I think the current foundation level of messages in =
coap-01 is right.
>=20
> On top of this, the payload of the messages can reflect the actual =
method. Personally, I don't see the need for a specific SUBSCRIBE =
message; a POST/create to a subscription resource seems adequate to me. =
The notify message can carry a PUT or POST depending on whether the =
resource was simply updated or appended to (again it is no accident the =
data types in JSON are as they are).
>=20
> Robert=20
> Robert Cragie (Pacific Gas & Electric)
>=20
> Gridmerge Ltd.
> 89 Greenfield Crescent,
> Wakefield, WF4 4WA, UK
> +44 1924 910888
> +1 415 513 0064
> http://www.gridmerge.com
>=20
>=20
> On 28/05/2010 2:13 PM, Angelo P. Castellani wrote:
>> In my opinion Subscribe/Notify are special methods of interaction
>> between resources.
>>=20
>> 1) SUBSCRIBE: Any resource A can send a Request to SUBSCRIBE with a
>> resource B (to the resource B URI).
>>=20
>> When B receives the request, B can (should/must?) answer with a
>> Response to the SUBSCRIBE Request, telling the result of the request
>> (subscription accepted/denied/unsupported?).
>>=20
>> 2) NOTIFY: When subscription condition fires the resource B sends a
>> NOTIFY Request to resource A URI.
>>=20
>> When A receives the request, A can (should/must?) answer with a
>> Response to the NOTIFY Request, telling the result of the request =
(OK,
>> cancel subscription, change notify options?).
>>=20
>> In each Request must be specified the URI of the resource doing the
>> Request too (Option? From-URI?).
>>=20
>> Angelo
>>=20
>> On Fri, May 28, 2010 at 14:50, Zach Shelby=20
>> <zach@sensinode.com>
>>  wrote:
>>  =20
>>=20
>>> Hi,
>>>=20
>>> This is a really good conversation. One thing we need to do is =
remember what our minimum requirements are for subscribe/notify and not =
try to solve something more than we should. =46rom what I know it is =
sufficient to be able to receive notifications when a URI changes or =
periodically. You might consider new URIs under this URI path to be =
changes to a URI though...
>>>=20
>>> On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>>=20
>>>    =20
>>>=20
>>>> Hello,
>>>> with this flavor, the SUBSCRIBE may be replaced by a simple POST. =
So no needs to have an explicit SUBSCRIBE method.
>>>>      =20
>>>>=20
>>> This is what coap-01 assumes.
>>>=20
>>>    =20
>>>=20
>>>> If we want support a more oriented peer-to-peer transaction on =
CoAP, it looks to me both SUB and NOTIFY should be treated as messages.
>>>>      =20
>>>>=20
>>> The Request/Response model can be used peer-to-peer, and in CoAP you =
can even use a Request asynchronously. Additionally, we want a native =
RESTful subscribe/notify technique, that is, we want to subscribe to =
resources and be susequently notified about those resources when they =
change.
>>>=20
>>> In that sense, you can think of a subscription as a request to =
receive asynchronous notifications about a resource (about a URI). This =
can be achieved by:
>>>=20
>>> 1.  as a SUBSCRIBE Request on the URI with some option indicating =
the lifetime as in coap-01,
>>> 2.  as a Subcsribe message (no methods) on the URI with some option,
>>> 3.  or as a POST Request on the URI with options indicating that =
this is actually a subscription and the lifetime.  This bends the =
meaning of POST quite a bit and might be prone to mistakes?
>>>=20
>>> The asynchronous response is a harder one. Can we bend the meaning =
of a Request for making asynchronous notifications? Also a notification =
includes a URI about a resource on the requestor, which is inverse from =
normal Requests in REST. So the options here are:
>>>=20
>>> 1. as a Notify message about a URI (no methods) as in coap-01,
>>> 2. as a NOTIFY Request about a URI as was in coap-00,
>>> 3. hmmm... reusing CRUD methods really doesn't work for this one at =
all...
>>>=20
>>> I wonder what the HTTP designers would have done if this would have =
been a requirement back then? Maybe we should ask them...
>>>=20
>>> Zach
>>>=20
>>>    =20
>>>=20
>>>> Adriano
>>>>=20
>>>> From:=20
>>>> matthieu.vial@fr.non.schneider-electric.com =
[mailto:matthieu.vial@fr.non.schneider-electric.com
>>>> ]
>>>> Sent: venerd=EC 28 maggio 2010 13.52
>>>> To: Adriano Pezzuto (apezzuto)
>>>> Cc: core;=20
>>>> core-bounces@ietf.org; robert.cragie@gridmerge.com
>>>>=20
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>=20
>>>>      =20
>>>>=20
>>>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types =
not  methods!
>>>>>        =20
>>>>>=20
>>>> SUBSCRIBE can be just an asynchronous GET on update then I think it =
is a method and NOTIFY is an asynchronous response so a message.
>>>> But if we want to have selective notifications when a resource is =
created, updated or deleted then I think you're right NOTIFY and =
SUBSCRIBE are messages.
>>>>=20
>>>> Does that make sense ?
>>>>=20
>>>> Matthieu
>>>>=20
>>>> <image001.gif>"Adriano Pezzuto (apezzuto)"=20
>>>> <apezzuto@cisco.com>
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>> "Adriano Pezzuto (apezzuto)"=20
>>>> <apezzuto@cisco.com>
>>>>=20
>>>> Envoy=E9 par :=20
>>>> core-bounces@ietf.org
>>>>=20
>>>> 28/05/2010 12:50
>>>>=20
>>>> <image003.png>
>>>> A
>>>> <image004.png>
>>>>=20
>>>> <robert.cragie@gridmerge.com>
>>>>=20
>>>> <image003.png>
>>>> cc
>>>> <image004.png>
>>>> core=20
>>>> <core@ietf.org>
>>>>=20
>>>> <image003.png>
>>>> Objet
>>>> <image004.png>
>>>> Re: [core] Subscribe/Notify for CoAP
>>>> <image004.png>
>>>> <image004.png>
>>>>=20
>>>> Hi Roberto,
>>>> I understand your point and personally agree on M2M is quite =
different from web page model. On the architectural RESTful style, the =
method information tells the server what to do with data kept in the URI =
information.
>>>>=20
>>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types =
not  methods!
>>>>=20
>>>> Adriano
>>>>=20
>>>> From: Robert Cragie [
>>>> mailto:robert.cragie@gridmerge.com
>>>> ]
>>>> Sent: venerd=EC 28 maggio 2010 11.53
>>>> To: Adriano Pezzuto (apezzuto)
>>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>=20
>>>> I think the point here is that there are two levels we are =
considering.
>>>>=20
>>>> At the lowest (foundation) level, there are the transaction =
messages as described below. This provides a flexible mechanism for the =
application with regard to synchronicity and threading. This is =
important for the types of devices CoAP is being aimed at.
>>>>=20
>>>> Above that, the methods can be used according to the architectural =
style. So in this case, it is RESTful (COnstrained Restful =
Environments), which will naturally limit the number of methods and how =
transactions occur.
>>>>=20
>>>> The actual architecture using a combination of the methods and =
messages also depends on what is required at the application layer. =
Consider a typical client which wants to subscribe to a resource. That =
client controls the feed of data but needs a component which is capable =
of handling (possibly buffering) the data it receives through =
notifications. Is this a separate server? Or would we want to consider =
it part of an enhanced client model which is able to process feeds of =
data? These are the sort of models which have led to the myriad of =
solutions (GENA, Webhooks, long polling, pubsubhubbub, RESTMS etc.) =
based around HTTP which are all essentially ingenious ways of getting =
around the limitations imposed by HTTP and how it is processed for =
anything which deviates from the classic web page access model.
>>>>=20
>>>> I think the aim of CoAP should be clean from the word go with =
regard to supporting these more peer-to-peer transactions, where the =
client can exist on either entity and both entities can feed data to =
each other; typical in M2M applications.
>>>>=20
>>>> Robert
>>>>=20
>>>> Robert Cragie (Pacific Gas & Electric)
>>>>=20
>>>> Gridmerge Ltd.
>>>> 89 Greenfield Crescent,
>>>> Wakefield, WF4 4WA, UK
>>>> +44 1924 910888
>>>> +1 415 513 0064
>>>>=20
>>>> http://www.gridmerge.com
>>>>=20
>>>>=20
>>>> On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>>> Hi Robert,
>>>>=20
>>>> in my personal opinion, the option 1a) brings some sort of =
ambiguity to CoAP specs.
>>>>=20
>>>> My be my understatement of new CoAP specs is not so deep, but now =
we have 5 methods and 3 message types: request, response and notify. =
Which methods are allowed with which messages types?
>>>> I suppose you have to use PUT/POST method with notify message for =
asynch data notification. How to make a subscribe? I suppose you would =
use a SUBSCRIBE method with request/response message or SUBSCRIBE with =
notify message? Also what about POST/DELETE methods in a notify message? =
They not make any sense..
>>>>=20
>>>> I think the choice is between: option 1) -> only CRUD methods and =
option 1b) -> CRUD + SUB/NOTIFY methods, keeping in mind cost/benefits =
of both solutions.
>>>>=20
>>>> Adriano
>>>>=20
>>>> From: Robert Cragie [
>>>> mailto:robert.cragie@gridmerge.com
>>>> ]
>>>> Sent: mercoled=EC 26 maggio 2010 20.09
>>>> To: Adriano Pezzuto (apezzuto)
>>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>=20
>>>> Hi Adrian,
>>>>=20
>>>> I would also prefer to keep the protocol in CoAP asynchronous. You =
can always map an asynchronous protocol to a synchronous one but, as we =
see in HTTP, it always ends up as a kludge to do it the other way round. =
The efforts which have been gone to to make HTTP quasi-asynchronous via =
all the schemes mentioned below and many more besides (all =
non-interoperable of course) is testament to how important this is for =
M2M communication.
>>>>=20
>>>> So, back to Zach's list, I favor 1a) for the following reasons:
>>>>=20
>>>> Foundation level of messages:
>>>>=20
>>>> 1. request/response can be asynchronous or synchronous messages (as =
there is a transaction ID in there)
>>>> 2. notify is an asynchronous message
>>>> Derived methods:
>>>>=20
>>>> I think it makes sense to add a pub/sub model as a useful mechanism =
for M2M.
>>>>=20
>>>> So, looking at it the other way round: It will be entirely possible =
to translate whatever is currently built on HTTP to CoAP based on the =
above, with all its restrictions regarding synchronous and client/server =
transactions. What may be harder is to translate directly is a =
CoAP-based application to HTTP. So I guess the question is: Do we want =
to be hamstrung to synchronous client/server transactions as dictated by =
HTTP and provide a direct mapping to HTTP, then have to come up with =
similar kludges for asynchronous peer-to-peer transactions as has been =
done in numerous ways for HTTP, or do we want to define the protocol =
cleanly to start with and accept that some sort of transaction =
relaying/conversion would have to take place at a mapping node?
>>>>=20
>>>> Robert
>>>> Robert Cragie (Pacific Gas & Electric)
>>>>=20
>>>> Gridmerge Ltd.
>>>> 89 Greenfield Crescent,
>>>> Wakefield, WF4 4WA, UK
>>>> +44 1924 910888
>>>> +1 415 513 0064
>>>>=20
>>>> http://www.gridmerge.com
>>>>=20
>>>>=20
>>>> On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:
>>>> Hi,
>>>> it looks to me that CoAP should use an explicit sub/notify =
mechanism since this is the core of the machine-to-machine interaction =
model.
>>>> HTTP suffers of this lack and we have seen a plethora of solutions =
to give an asynch taste to it. Webhooks and websockets are only the =
lasts of the list.
>>>> As someone has already pointed out on this list, it is =
theoretically possible to describe sub/notify using only CRUD methods =
but it looks a little bit tricky and verbose.
>>>>=20
>>>> Now we have a chance to build from scratch a new protocol with and =
I think using explicit sub/notify methods with a clear and well defined =
semantic is the best option. It is easily understanding from every =
developer and will prevent to build other fanny solutions on top of the =
CoAP. HTTP does not have this well defined semantic and (for hundreds of =
other reasons also) it is not used as wide protocol for =
machine-to-machine communication.
>>>>=20
>>>> CoAP - as binary protocol - and with an explicit asynch model has a =
chance to be a really wide protocol for M2M communication not only for =
constrained environments.
>>>>=20
>>>> my 2 cents
>>>>=20
>>>> - adriano
>>>>=20
>>>> -----Original Message-----
>>>> From:=20
>>>> core-bounces@ietf.org [mailto:core-bounces@ietf.org
>>>> ] On Behalf Of Paul Duffy (paduffy)
>>>> Sent: mercoled=EC 26 maggio 2010 0.47
>>>> To: Zach Shelby
>>>> Cc: core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>=20
>>>> On 5/25/2010 6:41 PM, Zach Shelby wrote:
>>>>=20
>>>> Hi,
>>>>=20
>>>> On May 26, 2010, at 12:23 AM, Charles Palmer wrote:
>>>>=20
>>>>=20
>>>> Hi folks
>>>>=20
>>>> It occurs to me that CoRE should be keeping a close eye on ZigBee =
SE2.0 work, so that it is as easy as possible for ZigBee SE to use CoRE =
when ready. That suggests to me that we should align with their =
subscribe/notify process.
>>>>=20
>>>>=20
>>>> I am not sure I understand that. I mean, ZigBee SE2.0 is defining =
an application specific subscribe/notify mechanism for that purpose so =
far for HTTP. This uses standard HTTP methods and some custom payload =
and REST interfaces. CoAP Req/Res is already totally compatible with =
SE2.0 in that respect, so alignment is already OK there. Nothing =
stopping someone from using SE2.0 over CoAP.
>>>>=20
>>>> Specifying a native susbcription/notify into CoAP is another =
matter. We can't adopt a solution specific to one application as that =
won't solve the problems of other applications nor general HTTP mapping =
at all (probably would make it worse). It seems that for the near future =
there will be a bunch of HTTP push mechanisms in use without any clear =
standard appearing - or am I wrong there?
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>> If COAP extends HTTP semantics with new subscription methods, it =
will
>>>> not be possible to easily interchange HTTP/COAP, and translation
>>>> gateways will become more complex to implement.
>>>>=20
>>>>=20
>>>>=20
>>>> Zach
>>>>=20
>>>>=20
>>>> Regards - Charles
>>>>=20
>>>>=20
>>>> -----Original Message-----
>>>> From:=20
>>>> core-bounces@ietf.org [mailto:core-bounces@ietf.org
>>>> ] On Behalf Of Paul Duffy
>>>> Sent: 25 May 2010 03:48
>>>> To: Zach Shelby
>>>> Cc: core
>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>=20
>>>> Recommend something like #2, primarily to avoid introducing non =
HTTP
>>>> method semantics, simplifying HTTP/COAP translation.gateways, etc.
>>>>=20
>>>>=20
>>>> On 5/24/2010 11:49 AM, Zach Shelby wrote:
>>>>=20
>>>> (thread renamed)
>>>>=20
>>>> We have two different paths with regard to a subscribe/notify =
mechanism for CoAP:
>>>>=20
>>>> 1. Use specific Subscription and Notify mechanisms for CoAP as HTTP =
really does not include this concept.
>>>> 1a) Notify as a message and SUBSCRIBE as a method. This is =
currently used in coap-01.
>>>> 1b) NOTIFY and SUBSCRIBE as methods. This was used in coap-00, but =
we had a good list discussion about this leading to a. In practice it =
doesn't make a big difference if notification is a message or method.
>>>>=20
>>>> 2. Use an HTTP specific framework such as Webhooks, the ZigBee =
SE2.0 proposal or GENA.
>>>>=20
>>>> So far we have focused on 1 in the WG, and every now and again 2 =
comes up. At least I am not convinced that we need to suffer the =
drawbacks of HTTP here. Anyways 2 does not help our mapping to HTTP in =
reality very much as there is no standard way of doing this over HTTP. =
Thus a CoAP-HTTP proxy may end up anyways translating between multiple =
HTTP frameworks depending on the application. So instead of doing a CoAP =
Notify/Subscribe to Webhooks mapping, you will could end up having to do =
a CoAP Webhooks to HTTP GENA mapping.
>>>>=20
>>>>=20
>>>>=20
>>>> I don't understand this last para. If CoAP sticks to the semantics =
of
>>>> the current HTTP methods, would this not offer a fairly =
straightforward
>>>> translation to/from HTTP?
>>>>=20
>>>>=20
>>>>=20
>>>> =46rom what I have heard so far 1 still seems like a wise choice, =
although I need to look at Webhooks more deeply. In reality many =
applications specify their own way of doing a push interface using REST =
methods and specific payloads (ZigBee SE2.0 is such an example). That is =
just fine, and might be used instead of a specific CoAP notify/subscribe =
in that case. So 1 doesn't prevent the application using its own =
mechanism, it just provides a native way for doing push.
>>>>=20
>>>> What do people think?
>>>>=20
>>>> Zach
>>>>=20
>>>> On May 17, 2010, at 6:44 PM,
>>>> matthieu.vial@fr.non.schneider-electric.com
>>>>  wrote:
>>>>=20
>>>>=20
>>>>=20
>>>> Hi,
>>>>=20
>>>> My comments about the subscribe/notify mechanism of Zigbee IP.
>>>>=20
>>>> Pros:
>>>> - Derived from the webhooks concept
>>>> - If used by CORE it will be easier to map to HTTP because it uses =
only CRUD verbs.
>>>> - The subscription message is extendable and could support advanced =
options (delays, increment, ...)
>>>> - Only one listening port whatever the transport binding is.
>>>>=20
>>>> Cons:
>>>> - No interoperability without well known URIs and a well defined =
subscription message format (Not sure CoAP draft is the right place to =
specify this).
>>>> - XML/EXI is too complex to be the required format for the default =
subscription/notification mechanism.
>>>> - The notification should not require a subsequent GET to retrieve =
the content.
>>>> - Subresource subscription is redundant.
>>>>=20
>>>> Hope this could help,
>>>> Matthieu
>>>>=20
>>>>=20
>>>> <graycol.gif>"Charles Palmer"
>>>> <charles.palmer@onzo.com>
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>> "Charles Palmer"
>>>> <charles.palmer@onzo.com>
>>>>=20
>>>> Envoy=E9 par :=20
>>>> core-bounces@ietf.org
>>>>=20
>>>> 15/05/2010 14:06
>>>>=20
>>>> <ecblank.gif>
>>>> A
>>>> <ecblank.gif>
>>>> "core"
>>>> <core@ietf.org>
>>>>=20
>>>> <ecblank.gif>
>>>> cc
>>>> <ecblank.gif>
>>>> <ecblank.gif>
>>>> Objet
>>>> <ecblank.gif>
>>>> Re: [core] Selecting a WG document for CoAP
>>>> <ecblank.gif> <ecblank.gif>
>>>>=20
>>>> Dear all
>>>>=20
>>>> Those interested in the subscribe/notify discussion might like to =
look
>>>> at the draft Smart Energy Profile 2.0 Application Protocol
>>>> Specification. It is available here:
>>>>=20
>>>> =
http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20PublicApp
>>>>=20
>>>> licationProfile.aspx
>>>>=20
>>>> It manages subscribe/notify by using POST. This seems to remove the =
need
>>>> for SUBSCRIBE and notify.
>>>>=20
>>>> "Imagine a host A, which exposes a resource at http{s}://A/resource =
and
>>>> a second host B, which wishes to learn of changes to this resource. =
To
>>>> facilitate a subscription/ notification mechanism, A would expose a
>>>> resource http{s}://A/sub and B would expose a resource =
http{s}://B/ntfy.
>>>> To subscribe to notifications regarding http{s}://A/resource, B =
would
>>>> send a POST to the address http{s}://A/sub/B containing the URI of =
the
>>>> resource of interest (http{s}://A/resource) and the URI of B's
>>>> notification resource (http{s}://B/ntfy). Following this =
subscription
>>>> step, should A wish to notify B of a change to the resource =
addressed at
>>>> http{s}://A/resource, A would send a POST to the address
>>>> http{s}://B/ntfy containing the URI of the resource changed
>>>> (http{s}://A/resource) and the URI of A's subscription resource
>>>> (http{s}://A/sub/B), should A wish to change its subscription. The =
host
>>>> B can then query the resource (or not) at its leisure."
>>>>=20
>>>> Sleepy nodes are not allowed to subscribe, and must poll.
>>>>=20
>>>> Regards - Charles Palmer
>>>>=20
>>>> -----Original Message-----
>>>> From:=20
>>>> core-bounces@ietf.org [mailto:core-bounces@ietf.org
>>>> ] On Behalf Of
>>>> Angelo P. Castellani
>>>> Sent: 14 May 2010 13:14
>>>> To: Zach Shelby
>>>> Cc: core
>>>> Subject: Re: [core] Selecting a WG document for CoAP
>>>>=20
>>>> Zach,
>>>>=20
>>>> thanks for the comments, but please refer to my most recent e-mail =
for
>>>> a more specific list of technical issues I'm pointing to.
>>>>=20
>>>> I want to do only a little integration to what I've written there.
>>>>=20
>>>> In my very personal opinion, to maximize adherence with the REST =
model
>>>> and minimize implementation effort SUBSCRIBE and NOTIFY should be
>>>> mapped to methods (as discussed many times together...).
>>>>=20
>>>> Uniform interface principle (Fielding PhD dissertation Section =
5.1.5,
>>>> "The central feature that distinguishes the REST architectural =
style
>>>> [...]") states that to simplify the software architecture, resource
>>>> interfaces/interfaces should be as general as possible.
>>>>=20
>>>> I agree with this principle in this specific case, mainly because
>>>> handling a special message type for notify leads node software =
design
>>>> to a more complex architecture.
>>>>=20
>>>> The reason is that this new message type requires special handling =
and
>>>> introduces a complexity in the software modularization.
>>>>=20
>>>> Best,
>>>> Angelo
>>>>=20
>>>> On Fri, May 14, 2010 at 13:06, Zach Shelby
>>>> <zach@sensinode.com>
>>>>  wrote:
>>>>=20
>>>>=20
>>>> Hi Angelo,
>>>>=20
>>>> On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:
>>>>=20
>>>>=20
>>>>=20
>>>> Dear C. Bormann, all,
>>>>=20
>>>> before deciding for the final direction, I've the following
>>>> observations about draft-shelby-core-coap-01
>>>>=20
>>>> While I mostly share Zach's view of the protocol approach, and
>>>> appreciate many aspects of the proposal, there are in my opinion
>>>>=20
>>>>=20
>>>> still
>>>>=20
>>>>=20
>>>> some open issues that need to be at least discussed before the
>>>>=20
>>>>=20
>>>> current
>>>>=20
>>>>=20
>>>> document can be selected.
>>>>=20
>>>>=20
>>>> Of course there are plenty of open issues. Remember that working =
group
>>>>=20
>>>>=20
>>>> documents still undertake as much change and improvement as the WG
>>>> wants, so by no means is coap-01 set in stone. I would expect at =
least
>>>> 5-10 more revisions still along the way. Already several of your =
ideas
>>>> have been integrated into coap-01, and several more are under
>>>> consideration, so it is coming along. Patience ;-)
>>>>=20
>>>>=20
>>>>=20
>>>> In particular, I would like to highlight the following:
>>>>=20
>>>> a) As it is now, it is not possible to have a straightforward
>>>> translation of HTTP -> CoAP and viceversa: see
>>>>=20
>>>> http://www.ietf.org/mail-archive/web/core/current/msg00133.html
>>>>  (this
>>>> impacts the scalability of the web service model too)
>>>>=20
>>>>=20
>>>> In coap-01 the Method names are now identical to HTTP methods. The
>>>>=20
>>>>=20
>>>> Req/Res interaction is a direct translation. The URI hierarchy is
>>>> compatible, and the URI binary code format we are still working on
>>>> obviously. The only thing that takes some state to translate is
>>>> Subscribe/Notify. But note, Subscribe/Notify takes some state no =
matter
>>>> how you do it, even with HTTP-HTTP there is no clean and easy way =
to
>>>> handle subscriptions.
>>>>=20
>>>>=20
>>>>=20
>>>> b) Moreover, CoAP's implementation is not as simple as it should =
be.
>>>> I've investigated the implementation and some design choices (as
>>>> Options) are leading to very high program complexity (ROM) on a
>>>> MSP430-based device.
>>>>=20
>>>>=20
>>>> This we can definitely improve, and already made several =
optimizations
>>>>=20
>>>>=20
>>>> from -00 to -01. Here I need some very concrete proposals though. =
Also
>>>> remember that many things are optional, for example =
subscribe/notify is
>>>> not required if you don't need it.
>>>>=20
>>>>=20
>>>>=20
>>>> c) Finally when comparing HTTP message size with CoAP message size,
>>>> the resulting compression isn't as good as you may expect.
>>>>=20
>>>> Example:
>>>> HTTP: GET /sensor/temp.xml HTTP/1.0 =3D 32 B
>>>> CoAP: 24 B with options parsing procedure requiring an added
>>>> implementation complexity
>>>>=20
>>>>=20
>>>> Right, that is not how it will work in practice. Working with a =
real
>>>>=20
>>>>=20
>>>> HTTP server that HTTP header will be more complex, and on the CoAP =
side
>>>> you would chose shorter URLs. The biggest improvement possible here =
is
>>>> from using binary coded URLs of course. We need to look at a wider =
range
>>>> of interactions and real HTTP headers as well to check that we are
>>>> efficient enough.
>>>>=20
>>>>=20
>>>>=20
>>>> Addressing all these points potentially leads to major technical
>>>> modifications (especially point a) on the current draft, hence it =
is
>>>> appropriate in my opinion to discuss these points before making the
>>>> final decision.
>>>>=20
>>>>=20
>>>> I am not sure what else you have in mind for a). If we just forget
>>>>=20
>>>>=20
>>>> about Subscribe/Notify then you are good to go. But then you are =
also
>>>> not fulfilling the charter or the industry needs in that respect.
>>>>=20
>>>>=20
>>>> Thanks,
>>>> Zach
>>>>=20
>>>>=20
>>>>=20
>>>> Best regards,
>>>>=20
>>>> Angelo P. Castellani
>>>>=20
>>>>=20
>>>> On Mon, May 10, 2010 at 18:51, Carsten Bormann
>>>> <cabo@tzi.org>
>>>> wrote:
>>>>=20
>>>>=20
>>>> The CORE WG has a milestone to select a WG document for CoAP in
>>>>=20
>>>>=20
>>>> April:
>>>>=20
>>>>=20
>>>>=20
>>>> http://datatracker.ietf.org/wg/core/charter/
>>>>=20
>>>> ...
>>>> Apr 2010 Select WG document for basis of the CoAP protocol
>>>>=20
>>>> Of the various documents that have been contributed,
>>>>=20
>>>>=20
>>>> draft-shelby-core-coap has significant discussion, as well as the
>>>> largest number of updates (including a previous version that was =
still
>>>> called -6lowapp-coap).
>>>>=20
>>>>=20
>>>> Today, another updated version of that draft was announced. See
>>>>=20
>>>> http://www.ietf.org/mail-archive/web/core/current/msg00138.html
>>>>=20
>>>> for the announcement and
>>>>=20
>>>> http://tools.ietf.org/html/draft-shelby-core-coap-01
>>>>=20
>>>> for the draft itself.
>>>>=20
>>>> However, as the authors say, there are still significant TODOs.
>>>>=20
>>>> Are we in a state yet where we can say whether this is the right
>>>>=20
>>>>=20
>>>> direction for the WG to take?
>>>>=20
>>>>=20
>>>> If yes, is it the right direction? Should we adopt it as a WG
>>>>=20
>>>>=20
>>>> document?
>>>>=20
>>>>=20
>>>> If you don't think we can say yet, is there a set of technical
>>>>=20
>>>>=20
>>>> decisions you would like the authors to take with priority?
>>>>=20
>>>>=20
>>>> Note that once a document has become a WG document, the authors act
>>>>=20
>>>>=20
>>>> as editors for the working group, making (and usually fleshing out =
the
>>>> details of) any change that the WG decides it needs.
>>>>=20
>>>>=20
>>>> If you think we can still improve the draft, this is not an =
obstacle
>>>>=20
>>>>=20
>>>> to making it a WG document.
>>>>=20
>>>>=20
>>>> But of course we shouldn't do that if we intend to reverse its
>>>>=20
>>>>=20
>>>> fundamental technical direction.
>>>>=20
>>>>=20
>>>> In order to stay roughly in sync with our milestones, we should
>>>>=20
>>>>=20
>>>> reach at a decision on how to go forward this week.
>>>>=20
>>>>=20
>>>> Gruesse, Carsten
>>>>=20
>>>> _______________________________________________
>>>> core mailing list
>>>>=20
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>> _______________________________________________
>>>> core mailing list
>>>>=20
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>=20
>>>>=20
>>>>=20
>>>> --
>>>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>>>>=20
>>>> http://zachshelby.org - My blog "On the Internet of Things
>>>> "
>>>> http://6lowpan.net - My book "
>>>> 6LoWPAN: The Wireless Embedded Internet"
>>>> Mobile: +358 40 7796297
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>> _______________________________________________
>>>> core mailing list
>>>>=20
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>=20
>>>>=20
>>>> --------------------------------
>>>> Onzo is a limited company number 06097997 registered in England& =
Wales. The
>>>> registered office is 6 Great Newport Street, London, WC2H 7JB, =
United Kingdom.
>>>>=20
>>>> This email message may contain confidential and/or privileged =
information, and
>>>> is intended solely for the addressee(s). If you have received this =
email in
>>>> error, please notify Onzo immediately. Unauthorised copying, =
disclosure or
>>>> distribution of the material in this email is forbidden.
>>>> --------------------------------
>>>>=20
>>>> _______________________________________________
>>>> core mailing list
>>>>=20
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>=20
>>>>=20
>>>> =
______________________________________________________________________
>>>> This email has been scanned by the MessageLabs Email Security =
System.
>>>> =
______________________________________________________________________
>>>>=20
>>>> _______________________________________________
>>>> core mailing list
>>>>=20
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>> _______________________________________________
>>>> core mailing list
>>>>=20
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>=20
>>>>=20
>>>> --------------------------------
>>>> Onzo is a limited company number 06097997 registered in England& =
Wales. The
>>>> registered office is 6 Great Newport Street, London, WC2H 7JB, =
United Kingdom.
>>>>=20
>>>> This email message may contain confidential and/or privileged =
information, and
>>>> is intended solely for the addressee(s). If you have received this =
email in
>>>> error, please notify Onzo immediately. Unauthorised copying, =
disclosure or
>>>> distribution of the material in this email is forbidden.
>>>> --------------------------------
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>> _______________________________________________
>>>> core mailing list
>>>>=20
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>=20
>>>> _______________________________________________
>>>> core mailing list
>>>>=20
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>=20
>>>>=20
>>>>=20
>>>>=20
>>>> =
______________________________________________________________________
>>>> This email has been scanned by the MessageLabs Email Security =
System.
>>>> =
__________________________________________________________________________=
___________________________________________
>>>> core mailing list
>>>>=20
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>=20
>>>>=20
>>>> _______________________________________________
>>>> core mailing list
>>>>=20
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>=20
>>>>      =20
>>>>=20
>>> --
>>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>>>=20
>>> http://zachshelby.org  - My blog "On the Internet of Things
>>> "
>>> http://6lowpan.net - My book "
>>> 6LoWPAN: The Wireless Embedded Internet"
>>> Mobile: +358 40 7796297
>>>=20
>>> _______________________________________________
>>> core mailing list
>>>=20
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>=20
>>>=20
>>>    =20
>>>=20
>> _______________________________________________
>> core mailing list
>>=20
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>=20
>>=20
>>  =20
>>=20
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>=20
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From zach@sensinode.com  Fri Jun  4 06:26:33 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id CCD5D3A69DA for <core@core3.amsl.com>; Fri,  4 Jun 2010 06:26:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.282
X-Spam-Level: 
X-Spam-Status: No, score=-0.282 tagged_above=-999 required=5 tests=[AWL=0.717,  BAYES_50=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xW26k2xvNtOe for <core@core3.amsl.com>; Fri,  4 Jun 2010 06:26:28 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 32D363A68D4 for <core@ietf.org>; Fri,  4 Jun 2010 06:26:27 -0700 (PDT)
Received: from [62.145.172.52] ([62.145.172.52]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o54DQ8IS012991 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Fri, 4 Jun 2010 16:26:08 +0300
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=windows-1252
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <4C08098E.50305@gridmerge.com>
Date: Fri, 4 Jun 2010 16:26:10 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <F8C29FC7-9064-4619-9C70-A1B041289134@sensinode.com>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>	<4C06F48D.1020600@cisco.com> <87vda0u9ry.fsf@kelsey-ws.hq.ember.com> <4C08098E.50305@gridmerge.com>
To: robert.cragie@gridmerge.com
X-Mailer: Apple Mail (2.1078)
Cc: core@ietf.org
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 13:26:33 -0000

On Jun 3, 2010, at 10:59 PM, Robert Cragie wrote:

> We seem to be at a fork in the road now with the two paths of:
> 	=95 Basing CoAP on the HTTP transaction model
> 	=95 Basing CoAP on a more typical M2M transaction model

Here you are referring to the Subscribe/Notify mechanism I suppose? For =
general REST Req/Res interactions CoAP has a bit of both worlds in that =
we support HTTP methods for working with resources, but the CoAP =
messaging is more tuned to M2M (multicast support, retransmission, =
optional responses).

> The advantage of using (1) would be an easier job at a gateway node. =
The clear disadvantage of (1) is that it doesn't map well to the =
threading models typically used in embedded systems (see my earlier =
post). It could be made to map but there will inevitably have to be some =
additional specification over the underlying communication to fit =
embedded device models. This will then become in effect yet another =
RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).

(1) only maps easier at the proxy if the HTTP subscriber would use that =
specific CoAP model for Sub/Notify using HTTP methods. Besides, I don't =
understand the argument about the complexity of a CoAP-HTTP proxy? This =
is not where our constrained requirements are coming from. The main =
complexity of a proxy will surely not be in the CoAP Sub/Notify to HTTP =
mapping, and anyways you would often split (and aggregate) the =
subscriptions and answer HTTP clients with cached resource =
representations.

> The advantage of (2) is that it gives an opportunity to model =
transactions more closely to those typical to an embedded environment. =
There is nothing to prevent this model extending into the web generally =
using translations at a gateway or indeed building wider CoAP systems in =
the internet which can handle the asynchronous multi-threaded =
transaction models natively.

Agreed, and I also believe (2) will let us do this in the simplest =
possible manner for constrained devices while giving us real =
interoperability.=20

>=20
> In a nutshell, using (1) is propagating the status quo, which is by no =
means a bad thing, but I am not sure if it is appropriate for CORE. (2) =
is acknowledging the unique properties of constrained and embedded =
environments and building a transaction model more appropriate to such =
devices.

That said, there is not a huge gap between (1) and (2). We are all =
agreeing that this should be architecturally RESTful and reasonable to =
map also to HTTP when needed. We do need to acknowledge that REST in a =
constrained M2M environment is not equal to HTTP, but may need a (tiny =
bit of) evolution.=20

Zach

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From robert.cragie@gridmerge.com  Fri Jun  4 06:29:13 2010
Return-Path: <robert.cragie@gridmerge.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 8B96128C103 for <core@core3.amsl.com>; Fri,  4 Jun 2010 06:29:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.439
X-Spam-Level: 
X-Spam-Status: No, score=0.439 tagged_above=-999 required=5 tests=[AWL=-0.863,  BAYES_50=0.001, HTML_MESSAGE=0.001, MANGLED_TOOL=2.3, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xxFQLCB8F4a4 for <core@core3.amsl.com>; Fri,  4 Jun 2010 06:29:08 -0700 (PDT)
Received: from mail78.extendcp.co.uk (mail78.extendcp.co.uk [79.170.40.78]) by core3.amsl.com (Postfix) with ESMTP id BF5283A6A67 for <core@ietf.org>; Fri,  4 Jun 2010 06:29:07 -0700 (PDT)
Received: from client-86-29-249-143.pete.adsl.virginmedia.com ([86.29.249.143] helo=[192.168.1.70]) by mail78.extendcp.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.71) id 1OKWx9-0004Re-27 for core@ietf.org; Fri, 04 Jun 2010 14:28:53 +0100
Message-ID: <4C08FF8F.1020608@gridmerge.com>
Date: Fri, 04 Jun 2010 14:28:47 +0100
From: Robert Cragie <robert.cragie@gridmerge.com>
Organization: Gridmerge Ltd.
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100317 Lightning/1.0b1 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<AANLkTil1Vx4fVvrSn5X0LhDcFhDNrXAKNfUBODRkAL3a@mail.gmail.com>	<4BFFFBE4.4090108@gridmerge.com>	<AANLkTil0iB7pPhF_N56T_KMEAOu7dfA0lAdeBSFGqtjE@mail.gmail.com> <506445AB-DEEC-4EFF-ACE8-AEF9CEE895BA@sensinode.com>
In-Reply-To: <506445AB-DEEC-4EFF-ACE8-AEF9CEE895BA@sensinode.com>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms010403030101080209050201"
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: robert.cragie@gridmerge.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 13:29:13 -0000

This is a cryptographically signed message in MIME format.

--------------ms010403030101080209050201
Content-Type: multipart/alternative;
 boundary="------------040007000707090701040106"

This is a multi-part message in MIME format.
--------------040007000707090701040106
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: quoted-printable

Hi Zach,

At the end of the day, it obviously all comes down transmitting and=20
receiving asynchronous packets going between peers. However I think=20
there is some use in identifying at least message types to map to a=20
suitable transaction model. Beyond that, we should specify methods, as,=20
after all, this is CORE (RESTful environments) - the REST architectural=20
style does impose rules here.

I actually think client and server are still valid from the point of=20
view of execution, i.e. the client initiates the transaction. Just=20
thinking about packets flying about between peers doesn't help from the=20
point of view of a processing environment particularly, so again is the=20
aim to try to provide a pattern here?

Robert

Robert Cragie (Pacific Gas & Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
http://www.gridmerge.com <http://www.gridmerge.com/>


On 04/06/2010 1:59 PM, Zach Shelby wrote:
> On May 29, 2010, at 12:21 AM, Brian Frank wrote:
>
>   =20
>> My two cents:
>>
>> Personally I find it confusing to have both a message type *and* a met=
hod.
>>
>> Do we really need both?  It seems we just combine the two into a singl=
e method byte.  Maybe reserve a bit to say a message is a response to a G=
ET, PUT, DELETE, etc.
>>     =20
> Interesting way of looking at things. Maybe we are making this too comp=
lex with having both messages and methods. Instead we could think of this=
 simply as sending Methods and receiving a Response. That would save a co=
uple bits (and parsing) from the header too. In the end, does HTTP even h=
ave messages types at all? In practice an HTTP client is just sending a m=
ethod and receiving a response code.
>
> Another good concept we discussed off-line with Guido Moritz was whethe=
r we should think of the CoAP message as being synchronous at all. Alread=
y we have determined that talking about CoAP in terms of clients and serv=
ers doesn't work (coap-01 tries to avoid that terminology). Instead we ju=
st talk about peer CoAP end-points, which seems to work.
>
> As we are working with UDP the message model can be thought of as being=
 just asyncronous, when the A bit is not set then no response will come. =
If the A bit is set a response should come, but even with a large delay a=
nd we may need to retransmit. So the A bit achieves the same as the HTTP =
req/res model, but we could think of it as two asynchronous CoAP messages=
=2E
>
> Does that make sense to people?
>
> Zach
>
>   =20
>>
>>
>> On Fri, May 28, 2010 at 1:22 PM, Robert Cragie<robert.cragie@gridmerge=
=2Ecom>  wrote:
>> I think sometimes it makes more sense to think about threads of execut=
ion.
>>
>> Forgive me for this lengthy preamble but it will hopefully put things =
into context.
>>
>> In the most abstract sense, processing is governed by a thread of exec=
ution, which sequences a series of data transformations to expedite the r=
equired processing. If a data transformation can be completed synchronous=
ly in the thread of execution, then the thread is conceptually easier to =
understand and follow. Most threading models assume this to be the case a=
nd if the data transformation cannot complete, it usually blocks pending =
the required event to complete the transformation. During blocking, the t=
hread is suspended. In simple CPU models without any sort of scheduler, t=
here are two threads of execution: A main thread, pre-emptable by an inte=
rrupt thread, usually not pre-emptable. In the main thread, sub-threads a=
re emulated; data transformations can be simply function calls which don'=
t block and therefore return effectively immediately and synchronously. B=
locking data transformations are emulated by storing state relevant to ea=
ch sub-thread then marshaling each event as it is received e.g. through i=
nterrupt handling, which causes the second thread to run and thus allows =
changing sub-thread state so when the main thread runs, the blocking data=
 transformation can complete. Operating system schedulers for these simpl=
e CPUs simply abstract this operation through a kernel and associated tas=
k/thread scheduling calls. Continuations are a simpler form used in memor=
y-constrained implementations.
>>
>> Why the lengthy pre-amble? However you look at it, what essentially is=
 required for any threading model (using kernel/scheduler, continuations,=
 emulated, whatever) are fundamentally three primitives:
>> 	=95 Request
>> 	=95 Response
>> 	=95 Notify
>> A thread of execution will call request and will typically (though not=
 necessarily - see emulated blocking/continuations) wait for a response. =
If the thread blocks, it is typically woken by another worker thread hand=
ling a notify. The worker thread handles notifies asynchronously and buff=
ers and/or signals the associated task accordingly.
>>
>> This is why I think the current foundation level of messages in coap-0=
1 is right.
>>
>> On top of this, the payload of the messages can reflect the actual met=
hod. Personally, I don't see the need for a specific SUBSCRIBE message; a=
 POST/create to a subscription resource seems adequate to me. The notify =
message can carry a PUT or POST depending on whether the resource was sim=
ply updated or appended to (again it is no accident the data types in JSO=
N are as they are).
>>
>> Robert
>> Robert Cragie (Pacific Gas&  Electric)
>>
>> Gridmerge Ltd.
>> 89 Greenfield Crescent,
>> Wakefield, WF4 4WA, UK
>> +44 1924 910888
>> +1 415 513 0064
>> http://www.gridmerge.com
>>
>>
>> On 28/05/2010 2:13 PM, Angelo P. Castellani wrote:
>>     =20
>>> In my opinion Subscribe/Notify are special methods of interaction
>>> between resources.
>>>
>>> 1) SUBSCRIBE: Any resource A can send a Request to SUBSCRIBE with a
>>> resource B (to the resource B URI).
>>>
>>> When B receives the request, B can (should/must?) answer with a
>>> Response to the SUBSCRIBE Request, telling the result of the request
>>> (subscription accepted/denied/unsupported?).
>>>
>>> 2) NOTIFY: When subscription condition fires the resource B sends a
>>> NOTIFY Request to resource A URI.
>>>
>>> When A receives the request, A can (should/must?) answer with a
>>> Response to the NOTIFY Request, telling the result of the request (OK=
,
>>> cancel subscription, change notify options?).
>>>
>>> In each Request must be specified the URI of the resource doing the
>>> Request too (Option? From-URI?).
>>>
>>> Angelo
>>>
>>> On Fri, May 28, 2010 at 14:50, Zach Shelby
>>> <zach@sensinode.com>
>>>   wrote:
>>>
>>>
>>>       =20
>>>> Hi,
>>>>
>>>> This is a really good conversation. One thing we need to do is remem=
ber what our minimum requirements are for subscribe/notify and not try to=
 solve something more than we should. From what I know it is sufficient t=
o be able to receive notifications when a URI changes or periodically. Yo=
u might consider new URIs under this URI path to be changes to a URI thou=
gh...
>>>>
>>>> On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>>>
>>>>
>>>>
>>>>         =20
>>>>> Hello,
>>>>> with this flavor, the SUBSCRIBE may be replaced by a simple POST. S=
o no needs to have an explicit SUBSCRIBE method.
>>>>>
>>>>>
>>>>>           =20
>>>> This is what coap-01 assumes.
>>>>
>>>>
>>>>
>>>>         =20
>>>>> If we want support a more oriented peer-to-peer transaction on CoAP=
, it looks to me both SUB and NOTIFY should be treated as messages.
>>>>>
>>>>>
>>>>>           =20
>>>> The Request/Response model can be used peer-to-peer, and in CoAP you=
 can even use a Request asynchronously. Additionally, we want a native RE=
STful subscribe/notify technique, that is, we want to subscribe to resour=
ces and be susequently notified about those resources when they change.
>>>>
>>>> In that sense, you can think of a subscription as a request to recei=
ve asynchronous notifications about a resource (about a URI). This can be=
 achieved by:
>>>>
>>>> 1.  as a SUBSCRIBE Request on the URI with some option indicating th=
e lifetime as in coap-01,
>>>> 2.  as a Subcsribe message (no methods) on the URI with some option,=

>>>> 3.  or as a POST Request on the URI with options indicating that thi=
s is actually a subscription and the lifetime.  This bends the meaning of=
 POST quite a bit and might be prone to mistakes?
>>>>
>>>> The asynchronous response is a harder one. Can we bend the meaning o=
f a Request for making asynchronous notifications? Also a notification in=
cludes a URI about a resource on the requestor, which is inverse from nor=
mal Requests in REST. So the options here are:
>>>>
>>>> 1. as a Notify message about a URI (no methods) as in coap-01,
>>>> 2. as a NOTIFY Request about a URI as was in coap-00,
>>>> 3. hmmm... reusing CRUD methods really doesn't work for this one at =
all...
>>>>
>>>> I wonder what the HTTP designers would have done if this would have =
been a requirement back then? Maybe we should ask them...
>>>>
>>>> Zach
>>>>
>>>>
>>>>
>>>>         =20
>>>>> Adriano
>>>>>
>>>>> From:
>>>>> matthieu.vial@fr.non.schneider-electric.com [mailto:matthieu.vial@f=
r.non.schneider-electric.com
>>>>> ]
>>>>> Sent: venerd=EC 28 maggio 2010 13.52
>>>>> To: Adriano Pezzuto (apezzuto)
>>>>> Cc: core;
>>>>> core-bounces@ietf.org; robert.cragie@gridmerge.com
>>>>>
>>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>>
>>>>>
>>>>>
>>>>>           =20
>>>>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types =
not  methods!
>>>>>>
>>>>>>
>>>>>>             =20
>>>>> SUBSCRIBE can be just an asynchronous GET on update then I think it=
 is a method and NOTIFY is an asynchronous response so a message.
>>>>> But if we want to have selective notifications when a resource is c=
reated, updated or deleted then I think you're right NOTIFY and SUBSCRIBE=
 are messages.
>>>>>
>>>>> Does that make sense ?
>>>>>
>>>>> Matthieu
>>>>>
>>>>> <image001.gif>"Adriano Pezzuto (apezzuto)"
>>>>> <apezzuto@cisco.com>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> "Adriano Pezzuto (apezzuto)"
>>>>> <apezzuto@cisco.com>
>>>>>
>>>>> Envoy=E9 par :
>>>>> core-bounces@ietf.org
>>>>>
>>>>> 28/05/2010 12:50
>>>>>
>>>>> <image003.png>
>>>>> A
>>>>> <image004.png>
>>>>>
>>>>> <robert.cragie@gridmerge.com>
>>>>>
>>>>> <image003.png>
>>>>> cc
>>>>> <image004.png>
>>>>> core
>>>>> <core@ietf.org>
>>>>>
>>>>> <image003.png>
>>>>> Objet
>>>>> <image004.png>
>>>>> Re: [core] Subscribe/Notify for CoAP
>>>>> <image004.png>
>>>>> <image004.png>
>>>>>
>>>>> Hi Roberto,
>>>>> I understand your point and personally agree on M2M is quite differ=
ent from web page model. On the architectural RESTful style, the method i=
nformation tells the server what to do with data kept in the URI informat=
ion.
>>>>>
>>>>> So strictly speaking, both NOTIFY and SUBSCRIBE are message types n=
ot  methods!
>>>>>
>>>>> Adriano
>>>>>
>>>>> From: Robert Cragie [
>>>>> mailto:robert.cragie@gridmerge.com
>>>>> ]
>>>>> Sent: venerd=EC 28 maggio 2010 11.53
>>>>> To: Adriano Pezzuto (apezzuto)
>>>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>>
>>>>> I think the point here is that there are two levels we are consider=
ing.
>>>>>
>>>>> At the lowest (foundation) level, there are the transaction message=
s as described below. This provides a flexible mechanism for the applicat=
ion with regard to synchronicity and threading. This is important for the=
 types of devices CoAP is being aimed at.
>>>>>
>>>>> Above that, the methods can be used according to the architectural =
style. So in this case, it is RESTful (COnstrained Restful Environments),=
 which will naturally limit the number of methods and how transactions oc=
cur.
>>>>>
>>>>> The actual architecture using a combination of the methods and mess=
ages also depends on what is required at the application layer. Consider =
a typical client which wants to subscribe to a resource. That client cont=
rols the feed of data but needs a component which is capable of handling =
(possibly buffering) the data it receives through notifications. Is this =
a separate server? Or would we want to consider it part of an enhanced cl=
ient model which is able to process feeds of data? These are the sort of =
models which have led to the myriad of solutions (GENA, Webhooks, long po=
lling, pubsubhubbub, RESTMS etc.) based around HTTP which are all essenti=
ally ingenious ways of getting around the limitations imposed by HTTP and=
 how it is processed for anything which deviates from the classic web pag=
e access model.
>>>>>
>>>>> I think the aim of CoAP should be clean from the word go with regar=
d to supporting these more peer-to-peer transactions, where the client ca=
n exist on either entity and both entities can feed data to each other; t=
ypical in M2M applications.
>>>>>
>>>>> Robert
>>>>>
>>>>> Robert Cragie (Pacific Gas&  Electric)
>>>>>
>>>>> Gridmerge Ltd.
>>>>> 89 Greenfield Crescent,
>>>>> Wakefield, WF4 4WA, UK
>>>>> +44 1924 910888
>>>>> +1 415 513 0064
>>>>>
>>>>> http://www.gridmerge.com
>>>>>
>>>>>
>>>>> On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:
>>>>> Hi Robert,
>>>>>
>>>>> in my personal opinion, the option 1a) brings some sort of ambiguit=
y to CoAP specs.
>>>>>
>>>>> My be my understatement of new CoAP specs is not so deep, but now w=
e have 5 methods and 3 message types: request, response and notify. Which=
 methods are allowed with which messages types?
>>>>> I suppose you have to use PUT/POST method with notify message for a=
synch data notification. How to make a subscribe? I suppose you would use=
 a SUBSCRIBE method with request/response message or SUBSCRIBE with notif=
y message? Also what about POST/DELETE methods in a notify message? They =
not make any sense..
>>>>>
>>>>> I think the choice is between: option 1) ->  only CRUD methods and =
option 1b) ->  CRUD + SUB/NOTIFY methods, keeping in mind cost/benefits o=
f both solutions.
>>>>>
>>>>> Adriano
>>>>>
>>>>> From: Robert Cragie [
>>>>> mailto:robert.cragie@gridmerge.com
>>>>> ]
>>>>> Sent: mercoled=EC 26 maggio 2010 20.09
>>>>> To: Adriano Pezzuto (apezzuto)
>>>>> Cc: Paul Duffy (paduffy); Zach Shelby; core
>>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>>
>>>>> Hi Adrian,
>>>>>
>>>>> I would also prefer to keep the protocol in CoAP asynchronous. You =
can always map an asynchronous protocol to a synchronous one but, as we s=
ee in HTTP, it always ends up as a kludge to do it the other way round. T=
he efforts which have been gone to to make HTTP quasi-asynchronous via al=
l the schemes mentioned below and many more besides (all non-interoperabl=
e of course) is testament to how important this is for M2M communication.=

>>>>>
>>>>> So, back to Zach's list, I favor 1a) for the following reasons:
>>>>>
>>>>> Foundation level of messages:
>>>>>
>>>>> 1. request/response can be asynchronous or synchronous messages (as=
 there is a transaction ID in there)
>>>>> 2. notify is an asynchronous message
>>>>> Derived methods:
>>>>>
>>>>> I think it makes sense to add a pub/sub model as a useful mechanism=
 for M2M.
>>>>>
>>>>> So, looking at it the other way round: It will be entirely possible=
 to translate whatever is currently built on HTTP to CoAP based on the ab=
ove, with all its restrictions regarding synchronous and client/server tr=
ansactions. What may be harder is to translate directly is a CoAP-based a=
pplication to HTTP. So I guess the question is: Do we want to be hamstrun=
g to synchronous client/server transactions as dictated by HTTP and provi=
de a direct mapping to HTTP, then have to come up with similar kludges fo=
r asynchronous peer-to-peer transactions as has been done in numerous way=
s for HTTP, or do we want to define the protocol cleanly to start with an=
d accept that some sort of transaction relaying/conversion would have to =
take place at a mapping node?
>>>>>
>>>>> Robert
>>>>> Robert Cragie (Pacific Gas&  Electric)
>>>>>
>>>>> Gridmerge Ltd.
>>>>> 89 Greenfield Crescent,
>>>>> Wakefield, WF4 4WA, UK
>>>>> +44 1924 910888
>>>>> +1 415 513 0064
>>>>>
>>>>> http://www.gridmerge.com
>>>>>
>>>>>
>>>>> On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:
>>>>> Hi,
>>>>> it looks to me that CoAP should use an explicit sub/notify mechanis=
m since this is the core of the machine-to-machine interaction model.
>>>>> HTTP suffers of this lack and we have seen a plethora of solutions =
to give an asynch taste to it. Webhooks and websockets are only the lasts=
 of the list.
>>>>> As someone has already pointed out on this list, it is theoreticall=
y possible to describe sub/notify using only CRUD methods but it looks a =
little bit tricky and verbose.
>>>>>
>>>>> Now we have a chance to build from scratch a new protocol with and =
I think using explicit sub/notify methods with a clear and well defined s=
emantic is the best option. It is easily understanding from every develop=
er and will prevent to build other fanny solutions on top of the CoAP. HT=
TP does not have this well defined semantic and (for hundreds of other re=
asons also) it is not used as wide protocol for machine-to-machine commun=
ication.
>>>>>
>>>>> CoAP - as binary protocol - and with an explicit asynch model has a=
 chance to be a really wide protocol for M2M communication not only for c=
onstrained environments.
>>>>>
>>>>> my 2 cents
>>>>>
>>>>> - adriano
>>>>>
>>>>> -----Original Message-----
>>>>> From:
>>>>> core-bounces@ietf.org [mailto:core-bounces@ietf.org
>>>>> ] On Behalf Of Paul Duffy (paduffy)
>>>>> Sent: mercoled=EC 26 maggio 2010 0.47
>>>>> To: Zach Shelby
>>>>> Cc: core
>>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>>
>>>>> On 5/25/2010 6:41 PM, Zach Shelby wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> On May 26, 2010, at 12:23 AM, Charles Palmer wrote:
>>>>>
>>>>>
>>>>> Hi folks
>>>>>
>>>>> It occurs to me that CoRE should be keeping a close eye on ZigBee S=
E2.0 work, so that it is as easy as possible for ZigBee SE to use CoRE wh=
en ready. That suggests to me that we should align with their subscribe/n=
otify process.
>>>>>
>>>>>
>>>>> I am not sure I understand that. I mean, ZigBee SE2.0 is defining a=
n application specific subscribe/notify mechanism for that purpose so far=
 for HTTP. This uses standard HTTP methods and some custom payload and RE=
ST interfaces. CoAP Req/Res is already totally compatible with SE2.0 in t=
hat respect, so alignment is already OK there. Nothing stopping someone f=
rom using SE2.0 over CoAP.
>>>>>
>>>>> Specifying a native susbcription/notify into CoAP is another matter=
=2E We can't adopt a solution specific to one application as that won't s=
olve the problems of other applications nor general HTTP mapping at all (=
probably would make it worse). It seems that for the near future there wi=
ll be a bunch of HTTP push mechanisms in use without any clear standard a=
ppearing - or am I wrong there?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> If COAP extends HTTP semantics with new subscription methods, it wi=
ll
>>>>> not be possible to easily interchange HTTP/COAP, and translation
>>>>> gateways will become more complex to implement.
>>>>>
>>>>>
>>>>>
>>>>> Zach
>>>>>
>>>>>
>>>>> Regards - Charles
>>>>>
>>>>>
>>>>> -----Original Message-----
>>>>> From:
>>>>> core-bounces@ietf.org [mailto:core-bounces@ietf.org
>>>>> ] On Behalf Of Paul Duffy
>>>>> Sent: 25 May 2010 03:48
>>>>> To: Zach Shelby
>>>>> Cc: core
>>>>> Subject: Re: [core] Subscribe/Notify for CoAP
>>>>>
>>>>> Recommend something like #2, primarily to avoid introducing non HTT=
P
>>>>> method semantics, simplifying HTTP/COAP translation.gateways, etc.
>>>>>
>>>>>
>>>>> On 5/24/2010 11:49 AM, Zach Shelby wrote:
>>>>>
>>>>> (thread renamed)
>>>>>
>>>>> We have two different paths with regard to a subscribe/notify mecha=
nism for CoAP:
>>>>>
>>>>> 1. Use specific Subscription and Notify mechanisms for CoAP as HTTP=
 really does not include this concept.
>>>>> 1a) Notify as a message and SUBSCRIBE as a method. This is currentl=
y used in coap-01.
>>>>> 1b) NOTIFY and SUBSCRIBE as methods. This was used in coap-00, but =
we had a good list discussion about this leading to a. In practice it doe=
sn't make a big difference if notification is a message or method.
>>>>>
>>>>> 2. Use an HTTP specific framework such as Webhooks, the ZigBee SE2.=
0 proposal or GENA.
>>>>>
>>>>> So far we have focused on 1 in the WG, and every now and again 2 co=
mes up. At least I am not convinced that we need to suffer the drawbacks =
of HTTP here. Anyways 2 does not help our mapping to HTTP in reality very=
 much as there is no standard way of doing this over HTTP. Thus a CoAP-HT=
TP proxy may end up anyways translating between multiple HTTP frameworks =
depending on the application. So instead of doing a CoAP Notify/Subscribe=
 to Webhooks mapping, you will could end up having to do a CoAP Webhooks =
to HTTP GENA mapping.
>>>>>
>>>>>
>>>>>
>>>>> I don't understand this last para. If CoAP sticks to the semantics =
of
>>>>> the current HTTP methods, would this not offer a fairly straightfor=
ward
>>>>> translation to/from HTTP?
>>>>>
>>>>>
>>>>>
>>>>>  From what I have heard so far 1 still seems like a wise choice, al=
though I need to look at Webhooks more deeply. In reality many applicatio=
ns specify their own way of doing a push interface using REST methods and=
 specific payloads (ZigBee SE2.0 is such an example). That is just fine, =
and might be used instead of a specific CoAP notify/subscribe in that cas=
e. So 1 doesn't prevent the application using its own mechanism, it just =
provides a native way for doing push.
>>>>>
>>>>> What do people think?
>>>>>
>>>>> Zach
>>>>>
>>>>> On May 17, 2010, at 6:44 PM,
>>>>> matthieu.vial@fr.non.schneider-electric.com
>>>>>   wrote:
>>>>>
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> My comments about the subscribe/notify mechanism of Zigbee IP.
>>>>>
>>>>> Pros:
>>>>> - Derived from the webhooks concept
>>>>> - If used by CORE it will be easier to map to HTTP because it uses =
only CRUD verbs.
>>>>> - The subscription message is extendable and could support advanced=
 options (delays, increment, ...)
>>>>> - Only one listening port whatever the transport binding is.
>>>>>
>>>>> Cons:
>>>>> - No interoperability without well known URIs and a well defined su=
bscription message format (Not sure CoAP draft is the right place to spec=
ify this).
>>>>> - XML/EXI is too complex to be the required format for the default =
subscription/notification mechanism.
>>>>> - The notification should not require a subsequent GET to retrieve =
the content.
>>>>> - Subresource subscription is redundant.
>>>>>
>>>>> Hope this could help,
>>>>> Matthieu
>>>>>
>>>>>
>>>>> <graycol.gif>"Charles Palmer"
>>>>> <charles.palmer@onzo.com>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> "Charles Palmer"
>>>>> <charles.palmer@onzo.com>
>>>>>
>>>>> Envoy=E9 par :
>>>>> core-bounces@ietf.org
>>>>>
>>>>> 15/05/2010 14:06
>>>>>
>>>>> <ecblank.gif>
>>>>> A
>>>>> <ecblank.gif>
>>>>> "core"
>>>>> <core@ietf.org>
>>>>>
>>>>> <ecblank.gif>
>>>>> cc
>>>>> <ecblank.gif>
>>>>> <ecblank.gif>
>>>>> Objet
>>>>> <ecblank.gif>
>>>>> Re: [core] Selecting a WG document for CoAP
>>>>> <ecblank.gif>  <ecblank.gif>
>>>>>
>>>>> Dear all
>>>>>
>>>>> Those interested in the subscribe/notify discussion might like to l=
ook
>>>>> at the draft Smart Energy Profile 2.0 Application Protocol
>>>>> Specification. It is available here:
>>>>>
>>>>> http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20Publ=
icApp
>>>>>
>>>>> licationProfile.aspx
>>>>>
>>>>> It manages subscribe/notify by using POST. This seems to remove the=
 need
>>>>> for SUBSCRIBE and notify.
>>>>>
>>>>> "Imagine a host A, which exposes a resource at http{s}://A/resource=
 and
>>>>> a second host B, which wishes to learn of changes to this resource.=
 To
>>>>> facilitate a subscription/ notification mechanism, A would expose a=

>>>>> resource http{s}://A/sub and B would expose a resource http{s}://B/=
ntfy.
>>>>> To subscribe to notifications regarding http{s}://A/resource, B wou=
ld
>>>>> send a POST to the address http{s}://A/sub/B containing the URI of =
the
>>>>> resource of interest (http{s}://A/resource) and the URI of B's
>>>>> notification resource (http{s}://B/ntfy). Following this subscripti=
on
>>>>> step, should A wish to notify B of a change to the resource address=
ed at
>>>>> http{s}://A/resource, A would send a POST to the address
>>>>> http{s}://B/ntfy containing the URI of the resource changed
>>>>> (http{s}://A/resource) and the URI of A's subscription resource
>>>>> (http{s}://A/sub/B), should A wish to change its subscription. The =
host
>>>>> B can then query the resource (or not) at its leisure."
>>>>>
>>>>> Sleepy nodes are not allowed to subscribe, and must poll.
>>>>>
>>>>> Regards - Charles Palmer
>>>>>
>>>>> -----Original Message-----
>>>>> From:
>>>>> core-bounces@ietf.org [mailto:core-bounces@ietf.org
>>>>> ] On Behalf Of
>>>>> Angelo P. Castellani
>>>>> Sent: 14 May 2010 13:14
>>>>> To: Zach Shelby
>>>>> Cc: core
>>>>> Subject: Re: [core] Selecting a WG document for CoAP
>>>>>
>>>>> Zach,
>>>>>
>>>>> thanks for the comments, but please refer to my most recent e-mail =
for
>>>>> a more specific list of technical issues I'm pointing to.
>>>>>
>>>>> I want to do only a little integration to what I've written there.
>>>>>
>>>>> In my very personal opinion, to maximize adherence with the REST mo=
del
>>>>> and minimize implementation effort SUBSCRIBE and NOTIFY should be
>>>>> mapped to methods (as discussed many times together...).
>>>>>
>>>>> Uniform interface principle (Fielding PhD dissertation Section 5.1.=
5,
>>>>> "The central feature that distinguishes the REST architectural styl=
e
>>>>> [...]") states that to simplify the software architecture, resource=

>>>>> interfaces/interfaces should be as general as possible.
>>>>>
>>>>> I agree with this principle in this specific case, mainly because
>>>>> handling a special message type for notify leads node software desi=
gn
>>>>> to a more complex architecture.
>>>>>
>>>>> The reason is that this new message type requires special handling =
and
>>>>> introduces a complexity in the software modularization.
>>>>>
>>>>> Best,
>>>>> Angelo
>>>>>
>>>>> On Fri, May 14, 2010 at 13:06, Zach Shelby
>>>>> <zach@sensinode.com>
>>>>>   wrote:
>>>>>
>>>>>
>>>>> Hi Angelo,
>>>>>
>>>>> On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:
>>>>>
>>>>>
>>>>>
>>>>> Dear C. Bormann, all,
>>>>>
>>>>> before deciding for the final direction, I've the following
>>>>> observations about draft-shelby-core-coap-01
>>>>>
>>>>> While I mostly share Zach's view of the protocol approach, and
>>>>> appreciate many aspects of the proposal, there are in my opinion
>>>>>
>>>>>
>>>>> still
>>>>>
>>>>>
>>>>> some open issues that need to be at least discussed before the
>>>>>
>>>>>
>>>>> current
>>>>>
>>>>>
>>>>> document can be selected.
>>>>>
>>>>>
>>>>> Of course there are plenty of open issues. Remember that working gr=
oup
>>>>>
>>>>>
>>>>> documents still undertake as much change and improvement as the WG
>>>>> wants, so by no means is coap-01 set in stone. I would expect at le=
ast
>>>>> 5-10 more revisions still along the way. Already several of your id=
eas
>>>>> have been integrated into coap-01, and several more are under
>>>>> consideration, so it is coming along. Patience ;-)
>>>>>
>>>>>
>>>>>
>>>>> In particular, I would like to highlight the following:
>>>>>
>>>>> a) As it is now, it is not possible to have a straightforward
>>>>> translation of HTTP ->  CoAP and viceversa: see
>>>>>
>>>>> http://www.ietf.org/mail-archive/web/core/current/msg00133.html
>>>>>   (this
>>>>> impacts the scalability of the web service model too)
>>>>>
>>>>>
>>>>> In coap-01 the Method names are now identical to HTTP methods. The
>>>>>
>>>>>
>>>>> Req/Res interaction is a direct translation. The URI hierarchy is
>>>>> compatible, and the URI binary code format we are still working on
>>>>> obviously. The only thing that takes some state to translate is
>>>>> Subscribe/Notify. But note, Subscribe/Notify takes some state no ma=
tter
>>>>> how you do it, even with HTTP-HTTP there is no clean and easy way t=
o
>>>>> handle subscriptions.
>>>>>
>>>>>
>>>>>
>>>>> b) Moreover, CoAP's implementation is not as simple as it should be=
=2E
>>>>> I've investigated the implementation and some design choices (as
>>>>> Options) are leading to very high program complexity (ROM) on a
>>>>> MSP430-based device.
>>>>>
>>>>>
>>>>> This we can definitely improve, and already made several optimizati=
ons
>>>>>
>>>>>
>>>>> from -00 to -01. Here I need some very concrete proposals though. A=
lso
>>>>> remember that many things are optional, for example subscribe/notif=
y is
>>>>> not required if you don't need it.
>>>>>
>>>>>
>>>>>
>>>>> c) Finally when comparing HTTP message size with CoAP message size,=

>>>>> the resulting compression isn't as good as you may expect.
>>>>>
>>>>> Example:
>>>>> HTTP: GET /sensor/temp.xml HTTP/1.0 =3D 32 B
>>>>> CoAP: 24 B with options parsing procedure requiring an added
>>>>> implementation complexity
>>>>>
>>>>>
>>>>> Right, that is not how it will work in practice. Working with a rea=
l
>>>>>
>>>>>
>>>>> HTTP server that HTTP header will be more complex, and on the CoAP =
side
>>>>> you would chose shorter URLs. The biggest improvement possible here=
 is
>>>>> from using binary coded URLs of course. We need to look at a wider =
range
>>>>> of interactions and real HTTP headers as well to check that we are
>>>>> efficient enough.
>>>>>
>>>>>
>>>>>
>>>>> Addressing all these points potentially leads to major technical
>>>>> modifications (especially point a) on the current draft, hence it i=
s
>>>>> appropriate in my opinion to discuss these points before making the=

>>>>> final decision.
>>>>>
>>>>>
>>>>> I am not sure what else you have in mind for a). If we just forget
>>>>>
>>>>>
>>>>> about Subscribe/Notify then you are good to go. But then you are al=
so
>>>>> not fulfilling the charter or the industry needs in that respect.
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Zach
>>>>>
>>>>>
>>>>>
>>>>> Best regards,
>>>>>
>>>>> Angelo P. Castellani
>>>>>
>>>>>
>>>>> On Mon, May 10, 2010 at 18:51, Carsten Bormann
>>>>> <cabo@tzi.org>
>>>>> wrote:
>>>>>
>>>>>
>>>>> The CORE WG has a milestone to select a WG document for CoAP in
>>>>>
>>>>>
>>>>> April:
>>>>>
>>>>>
>>>>>
>>>>> http://datatracker.ietf.org/wg/core/charter/
>>>>>
>>>>> ...
>>>>> Apr 2010 Select WG document for basis of the CoAP protocol
>>>>>
>>>>> Of the various documents that have been contributed,
>>>>>
>>>>>
>>>>> draft-shelby-core-coap has significant discussion, as well as the
>>>>> largest number of updates (including a previous version that was st=
ill
>>>>> called -6lowapp-coap).
>>>>>
>>>>>
>>>>> Today, another updated version of that draft was announced. See
>>>>>
>>>>> http://www.ietf.org/mail-archive/web/core/current/msg00138.html
>>>>>
>>>>> for the announcement and
>>>>>
>>>>> http://tools.ietf.org/html/draft-shelby-core-coap-01
>>>>>
>>>>> for the draft itself.
>>>>>
>>>>> However, as the authors say, there are still significant TODOs.
>>>>>
>>>>> Are we in a state yet where we can say whether this is the right
>>>>>
>>>>>
>>>>> direction for the WG to take?
>>>>>
>>>>>
>>>>> If yes, is it the right direction? Should we adopt it as a WG
>>>>>
>>>>>
>>>>> document?
>>>>>
>>>>>
>>>>> If you don't think we can say yet, is there a set of technical
>>>>>
>>>>>
>>>>> decisions you would like the authors to take with priority?
>>>>>
>>>>>
>>>>> Note that once a document has become a WG document, the authors act=

>>>>>
>>>>>
>>>>> as editors for the working group, making (and usually fleshing out =
the
>>>>> details of) any change that the WG decides it needs.
>>>>>
>>>>>
>>>>> If you think we can still improve the draft, this is not an obstacl=
e
>>>>>
>>>>>
>>>>> to making it a WG document.
>>>>>
>>>>>
>>>>> But of course we shouldn't do that if we intend to reverse its
>>>>>
>>>>>
>>>>> fundamental technical direction.
>>>>>
>>>>>
>>>>> In order to stay roughly in sync with our milestones, we should
>>>>>
>>>>>
>>>>> reach at a decision on how to go forward this week.
>>>>>
>>>>>
>>>>> Gruesse, Carsten
>>>>>
>>>>> _______________________________________________
>>>>> core mailing list
>>>>>
>>>>> core@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/core
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> core mailing list
>>>>>
>>>>> core@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/core
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>>>>>
>>>>> http://zachshelby.org - My blog "On the Internet of Things
>>>>> "
>>>>> http://6lowpan.net - My book "
>>>>> 6LoWPAN: The Wireless Embedded Internet"
>>>>> Mobile: +358 40 7796297
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> core mailing list
>>>>>
>>>>> core@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/core
>>>>>
>>>>>
>>>>> --------------------------------
>>>>> Onzo is a limited company number 06097997 registered in England&  W=
ales. The
>>>>> registered office is 6 Great Newport Street, London, WC2H 7JB, Unit=
ed Kingdom.
>>>>>
>>>>> This email message may contain confidential and/or privileged infor=
mation, and
>>>>> is intended solely for the addressee(s). If you have received this =
email in
>>>>> error, please notify Onzo immediately. Unauthorised copying, disclo=
sure or
>>>>> distribution of the material in this email is forbidden.
>>>>> --------------------------------
>>>>>
>>>>> _______________________________________________
>>>>> core mailing list
>>>>>
>>>>> core@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/core
>>>>>
>>>>>
>>>>> ___________________________________________________________________=
___
>>>>> This email has been scanned by the MessageLabs Email Security Syste=
m.
>>>>> ___________________________________________________________________=
___
>>>>>
>>>>> _______________________________________________
>>>>> core mailing list
>>>>>
>>>>> core@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/core
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> core mailing list
>>>>>
>>>>> core@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/core
>>>>>
>>>>>
>>>>> --------------------------------
>>>>> Onzo is a limited company number 06097997 registered in England&  W=
ales. The
>>>>> registered office is 6 Great Newport Street, London, WC2H 7JB, Unit=
ed Kingdom.
>>>>>
>>>>> This email message may contain confidential and/or privileged infor=
mation, and
>>>>> is intended solely for the addressee(s). If you have received this =
email in
>>>>> error, please notify Onzo immediately. Unauthorised copying, disclo=
sure or
>>>>> distribution of the material in this email is forbidden.
>>>>> --------------------------------
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> core mailing list
>>>>>
>>>>> core@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/core
>>>>>
>>>>> _______________________________________________
>>>>> core mailing list
>>>>>
>>>>> core@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/core
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ___________________________________________________________________=
___
>>>>> This email has been scanned by the MessageLabs Email Security Syste=
m.
>>>>> ___________________________________________________________________=
__________________________________________________
>>>>> core mailing list
>>>>>
>>>>> core@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/core
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> core mailing list
>>>>>
>>>>> core@ietf.org
>>>>> https://www.ietf.org/mailman/listinfo/core
>>>>>
>>>>>
>>>>>
>>>>>           =20
>>>> --
>>>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>>>>
>>>> http://zachshelby.org  - My blog "On the Internet of Things
>>>> "
>>>> http://6lowpan.net - My book "
>>>> 6LoWPAN: The Wireless Embedded Internet"
>>>> Mobile: +358 40 7796297
>>>>
>>>> _______________________________________________
>>>> core mailing list
>>>>
>>>> core@ietf.org
>>>> https://www.ietf.org/mailman/listinfo/core
>>>>
>>>>
>>>>
>>>>
>>>>         =20
>>> _______________________________________________
>>> core mailing list
>>>
>>> core@ietf.org
>>> https://www.ietf.org/mailman/listinfo/core
>>>
>>>
>>>
>>>
>>>       =20
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>     =20
>   =20

--------------040007000707090701040106
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content=3D"text/html; charset=3Dwindows-1252"
 http-equiv=3D"Content-Type">
</head>
<body bgcolor=3D"#ffffff" text=3D"#000000">
Hi Zach,<br>
<br>
At the end of the day, it obviously all comes down transmitting and
receiving asynchronous packets going between peers. However I think
there is some use in identifying at least message types to map to a
suitable transaction model. Beyond that, we should specify methods, as,
after all, this is CORE (RESTful environments) - the REST architectural
style does impose rules here.<br>
<br>
I actually think client and server are still valid from the point of
view of execution, i.e. the client initiates the transaction. Just
thinking about packets flying about between peers doesn't help from the
point of view of a processing environment particularly, so again is the
aim to try to provide a pattern here?<br>
<br>
Robert<br>
<div class=3D"moz-signature">
<style type=3D"text/css">
p
{
font-family:Verdana,Arial,sans-serif;
font-size:8pt;
}
=2Ename
{
font-size:12pt;
}
</style>
<p class=3D"name">Robert Cragie (Pacific Gas &amp; Electric)</p>
<p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
<a href=3D"http://www.gridmerge.com/">http://www.gridmerge.com</a></p>
</div>
<br>
On 04/06/2010 1:59 PM, Zach Shelby wrote:
<blockquote
 cite=3D"mid:506445AB-DEEC-4EFF-ACE8-AEF9CEE895BA@sensinode.com"
 type=3D"cite">
  <pre wrap=3D"">
On May 29, 2010, at 12:21 AM, Brian Frank wrote:

  </pre>
  <blockquote type=3D"cite">
    <pre wrap=3D"">My two cents:=20

Personally I find it confusing to have both a message type *and* a method=
=2E

Do we really need both?  It seems we just combine the two into a single m=
ethod byte.  Maybe reserve a bit to say a message is a response to a GET,=
 PUT, DELETE, etc.
    </pre>
  </blockquote>
  <pre wrap=3D"">
Interesting way of looking at things. Maybe we are making this too comple=
x with having both messages and methods. Instead we could think of this s=
imply as sending Methods and receiving a Response. That would save a coup=
le bits (and parsing) from the header too. In the end, does HTTP even hav=
e messages types at all? In practice an HTTP client is just sending a met=
hod and receiving a response code.=20

Another good concept we discussed off-line with Guido Moritz was whether =
we should think of the CoAP message as being synchronous at all. Already =
we have determined that talking about CoAP in terms of clients and server=
s doesn't work (coap-01 tries to avoid that terminology). Instead we just=
 talk about peer CoAP end-points, which seems to work.

As we are working with UDP the message model can be thought of as being j=
ust asyncronous, when the A bit is not set then no response will come. If=
 the A bit is set a response should come, but even with a large delay and=
 we may need to retransmit. So the A bit achieves the same as the HTTP re=
q/res model, but we could think of it as two asynchronous CoAP messages. =


Does that make sense to people?=20

Zach

  </pre>
  <blockquote type=3D"cite">
    <pre wrap=3D"">


On Fri, May 28, 2010 at 1:22 PM, Robert Cragie <a class=3D"moz-txt-link-r=
fc2396E" href=3D"mailto:robert.cragie@gridmerge.com">&lt;robert.cragie@gr=
idmerge.com&gt;</a> wrote:
I think sometimes it makes more sense to think about threads of execution=
=2E

Forgive me for this lengthy preamble but it will hopefully put things int=
o context.

In the most abstract sense, processing is governed by a thread of executi=
on, which sequences a series of data transformations to expedite the requ=
ired processing. If a data transformation can be completed synchronously =
in the thread of execution, then the thread is conceptually easier to und=
erstand and follow. Most threading models assume this to be the case and =
if the data transformation cannot complete, it usually blocks pending the=
 required event to complete the transformation. During blocking, the thre=
ad is suspended. In simple CPU models without any sort of scheduler, ther=
e are two threads of execution: A main thread, pre-emptable by an interru=
pt thread, usually not pre-emptable. In the main thread, sub-threads are =
emulated; data transformations can be simply function calls which don't b=
lock and therefore return effectively immediately and synchronously. Bloc=
king data transformations are emulated by storing state relevant to each =
sub-thread then marshaling each event as
 it is received e.g. through interrupt handling, which causes the second =
thread to run and thus allows changing sub-thread state so when the main =
thread runs, the blocking data transformation can complete. Operating sys=
tem schedulers for these simple CPUs simply abstract this operation throu=
gh a kernel and associated task/thread scheduling calls. Continuations ar=
e a simpler form used in memory-constrained implementations.

Why the lengthy pre-amble? However you look at it, what essentially is re=
quired for any threading model (using kernel/scheduler, continuations, em=
ulated, whatever) are fundamentally three primitives:
	=95 Request
	=95 Response
	=95 Notify
A thread of execution will call request and will typically (though not ne=
cessarily - see emulated blocking/continuations) wait for a response. If =
the thread blocks, it is typically woken by another worker thread handlin=
g a notify. The worker thread handles notifies asynchronously and buffers=
 and/or signals the associated task accordingly.

This is why I think the current foundation level of messages in coap-01 i=
s right.

On top of this, the payload of the messages can reflect the actual method=
=2E Personally, I don't see the need for a specific SUBSCRIBE message; a =
POST/create to a subscription resource seems adequate to me. The notify m=
essage can carry a PUT or POST depending on whether the resource was simp=
ly updated or appended to (again it is no accident the data types in JSON=
 are as they are).

Robert=20
Robert Cragie (Pacific Gas &amp; Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
<a class=3D"moz-txt-link-freetext" href=3D"http://www.gridmerge.com">http=
://www.gridmerge.com</a>


On 28/05/2010 2:13 PM, Angelo P. Castellani wrote:
    </pre>
    <blockquote type=3D"cite">
      <pre wrap=3D"">In my opinion Subscribe/Notify are special methods o=
f interaction
between resources.

1) SUBSCRIBE: Any resource A can send a Request to SUBSCRIBE with a
resource B (to the resource B URI).

When B receives the request, B can (should/must?) answer with a
Response to the SUBSCRIBE Request, telling the result of the request
(subscription accepted/denied/unsupported?).

2) NOTIFY: When subscription condition fires the resource B sends a
NOTIFY Request to resource A URI.

When A receives the request, A can (should/must?) answer with a
Response to the NOTIFY Request, telling the result of the request (OK,
cancel subscription, change notify options?).

In each Request must be specified the URI of the resource doing the
Request too (Option? From-URI?).

Angelo

On Fri, May 28, 2010 at 14:50, Zach Shelby=20
<a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:zach@sensinode.com">&lt=
;zach@sensinode.com&gt;</a>
 wrote:
 =20

      </pre>
      <blockquote type=3D"cite">
        <pre wrap=3D"">Hi,

This is a really good conversation. One thing we need to do is remember w=
hat our minimum requirements are for subscribe/notify and not try to solv=
e something more than we should. From what I know it is sufficient to be =
able to receive notifications when a URI changes or periodically. You mig=
ht consider new URIs under this URI path to be changes to a URI though...=


On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrote:

   =20

        </pre>
        <blockquote type=3D"cite">
          <pre wrap=3D"">Hello,
with this flavor, the SUBSCRIBE may be replaced by a simple POST. So no n=
eeds to have an explicit SUBSCRIBE method.
     =20

          </pre>
        </blockquote>
        <pre wrap=3D"">This is what coap-01 assumes.

   =20

        </pre>
        <blockquote type=3D"cite">
          <pre wrap=3D"">If we want support a more oriented peer-to-peer =
transaction on CoAP, it looks to me both SUB and NOTIFY should be treated=
 as messages.
     =20

          </pre>
        </blockquote>
        <pre wrap=3D"">The Request/Response model can be used peer-to-pee=
r, and in CoAP you can even use a Request asynchronously. Additionally, w=
e want a native RESTful subscribe/notify technique, that is, we want to s=
ubscribe to resources and be susequently notified about those resources w=
hen they change.

In that sense, you can think of a subscription as a request to receive as=
ynchronous notifications about a resource (about a URI). This can be achi=
eved by:

1.  as a SUBSCRIBE Request on the URI with some option indicating the lif=
etime as in coap-01,
2.  as a Subcsribe message (no methods) on the URI with some option,
3.  or as a POST Request on the URI with options indicating that this is =
actually a subscription and the lifetime.  This bends the meaning of POST=
 quite a bit and might be prone to mistakes?

The asynchronous response is a harder one. Can we bend the meaning of a R=
equest for making asynchronous notifications? Also a notification include=
s a URI about a resource on the requestor, which is inverse from normal R=
equests in REST. So the options here are:

1. as a Notify message about a URI (no methods) as in coap-01,
2. as a NOTIFY Request about a URI as was in coap-00,
3. hmmm... reusing CRUD methods really doesn't work for this one at all..=
=2E

I wonder what the HTTP designers would have done if this would have been =
a requirement back then? Maybe we should ask them...

Zach

   =20

        </pre>
        <blockquote type=3D"cite">
          <pre wrap=3D"">Adriano

From:=20
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:matthieu.vial@fr.non=
=2Eschneider-electric.com">matthieu.vial@fr.non.schneider-electric.com</a=
> [<a class=3D"moz-txt-link-freetext" href=3D"mailto:matthieu.vial@fr.non=
=2Eschneider-electric.com">mailto:matthieu.vial@fr.non.schneider-electric=
=2Ecom</a>
]
Sent: venerd=EC 28 maggio 2010 13.52
To: Adriano Pezzuto (apezzuto)
Cc: core;=20
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core-bounces@ietf.or=
g">core-bounces@ietf.org</a>; <a class=3D"moz-txt-link-abbreviated" href=3D=
"mailto:robert.cragie@gridmerge.com">robert.cragie@gridmerge.com</a>

Subject: Re: [core] Subscribe/Notify for CoAP

     =20

          </pre>
          <blockquote type=3D"cite">
            <pre wrap=3D"">So strictly speaking, both NOTIFY and SUBSCRIB=
E are message types not  methods!
       =20

            </pre>
          </blockquote>
          <pre wrap=3D"">SUBSCRIBE can be just an asynchronous GET on upd=
ate then I think it is a method and NOTIFY is an asynchronous response so=
 a message.
But if we want to have selective notifications when a resource is created=
, updated or deleted then I think you're right NOTIFY and SUBSCRIBE are m=
essages.

Does that make sense ?

Matthieu

&lt;image001.gif&gt;"Adriano Pezzuto (apezzuto)"=20
<a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:apezzuto@cisco.com">&lt=
;apezzuto@cisco.com&gt;</a>





"Adriano Pezzuto (apezzuto)"=20
<a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:apezzuto@cisco.com">&lt=
;apezzuto@cisco.com&gt;</a>

Envoy=E9 par :=20
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core-bounces@ietf.or=
g">core-bounces@ietf.org</a>

28/05/2010 12:50

&lt;image003.png&gt;
A
&lt;image004.png&gt;

<a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:robert.cragie@gridmerge=
=2Ecom">&lt;robert.cragie@gridmerge.com&gt;</a>

&lt;image003.png&gt;
cc
&lt;image004.png&gt;
core=20
<a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:core@ietf.org">&lt;core=
@ietf.org&gt;</a>

&lt;image003.png&gt;
Objet
&lt;image004.png&gt;
Re: [core] Subscribe/Notify for CoAP
&lt;image004.png&gt;
&lt;image004.png&gt;

Hi Roberto,
I understand your point and personally agree on M2M is quite different fr=
om web page model. On the architectural RESTful style, the method informa=
tion tells the server what to do with data kept in the URI information.

So strictly speaking, both NOTIFY and SUBSCRIBE are message types not  me=
thods!

Adriano

From: Robert Cragie [
<a class=3D"moz-txt-link-freetext" href=3D"mailto:robert.cragie@gridmerge=
=2Ecom">mailto:robert.cragie@gridmerge.com</a>
]
Sent: venerd=EC 28 maggio 2010 11.53
To: Adriano Pezzuto (apezzuto)
Cc: Paul Duffy (paduffy); Zach Shelby; core
Subject: Re: [core] Subscribe/Notify for CoAP

I think the point here is that there are two levels we are considering.

At the lowest (foundation) level, there are the transaction messages as d=
escribed below. This provides a flexible mechanism for the application wi=
th regard to synchronicity and threading. This is important for the types=
 of devices CoAP is being aimed at.

Above that, the methods can be used according to the architectural style.=
 So in this case, it is RESTful (COnstrained Restful Environments), which=
 will naturally limit the number of methods and how transactions occur.

The actual architecture using a combination of the methods and messages a=
lso depends on what is required at the application layer. Consider a typi=
cal client which wants to subscribe to a resource. That client controls t=
he feed of data but needs a component which is capable of handling (possi=
bly buffering) the data it receives through notifications. Is this a sepa=
rate server? Or would we want to consider it part of an enhanced client m=
odel which is able to process feeds of data? These are the sort of models=
 which have led to the myriad of solutions (GENA, Webhooks, long polling,=
 pubsubhubbub, RESTMS etc.) based around HTTP which are all essentially i=
ngenious ways of getting around the limitations imposed by HTTP and how i=
t is processed for anything which deviates from the classic web page acce=
ss model.

I think the aim of CoAP should be clean from the word go with regard to s=
upporting these more peer-to-peer transactions, where the client can exis=
t on either entity and both entities can feed data to each other; typical=
 in M2M applications.

Robert

Robert Cragie (Pacific Gas &amp; Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064

<a class=3D"moz-txt-link-freetext" href=3D"http://www.gridmerge.com">http=
://www.gridmerge.com</a>


On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:
Hi Robert,

in my personal opinion, the option 1a) brings some sort of ambiguity to C=
oAP specs.

My be my understatement of new CoAP specs is not so deep, but now we have=
 5 methods and 3 message types: request, response and notify. Which metho=
ds are allowed with which messages types?
I suppose you have to use PUT/POST method with notify message for asynch =
data notification. How to make a subscribe? I suppose you would use a SUB=
SCRIBE method with request/response message or SUBSCRIBE with notify mess=
age? Also what about POST/DELETE methods in a notify message? They not ma=
ke any sense..

I think the choice is between: option 1) -&gt; only CRUD methods and opti=
on 1b) -&gt; CRUD + SUB/NOTIFY methods, keeping in mind cost/benefits of =
both solutions.

Adriano

From: Robert Cragie [
<a class=3D"moz-txt-link-freetext" href=3D"mailto:robert.cragie@gridmerge=
=2Ecom">mailto:robert.cragie@gridmerge.com</a>
]
Sent: mercoled=EC 26 maggio 2010 20.09
To: Adriano Pezzuto (apezzuto)
Cc: Paul Duffy (paduffy); Zach Shelby; core
Subject: Re: [core] Subscribe/Notify for CoAP

Hi Adrian,

I would also prefer to keep the protocol in CoAP asynchronous. You can al=
ways map an asynchronous protocol to a synchronous one but, as we see in =
HTTP, it always ends up as a kludge to do it the other way round. The eff=
orts which have been gone to to make HTTP quasi-asynchronous via all the =
schemes mentioned below and many more besides (all non-interoperable of c=
ourse) is testament to how important this is for M2M communication.

So, back to Zach's list, I favor 1a) for the following reasons:

Foundation level of messages:

1. request/response can be asynchronous or synchronous messages (as there=
 is a transaction ID in there)
2. notify is an asynchronous message
Derived methods:

I think it makes sense to add a pub/sub model as a useful mechanism for M=
2M.

So, looking at it the other way round: It will be entirely possible to tr=
anslate whatever is currently built on HTTP to CoAP based on the above, w=
ith all its restrictions regarding synchronous and client/server transact=
ions. What may be harder is to translate directly is a CoAP-based applica=
tion to HTTP. So I guess the question is: Do we want to be hamstrung to s=
ynchronous client/server transactions as dictated by HTTP and provide a d=
irect mapping to HTTP, then have to come up with similar kludges for asyn=
chronous peer-to-peer transactions as has been done in numerous ways for =
HTTP, or do we want to define the protocol cleanly to start with and acce=
pt that some sort of transaction relaying/conversion would have to take p=
lace at a mapping node?

Robert
Robert Cragie (Pacific Gas &amp; Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064

<a class=3D"moz-txt-link-freetext" href=3D"http://www.gridmerge.com">http=
://www.gridmerge.com</a>


On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:
Hi,
it looks to me that CoAP should use an explicit sub/notify mechanism sinc=
e this is the core of the machine-to-machine interaction model.
HTTP suffers of this lack and we have seen a plethora of solutions to giv=
e an asynch taste to it. Webhooks and websockets are only the lasts of th=
e list.
As someone has already pointed out on this list, it is theoretically poss=
ible to describe sub/notify using only CRUD methods but it looks a little=
 bit tricky and verbose.

Now we have a chance to build from scratch a new protocol with and I thin=
k using explicit sub/notify methods with a clear and well defined semanti=
c is the best option. It is easily understanding from every developer and=
 will prevent to build other fanny solutions on top of the CoAP. HTTP doe=
s not have this well defined semantic and (for hundreds of other reasons =
also) it is not used as wide protocol for machine-to-machine communicatio=
n.

CoAP - as binary protocol - and with an explicit asynch model has a chanc=
e to be a really wide protocol for M2M communication not only for constra=
ined environments.

my 2 cents

- adriano

-----Original Message-----
From:=20
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core-bounces@ietf.or=
g">core-bounces@ietf.org</a> [<a class=3D"moz-txt-link-freetext" href=3D"=
mailto:core-bounces@ietf.org">mailto:core-bounces@ietf.org</a>
] On Behalf Of Paul Duffy (paduffy)
Sent: mercoled=EC 26 maggio 2010 0.47
To: Zach Shelby
Cc: core
Subject: Re: [core] Subscribe/Notify for CoAP

On 5/25/2010 6:41 PM, Zach Shelby wrote:

Hi,

On May 26, 2010, at 12:23 AM, Charles Palmer wrote:


Hi folks

It occurs to me that CoRE should be keeping a close eye on ZigBee SE2.0 w=
ork, so that it is as easy as possible for ZigBee SE to use CoRE when rea=
dy. That suggests to me that we should align with their subscribe/notify =
process.


I am not sure I understand that. I mean, ZigBee SE2.0 is defining an appl=
ication specific subscribe/notify mechanism for that purpose so far for H=
TTP. This uses standard HTTP methods and some custom payload and REST int=
erfaces. CoAP Req/Res is already totally compatible with SE2.0 in that re=
spect, so alignment is already OK there. Nothing stopping someone from us=
ing SE2.0 over CoAP.

Specifying a native susbcription/notify into CoAP is another matter. We c=
an't adopt a solution specific to one application as that won't solve the=
 problems of other applications nor general HTTP mapping at all (probably=
 would make it worse). It seems that for the near future there will be a =
bunch of HTTP push mechanisms in use without any clear standard appearing=
 - or am I wrong there?




If COAP extends HTTP semantics with new subscription methods, it will
not be possible to easily interchange HTTP/COAP, and translation
gateways will become more complex to implement.



Zach


Regards - Charles


-----Original Message-----
From:=20
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core-bounces@ietf.or=
g">core-bounces@ietf.org</a> [<a class=3D"moz-txt-link-freetext" href=3D"=
mailto:core-bounces@ietf.org">mailto:core-bounces@ietf.org</a>
] On Behalf Of Paul Duffy
Sent: 25 May 2010 03:48
To: Zach Shelby
Cc: core
Subject: Re: [core] Subscribe/Notify for CoAP

Recommend something like #2, primarily to avoid introducing non HTTP
method semantics, simplifying HTTP/COAP translation.gateways, etc.


On 5/24/2010 11:49 AM, Zach Shelby wrote:

(thread renamed)

We have two different paths with regard to a subscribe/notify mechanism f=
or CoAP:

1. Use specific Subscription and Notify mechanisms for CoAP as HTTP reall=
y does not include this concept.
1a) Notify as a message and SUBSCRIBE as a method. This is currently used=
 in coap-01.
1b) NOTIFY and SUBSCRIBE as methods. This was used in coap-00, but we had=
 a good list discussion about this leading to a. In practice it doesn't m=
ake a big difference if notification is a message or method.

2. Use an HTTP specific framework such as Webhooks, the ZigBee SE2.0 prop=
osal or GENA.

So far we have focused on 1 in the WG, and every now and again 2 comes up=
=2E At least I am not convinced that we need to suffer the drawbacks of H=
TTP here. Anyways 2 does not help our mapping to HTTP in reality very muc=
h as there is no standard way of doing this over HTTP. Thus a CoAP-HTTP p=
roxy may end up anyways translating between multiple HTTP frameworks depe=
nding on the application. So instead of doing a CoAP Notify/Subscribe to =
Webhooks mapping, you will could end up having to do a CoAP Webhooks to H=
TTP GENA mapping.



I don't understand this last para. If CoAP sticks to the semantics of
the current HTTP methods, would this not offer a fairly straightforward
translation to/from HTTP?



=46rom what I have heard so far 1 still seems like a wise choice, althoug=
h I need to look at Webhooks more deeply. In reality many applications sp=
ecify their own way of doing a push interface using REST methods and spec=
ific payloads (ZigBee SE2.0 is such an example). That is just fine, and m=
ight be used instead of a specific CoAP notify/subscribe in that case. So=
 1 doesn't prevent the application using its own mechanism, it just provi=
des a native way for doing push.

What do people think?

Zach

On May 17, 2010, at 6:44 PM,
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:matthieu.vial@fr.non=
=2Eschneider-electric.com">matthieu.vial@fr.non.schneider-electric.com</a=
>
 wrote:



Hi,

My comments about the subscribe/notify mechanism of Zigbee IP.

Pros:
- Derived from the webhooks concept
- If used by CORE it will be easier to map to HTTP because it uses only C=
RUD verbs.
- The subscription message is extendable and could support advanced optio=
ns (delays, increment, ...)
- Only one listening port whatever the transport binding is.

Cons:
- No interoperability without well known URIs and a well defined subscrip=
tion message format (Not sure CoAP draft is the right place to specify th=
is).
- XML/EXI is too complex to be the required format for the default subscr=
iption/notification mechanism.
- The notification should not require a subsequent GET to retrieve the co=
ntent.
- Subresource subscription is redundant.

Hope this could help,
Matthieu


&lt;graycol.gif&gt;"Charles Palmer"
<a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:charles.palmer@onzo.com=
">&lt;charles.palmer@onzo.com&gt;</a>





"Charles Palmer"
<a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:charles.palmer@onzo.com=
">&lt;charles.palmer@onzo.com&gt;</a>

Envoy=E9 par :=20
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core-bounces@ietf.or=
g">core-bounces@ietf.org</a>

15/05/2010 14:06

&lt;ecblank.gif&gt;
A
&lt;ecblank.gif&gt;
"core"
<a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:core@ietf.org">&lt;core=
@ietf.org&gt;</a>

&lt;ecblank.gif&gt;
cc
&lt;ecblank.gif&gt;
&lt;ecblank.gif&gt;
Objet
&lt;ecblank.gif&gt;
Re: [core] Selecting a WG document for CoAP
&lt;ecblank.gif&gt; &lt;ecblank.gif&gt;

Dear all

Those interested in the subscribe/notify discussion might like to look
at the draft Smart Energy Profile 2.0 Application Protocol
Specification. It is available here:

<a class=3D"moz-txt-link-freetext" href=3D"http://zigbee.org/Markets/ZigB=
eeSmartEnergy/ZigBeeSmartEnergy20PublicApp">http://zigbee.org/Markets/Zig=
BeeSmartEnergy/ZigBeeSmartEnergy20PublicApp</a>

licationProfile.aspx

It manages subscribe/notify by using POST. This seems to remove the need
for SUBSCRIBE and notify.

"Imagine a host A, which exposes a resource at http{s}://A/resource and
a second host B, which wishes to learn of changes to this resource. To
facilitate a subscription/ notification mechanism, A would expose a
resource http{s}://A/sub and B would expose a resource http{s}://B/ntfy.
To subscribe to notifications regarding http{s}://A/resource, B would
send a POST to the address http{s}://A/sub/B containing the URI of the
resource of interest (http{s}://A/resource) and the URI of B's
notification resource (http{s}://B/ntfy). Following this subscription
step, should A wish to notify B of a change to the resource addressed at
http{s}://A/resource, A would send a POST to the address
http{s}://B/ntfy containing the URI of the resource changed
(http{s}://A/resource) and the URI of A's subscription resource
(http{s}://A/sub/B), should A wish to change its subscription. The host
B can then query the resource (or not) at its leisure."

Sleepy nodes are not allowed to subscribe, and must poll.

Regards - Charles Palmer

-----Original Message-----
From:=20
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core-bounces@ietf.or=
g">core-bounces@ietf.org</a> [<a class=3D"moz-txt-link-freetext" href=3D"=
mailto:core-bounces@ietf.org">mailto:core-bounces@ietf.org</a>
] On Behalf Of
Angelo P. Castellani
Sent: 14 May 2010 13:14
To: Zach Shelby
Cc: core
Subject: Re: [core] Selecting a WG document for CoAP

Zach,

thanks for the comments, but please refer to my most recent e-mail for
a more specific list of technical issues I'm pointing to.

I want to do only a little integration to what I've written there.

In my very personal opinion, to maximize adherence with the REST model
and minimize implementation effort SUBSCRIBE and NOTIFY should be
mapped to methods (as discussed many times together...).

Uniform interface principle (Fielding PhD dissertation Section 5.1.5,
"The central feature that distinguishes the REST architectural style
[...]") states that to simplify the software architecture, resource
interfaces/interfaces should be as general as possible.

I agree with this principle in this specific case, mainly because
handling a special message type for notify leads node software design
to a more complex architecture.

The reason is that this new message type requires special handling and
introduces a complexity in the software modularization.

Best,
Angelo

On Fri, May 14, 2010 at 13:06, Zach Shelby
<a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:zach@sensinode.com">&lt=
;zach@sensinode.com&gt;</a>
 wrote:


Hi Angelo,

On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:



Dear C. Bormann, all,

before deciding for the final direction, I've the following
observations about draft-shelby-core-coap-01

While I mostly share Zach's view of the protocol approach, and
appreciate many aspects of the proposal, there are in my opinion


still


some open issues that need to be at least discussed before the


current


document can be selected.


Of course there are plenty of open issues. Remember that working group


documents still undertake as much change and improvement as the WG
wants, so by no means is coap-01 set in stone. I would expect at least
5-10 more revisions still along the way. Already several of your ideas
have been integrated into coap-01, and several more are under
consideration, so it is coming along. Patience ;-)



In particular, I would like to highlight the following:

a) As it is now, it is not possible to have a straightforward
translation of HTTP -&gt; CoAP and viceversa: see

<a class=3D"moz-txt-link-freetext" href=3D"http://www.ietf.org/mail-archi=
ve/web/core/current/msg00133.html">http://www.ietf.org/mail-archive/web/c=
ore/current/msg00133.html</a>
 (this
impacts the scalability of the web service model too)


In coap-01 the Method names are now identical to HTTP methods. The


Req/Res interaction is a direct translation. The URI hierarchy is
compatible, and the URI binary code format we are still working on
obviously. The only thing that takes some state to translate is
Subscribe/Notify. But note, Subscribe/Notify takes some state no matter
how you do it, even with HTTP-HTTP there is no clean and easy way to
handle subscriptions.



b) Moreover, CoAP's implementation is not as simple as it should be.
I've investigated the implementation and some design choices (as
Options) are leading to very high program complexity (ROM) on a
MSP430-based device.


This we can definitely improve, and already made several optimizations


from -00 to -01. Here I need some very concrete proposals though. Also
remember that many things are optional, for example subscribe/notify is
not required if you don't need it.



c) Finally when comparing HTTP message size with CoAP message size,
the resulting compression isn't as good as you may expect.

Example:
HTTP: GET /sensor/temp.xml HTTP/1.0 =3D 32 B
CoAP: 24 B with options parsing procedure requiring an added
implementation complexity


Right, that is not how it will work in practice. Working with a real


HTTP server that HTTP header will be more complex, and on the CoAP side
you would chose shorter URLs. The biggest improvement possible here is
from using binary coded URLs of course. We need to look at a wider range
of interactions and real HTTP headers as well to check that we are
efficient enough.



Addressing all these points potentially leads to major technical
modifications (especially point a) on the current draft, hence it is
appropriate in my opinion to discuss these points before making the
final decision.


I am not sure what else you have in mind for a). If we just forget


about Subscribe/Notify then you are good to go. But then you are also
not fulfilling the charter or the industry needs in that respect.


Thanks,
Zach



Best regards,

Angelo P. Castellani


On Mon, May 10, 2010 at 18:51, Carsten Bormann
<a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:cabo@tzi.org">&lt;cabo@=
tzi.org&gt;</a>
wrote:


The CORE WG has a milestone to select a WG document for CoAP in


April:



<a class=3D"moz-txt-link-freetext" href=3D"http://datatracker.ietf.org/wg=
/core/charter/">http://datatracker.ietf.org/wg/core/charter/</a>

=2E..
Apr 2010 Select WG document for basis of the CoAP protocol

Of the various documents that have been contributed,


draft-shelby-core-coap has significant discussion, as well as the
largest number of updates (including a previous version that was still
called -6lowapp-coap).


Today, another updated version of that draft was announced. See

<a class=3D"moz-txt-link-freetext" href=3D"http://www.ietf.org/mail-archi=
ve/web/core/current/msg00138.html">http://www.ietf.org/mail-archive/web/c=
ore/current/msg00138.html</a>

for the announcement and

<a class=3D"moz-txt-link-freetext" href=3D"http://tools.ietf.org/html/dra=
ft-shelby-core-coap-01">http://tools.ietf.org/html/draft-shelby-core-coap=
-01</a>

for the draft itself.

However, as the authors say, there are still significant TODOs.

Are we in a state yet where we can say whether this is the right


direction for the WG to take?


If yes, is it the right direction? Should we adopt it as a WG


document?


If you don't think we can say yet, is there a set of technical


decisions you would like the authors to take with priority?


Note that once a document has become a WG document, the authors act


as editors for the working group, making (and usually fleshing out the
details of) any change that the WG decides it needs.


If you think we can still improve the draft, this is not an obstacle


to making it a WG document.


But of course we shouldn't do that if we intend to reverse its


fundamental technical direction.


In order to stay roughly in sync with our milestones, we should


reach at a decision on how to go forward this week.


Gruesse, Carsten

_______________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>




_______________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>



--
Zach Shelby, Chief Nerd, Sensinode Ltd.

<a class=3D"moz-txt-link-freetext" href=3D"http://zachshelby.org">http://=
zachshelby.org</a> - My blog "On the Internet of Things
<a class=3D"moz-txt-link-rfc2396E" href=3D"http://6lowpan.net-Mybook">"
http://6lowpan.net - My book "</a>
6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297




_______________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>


--------------------------------
Onzo is a limited company number 06097997 registered in England&amp; Wale=
s. The
registered office is 6 Great Newport Street, London, WC2H 7JB, United Kin=
gdom.

This email message may contain confidential and/or privileged information=
, and
is intended solely for the addressee(s). If you have received this email =
in
error, please notify Onzo immediately. Unauthorised copying, disclosure o=
r
distribution of the material in this email is forbidden.
--------------------------------

_______________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>


______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
______________________________________________________________________

_______________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>




_______________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>


--------------------------------
Onzo is a limited company number 06097997 registered in England&amp; Wale=
s. The
registered office is 6 Great Newport Street, London, WC2H 7JB, United Kin=
gdom.

This email message may contain confidential and/or privileged information=
, and
is intended solely for the addressee(s). If you have received this email =
in
error, please notify Onzo immediately. Unauthorised copying, disclosure o=
r
distribution of the material in this email is forbidden.
--------------------------------




_______________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>

_______________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>




______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
_________________________________________________________________________=
____________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>


_______________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>

     =20

          </pre>
        </blockquote>
        <pre wrap=3D"">--
Zach Shelby, Chief Nerd, Sensinode Ltd.

<a class=3D"moz-txt-link-freetext" href=3D"http://zachshelby.org">http://=
zachshelby.org</a>  - My blog "On the Internet of Things
<a class=3D"moz-txt-link-rfc2396E" href=3D"http://6lowpan.net-Mybook">"
http://6lowpan.net - My book "</a>
6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297

_______________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>


   =20

        </pre>
      </blockquote>
      <pre wrap=3D"">_______________________________________________
core mailing list

<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>


 =20

      </pre>
    </blockquote>
    <pre wrap=3D"">
_______________________________________________
core mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>


_______________________________________________
core mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
    </pre>
  </blockquote>
  <pre wrap=3D"">
  </pre>
</blockquote>
</body>
</html>

--------------040007000707090701040106--

--------------ms010403030101080209050201
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

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
NTlaMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBM
dGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxKY8VXNV+065yplaHmjAdQRwnd/p/6Me7L3N9Vvy
Gna9fww6YfK/Uc4B1OVQCjDXAmNaLIkVcI7dyfArhVqqP3FWy688Cwfn8R+RNiQqE88r1fOC
dz0Dviv+uxg+B79AgAJk16emu59l0cUqVIUPSAR/p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCB
kTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwudGhh
d3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWlsQ0EuY3JsMAsGA1UdDwQEAwIBBjApBgNV
HREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxhYmVsMi0xMzgwDQYJKoZIhvcNAQEFBQAD
gYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/TCG4+DYfqi2fNi/A9BxQIJNwPP2t4WFi
w9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amcOY6MIE9lX5Xa9/eH1sYITq726jTlEBpb
NU1341YheILcIRk13iSx0x1G/11fZU8xggNxMIIDbQIBATB2MGIxCzAJBgNVBAYTAlpBMSUw
IwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUg
UGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQdBWGHEaYIBO/4g+d746QHzAJBgUrDgMC
GgUAoIIB0DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA2
MDQxMzI4NDdaMCMGCSqGSIb3DQEJBDEWBBT0lGAG6Xr+fY22Gy5Us3U+yKjDEjBfBgkqhkiG
9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYI
KoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwgYUGCSsGAQQBgjcQBDF4MHYw
YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x
LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpgg
E7/iD53vjpAfMIGHBgsqhkiG9w0BCRACCzF4oHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpggE7/iD53vjpAfMA0GCSqGSIb3DQEBAQUA
BIIBAFIxl+EuM8ncas7dvqsutktpA4X/5B2iac98OP+26zI0VaJ7e4wRBSAcJyuSd2VrRDgH
ANiQKj8tYL0RNtXMO3NJKdlcMNEAcq/fXSKGLZSzFnO0k/HNqLXnmo3Ioj+RBn1mqHNuF+4n
PGGythLBGY8Ul1J15ytLxWDN4VcJkNrapNU8rzoSG86HTgNKvwT6hHIOW41fNt1vnVWqXKPf
z46VuVHasBgZhdHQSnnRLdYGFtZAZqTk5cVh0tW8gNRUCkY4HVQCCkC5IygjiogjfvkMbHY0
/KbWnEiotRLvKScQv9rfOjsTbpuazvC/7O0t81Ob76j2QxTcm/0W2QEKKbYAAAAAAAA=
--------------ms010403030101080209050201--

From brian.tridium@gmail.com  Fri Jun  4 07:57:00 2010
Return-Path: <brian.tridium@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id AD28F3A67DA for <core@core3.amsl.com>; Fri,  4 Jun 2010 07:57:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.002
X-Spam-Level: 
X-Spam-Status: No, score=0.002 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tc4I6Vf5AB1D for <core@core3.amsl.com>; Fri,  4 Jun 2010 07:56:59 -0700 (PDT)
Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.154]) by core3.amsl.com (Postfix) with ESMTP id E51393A6849 for <core@ietf.org>; Fri,  4 Jun 2010 07:56:58 -0700 (PDT)
Received: by fg-out-1718.google.com with SMTP id l26so125450fgb.13 for <core@ietf.org>; Fri, 04 Jun 2010 07:56:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type; bh=OV2y2+tCpka7okCfApXdcO8lOLFoGkQHJYZ4U4T5Eeo=; b=d+Py1HzAuzSgPp5jEMANlo2A/a520ZOvtnuZbmtStMI7pkd+TvRQJmrm5mUa23Ca2v xYFaODDkBXsCJdbqpDnNPdj87mu2xk0fcFZhDoS8nUYlzFxkhspjSeQFBt5FHzyrqeuW 9aIDA7ZP58QGE5SNhneImN/e4j38AQEIlpJ1w=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=UQECj5QSMn6AFc150PgHSe0zAmoMyYXjc/D/di675jX5FHACKx4LZFZjXvaPV/5Ej4 ghEnkBP4UUoYT8hAVyXxZEvLy6hh/0U6sh17K47A5mjAbL1e0zi3GF0KxIW93zTkn1UA ZDQsL4SU0xDEpWIq6B/hCs1TsJlndt/VhHUIU=
MIME-Version: 1.0
Received: by 10.204.160.141 with SMTP id n13mr4097217bkx.61.1275663401936;  Fri, 04 Jun 2010 07:56:41 -0700 (PDT)
Received: by 10.204.53.8 with HTTP; Fri, 4 Jun 2010 07:56:41 -0700 (PDT)
In-Reply-To: <4C08FF8F.1020608@gridmerge.com>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com> <OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com> <0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com> <6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com> <AANLkTil1Vx4fVvrSn5X0LhDcFhDNrXAKNfUBODRkAL3a@mail.gmail.com> <4BFFFBE4.4090108@gridmerge.com> <AANLkTil0iB7pPhF_N56T_KMEAOu7dfA0lAdeBSFGqtjE@mail.gmail.com> <506445AB-DEEC-4EFF-ACE8-AEF9CEE895BA@sensinode.com> <4C08FF8F.1020608@gridmerge.com>
Date: Fri, 4 Jun 2010 10:56:41 -0400
Message-ID: <AANLkTimZvEEJp1AmXusbNMPdlBAw7BMENo61ZIWZMvE9@mail.gmail.com>
From: Brian Frank <brian.tridium@gmail.com>
To: core@ietf.org
Content-Type: multipart/alternative; boundary=0015175caebeece98c048835874c
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 14:57:00 -0000

--0015175caebeece98c048835874c
Content-Type: text/plain; charset=ISO-8859-1

+1 to get rid of message type versus message method distinction and having
just a single ack/res mechanism

Regarding subscribe issue - I personally think it will be extremely
difficult to design a subscription mechanism that suites everyone and fits
everyone's application layer.  In oBIX for example we have already have a
fairly sophisticated "watch" mechanism with RESTful ways to manage the
subscription with normal GET/PUT/POST.  If we standardize subscription at
the CoAP layer, then we also have to take into account all sorts of other
ugly complications:
  - timeouts/leases
  - permanent versus temporary subscriptions
  - frequency and min/max push times
  - synchronization of push with sleeping devices

A lot of trouble with HTTP push today is that most of the time we are trying
to figure out how to do it without opening a TCP connection to the client,
since most browsers sit behind some firewall and/or NAT.  I would say
server-to-server with public IP addresses that "HTTP push" is just a
POST dictated by the application layer.

But I can definitely see both sides of the issue.

--0015175caebeece98c048835874c
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

+1 to get rid of message type versus message method distinction and having =
just a single ack/res mechanism<div><br></div><div>Regarding subscribe issu=
e - I personally think it will be extremely difficult to design a subscript=
ion mechanism that suites everyone and fits everyone&#39;s application laye=
r. =A0In oBIX for example we have already have a fairly sophisticated &quot=
;watch&quot; mechanism with RESTful ways to manage the subscription with no=
rmal GET/PUT/POST. =A0If we standardize subscription at the CoAP layer, the=
n we also have to take into account all sorts of other ugly complications:<=
/div>
<div>=A0=A0- timeouts/leases</div><div>=A0=A0-=A0permanent=A0versus tempora=
ry subscriptions</div><div>=A0=A0- frequency and min/max push times</div><d=
iv><div>=A0=A0- synchronization of push with sleeping devices</div></div><d=
iv><br></div><div>
A lot of trouble with HTTP push today is that most of the time we are tryin=
g to figure out how to do it without opening a TCP connection to the client=
, since most browsers sit behind some firewall and/or NAT. =A0I would say s=
erver-to-server with public IP addresses that &quot;HTTP push&quot; is just=
 a POST=A0dictated=A0by the application layer.</div>
<div><br></div><div>But I can definitely see both sides of the issue.</div>=
<div><br></div>

--0015175caebeece98c048835874c--

From fluffy@cisco.com  Fri Jun  4 09:41:50 2010
Return-Path: <fluffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9D6973A693F for <core@core3.amsl.com>; Fri,  4 Jun 2010 09:41:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -108.418
X-Spam-Level: 
X-Spam-Status: No, score=-108.418 tagged_above=-999 required=5 tests=[AWL=-0.419, BAYES_50=0.001, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oOTtwKey2oNc for <core@core3.amsl.com>; Fri,  4 Jun 2010 09:41:46 -0700 (PDT)
Received: from sj-iport-4.cisco.com (sj-iport-4.cisco.com [171.68.10.86]) by core3.amsl.com (Postfix) with ESMTP id 30A2E3A68A4 for <core@ietf.org>; Fri,  4 Jun 2010 09:41:46 -0700 (PDT)
Authentication-Results: sj-iport-4.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAD7JCEyrR7Hu/2dsb2JhbACeRXGlPJoShRcEg0k
X-IronPort-AV: E=Sophos;i="4.53,362,1272844800"; d="scan'208";a="139505823"
Received: from sj-core-5.cisco.com ([171.71.177.238]) by sj-iport-4.cisco.com with ESMTP; 04 Jun 2010 16:41:32 +0000
Received: from [192.168.4.177] (rcdn-fluffy-8711.cisco.com [10.99.9.18]) by sj-core-5.cisco.com (8.13.8/8.14.3) with ESMTP id o54GfV4W022236; Fri, 4 Jun 2010 16:41:32 GMT
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Apple Message framework v1078)
Impp: xmpp:cullenfluffyjennings@jabber.org
From: Cullen Jennings <fluffy@cisco.com>
Date: Fri, 4 Jun 2010 10:41:31 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <6F6520CF-8323-4A65-9CBD-71DB06EEF63F@cisco.com>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1078)
Subject: [core] CORE WG Update
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 16:41:50 -0000

Carsten and I with our WG chair hats on have been talking about how to =
keep the WG moving forward. We requested input on selecting =
draft-shelby-core-coap as a WG document. We received very few objections =
to this thought there is clearly significant open issues around the =
Subscribe/Notify topic and several other smaller open issues. We do no =
see any reasons that these issues can not be resolved as part of the =
working group process - in fact we believe it is better to do this using =
the WG consensus process. We are not seeing any other significantly =
different proposal. Some of the issues raised fall well outside the =
scope that the charter restricts us to. So at this point, we are going =
to adopting the draft-shelby-core-coap draft as a WG document. It will =
get resubmitted under the name draft-ietf-core-coap.=20

This does not mean we are going to using the SUB/NOT mechanisms as they =
are currently described in the draft - the working group still needs to =
discuss what they want and come to consensus around that then the =
editors of the draft will update it to reflect that consensus. Continued =
discussion is needed on many topics in this draft before it is done but =
at this point, the draft is suitable as a  "straw man" that the WG can =
start working from. So far the draft has been an individual draft in =
that the authors can put whatever they want in it - as it changes to =
being a WG document, the editors need to put into the draft not what =
they want but what the WG wants. We as the working group need to use the =
current draft as a starting point and figure out what changes are need =
such that it reflects something we can all live with.=20

Carsten and I would like to keep this moving along as quickly as =
possible. The editor team plans to have a new version out before the end =
of June that reflects the latest email list discussion. Some topics that =
we hope folks can make good progress on via email are:

1) The plan for how to do security. I've talked to a few people about =
this and will try and put out some combined ideas and to get the =
conversation started.=20

2) Come to some conclusions on the overall design of SUB/NOT.=20

3) How can we simplify COAP? Lots of things got put in because seemed =
like a good idea at the time but all these little things accumulate to =
add complexity. What things can we toss out, make optional, or just =
plain simplify?

I have heard about multiple working COAP implementations and think it =
would be fun (and useful) to see how they work together.  I would like =
to propose that the Sunday before the next IETF, we have a bit of a hack =
fest and see how we can do on the "running code" part of protocol =
design. We will need to get AD approval for this but I that should not =
be a problem.=20

Thanks to everyone for the ongoing discussions.=20

Cullen & Carsten
Core WG Co-Chairs


From fluffy@cisco.com  Fri Jun  4 10:48:03 2010
Return-Path: <fluffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 3254D3A6857 for <core@core3.amsl.com>; Fri,  4 Jun 2010 10:48:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -108.447
X-Spam-Level: 
X-Spam-Status: No, score=-108.447 tagged_above=-999 required=5 tests=[AWL=-0.448, BAYES_50=0.001, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ffjpr9L4ST4l for <core@core3.amsl.com>; Fri,  4 Jun 2010 10:48:02 -0700 (PDT)
Received: from sj-iport-4.cisco.com (sj-iport-4.cisco.com [171.68.10.86]) by core3.amsl.com (Postfix) with ESMTP id 4F70C3A68A0 for <core@ietf.org>; Fri,  4 Jun 2010 10:48:02 -0700 (PDT)
Authentication-Results: sj-iport-4.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAKfZCEyrR7H+/2dsb2JhbACeRnGlWogmkWeFFwSDSQ
X-IronPort-AV: E=Sophos;i="4.53,362,1272844800"; d="scan'208";a="139555057"
Received: from sj-core-2.cisco.com ([171.71.177.254]) by sj-iport-4.cisco.com with ESMTP; 04 Jun 2010 17:47:48 +0000
Received: from [192.168.4.177] (rcdn-fluffy-8711.cisco.com [10.99.9.18]) by sj-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o54Hlmgo024859 for <core@ietf.org>; Fri, 4 Jun 2010 17:47:48 GMT
From: Cullen Jennings <fluffy@cisco.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Impp: xmpp:cullenfluffyjennings@jabber.org
Date: Fri, 4 Jun 2010 11:47:47 -0600
Message-Id: <D526AA2D-6D16-4F37-994B-BC15CD13E321@cisco.com>
To: core <core@ietf.org>
Mime-Version: 1.0 (Apple Message framework v1078)
X-Mailer: Apple Mail (2.1078)
Subject: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 17:48:03 -0000

I've asked several people what they thought we should do with security =
and received a wide variety of answers. I'm going to try and propose =
something  here that I think *might* be acceptable to most people. I'm =
not arguing for or against this, I'm just trying to propose a straw man =
that helps us get to a decision sooner.=20

The proposals is that COAP define three levels of security which are:

0) COAP baseline. No cryptographic security. Runs over UDP without DTLS.=20=


1) COAP Shared Key. The requires implementation (but not use) of DTLS =
with symmetric keys but does not require any asymmetric cryptography.=20

2) COAP Certificates. This requires implementation of the stuff in 1 =
plus DTLS with some defined asymmetric key cryptography and =
certificates.=20

A given produce could choose to be compliant with one of these three =
levels. COAP would not forbid extensions that either allowed it to cary =
some sort of signed objects so it could get object security later if =
some application wanted that. COAP would explicitly allow extensions =
that bound it to a different session mode security than DTLS so, for =
example, if someone or some group wanted to make a binding to IPsec with =
or without IKEv2, that would be fine.=20

For both "COAP Shared Key" and "COAP Certificate", we would need to =
mandate one or more mandatory to implement DTLS profiles. I would want =
to get input and exact text from the DTLS/TLS authors and WG but I'm =
imagining something like:

COAP "Shared Key" requires implementation of DTLS with =
TLS_PSK_WITH_AES_128_CBC_SHA

Probably the biggest issue for the certificate mode is the "never too =
old to not do again" ECC vs RSA debate. I'd really like to separate that =
out as a separate issue and get agreement around the big picture before =
we have that particular debate.=20

COAP "Certificates" requires implementation of DTLS with X.509 =
certificates and TLS_XXX_WITH_AES_128_CBC_SHA where we decide on either =
RSA or ECDH_ECDSA as the value of XXX.=20

I forgot to ask people about what hash they liked so I randomly used SHA =
instead of SHA256 but it would be nice to get feedback from the WG on =
which hash should be mandatory to implement. I would expect some =
significant push back from the Security area if we selected SHA1 as the =
only mandatory to implement hash for a brand new protocol.=20

Could something like this work? Thoughts on what would need to change? =
Could people live with the idea of having three levels sort of like WiFi =
security? ALternative proposal? Fine tuning this proposal?=20

Thanks, Cullen


From fluffy@cisco.com  Fri Jun  4 11:34:10 2010
Return-Path: <fluffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 004013A69C5 for <core@core3.amsl.com>; Fri,  4 Jun 2010 11:34:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -108.42
X-Spam-Level: 
X-Spam-Status: No, score=-108.42 tagged_above=-999 required=5 tests=[AWL=-0.422, BAYES_50=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PX4FLzaf3b9s for <core@core3.amsl.com>; Fri,  4 Jun 2010 11:34:08 -0700 (PDT)
Received: from sj-iport-4.cisco.com (sj-iport-4.cisco.com [171.68.10.86]) by core3.amsl.com (Postfix) with ESMTP id CA8583A6998 for <core@ietf.org>; Fri,  4 Jun 2010 11:34:08 -0700 (PDT)
Authentication-Results: sj-iport-4.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AiIFADLkCEyrR7H+/2dsb2JhbACBQ50CcaVJmgiFFwSDSQ
X-IronPort-AV: E=Sophos;i="4.53,362,1272844800";  d="scan'208,217";a="139572793"
Received: from sj-core-2.cisco.com ([171.71.177.254]) by sj-iport-4.cisco.com with ESMTP; 04 Jun 2010 18:33:55 +0000
Received: from [192.168.4.177] (rcdn-fluffy-8711.cisco.com [10.99.9.18]) by sj-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o54IXsmi004597 for <core@ietf.org>; Fri, 4 Jun 2010 18:33:54 GMT
From: Cullen Jennings <fluffy@cisco.com>
Content-Type: multipart/alternative; boundary=Apple-Mail-1-1016490393
Impp: xmpp:cullenfluffyjennings@jabber.org
Date: Fri, 4 Jun 2010 12:33:53 -0600
Message-Id: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com>
To: core <core@ietf.org>
Mime-Version: 1.0 (Apple Message framework v1078)
X-Mailer: Apple Mail (2.1078)
Subject: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 18:34:10 -0000

--Apple-Mail-1-1016490393
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii


Over the year I have had the pleasure of being in many conversations =
about what a stateless protocol is, what REST is, HTTP, polling, =
asynchronous notifications, web based RPC, and blowing soap bubbles.  =
Though interesting, I have a hard time concretely explaining it to =
anyone and the oxygen always seems a bit thin at the 10,000 foot view. I =
do however have a very easy time understanding a very low level view of =
the systems where there are  some boxes and arrow diagrams of  message =
flow and roughly the semantics of the data they cary. Let me try and =
draw my current understanding of how this is going to work.

We have two nodes - I will call them Source and Sink.=20

                            =20
   Source         Sink      =20
     |    SUB      |        =20
     |<------------+        =20
     |             |        =20
     |    ACK      |        =20
     +------------>|        =20
     |             |        =20
    ... Time Passes ...         =20
     |             |        =20
     |   NOTIF     |        =20
     +------------>|         =20
     |             |        =20
     |   ACK       |        =20
     |<------------+         =20
     |             |        =20


Sink starts by sending a message I will label "SUB" to the Source. The =
SUB messages says which resource the Sink would like to be informed =
about when the resource changes. The Source sends a OK or No there is a =
problem in some sort of ACK message to the SUB. Eventually the resource =
changes and Source sends an message I called "NOTIFY" to the Sink. This =
tells the Sink which resource changed and the current value of it.The =
Sink sends some sort of acknowledgment. I find the terms client and =
server very confusing when discussing SUB/NOT so I'm not using those =
terms.=20

The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, or =
plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell, pretty much everything people have been proposing fit into this =
model.  So first, I'd like to get an idea if people think I am in left =
field and there is a very different message flow to consider. Second we =
need to figure out some of the stuff I left out of the picture above =
such as=20

a) how to cancel a subscription=20

b) how to get the initial value of the subscription around the time you =
subscribe=20

c) what sort of filtering is available to limit the types of resource =
changes that result in a NOTIFY=20

d) lifespan of subscription how to refresh a subscription

e) caching and interaction with sleeping device=20

We have to be clear on how this maps to HTTP and possibly other =
protocols. One of the problems with HTTP is it has so many ways of doing =
asynchronous notifications that it hard to decide what to map for. I =
would be very conformable if we clearly new how to map it to HiBy and to =
direct HTTP polling. It would be nice to have  back of the cocktail =
napkin belief that it probably could be mapped to SMNP, XMPP, and the =
other HTTP approaches. My guess is that the mapping to other protocols =
is going to turn out to be easy.=20





--Apple-Mail-1-1016490393
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: after-white-space; =
"><br><div>Over the year I have had the pleasure of being in many =
conversations about what a stateless protocol is, what REST is, HTTP, =
polling, asynchronous notifications, web based RPC, and blowing soap =
bubbles. &nbsp;Though interesting, I have a hard time concretely =
explaining it to anyone and the oxygen always seems a bit thin at the =
10,000 foot view. I do however have a very easy time understanding a =
very low level view of the systems where there are &nbsp;some boxes and =
arrow diagrams of &nbsp;message flow and roughly the semantics of the =
data they cary. Let me try and draw my current understanding of how this =
is going to work.</div><div><br></div><div>We have two nodes - I will =
call them Source and Sink.&nbsp;</div><div><br></div><font =
class=3D"Apple-style-span" face=3D"Courier" size=3D"4"><span =
class=3D"Apple-style-span" style=3D"font-size: 14px;"><b>&nbsp;&nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp;&nbsp;<br>&nbsp;&nbsp; Source &nbsp; &nbsp; &nbsp; =
&nbsp; Sink &nbsp; &nbsp; &nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; | &nbsp; =
&nbsp;SUB &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; |&lt;------------+ &nbsp; &nbsp; =
&nbsp; &nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; =
| &nbsp; &nbsp;ACK &nbsp; &nbsp; &nbsp;|&nbsp;&nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; +------------&gt;| &nbsp; &nbsp; =
&nbsp; &nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>&nbsp;&nbsp; =
&nbsp;... Time Passes ... &nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; =
| &nbsp; NOTIF &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; +------------&gt;|&nbsp;&nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp;<br>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; =
&nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; | &nbsp; ACK &nbsp; &nbsp; &nbsp; | =
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp; =
|&lt;------------+&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;<br>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;<br><br></b></span></font><div><br></div><div>Sink starts by =
sending a message I will label "SUB" to the Source. The SUB messages =
says which resource the Sink would like to be informed about when the =
resource changes. The Source sends a OK or No there is a problem in some =
sort of ACK message to the SUB. Eventually the resource changes and =
Source sends an message I called "NOTIFY" to the Sink. This tells the =
Sink which resource changed and the current value of it.The Sink sends =
some sort of acknowledgment. I find the terms client and server very =
confusing when discussing SUB/NOT so I'm not using those =
terms.&nbsp;</div><div><br></div><div>The Sink could be a HTTP proxy =
that mapped this to COMET, WebSocket, or plain old polling, XMPP, SMTP, =
just about anything. As far as I can tell, pretty much everything people =
have been proposing fit into this model. &nbsp;So first, I'd like to get =
an idea if people think I am in left field and there is a very different =
message flow to consider. Second we need to figure out some of the stuff =
I left out of the picture above such =
as&nbsp;</div><div><br></div><div>a) how to cancel a =
subscription&nbsp;</div><div><br></div><div>b) how to get the initial =
value of the subscription around the time you =
subscribe&nbsp;</div><div><br></div><div>c) what sort of filtering is =
available to limit the types of resource changes that result in a =
NOTIFY&nbsp;</div><div><br></div><div>d) lifespan of subscription how to =
refresh a subscription</div><div><br></div><div>e) caching and =
interaction with sleeping device&nbsp;</div><div><br></div><div>We have =
to be clear on how this maps to HTTP and possibly other protocols. One =
of the problems with HTTP is it has so many ways of doing asynchronous =
notifications that it hard to decide what to map for. I would be very =
conformable if we clearly new how to map it to HiBy and to direct HTTP =
polling. It would be nice to have &nbsp;back of the cocktail napkin =
belief that it probably could be mapped to SMNP, XMPP, and the other =
HTTP approaches. My guess is that the mapping to other protocols is =
going to turn out to be =
easy.&nbsp;</div><div><br></div><div><br></div><div><br></div><div><br></d=
iv></body></html>=

--Apple-Mail-1-1016490393--

From apezzuto@cisco.com  Fri Jun  4 12:22:39 2010
Return-Path: <apezzuto@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2119A3A698E for <core@core3.amsl.com>; Fri,  4 Jun 2010 12:22:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.196
X-Spam-Level: 
X-Spam-Status: No, score=-5.196 tagged_above=-999 required=5 tests=[AWL=2.802,  BAYES_50=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WPId4sB+8YCm for <core@core3.amsl.com>; Fri,  4 Jun 2010 12:22:31 -0700 (PDT)
Received: from sj-iport-6.cisco.com (sj-iport-6.cisco.com [171.71.176.117]) by core3.amsl.com (Postfix) with ESMTP id 695523A69CA for <core@ietf.org>; Fri,  4 Jun 2010 12:22:31 -0700 (PDT)
Authentication-Results: sj-iport-6.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AiIFAK/vCEyrR7H+/2dsb2JhbACBQ50BcaU4mgaFFwQ
X-IronPort-AV: E=Sophos;i="4.53,362,1272844800";  d="scan'208,217";a="540073127"
Received: from sj-core-2.cisco.com ([171.71.177.254]) by sj-iport-6.cisco.com with ESMTP; 04 Jun 2010 19:22:17 +0000
Received: from xbh-ams-101.cisco.com (xbh-ams-101.cisco.com [144.254.74.71]) by sj-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o54JMDRk012952 for <core@ietf.org>; Fri, 4 Jun 2010 19:22:17 GMT
Received: from xmb-ams-106.cisco.com ([144.254.74.81]) by xbh-ams-101.cisco.com with Microsoft SMTPSVC(6.0.3790.3959);  Fri, 4 Jun 2010 21:22:13 +0200
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01CB041B.3C3516A5"
Date: Fri, 4 Jun 2010 21:22:11 +0200
Message-ID: <0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com>
In-Reply-To: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] SUB/NOT - the sea level view
Thread-Index: AcsEFIGG64cOwlZ4SGGTk2UxmxHt4wAAveqQ
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com>
From: "Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
To: "Cullen Jennings (fluffy)" <fluffy@cisco.com>, "core" <core@ietf.org>
X-OriginalArrivalTime: 04 Jun 2010 19:22:13.0291 (UTC) FILETIME=[3C5347B0:01CB041B]
Subject: Re: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 19:22:39 -0000

This is a multi-part message in MIME format.

------_=_NextPart_001_01CB041B.3C3516A5
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

my two cents

=20

a) how to cancel a subscription=20

[if sink node POST a new entry into the subscribers list on that =
resource, then it can DELETE it]

=20

b) how to get the initial value of the subscription around the time you =
subscribe=20

[the ACK  could be a response message containing the current value of =
the subscribed resource at time of subscription]

=20

c) what sort of filtering is available to limit the types of resource =
changes that result in a NOTIFY=20

[it seems application specific; for example, you can define a sort of =
trigger with thresholds and hysteresis to avoid bouncing]

=20

d) lifespan of subscription how to refresh a subscription

[sink and source nodes can agree on a subscription lifetime: sink can =
refresh the subscription by sending a new SUB request]

=20

e) caching and interaction with sleeping device

[mmhh ... no have cents for now. sorry]

=20

=20

Adriano

=20

From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of =
Cullen Jennings (fluffy)
Sent: venerd=EC 4 giugno 2010 20.34
To: core
Subject: [core] SUB/NOT - the sea level view

=20

=20

Over the year I have had the pleasure of being in many conversations =
about what a stateless protocol is, what REST is, HTTP, polling, =
asynchronous notifications, web based RPC, and blowing soap bubbles.  =
Though interesting, I have a hard time concretely explaining it to =
anyone and the oxygen always seems a bit thin at the 10,000 foot view. I =
do however have a very easy time understanding a very low level view of =
the systems where there are  some boxes and arrow diagrams of  message =
flow and roughly the semantics of the data they cary. Let me try and =
draw my current understanding of how this is going to work.

=20

We have two nodes - I will call them Source and Sink.=20

=20

                            =20
   Source         Sink      =20
     |    SUB      |        =20
     |<------------+        =20
     |             |        =20
     |    ACK      |        =20
     +------------>|        =20
     |             |        =20
    ... Time Passes ...         =20
     |             |        =20
     |   NOTIF     |        =20
     +------------>|         =20
     |             |        =20
     |   ACK       |        =20
     |<------------+         =20
     |             |        =20

=20

Sink starts by sending a message I will label "SUB" to the Source. The =
SUB messages says which resource the Sink would like to be informed =
about when the resource changes. The Source sends a OK or No there is a =
problem in some sort of ACK message to the SUB. Eventually the resource =
changes and Source sends an message I called "NOTIFY" to the Sink. This =
tells the Sink which resource changed and the current value of it.The =
Sink sends some sort of acknowledgment. I find the terms client and =
server very confusing when discussing SUB/NOT so I'm not using those =
terms.=20

=20

The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, or =
plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell, pretty much everything people have been proposing fit into this =
model.  So first, I'd like to get an idea if people think I am in left =
field and there is a very different message flow to consider. Second we =
need to figure out some of the stuff I left out of the picture above =
such as=20

=20

a) how to cancel a subscription=20

[if sink node POST a new entry into the subscribers list on that =
resource, then it can DELETE it]

=20

b) how to get the initial value of the subscription around the time you =
subscribe=20

[the ACK  could be a response message containing the current value of =
the subscribed resource at time of subscription]

=20

c) what sort of filtering is available to limit the types of resource =
changes that result in a NOTIFY=20

[it seems application specific; for example, you can define a sort of =
trigger with thresholds and hysteresis to avoid bouncing]

=20

d) lifespan of subscription how to refresh a subscription

[it seems application specific; sink and source nodes can agree on a =
subscription lifetime: sink can refresh the subscription by sending a =
new SUB request]

=20

e) caching and interaction with sleeping device

[mmhh ... no have cents for now. sorry]

=20

=20

We have to be clear on how this maps to HTTP and possibly other =
protocols. One of the problems with HTTP is it has so many ways of doing =
asynchronous notifications that it hard to decide what to map for. I =
would be very conformable if we clearly new how to map it to HiBy and to =
direct HTTP polling. It would be nice to have  back of the cocktail =
napkin belief that it probably could be mapped to SMNP, XMPP, and the =
other HTTP approaches. My guess is that the mapping to other protocols =
is going to turn out to be easy.=20

=20

=20

=20

=20


------_=_NextPart_001_01CB041B.3C3516A5
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<meta name=3DGenerator content=3D"Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Courier;
	panose-1:2 7 4 9 2 2 5 2 4 4;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:34;
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:0cm;
	margin-left:36.0pt;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";}
span.apple-style-span
	{mso-style-name:apple-style-span;}
span.EmailStyle18
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 2.0cm 2.0cm 2.0cm;}
div.Section1
	{page:Section1;}
 /* List Definitions */
 @list l0
	{mso-list-id:935791686;
	mso-list-type:hybrid;
	mso-list-template-ids:-861105432 67698711 67698713 67698715 67698703 =
67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
	{mso-level-number-format:alpha-lower;
	mso-level-text:"%1\)";
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-18.0pt;}
ol
	{margin-bottom:0cm;}
ul
	{margin-bottom:0cm;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple style=3D'word-wrap: =
break-word;
-webkit-nbsp-mode: space;-webkit-line-break: after-white-space'>

<div class=3DSection1>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>my
two cents<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span style=3D'color:#1F497D'>a) </span>how to =
cancel a
subscription&nbsp;<o:p></o:p></p>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>[if
sink node POST a new entry into the subscribers list on that resource, =
then it
can DELETE it]<o:p></o:p></span></p>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

<p class=3DMsoNormal>b) how to get the initial value of the subscription =
around
the time you subscribe&nbsp;<o:p></o:p></p>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>[the
ACK =A0could be a response message containing the current value of the =
subscribed
resource at time of subscription]<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal>c) what sort of filtering is available to limit the =
types of
resource changes that result in a NOTIFY&nbsp;<o:p></o:p></p>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>[it
seems application specific; for example, you can define a sort of =
trigger with thresholds
and hysteresis to avoid bouncing]<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal>d) lifespan of subscription how to refresh a =
subscription<o:p></o:p></p>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>[sink
and source nodes can agree on a subscription lifetime: sink can refresh =
the
subscription by sending a new SUB request]<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal>e) caching and interaction with sleeping =
device<span
style=3D'color:#1F497D'><o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>[mmhh
&#8230; no have cents for now. sorry]</span><span =
style=3D'font-size:10.0pt;
font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p>

<p class=3DMsoNormal>&nbsp;<o:p></o:p></p>

<p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>Adriano<o:p=
></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div>

<div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt =
0cm 0cm 0cm'>

<p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span>=
</b><span
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
core-bounces@ietf.org [mailto:core-bounces@ietf.org] <b>On Behalf Of =
</b>Cullen
Jennings (fluffy)<br>
<b>Sent:</b> venerd=EC 4 giugno 2010 20.34<br>
<b>To:</b> core<br>
<b>Subject:</b> [core] SUB/NOT - the sea level =
view<o:p></o:p></span></p>

</div>

</div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

<div>

<p class=3DMsoNormal>Over the year I have had the pleasure of being in =
many
conversations about what a stateless protocol is, what REST is, HTTP, =
polling,
asynchronous notifications, web based RPC, and blowing soap bubbles. =
&nbsp;Though
interesting, I have a hard time concretely explaining it to anyone and =
the
oxygen always seems a bit thin at the 10,000 foot view. I do however =
have a
very easy time understanding a very low level view of the systems where =
there
are &nbsp;some boxes and arrow diagrams of &nbsp;message flow and =
roughly the
semantics of the data they cary. Let me try and draw my current =
understanding
of how this is going to work.<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>We have two nodes - I will call them Source and =
Sink.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<p class=3DMsoNormal style=3D'margin-bottom:12.0pt'><span =
class=3Dapple-style-span><b><span
style=3D'font-size:10.5pt;font-family:Courier'>&nbsp;&nbsp; &nbsp; =
&nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;</span></b></span><b><span
style=3D'font-size:10.5pt;font-family:Courier'><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; Source &nbsp; &nbsp; &nbsp; =
&nbsp;
Sink &nbsp; &nbsp; &nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp;SUB =
&nbsp;
&nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; |&lt;------------+ =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; =
&nbsp; &nbsp;
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp;ACK =
&nbsp;
&nbsp; &nbsp;|&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; +------------&gt;| =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; =
&nbsp; &nbsp;
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp;... Time Passes ... =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; =
&nbsp; &nbsp;
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; | &nbsp; NOTIF &nbsp; =
&nbsp; |
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; =
+------------&gt;|&nbsp;&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; =
&nbsp; &nbsp;
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; | &nbsp; ACK &nbsp; =
&nbsp;
&nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; =
|&lt;------------+&nbsp;&nbsp;
&nbsp; &nbsp; &nbsp; &nbsp;</span><br>
<span class=3Dapple-style-span>&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; =
&nbsp; &nbsp;
&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;</span></span></b><o:p></o:p></p>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>Sink starts by sending a message I will label
&quot;SUB&quot; to the Source. The SUB messages says which resource the =
Sink
would like to be informed about when the resource changes. The Source =
sends a
OK or No there is a problem in some sort of ACK message to the SUB. =
Eventually
the resource changes and Source sends an message I called =
&quot;NOTIFY&quot; to
the Sink. This tells the Sink which resource changed and the current =
value of
it.The Sink sends some sort of acknowledgment. I find the terms client =
and
server very confusing when discussing SUB/NOT so I'm not using those =
terms.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>The Sink could be a HTTP proxy that mapped this to =
COMET,
WebSocket, or plain old polling, XMPP, SMTP, just about anything. As far =
as I
can tell, pretty much everything people have been proposing fit into =
this
model. &nbsp;So first, I'd like to get an idea if people think I am in =
left
field and there is a very different message flow to consider. Second we =
need to
figure out some of the stuff I left out of the picture above such =
as&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal><span style=3D'color:#1F497D'>a) </span>how to =
cancel a
subscription&nbsp;<o:p></o:p></p>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>[if
sink node POST a new entry into the subscribers list on that resource, =
then it
can DELETE it]<o:p></o:p></span></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>b) how to get the initial value of the subscription =
around
the time you subscribe&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>[the
ACK =A0could be a response message containing the current value of the =
subscribed
resource at time of subscription]<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

</div>

<div>

<p class=3DMsoNormal>c) what sort of filtering is available to limit the =
types of
resource changes that result in a NOTIFY&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>[it
seems application specific; for example, you can define a sort of =
trigger with thresholds
and hysteresis to avoid bouncing]<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

</div>

<div>

<p class=3DMsoNormal>d) lifespan of subscription how to refresh a =
subscription<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>[it
seems application specific; sink and source nodes can agree on a =
subscription
lifetime: sink can refresh the subscription by sending a new SUB =
request]<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

</div>

<div>

<p class=3DMsoNormal>e) caching and interaction with sleeping =
device<span
style=3D'color:#1F497D'><o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"'>[mmhh
&#8230; no have cents for now. sorry]</span><span =
style=3D'font-size:10.0pt;
font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p>

<p class=3DMsoNormal>&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal>We have to be clear on how this maps to HTTP and =
possibly
other protocols. One of the problems with HTTP is it has so many ways of =
doing
asynchronous notifications that it hard to decide what to map for. I =
would be
very conformable if we clearly new how to map it to HiBy and to direct =
HTTP
polling. It would be nice to have &nbsp;back of the cocktail napkin =
belief that
it probably could be mapped to SMNP, XMPP, and the other HTTP =
approaches. My
guess is that the mapping to other protocols is going to turn out to be
easy.&nbsp;<o:p></o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

<div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

</div>

</div>

</body>

</html>

------_=_NextPart_001_01CB041B.3C3516A5--

From fluffy@cisco.com  Fri Jun  4 14:49:22 2010
Return-Path: <fluffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 970F93A6A38 for <core@core3.amsl.com>; Fri,  4 Jun 2010 14:49:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -108.397
X-Spam-Level: 
X-Spam-Status: No, score=-108.397 tagged_above=-999 required=5 tests=[AWL=-0.398, BAYES_50=0.001, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DS2fj3ndfjVg for <core@core3.amsl.com>; Fri,  4 Jun 2010 14:49:21 -0700 (PDT)
Received: from sj-iport-6.cisco.com (sj-iport-6.cisco.com [171.71.176.117]) by core3.amsl.com (Postfix) with ESMTP id 5D2233A6A35 for <core@ietf.org>; Fri,  4 Jun 2010 14:49:21 -0700 (PDT)
Authentication-Results: sj-iport-6.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-AV: E=Sophos;i="4.53,363,1272844800"; d="scan'208";a="540135356"
Received: from sj-core-5.cisco.com ([171.71.177.238]) by sj-iport-6.cisco.com with ESMTP; 04 Jun 2010 21:49:07 +0000
Received: from [192.168.4.177] (rcdn-fluffy-8711.cisco.com [10.99.9.18]) by sj-core-5.cisco.com (8.13.8/8.14.3) with ESMTP id o54Ln6K6027751; Fri, 4 Jun 2010 21:49:07 GMT
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=windows-1252
Impp: xmpp:cullenfluffyjennings@jabber.org
From: Cullen Jennings <fluffy@cisco.com>
In-Reply-To: <0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com>
Date: Fri, 4 Jun 2010 15:49:06 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <E2549175-1A08-4ED9-8B8D-A30DBA89CF01@cisco.com>
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com> <0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com>
To: "Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
X-Mailer: Apple Mail (2.1078)
Cc: core <core@ietf.org>
Subject: Re: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 21:49:23 -0000

Great points - thanks.=20

Just as a bit of other information for the WG, I'll try and describe how =
SIP solved these problems. SIP has different design goals so what they =
did is probably not appropriate for all of these but it is at least =
something to be aware of. My apologies to the SIP experts on the list =
that know this but seems worth mentioning for folks that don't.


On Jun 4, 2010, at 1:22 PM, Adriano Pezzuto (apezzuto) wrote:

> my two cents
> =20
> a) how to cancel a subscription=20
> [if sink node POST a new entry into the subscribers list on that =
resource, then it can DELETE it]

I can see how that works but looks like it might involve a few =
roundtrips. What SIP does is it "refreshes" the subscriptions with an =
expiry time of zero which causes it to instantly expire and go away. =
More of how the refresh works down in point d.=20

> =20
> b) how to get the initial value of the subscription around the time =
you subscribe=20
> [the ACK  could be a response message containing the current value of =
the subscribed resource at time of subscription]

I like the approach you are proposing. What SIP does is it sends a =
NOTIFY as soon as the SUBcription happens. This was done due a variety =
of reasons but a big part is SIP has some pretty significant problems =
with negotiating size of responses. This would cause problems where the =
ACK ended up being too large in SIP. I don't think we would have the =
problem in COAP so sending it in the ACK might be better.=20

> =20
> c) what sort of filtering is available to limit the types of resource =
changes that result in a NOTIFY=20
> [it seems application specific; for example, you can define a sort of =
trigger with thresholds and hysteresis to avoid bouncing]

The SIP guys went round and round discussing a variety of increasingly =
complicated generalized solutions which were never general enough to =
meet all the use cases. Eventually  they came to the conclusion that it =
was application specific.=20

> =20
> d) lifespan of subscription how to refresh a subscription
> [sink and source nodes can agree on a subscription lifetime: sink can =
refresh the subscription by sending a new SUB request]

This is roughly what SIP does. The Sink proposes the max expiry time it =
wants. The Source can make this smaller (but not larger) and returns the =
"expiry time"  in the ACK. The Sink has to refresh the subscription =
before the expiry time by sending a new SUB. I suspect this would wok =
well for COAP.=20

> =20
> e) caching and interaction with sleeping device
> [mmhh =85 no have cents for now. sorry]

SIP has these, uh, I'm never going to manage to explain this in a =
paragraph but if you are feeling masochistic you can go read RFC 2778, =
3265, 3903, 4662, 4479, and 5839 as a starting point them move into the =
many RFCs on the compression and optimization approaches. I'd suggest =
the full blow SIP approach is probably a bit complex for constrained =
devices.=20

I can easily imagine something where a COAP cache or caching proxy to =
HTTP just subscribes to the resource. That way the cache is always up to =
date and when the cache receives a GET or SUBSCRIBE for the resource, it =
can just respond with the correct data. The device that has the resource =
can sleep and just update the cache any time the resource changes. To =
make a scheme like this work really well it might be nice if a Source =
that received a SUB could redirect the Sink to send the subscribe to a =
cache that the Source knew was willing to cache the data. It also allows =
a cache that see a NOTIFY go by to update it data for that resource.=20


> =20
> =20
> Adriano
> =20
> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf =
Of Cullen Jennings (fluffy)
> Sent: venerd=EC 4 giugno 2010 20.34
> To: core
> Subject: [core] SUB/NOT - the sea level view
> =20
> =20
> Over the year I have had the pleasure of being in many conversations =
about what a stateless protocol is, what REST is, HTTP, polling, =
asynchronous notifications, web based RPC, and blowing soap bubbles.  =
Though interesting, I have a hard time concretely explaining it to =
anyone and the oxygen always seems a bit thin at the 10,000 foot view. I =
do however have a very easy time understanding a very low level view of =
the systems where there are  some boxes and arrow diagrams of  message =
flow and roughly the semantics of the data they cary. Let me try and =
draw my current understanding of how this is going to work.
> =20
> We have two nodes - I will call them Source and Sink.=20
> =20
>                             =20
>    Source         Sink      =20
>      |    SUB      |        =20
>      |<------------+        =20
>      |             |        =20
>      |    ACK      |        =20
>      +------------>|        =20
>      |             |        =20
>     ... Time Passes ...         =20
>      |             |        =20
>      |   NOTIF     |        =20
>      +------------>|         =20
>      |             |        =20
>      |   ACK       |        =20
>      |<------------+         =20
>      |             |        =20
>=20
> =20
> Sink starts by sending a message I will label "SUB" to the Source. The =
SUB messages says which resource the Sink would like to be informed =
about when the resource changes. The Source sends a OK or No there is a =
problem in some sort of ACK message to the SUB. Eventually the resource =
changes and Source sends an message I called "NOTIFY" to the Sink. This =
tells the Sink which resource changed and the current value of it.The =
Sink sends some sort of acknowledgment. I find the terms client and =
server very confusing when discussing SUB/NOT so I'm not using those =
terms.=20
> =20
> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, =
or plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell, pretty much everything people have been proposing fit into this =
model.  So first, I'd like to get an idea if people think I am in left =
field and there is a very different message flow to consider. Second we =
need to figure out some of the stuff I left out of the picture above =
such as=20
> =20
> a) how to cancel a subscription=20
> [if sink node POST a new entry into the subscribers list on that =
resource, then it can DELETE it]
> =20
> b) how to get the initial value of the subscription around the time =
you subscribe=20
> [the ACK  could be a response message containing the current value of =
the subscribed resource at time of subscription]
> =20
> c) what sort of filtering is available to limit the types of resource =
changes that result in a NOTIFY=20
> [it seems application specific; for example, you can define a sort of =
trigger with thresholds and hysteresis to avoid bouncing]
> =20
> d) lifespan of subscription how to refresh a subscription
> [it seems application specific; sink and source nodes can agree on a =
subscription lifetime: sink can refresh the subscription by sending a =
new SUB request]
> =20
> e) caching and interaction with sleeping device
> [mmhh =85 no have cents for now. sorry]
> =20
> =20
> We have to be clear on how this maps to HTTP and possibly other =
protocols. One of the problems with HTTP is it has so many ways of doing =
asynchronous notifications that it hard to decide what to map for. I =
would be very conformable if we clearly new how to map it to HiBy and to =
direct HTTP polling. It would be nice to have  back of the cocktail =
napkin belief that it probably could be mapped to SMNP, XMPP, and the =
other HTTP approaches. My guess is that the mapping to other protocols =
is going to turn out to be easy.=20
> =20
> =20

From stpeter@stpeter.im  Fri Jun  4 14:49:52 2010
Return-Path: <stpeter@stpeter.im>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9865B3A6A66 for <core@core3.amsl.com>; Fri,  4 Jun 2010 14:49:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.148
X-Spam-Level: 
X-Spam-Status: No, score=-2.148 tagged_above=-999 required=5 tests=[AWL=0.451,  BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Gs2XrJTHhCV7 for <core@core3.amsl.com>; Fri,  4 Jun 2010 14:49:51 -0700 (PDT)
Received: from stpeter.im (stpeter.im [207.210.219.233]) by core3.amsl.com (Postfix) with ESMTP id 957923A6A11 for <core@ietf.org>; Fri,  4 Jun 2010 14:49:51 -0700 (PDT)
Received: from squire.local (dsl-205-108.dynamic-dsl.frii.net [216.17.205.108]) (Authenticated sender: stpeter) by stpeter.im (Postfix) with ESMTPSA id 6737240E44 for <core@ietf.org>; Fri,  4 Jun 2010 15:49:37 -0600 (MDT)
Message-ID: <4C0974EF.9060904@stpeter.im>
Date: Fri, 04 Jun 2010 15:49:35 -0600
From: Peter Saint-Andre <stpeter@stpeter.im>
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <6F6520CF-8323-4A65-9CBD-71DB06EEF63F@cisco.com>
In-Reply-To: <6F6520CF-8323-4A65-9CBD-71DB06EEF63F@cisco.com>
X-Enigmail-Version: 1.0.1
OpenPGP: url=http://www.saint-andre.com/me/stpeter.asc
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms020309000103070608090401"
Subject: Re: [core] CORE WG Update
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 04 Jun 2010 21:49:52 -0000

This is a cryptographically signed message in MIME format.

--------------ms020309000103070608090401
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On 6/4/10 10:41 AM, Cullen Jennings wrote:

> I have heard about multiple working COAP implementations and think it
> would be fun (and useful) to see how they work together.  I would
> like to propose that the Sunday before the next IETF, we have a bit
> of a hack fest and see how we can do on the "running code" part of
> protocol design. We will need to get AD approval for this but I that
> should not be a problem.

Your sponsoring AD approves.

Peter

--=20
Peter Saint-Andre
https://stpeter.im/




--------------ms020309000103070608090401
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIWnDCC
B1cwggY/oAMCAQICAVUwDQYJKoZIhvcNAQEFBQAwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQK
Ew1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBT
aWduaW5nMTgwNgYDVQQDEy9TdGFydENvbSBDbGFzcyAzIFByaW1hcnkgSW50ZXJtZWRpYXRl
IENsaWVudCBDQTAeFw0wOTA3MDYwMDAwMDFaFw0xMDA3MDYyMzU5NTlaMIHCMQswCQYDVQQG
EwJVUzERMA8GA1UECBMIQ29sb3JhZG8xDzANBgNVBAcTBkRlbnZlcjEiMCAGA1UEChMZWE1Q
UCBTdGFuZGFyZHMgRm91bmRhdGlvbjEsMCoGA1UECxMjU3RhcnRDb20gVHJ1c3RlZCBDZXJ0
aWZpY2F0ZSBNZW1iZXIxGjAYBgNVBAMTEVBldGVyIFNhaW50LUFuZHJlMSEwHwYJKoZIhvcN
AQkBFhJzdHBldGVyQHN0cGV0ZXIuaW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQCas7Mrnh02GakN8sft+HJpU4MwBxEgrGDZ2ZzUxDDt2sEhM+9Q74h955MtgMhK3TeBf6Hs
hDh/8Z9G//k2qNA0M2S5rejTqrmW0Jabca/L7BUZ0GhnU2N/2zeciFUmuZ4A2l1T5IMX2ZVP
XnNIaefBtbImJAbDz3T0vxkzTtcqgW3wL83PMDiqiuM+e1k+VPvOW4f5ZSGkPIhYCDpWqNE5
wZvjrLNMc8jZOPs9DrsYuIVwU72Vhy1tkEh+w6YpYHrdEUAe+eKe6TuxqZ60e9z3O36uiV//
Ms274iD6PbA/IGazJgaAdg6tvPehwTYGJAGmv3PsJKkLGjgoh+RrrM1LAgMBAAGjggOKMIID
hjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
AwQwHQYDVR0OBBYEFOyws3XWgIY9FP1POVqjdZP9Lu38MB0GA1UdEQQWMBSBEnN0cGV0ZXJA
c3RwZXRlci5pbTCBqAYDVR0jBIGgMIGdgBR7iZySlyShhEcCy3T8LvSs3DLl86GBgaR/MH0x
CzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUg
RGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQDEyBTdGFydENvbSBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eYIBDzCCAUcGA1UdIASCAT4wggE6MIIBNgYLKwYBBAGBtTcBAgAw
ggElMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQG
CCsGAQUFBwIBFihodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMIG8
BggrBgEFBQcCAjCBrzAUFg1TdGFydENvbSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0
eSwgcmVhZCB0aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENv
bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93
d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwYwYDVR0fBFwwWjAroCmgJ4YlaHR0cDovL3d3
dy5zdGFydHNzbC5jb20vY3J0dTMtY3JsLmNybDAroCmgJ4YlaHR0cDovL2NybC5zdGFydHNz
bC5jb20vY3J0dTMtY3JsLmNybDCBjgYIKwYBBQUHAQEEgYEwfzA5BggrBgEFBQcwAYYtaHR0
cDovL29jc3Auc3RhcnRzc2wuY29tL3N1Yi9jbGFzczMvY2xpZW50L2NhMEIGCCsGAQUFBzAC
hjZodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9jZXJ0cy9zdWIuY2xhc3MzLmNsaWVudC5jYS5j
cnQwIwYDVR0SBBwwGoYYaHR0cDovL3d3dy5zdGFydHNzbC5jb20vMA0GCSqGSIb3DQEBBQUA
A4IBAQBgv4xFXZqDKSOtnPOVbqOh1brj7oxRaVYk7N0MJG7x9Y/wkO3iwRwizVLcC1bA+D/R
gyFilXx6IQWE63Ge2tu+Y4w5QoHYwuUFQuBZuxvZpOa3ykdgPlBQaBM8m+Ien0skwNggaizA
X9Pc/sMLpP3jkO1iSF4agy4r5Ed+4G10mP5X0zO3gQwq9Uj4F9tX+58kU+fM1P8Sh+BYR4r/
kSbKE3tWcMaKblWPGwX0nYD26Je7Qb+uX/J5lCgozBrHXQWq8N98iklASf2pv+32Oi1dEjmM
UgAm/J2+YmxaI02+c+H6QH8+F3RUjCiRg9XqUNjcrNrnTFnm/iMMZADktsXPMIIHVzCCBj+g
AwIBAgIBVTANBgkqhkiG9w0BAQUFADCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0
Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDMgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50
IENBMB4XDTA5MDcwNjAwMDAwMVoXDTEwMDcwNjIzNTk1OVowgcIxCzAJBgNVBAYTAlVTMREw
DwYDVQQIEwhDb2xvcmFkbzEPMA0GA1UEBxMGRGVudmVyMSIwIAYDVQQKExlYTVBQIFN0YW5k
YXJkcyBGb3VuZGF0aW9uMSwwKgYDVQQLEyNTdGFydENvbSBUcnVzdGVkIENlcnRpZmljYXRl
IE1lbWJlcjEaMBgGA1UEAxMRUGV0ZXIgU2FpbnQtQW5kcmUxITAfBgkqhkiG9w0BCQEWEnN0
cGV0ZXJAc3RwZXRlci5pbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJqzsyue
HTYZqQ3yx+34cmlTgzAHESCsYNnZnNTEMO3awSEz71DviH3nky2AyErdN4F/oeyEOH/xn0b/
+Tao0DQzZLmt6NOquZbQlptxr8vsFRnQaGdTY3/bN5yIVSa5ngDaXVPkgxfZlU9ec0hp58G1
siYkBsPPdPS/GTNO1yqBbfAvzc8wOKqK4z57WT5U+85bh/llIaQ8iFgIOlao0TnBm+Oss0xz
yNk4+z0Ouxi4hXBTvZWHLW2QSH7Dpilget0RQB754p7pO7GpnrR73Pc7fq6JX/8yzbviIPo9
sD8gZrMmBoB2Dq2896HBNgYkAaa/c+wkqQsaOCiH5GuszUsCAwEAAaOCA4owggOGMAkGA1Ud
EwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNV
HQ4EFgQU7LCzddaAhj0U/U85WqN1k/0u7fwwHQYDVR0RBBYwFIESc3RwZXRlckBzdHBldGVy
LmltMIGoBgNVHSMEgaAwgZ2AFHuJnJKXJKGERwLLdPwu9KzcMuXzoYGBpH8wfTELMAkGA1UE
BhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFs
IENlcnRpZmljYXRlIFNpZ25pbmcxKTAnBgNVBAMTIFN0YXJ0Q29tIENlcnRpZmljYXRpb24g
QXV0aG9yaXR5ggEPMIIBRwYDVR0gBIIBPjCCATowggE2BgsrBgEEAYG1NwECADCCASUwLgYI
KwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUH
AgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgbwGCCsGAQUF
BwICMIGvMBQWDVN0YXJ0Q29tIEx0ZC4wAwIBARqBlkxpbWl0ZWQgTGlhYmlsaXR5LCByZWFk
IHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENlcnRp
ZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5zdGFy
dHNzbC5jb20vcG9saWN5LnBkZjBjBgNVHR8EXDBaMCugKaAnhiVodHRwOi8vd3d3LnN0YXJ0
c3NsLmNvbS9jcnR1My1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9j
cnR1My1jcmwuY3JsMIGOBggrBgEFBQcBAQSBgTB/MDkGCCsGAQUFBzABhi1odHRwOi8vb2Nz
cC5zdGFydHNzbC5jb20vc3ViL2NsYXNzMy9jbGllbnQvY2EwQgYIKwYBBQUHMAKGNmh0dHA6
Ly93d3cuc3RhcnRzc2wuY29tL2NlcnRzL3N1Yi5jbGFzczMuY2xpZW50LmNhLmNydDAjBgNV
HRIEHDAahhhodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJKoZIhvcNAQEFBQADggEBAGC/
jEVdmoMpI62c85Vuo6HVuuPujFFpViTs3QwkbvH1j/CQ7eLBHCLNUtwLVsD4P9GDIWKVfHoh
BYTrcZ7a275jjDlCgdjC5QVC4Fm7G9mk5rfKR2A+UFBoEzyb4h6fSyTA2CBqLMBf09z+wwuk
/eOQ7WJIXhqDLivkR37gbXSY/lfTM7eBDCr1SPgX21f7nyRT58zU/xKH4FhHiv+RJsoTe1Zw
xopuVY8bBfSdgPbol7tBv65f8nmUKCjMGsddBarw33yKSUBJ/am/7fY6LV0SOYxSACb8nb5i
bFojTb5z4fpAfz4XdFSMKJGD1epQ2Nys2udMWeb+IwxkAOS2xc8wggfiMIIFyqADAgECAgEP
MA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENvbSBMdGQu
MSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMSkwJwYDVQQD
EyBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzEwMjQyMTAzMzJaFw0x
MjEwMjIyMTAzMzJaMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEr
MCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMv
U3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5o0luEj4gypQIp71Xi2TlXyLYrj9WkRy+d9BO
0FHPYnAsC99/jx/ibNRwIfAoFhZd+LDscdRSckvwuFSz0bKg3z+9o7cwlVAC9AwMWe8IM0Lx
c+8etYxsX4WIamG9fjzzi5GAW5ESKzzIN3SxHSplyGCWFwx/pgf1f4y6O9/ym+4f6zaDYP6B
x0r+SaJcr6eSGNm7X3EwX1v7XpRBY+aw019o7k72d0IX910F+XGt0OwNdM61Ff3FiTiexeUZ
bWxCGm6GZl+SQVG9xYVIgHQaLXoQF+g2wzrmKCbVcZhqH+hrlRnD6PfCuEyX/BR6PlAPRDlQ
6f1u3wqik+LF5P15AgMBAAGjggNbMIIDVzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBpjAd
BgNVHQ4EFgQUe4mckpckoYRHAst0/C70rNwy5fMwgagGA1UdIwSBoDCBnYAUTgvvGqRAW6UX
aYcwyjRoQ9BBrvKhgYGkfzB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UE
AxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHmCAQEwCQYDVR0SBAIwADA9Bggr
BgEFBQcBAQQxMC8wLQYIKwYBBQUHMAKGIWh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2Nh
LmNydDBgBgNVHR8EWTBXMCygKqAohiZodHRwOi8vY2VydC5zdGFydGNvbS5vcmcvc2ZzY2Et
Y3JsLmNybDAnoCWgI4YhaHR0cDovL2NybC5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMIIBXQYD
VR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBBDCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9j
ZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5z
dGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3RhcnQg
Q29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5LCBy
ZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQu
c3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMFAGCWCGSAGG+EIB
DQRDFkFTdGFydENvbSBDbGFzcyAzIFByaW1hcnkgSW50ZXJtZWRpYXRlIEZyZWUgU1NMIEVt
YWlsIENlcnRpZmljYXRlczANBgkqhkiG9w0BAQUFAAOCAgEAUpcEDdsKFRCxFBxcSm+8oMTT
fpS7fbZkxWHx5fHDjvAgaBQ+oY0tk4xtbD6VxeHYjxI63+hj8jICnqeVXPe34Bu+XzekIn2T
lrnPCQobKdQF2p52QgUvIxSURed0jcBaCBV22DSKaUqDOzD/Tx6VQy78zpblXjRH7OALE/+H
jzJVmspdnBUUtQOLYgPo924xkxR25VDdgtEE5vAXa/g2oCeZhy0ZEO4NbgIayAYCJcJRDz0h
dD2Ahec65Kw6LB3N7VXEjiRR5/WoKwH/QteRzPJbFDc1somrApjm2cyg+5nbm1RHeFIz+GxX
luRrPztvhNcby0PtAjqwY1txi4sW0R6ZJPuZ2DZ1/dzckoFhyZgFyOX3SEkNXVLldjTzneFJ
FnVSzDbc720vq184jR7pYoI9+f5QJ96a0iLxEAG8SJ5auBwXI/w2FmKmwmdMvJ8/17+B4sMC
IRrXrDQl2xzpVXh/Qcmk5nf+w8HFmqATGy1OUAQbXga7AySAUaYhvvFk50u0bO5DiUGwzrJO
3TrwvaC2Ei4EFaBmIVgG7TfU5TaaY9IcJSCQ7AGUYE3RFSRpsLOoA3DsxP42YERgS/Nxw29+
YqZtPoO2QPbNpI7xnHVCfNBabx3oDIf438nFfv8spw5BQqBSbEF1izJA57eE64CzHnt7lB20
OFD11avYopwxggPKMIIDxgIBATCBkjCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0
Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcx
ODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDMgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50
IENBAgFVMAkGBSsOAwIaBQCgggIMMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
hvcNAQkFMQ8XDTEwMDYwNDIxNDkzNVowIwYJKoZIhvcNAQkEMRYEFDv7TYrew60fk//5EP6i
GV+l9UQrMF8GCSqGSIb3DQEJDzFSMFAwCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqG
SIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBowYJ
KwYBBAGCNxAEMYGVMIGSMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UE
AxMvU3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAVUw
gaUGCyqGSIb3DQEJEAILMYGVoIGSMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRD
b20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4
MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMyBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQg
Q0ECAVUwDQYJKoZIhvcNAQEBBQAEggEATa7tLTxRp3dWUSk8N7uNlhX4opbW8PdGSVWPf6XM
Lp4ZRHvhY2hNUGHZDJnuzFi2M9bR/7o2wJKv3Ab0eJxMllLA4JkajpIqd6vGI/9XQGWNNB43
NytFdSMuogkg2xVmhi4W6sJHc38f090k105NK1bRUw0AiIOv5KF9cP+Gtt2A9D1jByw+iOSv
riNEG25h/tdZbB8gUsz8AMTp8VZlJDa9GjLs9zoSnupGLnedizrC8oYY1SDZSp5K13x9nY63
FBkpHqyeOQr42l9q0v71C/8MbcEQaiJUEztQjD8NWcYtqqpVD3Lq0ATGfaDyw3fycDCJ8PSV
kr+Q5DAtZhQvJwAAAAAAAA==
--------------ms020309000103070608090401--

From angelo.castellani@gmail.com  Mon Jun  7 07:57:28 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 4A6A23A6359 for <core@core3.amsl.com>; Mon,  7 Jun 2010 07:57:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.223
X-Spam-Level: *
X-Spam-Status: No, score=1.223 tagged_above=-999 required=5 tests=[FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, J_CHICKENPOX_33=0.6]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BuXmgQdH0eex for <core@core3.amsl.com>; Mon,  7 Jun 2010 07:57:26 -0700 (PDT)
Received: from mail-yx0-f172.google.com (mail-yx0-f172.google.com [209.85.213.172]) by core3.amsl.com (Postfix) with ESMTP id 215433A684F for <core@ietf.org>; Mon,  7 Jun 2010 02:10:58 -0700 (PDT)
Received: by yxt33 with SMTP id 33so689761yxt.31 for <core@ietf.org>; Mon, 07 Jun 2010 02:10:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type; bh=QHbJ+2a1P3szM3PNMDTvZgVxmj2pjC7Knvo/61IPKK4=; b=Jv6rMppIZPYpIXVdj60V40FvhDdRtrQIRHbaJhn2soWr2GYsR6BUZMuPgzBugC6L9N D618GD9PBZSwBL0UzaF87zhRG9WEGYOX2brxrlXKrfR9/RYLXJfMm6YhcNY5/Vg2xpdZ QsJBJn2DEIRcp0+METUvLW+8/iQojKcr/6ggw=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; b=AKsYu3uwqK3JfusrkJWtL22ghBdWMYSE6zwgCRNXQu+YD74fY8kPgRr4M8ZcL0oZOT yQJ2g3NTrtNciVAI88iwJbhPuW0z+ipQUulPvs5hw6/LS/k/0Oou6nV0KXdTPTroYB0Z ieb9fDx9vWh1KPMrWjGYQmXf6Da26i70ICBFA=
MIME-Version: 1.0
Received: by 10.91.165.19 with SMTP id s19mr6804141ago.45.1275901855710; Mon,  07 Jun 2010 02:10:55 -0700 (PDT)
Sender: angelo.castellani@gmail.com
Received: by 10.90.54.12 with HTTP; Mon, 7 Jun 2010 02:10:55 -0700 (PDT)
In-Reply-To: <0D212BD466921646B58854FB79092CEC0232F78F@XMB-AMS-106.cisco.com>
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com> <0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com> <E2549175-1A08-4ED9-8B8D-A30DBA89CF01@cisco.com> <AANLkTilerORXUJQoXqpIHA3a0ZRhCVnegrChv-batP-D@mail.gmail.com> <0D212BD466921646B58854FB79092CEC0232F78F@XMB-AMS-106.cisco.com>
Date: Mon, 7 Jun 2010 11:10:55 +0200
X-Google-Sender-Auth: rEA4VEiMqJOr1aXRRS4znsdgelw
Message-ID: <AANLkTilMI8Wh0HhGcHulrinGukYYxr57VQ68XRkfVr4F@mail.gmail.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
To: "Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
Content-Type: multipart/alternative; boundary=0016e64607a2e0bd0804886d0c12
Cc: core <core@ietf.org>
Subject: Re: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 14:57:28 -0000

--0016e64607a2e0bd0804886d0c12
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

Yes one request for multiple responses.

On Mon, Jun 7, 2010 at 10:30, Adriano Pezzuto (apezzuto) <apezzuto@cisco.co=
m
> wrote:

>  Hi
>
> not sure to understand but it sounds as an interesting way to see things.
> Multiple response messages to the same initial GET request message?
>
> The initial GET request acts as subscription request to a certain resourc=
e.
> The first response message returns the value of the resource at time of
> subscription and subsequent responses act as notification messages about
> resource changes in the time.
>
>
>
> Questions:
>
>
>
> how to keep track of initial GET request and subsequent responses? using =
a
> sort of transaction id shared among request and responses messages?
>
This is really transport dependant.

If we use TCP or DTLS, application level has already a session established
and TID is not needed at all.

If we use UDP, TransactionID can be easily substitued by sending responses
to the client source port of the request. This will work in almost every
situation, however a TransactionID option can be there for the cases when
there is some collision using the source port.

> how to fit with REST requirements? safety/idempotency?
>
I don't feel that subscription "changes the resource state" in some way but
it only changes the way the resource *reports* its actual state.

EXAMPLE node led resource: with POST/PUT I change the state of the led on
the node, with GET I read the state. Subscription-GET reports the state
every N seconds, when changes, etc.

However if we don't like this solution for the REST safety/idempotency
properties, we can use something else (POST? I don't think we really need a
specific SUBSCRIBE for this).

Using GET however seems simpler, and we're designing this for constrained
nodes so it can be convenient in any case...

> how to distinguish this by a classic GET request/response transaction (on=
e
> request followed by only one response)?
>
An Option is required to transform a GET to a recurrent GET. Some samples:

Repeats-Every: N
N represents the response rate. Resource should send a response every N
seconds.

Repeats: true
Node should send a response according to the triggers defined in the body
(TODO: specify a starting but extensible format)

Repeats-Lifetime: N
N represents the number of seconds after which the resource sends its last
state.

Many other can be defined, we can agree the minimal required set of flexibl=
e
options..

> how to realize spontaneous notifications, i.e. notifications no triggered
> by a subscription?
>

Spontaneous notification really map in a different way in this context and
also in HTTP. They can be simply a PUT/POST to some resource defined to
catch that kind of events.

Angelo

>
>
> Adriano
>
>
>
> *From:* angelo.castellani@gmail.com [mailto:angelo.castellani@gmail.com] =
*On
> Behalf Of *Angelo P. Castellani
> *Sent:* luned=EC 7 giugno 2010 9.59
> *To:* Cullen Jennings (fluffy)
> *Cc:* Adriano Pezzuto (apezzuto); core
> *Subject:* Re: [core] SUB/NOT - the sea level view
>
>
>
> I agree with Adriano comments, and I really like the POST/DELETE (or GET?=
)
> mapping of the subscriptions. We really need to define new HTTP verbs to
> define a standard a subscription format?
>
> What if we define the best HTTP-mapped subscription?
>
> A solution can be, a SUBSCRIBE action is nothing more than a GET which
> responses are repeated using some criterion (threshold, every N seconds,
> etc.).
>
> The trigger of the response, in my opinion, can be ranging a lot dependin=
g
> upon the application, so could be inserted in the body of the request. A
> possible version of the body format can be agreed, however it should be
> extensible to fit particular cases.
>
> ACK'ing the request or the responses is really transport dependant. If we
> use TCP, ACKs are already there. If we use UDP, some ACK packet format ca=
n
> be agreed to provide some level of reliability to UDP. etc.
>
> *   Source                   Sink
>      |           GET          |
>      |<-----------------------+
>      |                        |
>      |           RES          |
>      +----------------------->|
>      |                        |
> ... Time Passes, something triggers in the Source ...
>      |                        |
>      |          RES           |
>      +----------------------->|
>
>
> *To realize this we can define some Options that will make that GET (or
> POST?) request have the same meaning of a SUBSCRIBE (seems easier to defi=
ne
> new Options to make this eventually adopted by HTTP, or maybe there is so=
me
> Option already there we can overload in some way).
>
> Repeats? Repeats-Every? Lifetime?
>
> In this way we have easily the very initial value, and because the packet
> format is the same for a standard response and for a NOTIFY its easier fo=
r a
> CoAP/HTTP proxy to update its cached value.
>
> Subscription can be updated/refreshed/deleted with the same message GET (=
or
> POST?) message (delete -> Repeats=3Dfalse) and we can get in this way the
> value on subscription deletion.
>
> In this way I'm quite confident that node software architecture also can =
be
> simpler, because a lot of code/procedures can be shared between GET and
> SUBSCRIBE/NOTIFY with no particular effort.
>
> Angelo
> *
> *On Fri, Jun 4, 2010 at 23:49, Cullen Jennings <fluffy@cisco.com> wrote:
> >
> > Great points - thanks.
> >
> > Just as a bit of other information for the WG, I'll try and describe ho=
w
> SIP solved these problems. SIP has different design goals so what they di=
d
> is probably not appropriate for all of these but it is at least something=
 to
> be aware of. My apologies to the SIP experts on the list that know this b=
ut
> seems worth mentioning for folks that don't.
> >
> >
> > On Jun 4, 2010, at 1:22 PM, Adriano Pezzuto (apezzuto) wrote:
> >
> >> my two cents
> >>
> >> a) how to cancel a subscription
> >> [if sink node POST a new entry into the subscribers list on that
> resource, then it can DELETE it]
> >
> > I can see how that works but looks like it might involve a few
> roundtrips. What SIP does is it "refreshes" the subscriptions with an exp=
iry
> time of zero which causes it to instantly expire and go away. More of how
> the refresh works down in point d.
> >
> >>
> >> b) how to get the initial value of the subscription around the time yo=
u
> subscribe
> >> [the ACK  could be a response message containing the current value of
> the subscribed resource at time of subscription]
> >
> > I like the approach you are proposing. What SIP does is it sends a NOTI=
FY
> as soon as the SUBcription happens. This was done due a variety of reason=
s
> but a big part is SIP has some pretty significant problems with negotiati=
ng
> size of responses. This would cause problems where the ACK ended up being
> too large in SIP. I don't think we would have the problem in COAP so send=
ing
> it in the ACK might be better.
> >
> >>
> >> c) what sort of filtering is available to limit the types of resource
> changes that result in a NOTIFY
> >> [it seems application specific; for example, you can define a sort of
> trigger with thresholds and hysteresis to avoid bouncing]
> >
> > The SIP guys went round and round discussing a variety of increasingly
> complicated generalized solutions which were never general enough to meet
> all the use cases. Eventually  they came to the conclusion that it was
> application specific.
> >
> >>
> >> d) lifespan of subscription how to refresh a subscription
> >> [sink and source nodes can agree on a subscription lifetime: sink can
> refresh the subscription by sending a new SUB request]
> >
> > This is roughly what SIP does. The Sink proposes the max expiry time it
> wants. The Source can make this smaller (but not larger) and returns the
> "expiry time"  in the ACK. The Sink has to refresh the subscription befor=
e
> the expiry time by sending a new SUB. I suspect this would wok well for
> COAP.
> >
> >>
> >> e) caching and interaction with sleeping device
> >> [mmhh =85 no have cents for now. sorry]
> >
> > SIP has these, uh, I'm never going to manage to explain this in a
> paragraph but if you are feeling masochistic you can go read RFC 2778, 32=
65,
> 3903, 4662, 4479, and 5839 as a starting point them move into the many RF=
Cs
> on the compression and optimization approaches. I'd suggest the full blow
> SIP approach is probably a bit complex for constrained devices.
> >
> > I can easily imagine something where a COAP cache or caching proxy to
> HTTP just subscribes to the resource. That way the cache is always up to
> date and when the cache receives a GET or SUBSCRIBE for the resource, it =
can
> just respond with the correct data. The device that has the resource can
> sleep and just update the cache any time the resource changes. To make a
> scheme like this work really well it might be nice if a Source that recei=
ved
> a SUB could redirect the Sink to send the subscribe to a cache that the
> Source knew was willing to cache the data. It also allows a cache that se=
e a
> NOTIFY go by to update it data for that resource.
> >
> >
> >>
> >>
> >> Adriano
> >>
> >> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf O=
f
> Cullen Jennings (fluffy)
> >> Sent: venerd=EC 4 giugno 2010 20.34
> >> To: core
> >> Subject: [core] SUB/NOT - the sea level view
> >>
> >>
> >> Over the year I have had the pleasure of being in many conversations
> about what a stateless protocol is, what REST is, HTTP, polling,
> asynchronous notifications, web based RPC, and blowing soap bubbles.  Tho=
ugh
> interesting, I have a hard time concretely explaining it to anyone and th=
e
> oxygen always seems a bit thin at the 10,000 foot view. I do however have=
 a
> very easy time understanding a very low level view of the systems where
> there are  some boxes and arrow diagrams of  message flow and roughly the
> semantics of the data they cary. Let me try and draw my current
> understanding of how this is going to work.
> >>
> >> We have two nodes - I will call them Source and Sink.
> >>
> >>
> >>    Source         Sink
> >>      |    SUB      |
> >>      |<------------+
> >>      |             |
> >>      |    ACK      |
> >>      +------------>|
> >>      |             |
> >>     ... Time Passes ...
> >>      |             |
> >>      |   NOTIF     |
> >>      +------------>|
> >>      |             |
> >>      |   ACK       |
> >>      |<------------+
> >>      |             |
> >>
> >>
> >> Sink starts by sending a message I will label "SUB" to the Source. The
> SUB messages says which resource the Sink would like to be informed about
> when the resource changes. The Source sends a OK or No there is a problem=
 in
> some sort of ACK message to the SUB. Eventually the resource changes and
> Source sends an message I called "NOTIFY" to the Sink. This tells the Sin=
k
> which resource changed and the current value of it.The Sink sends some so=
rt
> of acknowledgment. I find the terms client and server very confusing when
> discussing SUB/NOT so I'm not using those terms.
> >>
> >> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, o=
r
> plain old polling, XMPP, SMTP, just about anything. As far as I can tell,
> pretty much everything people have been proposing fit into this model.  S=
o
> first, I'd like to get an idea if people think I am in left field and the=
re
> is a very different message flow to consider. Second we need to figure ou=
t
> some of the stuff I left out of the picture above such as
> >>
> >> a) how to cancel a subscription
> >> [if sink node POST a new entry into the subscribers list on that
> resource, then it can DELETE it]
> >>
> >> b) how to get the initial value of the subscription around the time yo=
u
> subscribe
> >> [the ACK  could be a response message containing the current value of
> the subscribed resource at time of subscription]
> >>
> >> c) what sort of filtering is available to limit the types of resource
> changes that result in a NOTIFY
> >> [it seems application specific; for example, you can define a sort of
> trigger with thresholds and hysteresis to avoid bouncing]
> >>
> >> d) lifespan of subscription how to refresh a subscription
> >> [it seems application specific; sink and source nodes can agree on a
> subscription lifetime: sink can refresh the subscription by sending a new
> SUB request]
> >>
> >> e) caching and interaction with sleeping device
> >> [mmhh =85 no have cents for now. sorry]
> >>
> >>
> >> We have to be clear on how this maps to HTTP and possibly other
> protocols. One of the problems with HTTP is it has so many ways of doing
> asynchronous notifications that it hard to decide what to map for. I woul=
d
> be very conformable if we clearly new how to map it to HiBy and to direct
> HTTP polling. It would be nice to have  back of the cocktail napkin belie=
f
> that it probably could be mapped to SMNP, XMPP, and the other HTTP
> approaches. My guess is that the mapping to other protocols is going to t=
urn
> out to be easy.
> >>
> >>
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> >
>

--0016e64607a2e0bd0804886d0c12
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

Yes one request for multiple responses.<br><br><div class=3D"gmail_quote">O=
n Mon, Jun 7, 2010 at 10:30, Adriano Pezzuto (apezzuto) <span dir=3D"ltr">&=
lt;<a href=3D"mailto:apezzuto@cisco.com">apezzuto@cisco.com</a>&gt;</span> =
wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">








<div link=3D"blue" vlink=3D"purple" lang=3D"EN-US">

<div>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">Hi</span></=
p>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">not
sure to understand but it sounds as an interesting way to see things. Multi=
ple
response messages to the same initial GET request message?</span></p>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">The
initial GET request acts as subscription request to a certain resource. The
first response message returns the value of the resource at time of
subscription and subsequent responses act as notification messages about
resource changes in the time.</span></p>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">=A0</span><=
/p>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">Questions:<=
/span></p>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">=A0</span><=
/p>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">how
to keep track of initial GET request and subsequent responses? using a sort=
 of
transaction id shared among request and responses messages?</span></p></div=
></div></blockquote><div>This is really transport dependant.<br><br>If we u=
se TCP or DTLS, application level has already a session established and TID=
 is not needed at all.<br>
<br>If we use UDP, TransactionID can be easily substitued by sending respon=
ses to the client source port of the request. This will work in almost ever=
y situation, however a TransactionID option can be there for the cases when=
 there is some collision using the source port.<br>
</div><blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb=
(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div link=
=3D"blue" vlink=3D"purple" lang=3D"EN-US"><div>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">how
to fit with REST requirements? safety/idempotency?</span></p></div></div></=
blockquote><div>I don&#39;t feel that subscription &quot;changes the resour=
ce state&quot; in some way but it only changes the way the resource *report=
s* its actual state.<br>
<br>EXAMPLE node led resource: with POST/PUT I change the state of the led =
on the node, with GET I read the state. Subscription-GET reports the state =
every N seconds, when changes, etc.<br><br>However if we don&#39;t like thi=
s solution for the REST safety/idempotency properties, we can use something=
 else (POST? I don&#39;t think we really need a specific SUBSCRIBE for this=
).<br>
<br>Using GET however seems simpler, and we&#39;re designing this for const=
rained nodes so it can be convenient in any case...<br></div><blockquote cl=
ass=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, 204, 204); mar=
gin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div link=3D"blue" vlink=3D"purple" lang=3D"EN-US"><div>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">how
to distinguish this by a classic GET request/response transaction (one requ=
est
followed by only one response)?</span></p></div></div></blockquote><div>An =
Option is required to transform a GET to a recurrent GET. Some samples:<br>=
<br>Repeats-Every: N<br>N represents the response rate. Resource should sen=
d a response every N seconds.<br>
<br>Repeats: true<br>Node should send a response according to the triggers =
defined in the body (TODO: specify a starting but extensible format)<br><br=
>Repeats-Lifetime: N<br>N represents the number of seconds after which the =
resource sends its last state.<br>
<br>Many other can be defined, we can agree the minimal required set of fle=
xible options..<br></div><blockquote class=3D"gmail_quote" style=3D"border-=
left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left=
: 1ex;">
<div link=3D"blue" vlink=3D"purple" lang=3D"EN-US"><div>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">how
to realize spontaneous notifications, i.e. notifications no triggered by a
subscription? </span></p></div></div></blockquote><div><br>Spontaneous noti=
fication really map in a different way in this context and also in HTTP. Th=
ey can be simply a PUT/POST to some resource defined to catch that kind of =
events.=A0 <br>
<br>Angelo<br></div><blockquote class=3D"gmail_quote" style=3D"border-left:=
 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex=
;"><div link=3D"blue" vlink=3D"purple" lang=3D"EN-US"><div>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">=A0</span><=
/p>

<p class=3D"MsoNormal"><span style=3D"color: rgb(31, 73, 125);">Adriano</sp=
an></p>

<p class=3D"MsoNormal"><span style=3D"font-size: 10pt; color: rgb(31, 73, 1=
25);">=A0</span></p>

<div style=3D"border-style: solid none none; border-color: rgb(181, 196, 22=
3) -moz-use-text-color -moz-use-text-color; border-width: 1pt medium medium=
; padding: 3pt 0cm 0cm;">

<p class=3D"MsoNormal"><b><span style=3D"font-size: 10pt;">From:</span></b>=
<span style=3D"font-size: 10pt;">
<a href=3D"mailto:angelo.castellani@gmail.com" target=3D"_blank">angelo.cas=
tellani@gmail.com</a> [mailto:<a href=3D"mailto:angelo.castellani@gmail.com=
" target=3D"_blank">angelo.castellani@gmail.com</a>] <b>On Behalf
Of </b>Angelo P. Castellani<br>
<b>Sent:</b> luned=EC 7 giugno 2010 9.59<br>
<b>To:</b> Cullen Jennings (fluffy)<br>
<b>Cc:</b> Adriano Pezzuto (apezzuto); core<br>
<b>Subject:</b> Re: [core] SUB/NOT - the sea level view</span></p>

</div><div><div></div><div class=3D"h5">

<p class=3D"MsoNormal">=A0</p>

<p class=3D"MsoNormal" style=3D"margin-bottom: 12pt;">I agree with Adriano =
comments,
and I really like the POST/DELETE (or GET?) mapping of the subscriptions. W=
e
really need to define new HTTP verbs to define a standard a subscription
format?<br>
<br>
What if we define the best HTTP-mapped subscription?<br>
<br>
A solution can be, a SUBSCRIBE action is nothing more than a GET which
responses are repeated using some criterion (threshold, every N seconds, et=
c.).<br>
<br>
The trigger of the response, in my opinion, can be ranging a lot depending =
upon
the application, so could be inserted in the body of the request. A possibl=
e
version of the body format can be agreed, however it should be extensible t=
o
fit particular cases.<br>
<br>
ACK&#39;ing the request or the responses is really transport dependant. If =
we use
TCP, ACKs are already there. If we use UDP, some ACK packet format can be
agreed to provide some level of reliability to UDP. etc.<br>
<br>
<b><span style=3D"font-size: 10.5pt; font-family: Courier;">=A0=A0 Source
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 Sink =A0
=A0 =A0=A0<br>
=A0=A0 =A0 | =A0=A0=A0=A0=A0=A0 =A0=A0 GET
=A0 =A0 =A0 =A0=A0 | =A0 =A0 =A0 =A0=A0<br>
=A0=A0 =A0 |&lt;-----------------------+ =A0 =A0 =A0
=A0=A0<br>
=A0=A0 =A0 | =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0
=A0 =A0 =A0=A0 | =A0 =A0 =A0 =A0=A0<br>
=A0=A0 =A0 |=A0=A0=A0 =A0 =A0 =A0=A0 RES =A0
=A0 =A0 =A0=A0 |=A0=A0 =A0 =A0 =A0=A0<br>
=A0=A0 =A0 +-----------------------&gt;| =A0 =A0 =A0
=A0=A0<br>
=A0=A0 =A0 | =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0
=A0 =A0=A0 =A0 | =A0 =A0 =A0=A0=A0 <br>
... Time Passes, something triggers in the Source ... =A0 =A0 =A0
=A0=A0=A0<br>
=A0=A0 =A0 | =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0
=A0 =A0 =A0=A0 | =A0 =A0 =A0 =A0=A0<br>
=A0=A0 =A0 | =A0 =A0 =A0 =A0=A0 RES=A0 =A0 =A0
=A0 =A0=A0 | =A0 =A0 =A0 =A0=A0<br>
=A0=A0 =A0 +-----------------------&gt;|=A0=A0 =A0 =A0
=A0 =A0<br>
<br>
<br>
</span></b>To realize this we can define some Options that will make that G=
ET
(or POST?) request have the same meaning of a SUBSCRIBE (seems easier to de=
fine
new Options to make this eventually adopted by HTTP, or maybe there is some
Option already there we can overload in some way).<br>
<br>
Repeats? Repeats-Every? Lifetime?<br>
<br>
In this way we have easily the very initial value, and because the packet
format is the same for a standard response and for a NOTIFY its easier for =
a
CoAP/HTTP proxy to update its cached value.<br>
<br>
Subscription can be updated/refreshed/deleted with the same message GET (or
POST?) message (delete -&gt; Repeats=3Dfalse) and we can get in this way th=
e
value on subscription deletion.<br>
<br>
In this way I&#39;m quite confident that node software architecture also ca=
n be
simpler, because a lot of code/procedures can be shared between GET and
SUBSCRIBE/NOTIFY with no particular effort.<br>
<br>
Angelo<br>
<b><span style=3D"font-size: 10.5pt; font-family: Courier;"><br>
</span></b>On Fri, Jun 4, 2010 at 23:49, Cullen Jennings &lt;<a href=3D"mai=
lto:fluffy@cisco.com" target=3D"_blank">fluffy@cisco.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Great points - thanks.<br>
&gt;<br>
&gt; Just as a bit of other information for the WG, I&#39;ll try and descri=
be how
SIP solved these problems. SIP has different design goals so what they did =
is
probably not appropriate for all of these but it is at least something to b=
e
aware of. My apologies to the SIP experts on the list that know this but se=
ems
worth mentioning for folks that don&#39;t.<br>
&gt;<br>
&gt;<br>
&gt; On Jun 4, 2010, at 1:22 PM, Adriano Pezzuto (apezzuto) wrote:<br>
&gt;<br>
&gt;&gt; my two cents<br>
&gt;&gt;<br>
&gt;&gt; a) how to cancel a subscription<br>
&gt;&gt; [if sink node POST a new entry into the subscribers list on that
resource, then it can DELETE it]<br>
&gt;<br>
&gt; I can see how that works but looks like it might involve a few roundtr=
ips.
What SIP does is it &quot;refreshes&quot; the subscriptions with an expiry =
time
of zero which causes it to instantly expire and go away. More of how the
refresh works down in point d.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; b) how to get the initial value of the subscription around the tim=
e
you subscribe<br>
&gt;&gt; [the ACK =A0could be a response message containing the current
value of the subscribed resource at time of subscription]<br>
&gt;<br>
&gt; I like the approach you are proposing. What SIP does is it sends a NOT=
IFY
as soon as the SUBcription happens. This was done due a variety of reasons =
but
a big part is SIP has some pretty significant problems with negotiating siz=
e of
responses. This would cause problems where the ACK ended up being too large=
 in
SIP. I don&#39;t think we would have the problem in COAP so sending it in t=
he ACK
might be better.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; c) what sort of filtering is available to limit the types of resou=
rce
changes that result in a NOTIFY<br>
&gt;&gt; [it seems application specific; for example, you can define a sort=
 of
trigger with thresholds and hysteresis to avoid bouncing]<br>
&gt;<br>
&gt; The SIP guys went round and round discussing a variety of increasingly
complicated generalized solutions which were never general enough to meet a=
ll
the use cases. Eventually =A0they came to the conclusion that it was
application specific.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; d) lifespan of subscription how to refresh a subscription<br>
&gt;&gt; [sink and source nodes can agree on a subscription lifetime: sink =
can
refresh the subscription by sending a new SUB request]<br>
&gt;<br>
&gt; This is roughly what SIP does. The Sink proposes the max expiry time i=
t
wants. The Source can make this smaller (but not larger) and returns the
&quot;expiry time&quot; =A0in the ACK. The Sink has to refresh the
subscription before the expiry time by sending a new SUB. I suspect this wo=
uld
wok well for COAP.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; e) caching and interaction with sleeping device<br>
&gt;&gt; [mmhh =85 no have cents for now. sorry]<br>
&gt;<br>
&gt; SIP has these, uh, I&#39;m never going to manage to explain this in a
paragraph but if you are feeling masochistic you can go read RFC 2778, 3265=
,
3903, 4662, 4479, and 5839 as a starting point them move into the many RFCs=
 on
the compression and optimization approaches. I&#39;d suggest the full blow =
SIP
approach is probably a bit complex for constrained devices.<br>
&gt;<br>
&gt; I can easily imagine something where a COAP cache or caching proxy to =
HTTP
just subscribes to the resource. That way the cache is always up to date an=
d
when the cache receives a GET or SUBSCRIBE for the resource, it can just
respond with the correct data. The device that has the resource can sleep a=
nd
just update the cache any time the resource changes. To make a scheme like =
this
work really well it might be nice if a Source that received a SUB could
redirect the Sink to send the subscribe to a cache that the Source knew was
willing to cache the data. It also allows a cache that see a NOTIFY go by t=
o
update it data for that resource.<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Adriano<br>
&gt;&gt;<br>
&gt;&gt; From: <a href=3D"mailto:core-bounces@ietf.org" target=3D"_blank">c=
ore-bounces@ietf.org</a>
[mailto:<a href=3D"mailto:core-bounces@ietf.org" target=3D"_blank">core-bou=
nces@ietf.org</a>] On
Behalf Of Cullen Jennings (fluffy)<br>
&gt;&gt; Sent: venerd=EC 4 giugno 2010 20.34<br>
&gt;&gt; To: core<br>
&gt;&gt; Subject: [core] SUB/NOT - the sea level view<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Over the year I have had the pleasure of being in many conversatio=
ns
about what a stateless protocol is, what REST is, HTTP, polling, asynchrono=
us
notifications, web based RPC, and blowing soap bubbles. =A0Though
interesting, I have a hard time concretely explaining it to anyone and the
oxygen always seems a bit thin at the 10,000 foot view. I do however have a
very easy time understanding a very low level view of the systems where the=
re
are =A0some boxes and arrow diagrams of =A0message flow and roughly the
semantics of the data they cary. Let me try and draw my current understandi=
ng
of how this is going to work.<br>
&gt;&gt;<br>
&gt;&gt; We have two nodes - I will call them Source and Sink.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; =A0 =A0Source =A0 =A0 =A0 =A0 Sink<br>
&gt;&gt; =A0 =A0 =A0| =A0 =A0SUB =A0 =A0 =A0|<br>
&gt;&gt; =A0 =A0 =A0|&lt;------------+<br>
&gt;&gt; =A0 =A0 =A0| =A0 =A0 =A0 =A0 =A0 =A0 |<br>
&gt;&gt; =A0 =A0 =A0| =A0 =A0ACK =A0 =A0 =A0|<br>
&gt;&gt; =A0 =A0 =A0+------------&gt;|<br>
&gt;&gt; =A0 =A0 =A0| =A0 =A0 =A0 =A0 =A0 =A0 |<br>
&gt;&gt; =A0 =A0 ... Time Passes ...<br>
&gt;&gt; =A0 =A0 =A0| =A0 =A0 =A0 =A0 =A0 =A0 |<br>
&gt;&gt; =A0 =A0 =A0| =A0 NOTIF =A0 =A0 |<br>
&gt;&gt; =A0 =A0 =A0+------------&gt;|<br>
&gt;&gt; =A0 =A0 =A0| =A0 =A0 =A0 =A0 =A0 =A0 |<br>
&gt;&gt; =A0 =A0 =A0| =A0 ACK =A0 =A0 =A0 |<br>
&gt;&gt; =A0 =A0 =A0|&lt;------------+<br>
&gt;&gt; =A0 =A0 =A0| =A0 =A0 =A0 =A0 =A0 =A0 |<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Sink starts by sending a message I will label &quot;SUB&quot; to t=
he
Source. The SUB messages says which resource the Sink would like to be info=
rmed
about when the resource changes. The Source sends a OK or No there is a pro=
blem
in some sort of ACK message to the SUB. Eventually the resource changes and
Source sends an message I called &quot;NOTIFY&quot; to the Sink. This tells=
 the
Sink which resource changed and the current value of it.The Sink sends some
sort of acknowledgment. I find the terms client and server very confusing w=
hen
discussing SUB/NOT so I&#39;m not using those terms.<br>
&gt;&gt;<br>
&gt;&gt; The Sink could be a HTTP proxy that mapped this to COMET, WebSocke=
t,
or plain old polling, XMPP, SMTP, just about anything. As far as I can tell=
,
pretty much everything people have been proposing fit into this model. =A0S=
o
first, I&#39;d like to get an idea if people think I am in left field and t=
here is
a very different message flow to consider. Second we need to figure out som=
e of
the stuff I left out of the picture above such as<br>
&gt;&gt;<br>
&gt;&gt; a) how to cancel a subscription<br>
&gt;&gt; [if sink node POST a new entry into the subscribers list on that
resource, then it can DELETE it]<br>
&gt;&gt;<br>
&gt;&gt; b) how to get the initial value of the subscription around the tim=
e
you subscribe<br>
&gt;&gt; [the ACK =A0could be a response message containing the current
value of the subscribed resource at time of subscription]<br>
&gt;&gt;<br>
&gt;&gt; c) what sort of filtering is available to limit the types of resou=
rce
changes that result in a NOTIFY<br>
&gt;&gt; [it seems application specific; for example, you can define a sort=
 of
trigger with thresholds and hysteresis to avoid bouncing]<br>
&gt;&gt;<br>
&gt;&gt; d) lifespan of subscription how to refresh a subscription<br>
&gt;&gt; [it seems application specific; sink and source nodes can agree on=
 a
subscription lifetime: sink can refresh the subscription by sending a new S=
UB
request]<br>
&gt;&gt;<br>
&gt;&gt; e) caching and interaction with sleeping device<br>
&gt;&gt; [mmhh =85 no have cents for now. sorry]<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; We have to be clear on how this maps to HTTP and possibly other
protocols. One of the problems with HTTP is it has so many ways of doing
asynchronous notifications that it hard to decide what to map for. I would =
be
very conformable if we clearly new how to map it to HiBy and to direct HTTP
polling. It would be nice to have =A0back of the cocktail napkin belief tha=
t
it probably could be mapped to SMNP, XMPP, and the other HTTP approaches. M=
y
guess is that the mapping to other protocols is going to turn out to be eas=
y.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; core mailing list<br>
&gt; <a href=3D"mailto:core@ietf.org" target=3D"_blank">core@ietf.org</a><b=
r>
&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/core" target=3D"_blan=
k">https://www.ietf.org/mailman/listinfo/core</a><br>
&gt;</p>

</div></div></div>

</div>


</blockquote></div><br>

--0016e64607a2e0bd0804886d0c12--

From guido.moritz@uni-rostock.de  Mon Jun  7 08:17:39 2010
Return-Path: <guido.moritz@uni-rostock.de>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id DBBC23A6359 for <core@core3.amsl.com>; Mon,  7 Jun 2010 08:17:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.438
X-Spam-Level: 
X-Spam-Status: No, score=-2.438 tagged_above=-999 required=5 tests=[HELO_EQ_DE=0.35, HTML_MESSAGE=0.001, MSGID_MULTIPLE_AT=1.211, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tVK6S17P+4SC for <core@core3.amsl.com>; Mon,  7 Jun 2010 08:17:30 -0700 (PDT)
Received: from ida.uni-rostock.de (ida.uni-rostock.de [139.30.8.34]) by core3.amsl.com (Postfix) with ESMTP id 53E5A3A7CDF for <core@ietf.org>; Mon,  7 Jun 2010 05:36:05 -0700 (PDT)
Received: from email2.uni-rostock.de (139.30.8.209) by ida.uni-rostock.de (139.30.8.162) with Microsoft SMTP Server (TLS) id 8.2.254.0; Mon, 7 Jun 2010 14:36:04 +0200
Received: from Schlappi (139.30.201.226) by email2.uni-rostock.de (139.30.8.210) with Microsoft SMTP Server (TLS) id 8.2.254.0; Mon, 7 Jun 2010 14:36:04 +0200
From: Guido Moritz <guido.moritz@uni-rostock.de>
To: <core@ietf.org>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<001501cb021b$e5d364c0$b17a2e40$@moritz@uni-rostock.de>	<4C06F48D.1020600@cisco.com>	<87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<4C08098E.50305@gridmerge.com>	<4C083143.1060905@cisco.com> <4C08DBAC.8030108@gridmerge.com>
In-Reply-To: <4C08DBAC.8030108@gridmerge.com>
Date: Mon, 7 Jun 2010 14:36:04 +0200
Message-ID: <004b01cb063d$fe7fef40$fb7fcdc0$@moritz@uni-rostock.de>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_004C_01CB064E.C208BF40"
X-Mailer: Microsoft Office Outlook 12.0
Thread-Index: AcsD1IV9UusiF9MBTtaQzDJ8RY45eQCZ2HsQ
Content-Language: de
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 15:17:39 -0000

------=_NextPart_000_004C_01CB064E.C208BF40
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

With regard to the actual methods, I think we should stick to the CRUD
methods used in RESTful architectures.

But REST means stateless passive resources. Using PUT/POST to create a
subscription resource that is fired/notified if something changes is almost
not REST. So this is a new required functionality specific for M2M scenarios
which needs clear semantically unambiguously methods. As Zach mentioned
there is no state-of-the-art way of doing sub/not/event/. with HTTP. Some
even rely on TCP on transport layer. So from my point of view this is a) a
new required mechanism that implies new method(s) and thus b) an extension
of REST in general and thus legitimate.

 

Mapping of COAP to HTTP can be performed by a Gateway/Proxy which has
sufficient computing power. As long as design of COAP does not prevent from
mapping of the eventing concept on the existing HTTP methods, from my point
of view introducing the new methods should not be an issue. This in return
will even allow much more complex scenarios. Deployments in general might
require the proxys for data aggregation, data storage, integration in legacy
systems, .

 

We should also keep in mind that defining the new methods does not imply to
use them in general. There might be implementations/deployments that will
use polling the sensors once a day instead of using the sub/not mechanism.
As long as both endpoints are capable of the sub/not great, otherwise they
can fall back to default CRUD style.

 

Guido

 

Von: core-bounces@ietf.org [mailto:core-bounces@ietf.org] Im Auftrag von
Robert Cragie
Gesendet: Freitag, 4. Juni 2010 12:56
An: core@ietf.org
Betreff: Re: [core] Subscribe/Notify for CoAP

 

Hi Paul,

I'm not overly fond of SUBSCRIBE as a method either, to be honest. I think
to be truly RESTful, there are two approaches to subscription:

1.	Don't separate it from the resource and use synchronous
request/response with long polling. The subscription is effected by a
blocking wait on the resource which gets responded to when it has been
updated.
2.	Have an explicit separate subscription resource where a notify
resource is registered and to where notifications are sent

(1) is more elegant in some respects because in (2) there is a logical
separation from the subscription and the resource itself. In (1), the
subscription is effectively dynamic, i.e. the server has to keep tags on the
client requests and respond to all requests as appropriate. There are then
variations with respect to the delivery mechanism, e.g. update only (queue
in client potentially), queue in server, streaming (multipart delivery).

If you consider the transaction models, I still think there is a benefit for
adding the notify message type to request/response, i.e. an asynchronous
message which is not paired with any other message, although I accept it is
not strictly necessary. This has benefits for streaming models etc. With
regard to the actual methods, I think we should stick to the CRUD methods
used in RESTful architectures.

Robert

Robert Cragie (Pacific Gas & Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
http://www.gridmerge.com <http://www.gridmerge.com/> 


On 03/06/2010 11:48 PM, Paul Duffy wrote: 

We seem to be at a fork in the road now with the two paths of:



1.	Basing CoAP on the HTTP transaction model
2.	Basing CoAP on a more typical M2M transaction model

The advantage of using (1) would be an easier job at a gateway node. The
clear disadvantage of (1) is that it doesn't map well to the threading
models typically used in embedded systems (see my earlier post). It could be
made to map but there will inevitably have to be some additional
specification over the underlying communication to fit embedded device
models. This will then become in effect yet another
RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).

The advantage of (2) is that it gives an opportunity to model transactions
more closely to those typical to an embedded environment. There is nothing
to prevent this model extending into the web generally using translations at
a gateway or indeed building wider CoAP systems in the internet which can
handle the asynchronous multi-threaded transaction models natively.

In a nutshell, using (1) is propagating the status quo, which is by no means
a bad thing, 


Which is my main issue.

1. HTTP semantics are not a perfect fit, but IMO (like it or not) the WEB of
things needs to align with those semantics (warts and all).  Its a close
enough, good enough fit.

2. Subscriptions are resources.  They are created, have a lifetime, can be
enumerated, and are destroyed.  From coap-2 "servers keep track of
subscriptions...", "a subscription SHOULD be removed...", etc.
Subscriptions are resources. 

Example. I use SUBSCRIBE to create a subscription.  Would I subsequently do
GET to enumerate?  DELETE to remove?  PUT to modify?  SUBSCRIBE method seems
a RESTfully twisted special case of POST.

Cheers





but I am not sure if it is appropriate for CORE. (2) is acknowledging the
unique properties of constrained and embedded environments and building a
transaction model more appropriate to such devices.

Robert

Robert Cragie (Pacific Gas & Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
http://www.gridmerge.com <http://www.gridmerge.com/> 


On 03/06/2010 3:31 AM, Richard Kelsey wrote: 

Date: Wed, 02 Jun 2010 20:17:17 -0400
From: Paul Duffy  <mailto:paduffy@cisco.com> <paduffy@cisco.com>
 
My understanding is that COAP is directed to the WEB of things.  I take 
that to mean going with the grain of pervasively  deployed WEB 
infrastructure.  Unless there is an overwhelming compelling reason to do 
otherwise, IMO COAP needs to implement a strict subset of HTTP 
semantics.  Otherwise, we open the door to complexity re: translating 
HTTP/COAP, and history has shown complex app gateways will always be a 
challenge.
 
There are several ways to support pub/sub using stock HTTP methods.  I 
suggest we do so.
    

Given the variety of ways people do pub/sub using stock HTTP
methods, it isn't clear that we can keep both COAP and the
COAP/HTTP gateways simple while still supporting multiple
pub/sub methods on the HTTP side.  By making the translation
of one form of HTTP pub/sub easy, we could easily make the
translation of others harder.
 
If we want to have COAP/HTTP gateways that support different
HTTP pub/sub methods, then it might be better to add pub/sub
to COAP directly, in a way that is not a strict subset of
HTTP.
 
Do we support several ways of doing pub/sub in HTTP, or just
one?  If we do pick just one, can others be easily translated
into it?
                                -Richard Kelsey
_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
 
  
 
_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
  





 
 
_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
  

------=_NextPart_000_004C_01CB064E.C208BF40
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dus-ascii">
<meta name=3DGenerator content=3D"Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
	{font-family:Verdana;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p
	{mso-style-priority:99;
	mso-margin-top-alt:auto;
	margin-right:0cm;
	mso-margin-bottom-alt:auto;
	margin-left:0cm;
	font-size:8.0pt;
	font-family:"Verdana","sans-serif";
	color:black;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Vorformatiert Zchn";
	margin:0cm;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
p.name, li.name, div.name
	{mso-style-name:name;
	mso-margin-top-alt:auto;
	margin-right:0cm;
	mso-margin-bottom-alt:auto;
	margin-left:0cm;
	font-size:12.0pt;
	font-family:"Verdana","sans-serif";
	color:black;}
span.HTMLVorformatiertZchn
	{mso-style-name:"HTML Vorformatiert Zchn";
	mso-style-priority:99;
	mso-style-link:"HTML Vorformatiert";
	font-family:Consolas;
	color:black;}
span.E-MailFormatvorlage21
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.Section1
	{page:Section1;}
 /* List Definitions */
 @list l0
	{mso-list-id:51928159;
	mso-list-template-ids:-899499030;}
@list l1
	{mso-list-id:937103672;
	mso-list-template-ids:-2102086234;}
ol
	{margin-bottom:0cm;}
ul
	{margin-bottom:0cm;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body bgcolor=3Dwhite lang=3DDE link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal><span lang=3DEN-US>With regard to the actual =
methods, I think
we should stick to the CRUD methods used in RESTful =
architectures.<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>But REST means stateless passive resources. Using =
PUT/POST to
create a subscription resource that is fired/notified if something =
changes is
almost not REST. So this is a new required functionality specific for =
M2M
scenarios which needs clear semantically unambiguously methods. As Zach
mentioned there is no state-of-the-art way of doing =
sub/not/event/&#8230; with
HTTP. Some even rely on TCP on transport layer. So from my point of view =
this
is a) a new required mechanism that implies new method(s) and thus b) an
extension of REST in general and thus legitimate.<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Mapping of COAP to HTTP can be performed by a =
Gateway/Proxy
which has sufficient computing power. As long as design of COAP does not
prevent from mapping of the eventing concept on the existing HTTP =
methods, from
my point of view introducing the new methods should not be an issue. =
This in
return will even allow much more complex scenarios. Deployments in =
general might
require the proxys for data aggregation, data storage, integration in =
legacy
systems, &#8230;<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>We should also keep in mind that defining the new methods =
does
not imply to use them in general. There might be =
implementations/deployments
that will use polling the sensors once a day instead of using the =
sub/not
mechanism. As long as both endpoints are capable of the sub/not great,
otherwise they can fall back to default CRUD =
style.<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Guido<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style=3D'border:none;border-left:solid blue 1.5pt;padding:0cm 0cm =
0cm 4.0pt'>

<div>

<div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt =
0cm 0cm 0cm'>

<p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif";
color:windowtext'>Von:</span></b><span =
style=3D'font-size:10.0pt;font-family:
"Tahoma","sans-serif";color:windowtext'> core-bounces@ietf.org
[mailto:core-bounces@ietf.org] <b>Im Auftrag von </b>Robert Cragie<br>
<b>Gesendet:</b> Freitag, 4. Juni 2010 12:56<br>
<b>An:</b> core@ietf.org<br>
<b>Betreff:</b> Re: [core] Subscribe/Notify for =
CoAP<o:p></o:p></span></p>

</div>

</div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

<p class=3DMsoNormal>Hi Paul,<br>
<br>
I'm not overly fond of SUBSCRIBE as a method either, to be honest. I =
think to
be truly RESTful, there are two approaches to =
subscription:<o:p></o:p></p>

<ol start=3D1 type=3D1>
 <li class=3DMsoNormal =
style=3D'mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l0 level1 lfo1'>Don't separate it from the resource and =
use
     synchronous request/response with long polling. The subscription is
     effected by a blocking wait on the resource which gets responded to =
when
     it has been updated.<o:p></o:p></li>
 <li class=3DMsoNormal =
style=3D'mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l0 level1 lfo1'>Have an explicit separate subscription =
resource
     where a notify resource is registered and to where notifications =
are sent<o:p></o:p></li>
</ol>

<p class=3DMsoNormal>(1) is more elegant in some respects because in (2) =
there is
a logical separation from the subscription and the resource itself. In =
(1), the
subscription is effectively dynamic, i.e. the server has to keep tags on =
the
client requests and respond to all requests as appropriate. There are =
then
variations with respect to the delivery mechanism, e.g. update only =
(queue in
client potentially), queue in server, streaming (multipart =
delivery).<br>
<br>
If you consider the transaction models, I still think there is a benefit =
for
adding the notify message type to request/response, i.e. an asynchronous
message which is not paired with any other message, although I accept it =
is not
strictly necessary. This has benefits for streaming models etc. With =
regard to
the actual methods, I think we should stick to the CRUD methods used in =
RESTful
architectures.<br>
<br>
Robert<o:p></o:p></p>

<div>

<p class=3Dname>Robert Cragie (Pacific Gas &amp; =
Electric)<o:p></o:p></p>

<p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
<a =
href=3D"http://www.gridmerge.com/">http://www.gridmerge.com</a><o:p></o:p=
></p>

</div>

<p class=3DMsoNormal><br>
On 03/06/2010 11:48 PM, Paul Duffy wrote: <o:p></o:p></p>

<p class=3DMsoNormal>We seem to be at a fork in the road now with the =
two paths
of:<br>
<br>
<o:p></o:p></p>

<ol start=3D1 type=3D1>
 <li class=3DMsoNormal =
style=3D'mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l1 level1 lfo2'>Basing CoAP on the HTTP transaction =
model<o:p></o:p></li>
 <li class=3DMsoNormal =
style=3D'mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l1 level1 lfo2'>Basing CoAP on a more typical M2M =
transaction
     model<o:p></o:p></li>
</ol>

<p class=3DMsoNormal>The advantage of using (1) would be an easier job =
at a
gateway node. The clear disadvantage of (1) is that it doesn't map well =
to the
threading models typically used in embedded systems (see my earlier =
post). It
could be made to map but there will inevitably have to be some =
additional
specification over the underlying communication to fit embedded device =
models.
This will then become in effect yet another =
RestMS/PubSubHubbub/Webhooks/RMS
(see Vlad Trifa's post).<br>
<br>
The advantage of (2) is that it gives an opportunity to model =
transactions more
closely to those typical to an embedded environment. There is nothing to
prevent this model extending into the web generally using translations =
at a
gateway or indeed building wider CoAP systems in the internet which can =
handle
the asynchronous multi-threaded transaction models natively.<br>
<br>
In a nutshell, using (1) is propagating the status quo, which is by no =
means a
bad thing, <o:p></o:p></p>

<p class=3DMsoNormal><br>
Which is my main issue.<br>
<br>
1. HTTP semantics are not a perfect fit, but IMO (like it or not) the =
WEB of
things needs to align with those semantics (warts and all).&nbsp; Its a =
close
enough, good enough fit.<br>
<br>
2. Subscriptions are resources.&nbsp; They are created, have a lifetime, =
can be
enumerated, and are destroyed.&nbsp; From coap-2 &quot;servers keep =
track of
subscriptions...&quot;, &quot;a subscription SHOULD be removed...&quot;,
etc.&nbsp; Subscriptions are resources. <br>
<br>
Example. I use SUBSCRIBE to create a subscription.&nbsp; Would I =
subsequently
do GET to enumerate?&nbsp; DELETE to remove?&nbsp; PUT to modify?&nbsp;
SUBSCRIBE method seems a RESTfully twisted special case of POST.<br>
<br>
Cheers<br>
<br>
<br>
<br>
<o:p></o:p></p>

<p class=3DMsoNormal>but I am not sure if it is appropriate for CORE. =
(2) is
acknowledging the unique properties of constrained and embedded =
environments
and building a transaction model more appropriate to such devices.<br>
<br>
Robert<o:p></o:p></p>

<div>

<p class=3Dname>Robert Cragie (Pacific Gas &amp; =
Electric)<o:p></o:p></p>

<p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
<a =
href=3D"http://www.gridmerge.com/">http://www.gridmerge.com</a><o:p></o:p=
></p>

</div>

<p class=3DMsoNormal><br>
On 03/06/2010 3:31 AM, Richard Kelsey wrote: <o:p></o:p></p>

<blockquote style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><pre>Date: =
Wed, 02 Jun 2010 20:17:17 -0400<o:p></o:p></pre><pre>From: Paul Duffy <a
href=3D"mailto:paduffy@cisco.com">&lt;paduffy@cisco.com&gt;</a><o:p></o:p=
></pre><pre><o:p>&nbsp;</o:p></pre><pre>My understanding is that COAP is =
directed to the WEB of things.&nbsp; I take <o:p></o:p></pre><pre>that =
to mean going with the grain of pervasively&nbsp; deployed WEB =
<o:p></o:p></pre><pre>infrastructure.&nbsp; Unless there is an =
overwhelming compelling reason to do <o:p></o:p></pre><pre>otherwise, =
IMO COAP needs to implement a strict subset of HTTP =
<o:p></o:p></pre><pre>semantics.&nbsp; Otherwise, we open the door to =
complexity re: translating <o:p></o:p></pre><pre>HTTP/COAP, and history =
has shown complex app gateways will always be a =
<o:p></o:p></pre><pre>challenge.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></=
pre><pre>There are several ways to support pub/sub using stock HTTP =
methods.&nbsp; I <o:p></o:p></pre><pre>suggest we do =
so.<o:p></o:p></pre><pre>&nbsp;&nbsp;&nbsp; =
<o:p></o:p></pre></blockquote>

<pre>Given the variety of ways people do pub/sub using stock =
HTTP<o:p></o:p></pre><pre>methods, it isn't clear that we can keep both =
COAP and the<o:p></o:p></pre><pre>COAP/HTTP gateways simple while still =
supporting multiple<o:p></o:p></pre><pre>pub/sub methods on the HTTP =
side.&nbsp; By making the translation<o:p></o:p></pre><pre>of one form =
of HTTP pub/sub easy, we could easily make =
the<o:p></o:p></pre><pre>translation of others =
harder.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>If we want to =
have COAP/HTTP gateways that support different<o:p></o:p></pre><pre>HTTP =
pub/sub methods, then it might be better to add =
pub/sub<o:p></o:p></pre><pre>to COAP directly, in a way that is not a =
strict subset =
of<o:p></o:p></pre><pre>HTTP.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre=
><pre>Do we support several ways of doing pub/sub in HTTP, or =
just<o:p></o:p></pre><pre>one?&nbsp; If we do pick just one, can others =
be easily translated<o:p></o:p></pre><pre>into =
it?<o:p></o:p></pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
-Richard =
Kelsey<o:p></o:p></pre><pre>_____________________________________________=
__<o:p></o:p></pre><pre>core mailing list<o:p></o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e>&nbsp; =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>_______________________=
________________________<o:p></o:p></pre><pre>core mailing =
list<o:p></o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre>&nbsp; <o:p></o:p></pre>

<p class=3DMsoNormal><br>
<br>
<o:p></o:p></p>

<pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>____________=
___________________________________<o:p></o:p></pre><pre>core mailing =
list<o:p></o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre>&nbsp; =
<o:p></o:p></pre></div>

</div>

</body>

</html>

------=_NextPart_000_004C_01CB064E.C208BF40--

From root@core3.amsl.com  Mon Jun  7 08:00:02 2010
Return-Path: <root@core3.amsl.com>
X-Original-To: core@ietf.org
Delivered-To: core@core3.amsl.com
Received: by core3.amsl.com (Postfix, from userid 0) id 5678C3A6918; Mon,  7 Jun 2010 08:00:02 -0700 (PDT)
From: Internet-Drafts@ietf.org
To: i-d-announce@ietf.org
Content-Type: Multipart/Mixed; Boundary="NextPart"
Mime-Version: 1.0
Message-Id: <20100607150002.5678C3A6918@core3.amsl.com>
Date: Mon,  7 Jun 2010 08:00:02 -0700 (PDT)
X-Mailman-Approved-At: Mon, 07 Jun 2010 08:41:46 -0700
Cc: core@ietf.org
Subject: [core] I-D Action:draft-ietf-core-coap-00.txt
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 15:00:02 -0000

--NextPart

A New Internet-Draft is available from the on-line Internet-Drafts directories.
This draft is a work item of the Constrained RESTful Environments Working Group of the IETF.


	Title           : Constrained Application Protocol (CoAP)
	Author(s)       : Z. Shelby, et al.
	Filename        : draft-ietf-core-coap-00.txt
	Pages           : 30
	Date            : 2010-06-07

This document specifies the Constrained Application Protocol (CoAP),
a specialized transfer protocol for use with constrained networks and
nodes for machine-to-machine applications such as smart energy and
building automation.  These constrained nodes often have 8-bit
microcontrollers with small amounts of ROM and RAM, while networks
such as 6LoWPAN often have high packet error rates and typical
throughput of 10s of kbit/s.  CoAP provides request/reply and
subscribe/notify interaction models between application end-points,
supports built-in resource discovery, and includes key web concepts
such as URIs and RESTful methods.  CoAP easily translates to HTTP for
integration with the web while meeting specialized requirements such
as multicast support, very low overhead and simplicity for
constrained environments.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-ietf-core-coap-00.txt

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/

Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

--NextPart
Content-Type: Message/External-body;
	name="draft-ietf-core-coap-00.txt";
	site="ftp.ietf.org";
	access-type="anon-ftp";
	directory="internet-drafts"

Content-Type: text/plain
Content-ID: <2010-06-07075200.I-D@ietf.org>


--NextPart--

From guido.moritz@uni-rostock.de  Mon Jun  7 08:42:06 2010
Return-Path: <guido.moritz@uni-rostock.de>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id DB0F828C2EF for <core@core3.amsl.com>; Mon,  7 Jun 2010 08:42:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.288
X-Spam-Level: 
X-Spam-Status: No, score=-1.288 tagged_above=-999 required=5 tests=[AWL=-1.150, HELO_EQ_DE=0.35, HTML_MESSAGE=0.001, MANGLED_TOOL=2.3, MSGID_MULTIPLE_AT=1.211, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9ajldH9icbV1 for <core@core3.amsl.com>; Mon,  7 Jun 2010 08:41:35 -0700 (PDT)
Received: from ida.uni-rostock.de (ida.uni-rostock.de [139.30.8.34]) by core3.amsl.com (Postfix) with ESMTP id E6F9B3A7BB9 for <core@ietf.org>; Mon,  7 Jun 2010 05:19:34 -0700 (PDT)
Received: from email2.uni-rostock.de (139.30.8.209) by ida.uni-rostock.de (139.30.8.162) with Microsoft SMTP Server (TLS) id 8.2.254.0; Mon, 7 Jun 2010 14:19:32 +0200
Received: from Schlappi (139.30.201.226) by email2.uni-rostock.de (139.30.8.210) with Microsoft SMTP Server (TLS) id 8.2.254.0; Mon, 7 Jun 2010 14:19:33 +0200
From: Guido Moritz <guido.moritz@uni-rostock.de>
To: <core@ietf.org>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<AANLkTil1Vx4fVvrSn5X0LhDcFhDNrXAKNfUBODRkAL3a@mail.gmail.com>	<4BFFFBE4.4090108@gridmerge.com>	<AANLkTil0iB7pPhF_N56T_KMEAOu7dfA0lAdeBSFGqtjE@mail.gmail.com>	<506445AB-DEEC-4EFF-ACE8-AEF9CEE895BA@sensinode.com> <4C08FF8F.1020608@gridmerge.com>
In-Reply-To: <4C08FF8F.1020608@gridmerge.com>
Date: Mon, 7 Jun 2010 14:19:32 +0200
Message-ID: <004601cb063b$af6378c0$0e2a6a40$@moritz@uni-rostock.de>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0047_01CB064C.72EC48C0"
X-Mailer: Microsoft Office Outlook 12.0
Thread-Index: AcsD6gccH8FwBfXRRf2hBnsy+l5CwQCUH7Sg
Content-Language: de
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 15:42:07 -0000

------=_NextPart_000_0047_01CB064C.72EC48C0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

+1 for removing message type and leaving only methods.

=20

You mean messaging pattern between the server and client? Of course, for
interoperability reasons there should be a clear specification which is =
the
correct response on a request. But when using a datagram transport =
protocol
like UDP and due to the partly expected high delay between request and
response, messaging is be asynchronous by design. So this might be not =
be
obviously classical client/server communication but more data sink/data
source (or service provider/service consumer in terms of SOAs). Thus
relationship between request and response is part of the application =
layer
and not of the transport layer like in traditional HTTP.=20

=20

Guido

=20

Von: core-bounces@ietf.org [mailto:core-bounces@ietf.org] Im Auftrag von
Robert Cragie
Gesendet: Freitag, 4. Juni 2010 15:29
An: core@ietf.org
Betreff: Re: [core] Subscribe/Notify for CoAP

=20

Hi Zach,

At the end of the day, it obviously all comes down transmitting and
receiving asynchronous packets going between peers. However I think =
there is
some use in identifying at least message types to map to a suitable
transaction model. Beyond that, we should specify methods, as, after =
all,
this is CORE (RESTful environments) - the REST architectural style does
impose rules here.

I actually think client and server are still valid from the point of =
view of
execution, i.e. the client initiates the transaction. Just thinking =
about
packets flying about between peers doesn't help from the point of view =
of a
processing environment particularly, so again is the aim to try to =
provide a
pattern here?

Robert

Robert Cragie (Pacific Gas & Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
http://www.gridmerge.com <http://www.gridmerge.com/>=20


On 04/06/2010 1:59 PM, Zach Shelby wrote:=20

=20
On May 29, 2010, at 12:21 AM, Brian Frank wrote:
=20
 =20

My two cents:=20
=20
Personally I find it confusing to have both a message type *and* a =
method.
=20
Do we really need both?  It seems we just combine the two into a single
method byte.  Maybe reserve a bit to say a message is a response to a =
GET,
PUT, DELETE, etc.
   =20

=20
Interesting way of looking at things. Maybe we are making this too =
complex
with having both messages and methods. Instead we could think of this =
simply
as sending Methods and receiving a Response. That would save a couple =
bits
(and parsing) from the header too. In the end, does HTTP even have =
messages
types at all? In practice an HTTP client is just sending a method and
receiving a response code.=20
=20
Another good concept we discussed off-line with Guido Moritz was whether =
we
should think of the CoAP message as being synchronous at all. Already we
have determined that talking about CoAP in terms of clients and servers
doesn't work (coap-01 tries to avoid that terminology). Instead we just =
talk
about peer CoAP end-points, which seems to work.
=20
As we are working with UDP the message model can be thought of as being =
just
asyncronous, when the A bit is not set then no response will come. If =
the A
bit is set a response should come, but even with a large delay and we =
may
need to retransmit. So the A bit achieves the same as the HTTP req/res
model, but we could think of it as two asynchronous CoAP messages.=20
=20
Does that make sense to people?=20
=20
Zach
=20
 =20

=20
=20
=20
On Fri, May 28, 2010 at 1:22 PM, Robert Cragie
<mailto:robert.cragie@gridmerge.com> <robert.cragie@gridmerge.com> =
wrote:
I think sometimes it makes more sense to think about threads of =
execution.
=20
Forgive me for this lengthy preamble but it will hopefully put things =
into
context.
=20
In the most abstract sense, processing is governed by a thread of =
execution,
which sequences a series of data transformations to expedite the =
required
processing. If a data transformation can be completed synchronously in =
the
thread of execution, then the thread is conceptually easier to =
understand
and follow. Most threading models assume this to be the case and if the =
data
transformation cannot complete, it usually blocks pending the required =
event
to complete the transformation. During blocking, the thread is =
suspended. In
simple CPU models without any sort of scheduler, there are two threads =
of
execution: A main thread, pre-emptable by an interrupt thread, usually =
not
pre-emptable. In the main thread, sub-threads are emulated; data
transformations can be simply function calls which don't block and =
therefore
return effectively immediately and synchronously. Blocking data
transformations are emulated by storing state relevant to each =
sub-thread
then marshaling each event as
 it is received e.g. through interrupt handling, which causes the second
thread to run and thus allows changing sub-thread state so when the main
thread runs, the blocking data transformation can complete. Operating =
system
schedulers for these simple CPUs simply abstract this operation through =
a
kernel and associated task/thread scheduling calls. Continuations are a
simpler form used in memory-constrained implementations.
=20
Why the lengthy pre-amble? However you look at it, what essentially is
required for any threading model (using kernel/scheduler, continuations,
emulated, whatever) are fundamentally three primitives:
 =95 Request
 =95 Response
 =95 Notify
A thread of execution will call request and will typically (though not
necessarily - see emulated blocking/continuations) wait for a response. =
If
the thread blocks, it is typically woken by another worker thread =
handling a
notify. The worker thread handles notifies asynchronously and buffers =
and/or
signals the associated task accordingly.
=20
This is why I think the current foundation level of messages in coap-01 =
is
right.
=20
On top of this, the payload of the messages can reflect the actual =
method.
Personally, I don't see the need for a specific SUBSCRIBE message; a
POST/create to a subscription resource seems adequate to me. The notify
message can carry a PUT or POST depending on whether the resource was =
simply
updated or appended to (again it is no accident the data types in JSON =
are
as they are).
=20
Robert=20
Robert Cragie (Pacific Gas & Electric)
=20
Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
http://www.gridmerge.com
=20
=20
On 28/05/2010 2:13 PM, Angelo P. Castellani wrote:
   =20

In my opinion Subscribe/Notify are special methods of interaction
between resources.
=20
1) SUBSCRIBE: Any resource A can send a Request to SUBSCRIBE with a
resource B (to the resource B URI).
=20
When B receives the request, B can (should/must?) answer with a
Response to the SUBSCRIBE Request, telling the result of the request
(subscription accepted/denied/unsupported?).
=20
2) NOTIFY: When subscription condition fires the resource B sends a
NOTIFY Request to resource A URI.
=20
When A receives the request, A can (should/must?) answer with a
Response to the NOTIFY Request, telling the result of the request (OK,
cancel subscription, change notify options?).
=20
In each Request must be specified the URI of the resource doing the
Request too (Option? From-URI?).
=20
Angelo
=20
On Fri, May 28, 2010 at 14:50, Zach Shelby=20
 <mailto:zach@sensinode.com> <zach@sensinode.com>
 wrote:
 =20
=20
     =20

Hi,
=20
This is a really good conversation. One thing we need to do is remember =
what
our minimum requirements are for subscribe/notify and not try to solve
something more than we should. From what I know it is sufficient to be =
able
to receive notifications when a URI changes or periodically. You might
consider new URIs under this URI path to be changes to a URI though...
=20
On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrote:
=20
   =20
=20
       =20

Hello,
with this flavor, the SUBSCRIBE may be replaced by a simple POST. So no
needs to have an explicit SUBSCRIBE method.
     =20
=20
         =20

This is what coap-01 assumes.
=20
   =20
=20
       =20

If we want support a more oriented peer-to-peer transaction on CoAP, it
looks to me both SUB and NOTIFY should be treated as messages.
     =20
=20
         =20

The Request/Response model can be used peer-to-peer, and in CoAP you can
even use a Request asynchronously. Additionally, we want a native =
RESTful
subscribe/notify technique, that is, we want to subscribe to resources =
and
be susequently notified about those resources when they change.
=20
In that sense, you can think of a subscription as a request to receive
asynchronous notifications about a resource (about a URI). This can be
achieved by:
=20
1.  as a SUBSCRIBE Request on the URI with some option indicating the
lifetime as in coap-01,
2.  as a Subcsribe message (no methods) on the URI with some option,
3.  or as a POST Request on the URI with options indicating that this is
actually a subscription and the lifetime.  This bends the meaning of =
POST
quite a bit and might be prone to mistakes?
=20
The asynchronous response is a harder one. Can we bend the meaning of a
Request for making asynchronous notifications? Also a notification =
includes
a URI about a resource on the requestor, which is inverse from normal
Requests in REST. So the options here are:
=20
1. as a Notify message about a URI (no methods) as in coap-01,
2. as a NOTIFY Request about a URI as was in coap-00,
3. hmmm... reusing CRUD methods really doesn't work for this one at =
all...
=20
I wonder what the HTTP designers would have done if this would have been =
a
requirement back then? Maybe we should ask them...
=20
Zach
=20
   =20
=20
       =20

Adriano
=20
From:=20
matthieu.vial@fr.non.schneider-electric.com
[mailto:matthieu.vial@fr.non.schneider-electric.com
]
Sent: venerd=EC 28 maggio 2010 13.52
To: Adriano Pezzuto (apezzuto)
Cc: core;=20
core-bounces@ietf.org; robert.cragie@gridmerge.com
=20
Subject: Re: [core] Subscribe/Notify for CoAP
=20
     =20
=20
         =20

So strictly speaking, both NOTIFY and SUBSCRIBE are message types not
methods!
       =20
=20
           =20

SUBSCRIBE can be just an asynchronous GET on update then I think it is a
method and NOTIFY is an asynchronous response so a message.
But if we want to have selective notifications when a resource is =
created,
updated or deleted then I think you're right NOTIFY and SUBSCRIBE are
messages.
=20
Does that make sense ?
=20
Matthieu
=20
<image001.gif>"Adriano Pezzuto (apezzuto)"=20
 <mailto:apezzuto@cisco.com> <apezzuto@cisco.com>
=20
=20
=20
=20
=20
"Adriano Pezzuto (apezzuto)"=20
 <mailto:apezzuto@cisco.com> <apezzuto@cisco.com>
=20
Envoy=E9 par :=20
core-bounces@ietf.org
=20
28/05/2010 12:50
=20
<image003.png>
A
<image004.png>
=20
 <mailto:robert.cragie@gridmerge.com> <robert.cragie@gridmerge.com>
=20
<image003.png>
cc
<image004.png>
core=20
 <mailto:core@ietf.org> <core@ietf.org>
=20
<image003.png>
Objet
<image004.png>
Re: [core] Subscribe/Notify for CoAP
<image004.png>
<image004.png>
=20
Hi Roberto,
I understand your point and personally agree on M2M is quite different =
from
web page model. On the architectural RESTful style, the method =
information
tells the server what to do with data kept in the URI information.
=20
So strictly speaking, both NOTIFY and SUBSCRIBE are message types not
methods!
=20
Adriano
=20
From: Robert Cragie [
mailto:robert.cragie@gridmerge.com
]
Sent: venerd=EC 28 maggio 2010 11.53
To: Adriano Pezzuto (apezzuto)
Cc: Paul Duffy (paduffy); Zach Shelby; core
Subject: Re: [core] Subscribe/Notify for CoAP
=20
I think the point here is that there are two levels we are considering.
=20
At the lowest (foundation) level, there are the transaction messages as
described below. This provides a flexible mechanism for the application =
with
regard to synchronicity and threading. This is important for the types =
of
devices CoAP is being aimed at.
=20
Above that, the methods can be used according to the architectural =
style. So
in this case, it is RESTful (COnstrained Restful Environments), which =
will
naturally limit the number of methods and how transactions occur.
=20
The actual architecture using a combination of the methods and messages =
also
depends on what is required at the application layer. Consider a typical
client which wants to subscribe to a resource. That client controls the =
feed
of data but needs a component which is capable of handling (possibly
buffering) the data it receives through notifications. Is this a =
separate
server? Or would we want to consider it part of an enhanced client model
which is able to process feeds of data? These are the sort of models =
which
have led to the myriad of solutions (GENA, Webhooks, long polling,
pubsubhubbub, RESTMS etc.) based around HTTP which are all essentially
ingenious ways of getting around the limitations imposed by HTTP and how =
it
is processed for anything which deviates from the classic web page =
access
model.
=20
I think the aim of CoAP should be clean from the word go with regard to
supporting these more peer-to-peer transactions, where the client can =
exist
on either entity and both entities can feed data to each other; typical =
in
M2M applications.
=20
Robert
=20
Robert Cragie (Pacific Gas & Electric)
=20
Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
=20
http://www.gridmerge.com
=20
=20
On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:
Hi Robert,
=20
in my personal opinion, the option 1a) brings some sort of ambiguity to =
CoAP
specs.
=20
My be my understatement of new CoAP specs is not so deep, but now we =
have 5
methods and 3 message types: request, response and notify. Which methods =
are
allowed with which messages types?
I suppose you have to use PUT/POST method with notify message for asynch
data notification. How to make a subscribe? I suppose you would use a
SUBSCRIBE method with request/response message or SUBSCRIBE with notify
message? Also what about POST/DELETE methods in a notify message? They =
not
make any sense..
=20
I think the choice is between: option 1) -> only CRUD methods and option =
1b)
-> CRUD + SUB/NOTIFY methods, keeping in mind cost/benefits of both
solutions.
=20
Adriano
=20
From: Robert Cragie [
mailto:robert.cragie@gridmerge.com
]
Sent: mercoled=EC 26 maggio 2010 20.09
To: Adriano Pezzuto (apezzuto)
Cc: Paul Duffy (paduffy); Zach Shelby; core
Subject: Re: [core] Subscribe/Notify for CoAP
=20
Hi Adrian,
=20
I would also prefer to keep the protocol in CoAP asynchronous. You can
always map an asynchronous protocol to a synchronous one but, as we see =
in
HTTP, it always ends up as a kludge to do it the other way round. The
efforts which have been gone to to make HTTP quasi-asynchronous via all =
the
schemes mentioned below and many more besides (all non-interoperable of
course) is testament to how important this is for M2M communication.
=20
So, back to Zach's list, I favor 1a) for the following reasons:
=20
Foundation level of messages:
=20
1. request/response can be asynchronous or synchronous messages (as =
there is
a transaction ID in there)
2. notify is an asynchronous message
Derived methods:
=20
I think it makes sense to add a pub/sub model as a useful mechanism for =
M2M.
=20
So, looking at it the other way round: It will be entirely possible to
translate whatever is currently built on HTTP to CoAP based on the =
above,
with all its restrictions regarding synchronous and client/server
transactions. What may be harder is to translate directly is a =
CoAP-based
application to HTTP. So I guess the question is: Do we want to be =
hamstrung
to synchronous client/server transactions as dictated by HTTP and =
provide a
direct mapping to HTTP, then have to come up with similar kludges for
asynchronous peer-to-peer transactions as has been done in numerous ways =
for
HTTP, or do we want to define the protocol cleanly to start with and =
accept
that some sort of transaction relaying/conversion would have to take =
place
at a mapping node?
=20
Robert
Robert Cragie (Pacific Gas & Electric)
=20
Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
=20
http://www.gridmerge.com
=20
=20
On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:
Hi,
it looks to me that CoAP should use an explicit sub/notify mechanism =
since
this is the core of the machine-to-machine interaction model.
HTTP suffers of this lack and we have seen a plethora of solutions to =
give
an asynch taste to it. Webhooks and websockets are only the lasts of the
list.
As someone has already pointed out on this list, it is theoretically
possible to describe sub/notify using only CRUD methods but it looks a
little bit tricky and verbose.
=20
Now we have a chance to build from scratch a new protocol with and I =
think
using explicit sub/notify methods with a clear and well defined semantic =
is
the best option. It is easily understanding from every developer and =
will
prevent to build other fanny solutions on top of the CoAP. HTTP does not
have this well defined semantic and (for hundreds of other reasons also) =
it
is not used as wide protocol for machine-to-machine communication.
=20
CoAP - as binary protocol - and with an explicit asynch model has a =
chance
to be a really wide protocol for M2M communication not only for =
constrained
environments.
=20
my 2 cents
=20
- adriano
=20
-----Original Message-----
From:=20
core-bounces@ietf.org [mailto:core-bounces@ietf.org
] On Behalf Of Paul Duffy (paduffy)
Sent: mercoled=EC 26 maggio 2010 0.47
To: Zach Shelby
Cc: core
Subject: Re: [core] Subscribe/Notify for CoAP
=20
On 5/25/2010 6:41 PM, Zach Shelby wrote:
=20
Hi,
=20
On May 26, 2010, at 12:23 AM, Charles Palmer wrote:
=20
=20
Hi folks
=20
It occurs to me that CoRE should be keeping a close eye on ZigBee SE2.0
work, so that it is as easy as possible for ZigBee SE to use CoRE when
ready. That suggests to me that we should align with their =
subscribe/notify
process.
=20
=20
I am not sure I understand that. I mean, ZigBee SE2.0 is defining an
application specific subscribe/notify mechanism for that purpose so far =
for
HTTP. This uses standard HTTP methods and some custom payload and REST
interfaces. CoAP Req/Res is already totally compatible with SE2.0 in =
that
respect, so alignment is already OK there. Nothing stopping someone from
using SE2.0 over CoAP.
=20
Specifying a native susbcription/notify into CoAP is another matter. We
can't adopt a solution specific to one application as that won't solve =
the
problems of other applications nor general HTTP mapping at all (probably
would make it worse). It seems that for the near future there will be a
bunch of HTTP push mechanisms in use without any clear standard =
appearing -
or am I wrong there?
=20
=20
=20
=20
If COAP extends HTTP semantics with new subscription methods, it will
not be possible to easily interchange HTTP/COAP, and translation
gateways will become more complex to implement.
=20
=20
=20
Zach
=20
=20
Regards - Charles
=20
=20
-----Original Message-----
From:=20
core-bounces@ietf.org [mailto:core-bounces@ietf.org
] On Behalf Of Paul Duffy
Sent: 25 May 2010 03:48
To: Zach Shelby
Cc: core
Subject: Re: [core] Subscribe/Notify for CoAP
=20
Recommend something like #2, primarily to avoid introducing non HTTP
method semantics, simplifying HTTP/COAP translation.gateways, etc.
=20
=20
On 5/24/2010 11:49 AM, Zach Shelby wrote:
=20
(thread renamed)
=20
We have two different paths with regard to a subscribe/notify mechanism =
for
CoAP:
=20
1. Use specific Subscription and Notify mechanisms for CoAP as HTTP =
really
does not include this concept.
1a) Notify as a message and SUBSCRIBE as a method. This is currently =
used in
coap-01.
1b) NOTIFY and SUBSCRIBE as methods. This was used in coap-00, but we =
had a
good list discussion about this leading to a. In practice it doesn't =
make a
big difference if notification is a message or method.
=20
2. Use an HTTP specific framework such as Webhooks, the ZigBee SE2.0
proposal or GENA.
=20
So far we have focused on 1 in the WG, and every now and again 2 comes =
up.
At least I am not convinced that we need to suffer the drawbacks of HTTP
here. Anyways 2 does not help our mapping to HTTP in reality very much =
as
there is no standard way of doing this over HTTP. Thus a CoAP-HTTP proxy =
may
end up anyways translating between multiple HTTP frameworks depending on =
the
application. So instead of doing a CoAP Notify/Subscribe to Webhooks
mapping, you will could end up having to do a CoAP Webhooks to HTTP GENA
mapping.
=20
=20
=20
I don't understand this last para. If CoAP sticks to the semantics of
the current HTTP methods, would this not offer a fairly straightforward
translation to/from HTTP?
=20
=20
=20
>From what I have heard so far 1 still seems like a wise choice, although =
I
need to look at Webhooks more deeply. In reality many applications =
specify
their own way of doing a push interface using REST methods and specific
payloads (ZigBee SE2.0 is such an example). That is just fine, and might =
be
used instead of a specific CoAP notify/subscribe in that case. So 1 =
doesn't
prevent the application using its own mechanism, it just provides a =
native
way for doing push.
=20
What do people think?
=20
Zach
=20
On May 17, 2010, at 6:44 PM,
matthieu.vial@fr.non.schneider-electric.com
 wrote:
=20
=20
=20
Hi,
=20
My comments about the subscribe/notify mechanism of Zigbee IP.
=20
Pros:
- Derived from the webhooks concept
- If used by CORE it will be easier to map to HTTP because it uses only =
CRUD
verbs.
- The subscription message is extendable and could support advanced =
options
(delays, increment, ...)
- Only one listening port whatever the transport binding is.
=20
Cons:
- No interoperability without well known URIs and a well defined
subscription message format (Not sure CoAP draft is the right place to
specify this).
- XML/EXI is too complex to be the required format for the default
subscription/notification mechanism.
- The notification should not require a subsequent GET to retrieve the
content.
- Subresource subscription is redundant.
=20
Hope this could help,
Matthieu
=20
=20
<graycol.gif>"Charles Palmer"
 <mailto:charles.palmer@onzo.com> <charles.palmer@onzo.com>
=20
=20
=20
=20
=20
"Charles Palmer"
 <mailto:charles.palmer@onzo.com> <charles.palmer@onzo.com>
=20
Envoy=E9 par :=20
core-bounces@ietf.org
=20
15/05/2010 14:06
=20
<ecblank.gif>
A
<ecblank.gif>
"core"
 <mailto:core@ietf.org> <core@ietf.org>
=20
<ecblank.gif>
cc
<ecblank.gif>
<ecblank.gif>
Objet
<ecblank.gif>
Re: [core] Selecting a WG document for CoAP
<ecblank.gif> <ecblank.gif>
=20
Dear all
=20
Those interested in the subscribe/notify discussion might like to look
at the draft Smart Energy Profile 2.0 Application Protocol
Specification. It is available here:
=20
http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20PublicApp
=20
licationProfile.aspx
=20
It manages subscribe/notify by using POST. This seems to remove the need
for SUBSCRIBE and notify.
=20
"Imagine a host A, which exposes a resource at http{s}://A/resource and
a second host B, which wishes to learn of changes to this resource. To
facilitate a subscription/ notification mechanism, A would expose a
resource http{s}://A/sub and B would expose a resource http{s}://B/ntfy.
To subscribe to notifications regarding http{s}://A/resource, B would
send a POST to the address http{s}://A/sub/B containing the URI of the
resource of interest (http{s}://A/resource) and the URI of B's
notification resource (http{s}://B/ntfy). Following this subscription
step, should A wish to notify B of a change to the resource addressed at
http{s}://A/resource, A would send a POST to the address
http{s}://B/ntfy containing the URI of the resource changed
(http{s}://A/resource) and the URI of A's subscription resource
(http{s}://A/sub/B), should A wish to change its subscription. The host
B can then query the resource (or not) at its leisure."
=20
Sleepy nodes are not allowed to subscribe, and must poll.
=20
Regards - Charles Palmer
=20
-----Original Message-----
From:=20
core-bounces@ietf.org [mailto:core-bounces@ietf.org
] On Behalf Of
Angelo P. Castellani
Sent: 14 May 2010 13:14
To: Zach Shelby
Cc: core
Subject: Re: [core] Selecting a WG document for CoAP
=20
Zach,
=20
thanks for the comments, but please refer to my most recent e-mail for
a more specific list of technical issues I'm pointing to.
=20
I want to do only a little integration to what I've written there.
=20
In my very personal opinion, to maximize adherence with the REST model
and minimize implementation effort SUBSCRIBE and NOTIFY should be
mapped to methods (as discussed many times together...).
=20
Uniform interface principle (Fielding PhD dissertation Section 5.1.5,
"The central feature that distinguishes the REST architectural style
[...]") states that to simplify the software architecture, resource
interfaces/interfaces should be as general as possible.
=20
I agree with this principle in this specific case, mainly because
handling a special message type for notify leads node software design
to a more complex architecture.
=20
The reason is that this new message type requires special handling and
introduces a complexity in the software modularization.
=20
Best,
Angelo
=20
On Fri, May 14, 2010 at 13:06, Zach Shelby
 <mailto:zach@sensinode.com> <zach@sensinode.com>
 wrote:
=20
=20
Hi Angelo,
=20
On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:
=20
=20
=20
Dear C. Bormann, all,
=20
before deciding for the final direction, I've the following
observations about draft-shelby-core-coap-01
=20
While I mostly share Zach's view of the protocol approach, and
appreciate many aspects of the proposal, there are in my opinion
=20
=20
still
=20
=20
some open issues that need to be at least discussed before the
=20
=20
current
=20
=20
document can be selected.
=20
=20
Of course there are plenty of open issues. Remember that working group
=20
=20
documents still undertake as much change and improvement as the WG
wants, so by no means is coap-01 set in stone. I would expect at least
5-10 more revisions still along the way. Already several of your ideas
have been integrated into coap-01, and several more are under
consideration, so it is coming along. Patience ;-)
=20
=20
=20
In particular, I would like to highlight the following:
=20
a) As it is now, it is not possible to have a straightforward
translation of HTTP -> CoAP and viceversa: see
=20
http://www.ietf.org/mail-archive/web/core/current/msg00133.html
 (this
impacts the scalability of the web service model too)
=20
=20
In coap-01 the Method names are now identical to HTTP methods. The
=20
=20
Req/Res interaction is a direct translation. The URI hierarchy is
compatible, and the URI binary code format we are still working on
obviously. The only thing that takes some state to translate is
Subscribe/Notify. But note, Subscribe/Notify takes some state no matter
how you do it, even with HTTP-HTTP there is no clean and easy way to
handle subscriptions.
=20
=20
=20
b) Moreover, CoAP's implementation is not as simple as it should be.
I've investigated the implementation and some design choices (as
Options) are leading to very high program complexity (ROM) on a
MSP430-based device.
=20
=20
This we can definitely improve, and already made several optimizations
=20
=20
from -00 to -01. Here I need some very concrete proposals though. Also
remember that many things are optional, for example subscribe/notify is
not required if you don't need it.
=20
=20
=20
c) Finally when comparing HTTP message size with CoAP message size,
the resulting compression isn't as good as you may expect.
=20
Example:
HTTP: GET /sensor/temp.xml HTTP/1.0 =3D 32 B
CoAP: 24 B with options parsing procedure requiring an added
implementation complexity
=20
=20
Right, that is not how it will work in practice. Working with a real
=20
=20
HTTP server that HTTP header will be more complex, and on the CoAP side
you would chose shorter URLs. The biggest improvement possible here is
from using binary coded URLs of course. We need to look at a wider range
of interactions and real HTTP headers as well to check that we are
efficient enough.
=20
=20
=20
Addressing all these points potentially leads to major technical
modifications (especially point a) on the current draft, hence it is
appropriate in my opinion to discuss these points before making the
final decision.
=20
=20
I am not sure what else you have in mind for a). If we just forget
=20
=20
about Subscribe/Notify then you are good to go. But then you are also
not fulfilling the charter or the industry needs in that respect.
=20
=20
Thanks,
Zach
=20
=20
=20
Best regards,
=20
Angelo P. Castellani
=20
=20
On Mon, May 10, 2010 at 18:51, Carsten Bormann
 <mailto:cabo@tzi.org> <cabo@tzi.org>
wrote:
=20
=20
The CORE WG has a milestone to select a WG document for CoAP in
=20
=20
April:
=20
=20
=20
http://datatracker.ietf.org/wg/core/charter/
=20
...
Apr 2010 Select WG document for basis of the CoAP protocol
=20
Of the various documents that have been contributed,
=20
=20
draft-shelby-core-coap has significant discussion, as well as the
largest number of updates (including a previous version that was still
called -6lowapp-coap).
=20
=20
Today, another updated version of that draft was announced. See
=20
http://www.ietf.org/mail-archive/web/core/current/msg00138.html
=20
for the announcement and
=20
http://tools.ietf.org/html/draft-shelby-core-coap-01
=20
for the draft itself.
=20
However, as the authors say, there are still significant TODOs.
=20
Are we in a state yet where we can say whether this is the right
=20
=20
direction for the WG to take?
=20
=20
If yes, is it the right direction? Should we adopt it as a WG
=20
=20
document?
=20
=20
If you don't think we can say yet, is there a set of technical
=20
=20
decisions you would like the authors to take with priority?
=20
=20
Note that once a document has become a WG document, the authors act
=20
=20
as editors for the working group, making (and usually fleshing out the
details of) any change that the WG decides it needs.
=20
=20
If you think we can still improve the draft, this is not an obstacle
=20
=20
to making it a WG document.
=20
=20
But of course we shouldn't do that if we intend to reverse its
=20
=20
fundamental technical direction.
=20
=20
In order to stay roughly in sync with our milestones, we should
=20
=20
reach at a decision on how to go forward this week.
=20
=20
Gruesse, Carsten
=20
_______________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
=20
=20
=20
_______________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
=20
=20
--
Zach Shelby, Chief Nerd, Sensinode Ltd.
=20
http://zachshelby.org - My blog "On the Internet of Things
 <http://6lowpan.net-Mybook> "
http://6lowpan.net - My book  <http://6lowpan.net-Mybook> "
6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297
=20
=20
=20
=20
_______________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
=20
--------------------------------
Onzo is a limited company number 06097997 registered in England& Wales. =
The
registered office is 6 Great Newport Street, London, WC2H 7JB, United
Kingdom.
=20
This email message may contain confidential and/or privileged =
information,
and
is intended solely for the addressee(s). If you have received this email =
in
error, please notify Onzo immediately. Unauthorised copying, disclosure =
or
distribution of the material in this email is forbidden.
--------------------------------
=20
_______________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
=20
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
______________________________________________________________________
=20
_______________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
=20
=20
=20
_______________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
=20
--------------------------------
Onzo is a limited company number 06097997 registered in England& Wales. =
The
registered office is 6 Great Newport Street, London, WC2H 7JB, United
Kingdom.
=20
This email message may contain confidential and/or privileged =
information,
and
is intended solely for the addressee(s). If you have received this email =
in
error, please notify Onzo immediately. Unauthorised copying, disclosure =
or
distribution of the material in this email is forbidden.
--------------------------------
=20
=20
=20
=20
_______________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
_______________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
=20
=20
=20
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
_________________________________________________________________________=
___
_________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
=20
_______________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
     =20
=20
         =20

--
Zach Shelby, Chief Nerd, Sensinode Ltd.
=20
http://zachshelby.org  - My blog "On the Internet of Things
 <http://6lowpan.net-Mybook> "
http://6lowpan.net - My book  <http://6lowpan.net-Mybook> "
6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297
=20
_______________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
=20
   =20
=20
       =20

_______________________________________________
core mailing list
=20
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
=20
 =20
=20
     =20

=20
_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=20
=20
_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
   =20

=20
 =20

------=_NextPart_000_0047_01CB064C.72EC48C0
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<meta name=3DGenerator content=3D"Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
	{font-family:Verdana;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p
	{mso-style-priority:99;
	mso-margin-top-alt:auto;
	margin-right:0cm;
	mso-margin-bottom-alt:auto;
	margin-left:0cm;
	font-size:8.0pt;
	font-family:"Verdana","sans-serif";
	color:black;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Vorformatiert Zchn";
	margin:0cm;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
p.name, li.name, div.name
	{mso-style-name:name;
	mso-margin-top-alt:auto;
	margin-right:0cm;
	mso-margin-bottom-alt:auto;
	margin-left:0cm;
	font-size:12.0pt;
	font-family:"Verdana","sans-serif";
	color:black;}
span.HTMLVorformatiertZchn
	{mso-style-name:"HTML Vorformatiert Zchn";
	mso-style-priority:99;
	mso-style-link:"HTML Vorformatiert";
	font-family:Consolas;
	color:black;}
span.E-MailFormatvorlage21
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body bgcolor=3Dwhite lang=3DDE link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>+1 for removing message type and leaving only =
methods.<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>You mean messaging pattern between the server and client? =
Of
course, for interoperability reasons there should be a clear =
specification
which is the correct response on a request. But when using a datagram =
transport
protocol like UDP and due to the partly expected high delay between =
request and
response, messaging is be asynchronous by design. So this might be not =
be obviously
classical client/server communication but more data sink/data source (or
service provider/service consumer in terms of SOAs). Thus relationship =
between
request and response is part of the application layer and not of the =
transport
layer like in traditional HTTP. <o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Guido<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style=3D'border:none;border-left:solid blue 1.5pt;padding:0cm 0cm =
0cm 4.0pt'>

<div>

<div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt =
0cm 0cm 0cm'>

<p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif";
color:windowtext'>Von:</span></b><span =
style=3D'font-size:10.0pt;font-family:
"Tahoma","sans-serif";color:windowtext'> core-bounces@ietf.org
[mailto:core-bounces@ietf.org] <b>Im Auftrag von </b>Robert Cragie<br>
<b>Gesendet:</b> Freitag, 4. Juni 2010 15:29<br>
<b>An:</b> core@ietf.org<br>
<b>Betreff:</b> Re: [core] Subscribe/Notify for =
CoAP<o:p></o:p></span></p>

</div>

</div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

<p class=3DMsoNormal>Hi Zach,<br>
<br>
At the end of the day, it obviously all comes down transmitting and =
receiving
asynchronous packets going between peers. However I think there is some =
use in
identifying at least message types to map to a suitable transaction =
model.
Beyond that, we should specify methods, as, after all, this is CORE =
(RESTful
environments) - the REST architectural style does impose rules here.<br>
<br>
I actually think client and server are still valid from the point of =
view of
execution, i.e. the client initiates the transaction. Just thinking =
about
packets flying about between peers doesn't help from the point of view =
of a
processing environment particularly, so again is the aim to try to =
provide a
pattern here?<br>
<br>
Robert<o:p></o:p></p>

<div>

<p class=3Dname>Robert Cragie (Pacific Gas &amp; =
Electric)<o:p></o:p></p>

<p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
<a =
href=3D"http://www.gridmerge.com/">http://www.gridmerge.com</a><o:p></o:p=
></p>

</div>

<p class=3DMsoNormal><br>
On 04/06/2010 1:59 PM, Zach Shelby wrote: <o:p></o:p></p>

<pre><o:p>&nbsp;</o:p></pre><pre>On May 29, 2010, at 12:21 AM, Brian =
Frank wrote:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0 =
<o:p></o:p></pre>

<blockquote style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><pre>My two =
cents: <o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Personally I =
find it confusing to have both a message type *and* a =
method.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Do we really =
need both?=A0 It seems we just combine the two into a single method =
byte.=A0 Maybe reserve a bit to say a message is a response to a GET, =
PUT, DELETE, etc.<o:p></o:p></pre><pre>=A0=A0=A0 =
<o:p></o:p></pre></blockquote>

<pre><o:p>&nbsp;</o:p></pre><pre>Interesting way of looking at things. =
Maybe we are making this too complex with having both messages and =
methods. Instead we could think of this simply as sending Methods and =
receiving a Response. That would save a couple bits (and parsing) from =
the header too. In the end, does HTTP even have messages types at all? =
In practice an HTTP client is just sending a method and receiving a =
response code. <o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Another =
good concept we discussed off-line with Guido Moritz was whether we =
should think of the CoAP message as being synchronous at all. Already we =
have determined that talking about CoAP in terms of clients and servers =
doesn't work (coap-01 tries to avoid that terminology). Instead we just =
talk about peer CoAP end-points, which seems to =
work.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>As we are working =
with UDP the message model can be thought of as being just asyncronous, =
when the A bit is not set then no response will come. If the A bit is =
set a response should come, but even with a large delay and we may need =
to retransmit. So the A bit achieves the same as the HTTP req/res model, =
but we could think of it as two asynchronous CoAP messages. =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Does that make sense =
to people? =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Zach<o:p></o:p></pre><p=
re><o:p>&nbsp;</o:p></pre><pre>=A0 <o:p></o:p></pre>

<blockquote =
style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><pre><o:p>&nbsp;</o:p></pr=
e><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>On Fri, =
May 28, 2010 at 1:22 PM, Robert Cragie <a
href=3D"mailto:robert.cragie@gridmerge.com">&lt;robert.cragie@gridmerge.c=
om&gt;</a> wrote:<o:p></o:p></pre><pre>I think sometimes it makes more =
sense to think about threads of =
execution.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Forgive me =
for this lengthy preamble but it will hopefully put things into =
context.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>In the most =
abstract sense, processing is governed by a thread of execution, which =
sequences a series of data transformations to expedite the required =
processing. If a data transformation can be completed synchronously in =
the thread of execution, then the thread is conceptually easier to =
understand and follow. Most threading models assume this to be the case =
and if the data transformation cannot complete, it usually blocks =
pending the required event to complete the transformation. During =
blocking, the thread is suspended. In simple CPU models without any sort =
of scheduler, there are two threads of execution: A main thread, =
pre-emptable by an interrupt thread, usually not pre-emptable. In the =
main thread, sub-threads are emulated; data transformations can be =
simply function calls which don't block and therefore return effectively =
immediately and synchronously. Blocking data transformations are =
emulated by storing state relevant to each sub-thread then marshaling =
each event as<o:p></o:p></pre><pre> it is received e.g. through =
interrupt handling, which causes the second thread to run and thus =
allows changing sub-thread state so when the main thread runs, the =
blocking data transformation can complete. Operating system schedulers =
for these simple CPUs simply abstract this operation through a kernel =
and associated task/thread scheduling calls. Continuations are a simpler =
form used in memory-constrained =
implementations.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Why =
the lengthy pre-amble? However you look at it, what essentially is =
required for any threading model (using kernel/scheduler, continuations, =
emulated, whatever) are fundamentally three =
primitives:<o:p></o:p></pre><pre> &#8226; Request<o:p></o:p></pre><pre> =
&#8226; Response<o:p></o:p></pre><pre> &#8226; =
Notify<o:p></o:p></pre><pre>A thread of execution will call request and =
will typically (though not necessarily - see emulated =
blocking/continuations) wait for a response. If the thread blocks, it is =
typically woken by another worker thread handling a notify. The worker =
thread handles notifies asynchronously and buffers and/or signals the =
associated task =
accordingly.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>This is =
why I think the current foundation level of messages in coap-01 is =
right.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>On top of this, =
the payload of the messages can reflect the actual method. Personally, I =
don't see the need for a specific SUBSCRIBE message; a POST/create to a =
subscription resource seems adequate to me. The notify message can carry =
a PUT or POST depending on whether the resource was simply updated or =
appended to (again it is no accident the data types in JSON are as they =
are).<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Robert =
<o:p></o:p></pre><pre>Robert Cragie (Pacific Gas &amp; =
Electric)<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Gridmerge =
Ltd.<o:p></o:p></pre><pre>89 Greenfield =
Crescent,<o:p></o:p></pre><pre>Wakefield, WF4 4WA, =
UK<o:p></o:p></pre><pre>+44 1924 910888<o:p></o:p></pre><pre>+1 415 513 =
0064<o:p></o:p></pre><pre><a
href=3D"http://www.gridmerge.com">http://www.gridmerge.com</a><o:p></o:p>=
</pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>On =
28/05/2010 2:13 PM, Angelo P. Castellani =
wrote:<o:p></o:p></pre><pre>=A0=A0=A0 <o:p></o:p></pre>

<blockquote style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><pre>In my =
opinion Subscribe/Notify are special methods of =
interaction<o:p></o:p></pre><pre>between =
resources.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>1) =
SUBSCRIBE: Any resource A can send a Request to SUBSCRIBE with =
a<o:p></o:p></pre><pre>resource B (to the resource B =
URI).<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>When B receives =
the request, B can (should/must?) answer with =
a<o:p></o:p></pre><pre>Response to the SUBSCRIBE Request, telling the =
result of the request<o:p></o:p></pre><pre>(subscription =
accepted/denied/unsupported?).<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pr=
e><pre>2) NOTIFY: When subscription condition fires the resource B sends =
a<o:p></o:p></pre><pre>NOTIFY Request to resource A =
URI.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>When A receives =
the request, A can (should/must?) answer with =
a<o:p></o:p></pre><pre>Response to the NOTIFY Request, telling the =
result of the request (OK,<o:p></o:p></pre><pre>cancel subscription, =
change notify =
options?).<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>In each =
Request must be specified the URI of the resource doing =
the<o:p></o:p></pre><pre>Request too (Option? =
From-URI?).<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Angelo<o:p><=
/o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>On Fri, May 28, 2010 at =
14:50, Zach Shelby <o:p></o:p></pre><pre><a
href=3D"mailto:zach@sensinode.com">&lt;zach@sensinode.com&gt;</a><o:p></o=
:p></pre><pre> wrote:<o:p></o:p></pre><pre>=A0 =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0 =
<o:p></o:p></pre>

<blockquote =
style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><pre>Hi,<o:p></o:p></pre><=
pre><o:p>&nbsp;</o:p></pre><pre>This is a really good conversation. One =
thing we need to do is remember what our minimum requirements are for =
subscribe/notify and not try to solve something more than we should. =
>From what I know it is sufficient to be able to receive notifications =
when a URI changes or periodically. You might consider new URIs under =
this URI path to be changes to a URI =
though...<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>On May 28, =
2010, at 3:08 PM, Adriano Pezzuto (apezzuto) =
wrote:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0 =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0=A0=A0 =
<o:p></o:p></pre>

<blockquote =
style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><pre>Hello,<o:p></o:p></pr=
e><pre>with this flavor, the SUBSCRIBE may be replaced by a simple POST. =
So no needs to have an explicit SUBSCRIBE =
method.<o:p></o:p></pre><pre>=A0=A0=A0=A0=A0 =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0 <o:p></o:p></pre></blockquote>

<pre>This is what coap-01 =
assumes.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0 =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0=A0=A0 =
<o:p></o:p></pre>

<blockquote style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><pre>If we =
want support a more oriented peer-to-peer transaction on CoAP, it looks =
to me both SUB and NOTIFY should be treated as =
messages.<o:p></o:p></pre><pre>=A0=A0=A0=A0=A0 =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0 <o:p></o:p></pre></blockquote>

<pre>The Request/Response model can be used peer-to-peer, and in CoAP =
you can even use a Request asynchronously. Additionally, we want a =
native RESTful subscribe/notify technique, that is, we want to subscribe =
to resources and be susequently notified about those resources when they =
change.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>In that sense, =
you can think of a subscription as a request to receive asynchronous =
notifications about a resource (about a URI). This can be achieved =
by:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>1.=A0 as a =
SUBSCRIBE Request on the URI with some option indicating the lifetime as =
in coap-01,<o:p></o:p></pre><pre>2.=A0 as a Subcsribe message (no =
methods) on the URI with some option,<o:p></o:p></pre><pre>3.=A0 or as a =
POST Request on the URI with options indicating that this is actually a =
subscription and the lifetime.=A0 This bends the meaning of POST quite a =
bit and might be prone to =
mistakes?<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>The =
asynchronous response is a harder one. Can we bend the meaning of a =
Request for making asynchronous notifications? Also a notification =
includes a URI about a resource on the requestor, which is inverse from =
normal Requests in REST. So the options here =
are:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>1. as a Notify =
message about a URI (no methods) as in coap-01,<o:p></o:p></pre><pre>2. =
as a NOTIFY Request about a URI as was in =
coap-00,<o:p></o:p></pre><pre>3. hmmm... reusing CRUD methods really =
doesn't work for this one at =
all...<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I wonder what =
the HTTP designers would have done if this would have been a requirement =
back then? Maybe we should ask =
them...<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Zach<o:p></o:p><=
/pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0 =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0=A0=A0 =
<o:p></o:p></pre>

<blockquote =
style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><pre>Adriano<o:p></o:p></p=
re><pre><o:p>&nbsp;</o:p></pre><pre>From: <o:p></o:p></pre><pre><a
href=3D"mailto:matthieu.vial@fr.non.schneider-electric.com">matthieu.vial=
@fr.non.schneider-electric.com</a> [<a
href=3D"mailto:matthieu.vial@fr.non.schneider-electric.com">mailto:matthi=
eu.vial@fr.non.schneider-electric.com</a><o:p></o:p></pre><pre>]<o:p></o:=
p></pre><pre>Sent: venerd=EC 28 maggio 2010 =
13.52<o:p></o:p></pre><pre>To: Adriano Pezzuto =
(apezzuto)<o:p></o:p></pre><pre>Cc: core; <o:p></o:p></pre><pre><a
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a>; <a
href=3D"mailto:robert.cragie@gridmerge.com">robert.cragie@gridmerge.com</=
a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Subject: Re: [core] =
Subscribe/Notify for =
CoAP<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0 =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0 <o:p></o:p></pre>

<blockquote style=3D'margin-top:5.0pt;margin-bottom:5.0pt'><pre>So =
strictly speaking, both NOTIFY and SUBSCRIBE are message types not=A0 =
methods!<o:p></o:p></pre><pre>=A0=A0=A0=A0=A0=A0=A0 =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0 <o:p></o:p></pre></blockquote>

<pre>SUBSCRIBE can be just an asynchronous GET on update then I think it =
is a method and NOTIFY is an asynchronous response so a =
message.<o:p></o:p></pre><pre>But if we want to have selective =
notifications when a resource is created, updated or deleted then I =
think you're right NOTIFY and SUBSCRIBE are =
messages.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Does that =
make sense =
?<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Matthieu<o:p></o:p></p=
re><pre><o:p>&nbsp;</o:p></pre><pre>&lt;image001.gif&gt;&quot;Adriano =
Pezzuto (apezzuto)&quot; <o:p></o:p></pre><pre><a
href=3D"mailto:apezzuto@cisco.com">&lt;apezzuto@cisco.com&gt;</a><o:p></o=
:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:=
p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></p=
re><pre>&quot;Adriano Pezzuto (apezzuto)&quot; <o:p></o:p></pre><pre><a
href=3D"mailto:apezzuto@cisco.com">&lt;apezzuto@cisco.com&gt;</a><o:p></o=
:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Envoy=E9 par : =
<o:p></o:p></pre><pre><a
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a><o:p></o:p=
></pre><pre><o:p>&nbsp;</o:p></pre><pre>28/05/2010 =
12:50<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>&lt;image003.png&g=
t;<o:p></o:p></pre><pre>A<o:p></o:p></pre><pre>&lt;image004.png&gt;<o:p><=
/o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:robert.cragie@gridmerge.com">&lt;robert.cragie@gridmerge.c=
om&gt;</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>&lt;image003.=
png&gt;<o:p></o:p></pre><pre>cc<o:p></o:p></pre><pre>&lt;image004.png&gt;=
<o:p></o:p></pre><pre>core <o:p></o:p></pre><pre><a
href=3D"mailto:core@ietf.org">&lt;core@ietf.org&gt;</a><o:p></o:p></pre><=
pre><o:p>&nbsp;</o:p></pre><pre>&lt;image003.png&gt;<o:p></o:p></pre><pre=
>Objet<o:p></o:p></pre><pre>&lt;image004.png&gt;<o:p></o:p></pre><pre>Re:=
 [core] Subscribe/Notify for =
CoAP<o:p></o:p></pre><pre>&lt;image004.png&gt;<o:p></o:p></pre><pre>&lt;i=
mage004.png&gt;<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Hi =
Roberto,<o:p></o:p></pre><pre>I understand your point and personally =
agree on M2M is quite different from web page model. On the =
architectural RESTful style, the method information tells the server =
what to do with data kept in the URI =
information.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>So =
strictly speaking, both NOTIFY and SUBSCRIBE are message types not=A0 =
methods!<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Adriano<o:p></o=
:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>From: Robert Cragie =
[<o:p></o:p></pre><pre><a
href=3D"mailto:robert.cragie@gridmerge.com">mailto:robert.cragie@gridmerg=
e.com</a><o:p></o:p></pre><pre>]<o:p></o:p></pre><pre>Sent: venerd=EC 28 =
maggio 2010 11.53<o:p></o:p></pre><pre>To: Adriano Pezzuto =
(apezzuto)<o:p></o:p></pre><pre>Cc: Paul Duffy (paduffy); Zach Shelby; =
core<o:p></o:p></pre><pre>Subject: Re: [core] Subscribe/Notify for =
CoAP<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I think the point =
here is that there are two levels we are =
considering.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>At the =
lowest (foundation) level, there are the transaction messages as =
described below. This provides a flexible mechanism for the application =
with regard to synchronicity and threading. This is important for the =
types of devices CoAP is being aimed =
at.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Above that, the =
methods can be used according to the architectural style. So in this =
case, it is RESTful (COnstrained Restful Environments), which will =
naturally limit the number of methods and how transactions =
occur.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>The actual =
architecture using a combination of the methods and messages also =
depends on what is required at the application layer. Consider a typical =
client which wants to subscribe to a resource. That client controls the =
feed of data but needs a component which is capable of handling =
(possibly buffering) the data it receives through notifications. Is this =
a separate server? Or would we want to consider it part of an enhanced =
client model which is able to process feeds of data? These are the sort =
of models which have led to the myriad of solutions (GENA, Webhooks, =
long polling, pubsubhubbub, RESTMS etc.) based around HTTP which are all =
essentially ingenious ways of getting around the limitations imposed by =
HTTP and how it is processed for anything which deviates from the =
classic web page access =
model.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I think the aim =
of CoAP should be clean from the word go with regard to supporting these =
more peer-to-peer transactions, where the client can exist on either =
entity and both entities can feed data to each other; typical in M2M =
applications.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Robert<o:p=
></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Robert Cragie (Pacific Gas =
&amp; =
Electric)<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Gridmerge =
Ltd.<o:p></o:p></pre><pre>89 Greenfield =
Crescent,<o:p></o:p></pre><pre>Wakefield, WF4 4WA, =
UK<o:p></o:p></pre><pre>+44 1924 910888<o:p></o:p></pre><pre>+1 415 513 =
0064<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"http://www.gridmerge.com">http://www.gridmerge.com</a><o:p></o:p>=
</pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>On =
27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) =
wrote:<o:p></o:p></pre><pre>Hi =
Robert,<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>in my personal =
opinion, the option 1a) brings some sort of ambiguity to CoAP =
specs.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>My be my =
understatement of new CoAP specs is not so deep, but now we have 5 =
methods and 3 message types: request, response and notify. Which methods =
are allowed with which messages types?<o:p></o:p></pre><pre>I suppose =
you have to use PUT/POST method with notify message for asynch data =
notification. How to make a subscribe? I suppose you would use a =
SUBSCRIBE method with request/response message or SUBSCRIBE with notify =
message? Also what about POST/DELETE methods in a notify message? They =
not make any sense..<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I =
think the choice is between: option 1) -&gt; only CRUD methods and =
option 1b) -&gt; CRUD + SUB/NOTIFY methods, keeping in mind =
cost/benefits of both =
solutions.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Adriano<o:p><=
/o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>From: Robert Cragie =
[<o:p></o:p></pre><pre><a
href=3D"mailto:robert.cragie@gridmerge.com">mailto:robert.cragie@gridmerg=
e.com</a><o:p></o:p></pre><pre>]<o:p></o:p></pre><pre>Sent: mercoled=EC =
26 maggio 2010 20.09<o:p></o:p></pre><pre>To: Adriano Pezzuto =
(apezzuto)<o:p></o:p></pre><pre>Cc: Paul Duffy (paduffy); Zach Shelby; =
core<o:p></o:p></pre><pre>Subject: Re: [core] Subscribe/Notify for =
CoAP<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Hi =
Adrian,<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I would also =
prefer to keep the protocol in CoAP asynchronous. You can always map an =
asynchronous protocol to a synchronous one but, as we see in HTTP, it =
always ends up as a kludge to do it the other way round. The efforts =
which have been gone to to make HTTP quasi-asynchronous via all the =
schemes mentioned below and many more besides (all non-interoperable of =
course) is testament to how important this is for M2M =
communication.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>So, back =
to Zach's list, I favor 1a) for the following =
reasons:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Foundation =
level of messages:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>1. =
request/response can be asynchronous or synchronous messages (as there =
is a transaction ID in there)<o:p></o:p></pre><pre>2. notify is an =
asynchronous message<o:p></o:p></pre><pre>Derived =
methods:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I think it =
makes sense to add a pub/sub model as a useful mechanism for =
M2M.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>So, looking at it =
the other way round: It will be entirely possible to translate whatever =
is currently built on HTTP to CoAP based on the above, with all its =
restrictions regarding synchronous and client/server transactions. What =
may be harder is to translate directly is a CoAP-based application to =
HTTP. So I guess the question is: Do we want to be hamstrung to =
synchronous client/server transactions as dictated by HTTP and provide a =
direct mapping to HTTP, then have to come up with similar kludges for =
asynchronous peer-to-peer transactions as has been done in numerous ways =
for HTTP, or do we want to define the protocol cleanly to start with and =
accept that some sort of transaction relaying/conversion would have to =
take place at a mapping =
node?<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Robert<o:p></o:p><=
/pre><pre>Robert Cragie (Pacific Gas &amp; =
Electric)<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Gridmerge =
Ltd.<o:p></o:p></pre><pre>89 Greenfield =
Crescent,<o:p></o:p></pre><pre>Wakefield, WF4 4WA, =
UK<o:p></o:p></pre><pre>+44 1924 910888<o:p></o:p></pre><pre>+1 415 513 =
0064<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"http://www.gridmerge.com">http://www.gridmerge.com</a><o:p></o:p>=
</pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>On =
26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) =
wrote:<o:p></o:p></pre><pre>Hi,<o:p></o:p></pre><pre>it looks to me that =
CoAP should use an explicit sub/notify mechanism since this is the core =
of the machine-to-machine interaction model.<o:p></o:p></pre><pre>HTTP =
suffers of this lack and we have seen a plethora of solutions to give an =
asynch taste to it. Webhooks and websockets are only the lasts of the =
list.<o:p></o:p></pre><pre>As someone has already pointed out on this =
list, it is theoretically possible to describe sub/notify using only =
CRUD methods but it looks a little bit tricky and =
verbose.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Now we have a =
chance to build from scratch a new protocol with and I think using =
explicit sub/notify methods with a clear and well defined semantic is =
the best option. It is easily understanding from every developer and =
will prevent to build other fanny solutions on top of the CoAP. HTTP =
does not have this well defined semantic and (for hundreds of other =
reasons also) it is not used as wide protocol for machine-to-machine =
communication.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>CoAP - =
as binary protocol - and with an explicit asynch model has a chance to =
be a really wide protocol for M2M communication not only for constrained =
environments.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>my 2 =
cents<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>- =
adriano<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>-----Original =
Message-----<o:p></o:p></pre><pre>From: <o:p></o:p></pre><pre><a
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a> [<a
href=3D"mailto:core-bounces@ietf.org">mailto:core-bounces@ietf.org</a><o:=
p></o:p></pre><pre>] On Behalf Of Paul Duffy =
(paduffy)<o:p></o:p></pre><pre>Sent: mercoled=EC 26 maggio 2010 =
0.47<o:p></o:p></pre><pre>To: Zach Shelby<o:p></o:p></pre><pre>Cc: =
core<o:p></o:p></pre><pre>Subject: Re: [core] Subscribe/Notify for =
CoAP<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>On 5/25/2010 6:41 =
PM, Zach Shelby =
wrote:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Hi,<o:p></o:p></p=
re><pre><o:p>&nbsp;</o:p></pre><pre>On May 26, 2010, at 12:23 AM, =
Charles Palmer =
wrote:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p>=
</pre><pre>Hi folks<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>It =
occurs to me that CoRE should be keeping a close eye on ZigBee SE2.0 =
work, so that it is as easy as possible for ZigBee SE to use CoRE when =
ready. That suggests to me that we should align with their =
subscribe/notify =
process.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:=
p></pre><pre>I am not sure I understand that. I mean, ZigBee SE2.0 is =
defining an application specific subscribe/notify mechanism for that =
purpose so far for HTTP. This uses standard HTTP methods and some custom =
payload and REST interfaces. CoAP Req/Res is already totally compatible =
with SE2.0 in that respect, so alignment is already OK there. Nothing =
stopping someone from using SE2.0 over =
CoAP.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Specifying a =
native susbcription/notify into CoAP is another matter. We can't adopt a =
solution specific to one application as that won't solve the problems of =
other applications nor general HTTP mapping at all (probably would make =
it worse). It seems that for the near future there will be a bunch of =
HTTP push mechanisms in use without any clear standard appearing - or am =
I wrong =
there?<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p>=
</pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>If =
COAP extends HTTP semantics with new subscription methods, it =
will<o:p></o:p></pre><pre>not be possible to easily interchange =
HTTP/COAP, and translation<o:p></o:p></pre><pre>gateways will become =
more complex to =
implement.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</=
o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Zach<o:p></o:p></pre><pre><o:p=
>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Regards - =
Charles<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p=
></pre><pre>-----Original Message-----<o:p></o:p></pre><pre>From: =
<o:p></o:p></pre><pre><a
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a> [<a
href=3D"mailto:core-bounces@ietf.org">mailto:core-bounces@ietf.org</a><o:=
p></o:p></pre><pre>] On Behalf Of Paul Duffy<o:p></o:p></pre><pre>Sent: =
25 May 2010 03:48<o:p></o:p></pre><pre>To: Zach =
Shelby<o:p></o:p></pre><pre>Cc: core<o:p></o:p></pre><pre>Subject: Re: =
[core] Subscribe/Notify for =
CoAP<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Recommend =
something like #2, primarily to avoid introducing non =
HTTP<o:p></o:p></pre><pre>method semantics, simplifying HTTP/COAP =
translation.gateways, =
etc.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></=
pre><pre>On 5/24/2010 11:49 AM, Zach Shelby =
wrote:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>(thread =
renamed)<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>We have two =
different paths with regard to a subscribe/notify mechanism for =
CoAP:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>1. Use specific =
Subscription and Notify mechanisms for CoAP as HTTP really does not =
include this concept.<o:p></o:p></pre><pre>1a) Notify as a message and =
SUBSCRIBE as a method. This is currently used in =
coap-01.<o:p></o:p></pre><pre>1b) NOTIFY and SUBSCRIBE as methods. This =
was used in coap-00, but we had a good list discussion about this =
leading to a. In practice it doesn't make a big difference if =
notification is a message or =
method.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>2. Use an HTTP =
specific framework such as Webhooks, the ZigBee SE2.0 proposal or =
GENA.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>So far we have =
focused on 1 in the WG, and every now and again 2 comes up. At least I =
am not convinced that we need to suffer the drawbacks of HTTP here. =
Anyways 2 does not help our mapping to HTTP in reality very much as =
there is no standard way of doing this over HTTP. Thus a CoAP-HTTP proxy =
may end up anyways translating between multiple HTTP frameworks =
depending on the application. So instead of doing a CoAP =
Notify/Subscribe to Webhooks mapping, you will could end up having to do =
a CoAP Webhooks to HTTP GENA =
mapping.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:=
p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I don't understand this last =
para. If CoAP sticks to the semantics of<o:p></o:p></pre><pre>the =
current HTTP methods, would this not offer a fairly =
straightforward<o:p></o:p></pre><pre>translation to/from =
HTTP?<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p><=
/pre><pre><o:p>&nbsp;</o:p></pre><pre>From what I have heard so far 1 =
still seems like a wise choice, although I need to look at Webhooks more =
deeply. In reality many applications specify their own way of doing a =
push interface using REST methods and specific payloads (ZigBee SE2.0 is =
such an example). That is just fine, and might be used instead of a =
specific CoAP notify/subscribe in that case. So 1 doesn't prevent the =
application using its own mechanism, it just provides a native way for =
doing push.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>What do =
people =
think?<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Zach<o:p></o:p></=
pre><pre><o:p>&nbsp;</o:p></pre><pre>On May 17, 2010, at 6:44 =
PM,<o:p></o:p></pre><pre><a
href=3D"mailto:matthieu.vial@fr.non.schneider-electric.com">matthieu.vial=
@fr.non.schneider-electric.com</a><o:p></o:p></pre><pre> =
wrote:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p>=
</pre><pre><o:p>&nbsp;</o:p></pre><pre>Hi,<o:p></o:p></pre><pre><o:p>&nbs=
p;</o:p></pre><pre>My comments about the subscribe/notify mechanism of =
Zigbee =
IP.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Pros:<o:p></o:p></pr=
e><pre>- Derived from the webhooks concept<o:p></o:p></pre><pre>- If =
used by CORE it will be easier to map to HTTP because it uses only CRUD =
verbs.<o:p></o:p></pre><pre>- The subscription message is extendable and =
could support advanced options (delays, increment, =
...)<o:p></o:p></pre><pre>- Only one listening port whatever the =
transport binding =
is.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Cons:<o:p></o:p></pr=
e><pre>- No interoperability without well known URIs and a well defined =
subscription message format (Not sure CoAP draft is the right place to =
specify this).<o:p></o:p></pre><pre>- XML/EXI is too complex to be the =
required format for the default subscription/notification =
mechanism.<o:p></o:p></pre><pre>- The notification should not require a =
subsequent GET to retrieve the content.<o:p></o:p></pre><pre>- =
Subresource subscription is =
redundant.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Hope this =
could =
help,<o:p></o:p></pre><pre>Matthieu<o:p></o:p></pre><pre><o:p>&nbsp;</o:p=
></pre><pre><o:p>&nbsp;</o:p></pre><pre>&lt;graycol.gif&gt;&quot;Charles =
Palmer&quot;<o:p></o:p></pre><pre><a
href=3D"mailto:charles.palmer@onzo.com">&lt;charles.palmer@onzo.com&gt;</=
a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pr=
e><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp=
;</o:p></pre><pre>&quot;Charles Palmer&quot;<o:p></o:p></pre><pre><a
href=3D"mailto:charles.palmer@onzo.com">&lt;charles.palmer@onzo.com&gt;</=
a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Envoy=E9 par : =
<o:p></o:p></pre><pre><a
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a><o:p></o:p=
></pre><pre><o:p>&nbsp;</o:p></pre><pre>15/05/2010 =
14:06<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>&lt;ecblank.gif&gt=
;<o:p></o:p></pre><pre>A<o:p></o:p></pre><pre>&lt;ecblank.gif&gt;<o:p></o=
:p></pre><pre>&quot;core&quot;<o:p></o:p></pre><pre><a
href=3D"mailto:core@ietf.org">&lt;core@ietf.org&gt;</a><o:p></o:p></pre><=
pre><o:p>&nbsp;</o:p></pre><pre>&lt;ecblank.gif&gt;<o:p></o:p></pre><pre>=
cc<o:p></o:p></pre><pre>&lt;ecblank.gif&gt;<o:p></o:p></pre><pre>&lt;ecbl=
ank.gif&gt;<o:p></o:p></pre><pre>Objet<o:p></o:p></pre><pre>&lt;ecblank.g=
if&gt;<o:p></o:p></pre><pre>Re: [core] Selecting a WG document for =
CoAP<o:p></o:p></pre><pre>&lt;ecblank.gif&gt; =
&lt;ecblank.gif&gt;<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Dear=
 all<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Those interested =
in the subscribe/notify discussion might like to =
look<o:p></o:p></pre><pre>at the draft Smart Energy Profile 2.0 =
Application Protocol<o:p></o:p></pre><pre>Specification. It is available =
here:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20Pu=
blicApp">http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20P=
ublicApp</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>licationPro=
file.aspx<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>It manages =
subscribe/notify by using POST. This seems to remove the =
need<o:p></o:p></pre><pre>for SUBSCRIBE and =
notify.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>&quot;Imagine a =
host A, which exposes a resource at http{s}://A/resource =
and<o:p></o:p></pre><pre>a second host B, which wishes to learn of =
changes to this resource. To<o:p></o:p></pre><pre>facilitate a =
subscription/ notification mechanism, A would expose =
a<o:p></o:p></pre><pre>resource http{s}://A/sub and B would expose a =
resource http{s}://B/ntfy.<o:p></o:p></pre><pre>To subscribe to =
notifications regarding http{s}://A/resource, B =
would<o:p></o:p></pre><pre>send a POST to the address http{s}://A/sub/B =
containing the URI of the<o:p></o:p></pre><pre>resource of interest =
(http{s}://A/resource) and the URI of =
B's<o:p></o:p></pre><pre>notification resource (http{s}://B/ntfy). =
Following this subscription<o:p></o:p></pre><pre>step, should A wish to =
notify B of a change to the resource addressed =
at<o:p></o:p></pre><pre>http{s}://A/resource, A would send a POST to the =
address<o:p></o:p></pre><pre>http{s}://B/ntfy containing the URI of the =
resource changed<o:p></o:p></pre><pre>(http{s}://A/resource) and the URI =
of A's subscription resource<o:p></o:p></pre><pre>(http{s}://A/sub/B), =
should A wish to change its subscription. The =
host<o:p></o:p></pre><pre>B can then query the resource (or not) at its =
leisure.&quot;<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Sleepy =
nodes are not allowed to subscribe, and must =
poll.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Regards - Charles =
Palmer<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>-----Original =
Message-----<o:p></o:p></pre><pre>From: <o:p></o:p></pre><pre><a
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a> [<a
href=3D"mailto:core-bounces@ietf.org">mailto:core-bounces@ietf.org</a><o:=
p></o:p></pre><pre>] On Behalf Of<o:p></o:p></pre><pre>Angelo P. =
Castellani<o:p></o:p></pre><pre>Sent: 14 May 2010 =
13:14<o:p></o:p></pre><pre>To: Zach Shelby<o:p></o:p></pre><pre>Cc: =
core<o:p></o:p></pre><pre>Subject: Re: [core] Selecting a WG document =
for =
CoAP<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Zach,<o:p></o:p></p=
re><pre><o:p>&nbsp;</o:p></pre><pre>thanks for the comments, but please =
refer to my most recent e-mail for<o:p></o:p></pre><pre>a more specific =
list of technical issues I'm pointing =
to.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I want to do only a =
little integration to what I've written =
there.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>In my very =
personal opinion, to maximize adherence with the REST =
model<o:p></o:p></pre><pre>and minimize implementation effort SUBSCRIBE =
and NOTIFY should be<o:p></o:p></pre><pre>mapped to methods (as =
discussed many times =
together...).<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Uniform =
interface principle (Fielding PhD dissertation Section =
5.1.5,<o:p></o:p></pre><pre>&quot;The central feature that distinguishes =
the REST architectural style<o:p></o:p></pre><pre>[...]&quot;) states =
that to simplify the software architecture, =
resource<o:p></o:p></pre><pre>interfaces/interfaces should be as general =
as possible.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I agree =
with this principle in this specific case, mainly =
because<o:p></o:p></pre><pre>handling a special message type for notify =
leads node software design<o:p></o:p></pre><pre>to a more complex =
architecture.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>The =
reason is that this new message type requires special handling =
and<o:p></o:p></pre><pre>introduces a complexity in the software =
modularization.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Best,<o:=
p></o:p></pre><pre>Angelo<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e>On Fri, May 14, 2010 at 13:06, Zach Shelby<o:p></o:p></pre><pre><a
href=3D"mailto:zach@sensinode.com">&lt;zach@sensinode.com&gt;</a><o:p></o=
:p></pre><pre> =
wrote:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p>=
</pre><pre>Hi =
Angelo,<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>On May 13, =
2010, at 14:24 , Angelo P. Castellani =
wrote:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p>=
</pre><pre><o:p>&nbsp;</o:p></pre><pre>Dear C. Bormann, =
all,<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>before deciding =
for the final direction, I've the =
following<o:p></o:p></pre><pre>observations about =
draft-shelby-core-coap-01<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e>While I mostly share Zach's view of the protocol approach, =
and<o:p></o:p></pre><pre>appreciate many aspects of the proposal, there =
are in my =
opinion<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p=
></pre><pre>still<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&=
nbsp;</o:p></pre><pre>some open issues that need to be at least =
discussed before =
the<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></p=
re><pre>current<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nb=
sp;</o:p></pre><pre>document can be =
selected.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o=
:p></pre><pre>Of course there are plenty of open issues. Remember that =
working =
group<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p><=
/pre><pre>documents still undertake as much change and improvement as =
the WG<o:p></o:p></pre><pre>wants, so by no means is coap-01 set in =
stone. I would expect at least<o:p></o:p></pre><pre>5-10 more revisions =
still along the way. Already several of your =
ideas<o:p></o:p></pre><pre>have been integrated into coap-01, and =
several more are under<o:p></o:p></pre><pre>consideration, so it is =
coming along. Patience =
;-)<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></p=
re><pre><o:p>&nbsp;</o:p></pre><pre>In particular, I would like to =
highlight the =
following:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>a) As it is =
now, it is not possible to have a =
straightforward<o:p></o:p></pre><pre>translation of HTTP -&gt; CoAP and =
viceversa: see<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"http://www.ietf.org/mail-archive/web/core/current/msg00133.html">=
http://www.ietf.org/mail-archive/web/core/current/msg00133.html</a><o:p><=
/o:p></pre><pre> (this<o:p></o:p></pre><pre>impacts the scalability of =
the web service model =
too)<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></=
pre><pre>In coap-01 the Method names are now identical to HTTP methods. =
The<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></p=
re><pre>Req/Res interaction is a direct translation. The URI hierarchy =
is<o:p></o:p></pre><pre>compatible, and the URI binary code format we =
are still working on<o:p></o:p></pre><pre>obviously. The only thing that =
takes some state to translate is<o:p></o:p></pre><pre>Subscribe/Notify. =
But note, Subscribe/Notify takes some state no =
matter<o:p></o:p></pre><pre>how you do it, even with HTTP-HTTP there is =
no clean and easy way to<o:p></o:p></pre><pre>handle =
subscriptions.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbs=
p;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>b) Moreover, CoAP's =
implementation is not as simple as it should =
be.<o:p></o:p></pre><pre>I've investigated the implementation and some =
design choices (as<o:p></o:p></pre><pre>Options) are leading to very =
high program complexity (ROM) on a<o:p></o:p></pre><pre>MSP430-based =
device.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p=
></pre><pre>This we can definitely improve, and already made several =
optimizations<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp=
;</o:p></pre><pre>from -00 to -01. Here I need some very concrete =
proposals though. Also<o:p></o:p></pre><pre>remember that many things =
are optional, for example subscribe/notify is<o:p></o:p></pre><pre>not =
required if you don't need =
it.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></p=
re><pre><o:p>&nbsp;</o:p></pre><pre>c) Finally when comparing HTTP =
message size with CoAP message size,<o:p></o:p></pre><pre>the resulting =
compression isn't as good as you may =
expect.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Example:<o:p></o=
:p></pre><pre>HTTP: GET /sensor/temp.xml HTTP/1.0 =3D 32 =
B<o:p></o:p></pre><pre>CoAP: 24 B with options parsing procedure =
requiring an added<o:p></o:p></pre><pre>implementation =
complexity<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</=
o:p></pre><pre>Right, that is not how it will work in practice. Working =
with a =
real<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></=
pre><pre>HTTP server that HTTP header will be more complex, and on the =
CoAP side<o:p></o:p></pre><pre>you would chose shorter URLs. The biggest =
improvement possible here is<o:p></o:p></pre><pre>from using binary =
coded URLs of course. We need to look at a wider =
range<o:p></o:p></pre><pre>of interactions and real HTTP headers as well =
to check that we are<o:p></o:p></pre><pre>efficient =
enough.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p=
></pre><pre><o:p>&nbsp;</o:p></pre><pre>Addressing all these points =
potentially leads to major technical<o:p></o:p></pre><pre>modifications =
(especially point a) on the current draft, hence it =
is<o:p></o:p></pre><pre>appropriate in my opinion to discuss these =
points before making the<o:p></o:p></pre><pre>final =
decision.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o=
:p></pre><pre>I am not sure what else you have in mind for a). If we =
just =
forget<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p>=
</pre><pre>about Subscribe/Notify then you are good to go. But then you =
are also<o:p></o:p></pre><pre>not fulfilling the charter or the industry =
needs in that =
respect.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:=
p></pre><pre>Thanks,<o:p></o:p></pre><pre>Zach<o:p></o:p></pre><pre><o:p>=
&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre=
><pre>Best =
regards,<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Angelo P. =
Castellani<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</=
o:p></pre><pre>On Mon, May 10, 2010 at 18:51, Carsten =
Bormann<o:p></o:p></pre><pre><a
href=3D"mailto:cabo@tzi.org">&lt;cabo@tzi.org&gt;</a><o:p></o:p></pre><pr=
e>wrote:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:=
p></pre><pre>The CORE WG has a milestone to select a WG document for =
CoAP =
in<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pr=
e><pre>April:<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp=
;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"http://datatracker.ietf.org/wg/core/charter/">http://datatracker.=
ietf.org/wg/core/charter/</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre=
><pre>...<o:p></o:p></pre><pre>Apr 2010 Select WG document for basis of =
the CoAP protocol<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Of =
the various documents that have been =
contributed,<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;=
</o:p></pre><pre>draft-shelby-core-coap has significant discussion, as =
well as the<o:p></o:p></pre><pre>largest number of updates (including a =
previous version that was still<o:p></o:p></pre><pre>called =
-6lowapp-coap).<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nb=
sp;</o:p></pre><pre>Today, another updated version of that draft was =
announced. See<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"http://www.ietf.org/mail-archive/web/core/current/msg00138.html">=
http://www.ietf.org/mail-archive/web/core/current/msg00138.html</a><o:p><=
/o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>for the announcement =
and<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"http://tools.ietf.org/html/draft-shelby-core-coap-01">http://tool=
s.ietf.org/html/draft-shelby-core-coap-01</a><o:p></o:p></pre><pre><o:p>&=
nbsp;</o:p></pre><pre>for the draft =
itself.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>However, as the =
authors say, there are still significant =
TODOs.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Are we in a =
state yet where we can say whether this is the =
right<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p><=
/pre><pre>direction for the WG to =
take?<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p><=
/pre><pre>If yes, is it the right direction? Should we adopt it as a =
WG<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pr=
e><pre>document?<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&n=
bsp;</o:p></pre><pre>If you don't think we can say yet, is there a set =
of =
technical<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o=
:p></pre><pre>decisions you would like the authors to take with =
priority?<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o=
:p></pre><pre>Note that once a document has become a WG document, the =
authors =
act<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></p=
re><pre>as editors for the working group, making (and usually fleshing =
out the<o:p></o:p></pre><pre>details of) any change that the WG decides =
it =
needs.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p>=
</pre><pre>If you think we can still improve the draft, this is not an =
obstacle<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:=
p></pre><pre>to making it a WG =
document.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o=
:p></pre><pre>But of course we shouldn't do that if we intend to reverse =
its<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></p=
re><pre>fundamental technical =
direction.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</=
o:p></pre><pre>In order to stay roughly in sync with our milestones, we =
should<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p>=
</pre><pre>reach at a decision on how to go forward this =
week.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p><=
/pre><pre>Gruesse, =
Carsten<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>________________=
_______________________________<o:p></o:p></pre><pre>core mailing =
list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:=
p></pre><pre>_______________________________________________<o:p></o:p></=
pre><pre>core mailing =
list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>--<o:p></o:p></=
pre><pre>Zach Shelby, Chief Nerd, Sensinode =
Ltd.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"http://zachshelby.org">http://zachshelby.org</a> - My blog =
&quot;On the Internet of Things<o:p></o:p></pre><pre><a
href=3D"http://6lowpan.net-Mybook">&quot;<o:p></o:p></a></pre><pre><span
class=3DMsoHyperlink><a =
href=3D"http://6lowpan.net-Mybook">http://6lowpan.net - My book =
&quot;</a></span><o:p></o:p></pre><pre>6LoWPAN: The Wireless Embedded =
Internet&quot;<o:p></o:p></pre><pre>Mobile: +358 40 =
7796297<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p=
></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>_____=
__________________________________________<o:p></o:p></pre><pre>core =
mailing list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e><o:p>&nbsp;</o:p></pre><pre>--------------------------------<o:p></o:p>=
</pre><pre>Onzo is a limited company number 06097997 registered in =
England&amp; Wales. The<o:p></o:p></pre><pre>registered office is 6 =
Great Newport Street, London, WC2H 7JB, United =
Kingdom.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>This email =
message may contain confidential and/or privileged information, =
and<o:p></o:p></pre><pre>is intended solely for the addressee(s). If you =
have received this email in<o:p></o:p></pre><pre>error, please notify =
Onzo immediately. Unauthorised copying, disclosure =
or<o:p></o:p></pre><pre>distribution of the material in this email is =
forbidden.<o:p></o:p></pre><pre>--------------------------------<o:p></o:=
p></pre><pre><o:p>&nbsp;</o:p></pre><pre>________________________________=
_______________<o:p></o:p></pre><pre>core mailing =
list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e><o:p>&nbsp;</o:p></pre><pre>___________________________________________=
___________________________<o:p></o:p></pre><pre>This email has been =
scanned by the MessageLabs Email Security =
System.<o:p></o:p></pre><pre>____________________________________________=
__________________________<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><p=
re>_______________________________________________<o:p></o:p></pre><pre>c=
ore mailing list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:=
p></pre><pre>_______________________________________________<o:p></o:p></=
pre><pre>core mailing =
list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e><o:p>&nbsp;</o:p></pre><pre>--------------------------------<o:p></o:p>=
</pre><pre>Onzo is a limited company number 06097997 registered in =
England&amp; Wales. The<o:p></o:p></pre><pre>registered office is 6 =
Great Newport Street, London, WC2H 7JB, United =
Kingdom.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>This email =
message may contain confidential and/or privileged information, =
and<o:p></o:p></pre><pre>is intended solely for the addressee(s). If you =
have received this email in<o:p></o:p></pre><pre>error, please notify =
Onzo immediately. Unauthorised copying, disclosure =
or<o:p></o:p></pre><pre>distribution of the material in this email is =
forbidden.<o:p></o:p></pre><pre>--------------------------------<o:p></o:=
p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p=
>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>_____________________=
__________________________<o:p></o:p></pre><pre>core mailing =
list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e>_______________________________________________<o:p></o:p></pre><pre>co=
re mailing list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:=
p></pre><pre>____________________________________________________________=
__________<o:p></o:p></pre><pre>This email has been scanned by the =
MessageLabs Email Security =
System.<o:p></o:p></pre><pre>____________________________________________=
_________________________________________________________________________=
<o:p></o:p></pre><pre>core mailing =
list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e><o:p>&nbsp;</o:p></pre><pre>___________________________________________=
____<o:p></o:p></pre><pre>core mailing =
list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e>=A0=A0=A0=A0=A0 =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0=A0=A0=A0=
=A0 <o:p></o:p></pre></blockquote>

<pre>--<o:p></o:p></pre><pre>Zach Shelby, Chief Nerd, Sensinode =
Ltd.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"http://zachshelby.org">http://zachshelby.org</a>=A0 - My blog =
&quot;On the Internet of Things<o:p></o:p></pre><pre><a
href=3D"http://6lowpan.net-Mybook">&quot;<o:p></o:p></a></pre><pre><span
class=3DMsoHyperlink><a =
href=3D"http://6lowpan.net-Mybook">http://6lowpan.net - My book =
&quot;</a></span><o:p></o:p></pre><pre>6LoWPAN: The Wireless Embedded =
Internet&quot;<o:p></o:p></pre><pre>Mobile: +358 40 =
7796297<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>________________=
_______________________________<o:p></o:p></pre><pre>core mailing =
list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0 =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0=A0=A0 =
<o:p></o:p></pre></blockquote>

<pre>_______________________________________________<o:p></o:p></pre><pre=
>core mailing list<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e><o:p>&nbsp;</o:p></pre><pre>=A0 =
<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>=A0=A0=A0=A0=A0 =
<o:p></o:p></pre></blockquote>

<pre><o:p>&nbsp;</o:p></pre><pre>________________________________________=
_______<o:p></o:p></pre><pre>core mailing list<o:p></o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pr=
e><o:p>&nbsp;</o:p></pre><pre>___________________________________________=
____<o:p></o:p></pre><pre>core mailing list<o:p></o:p></pre><pre><a
href=3D"mailto:core@ietf.org">core@ietf.org</a><o:p></o:p></pre><pre><a
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><o:p></o:p></pre><pre>=A0=A0=A0 =
<o:p></o:p></pre></blockquote>

<pre><o:p>&nbsp;</o:p></pre><pre>=A0 <o:p></o:p></pre></div>

</div>

</body>

</html>

------=_NextPart_000_0047_01CB064C.72EC48C0--

From angelo.castellani@gmail.com  Mon Jun  7 08:50:58 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id BF46E28C60F for <core@core3.amsl.com>; Mon,  7 Jun 2010 08:50:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.623
X-Spam-Level: 
X-Spam-Status: No, score=0.623 tagged_above=-999 required=5 tests=[FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FCjxfDodgmdH for <core@core3.amsl.com>; Mon,  7 Jun 2010 08:50:47 -0700 (PDT)
Received: from mail-gw0-f44.google.com (mail-gw0-f44.google.com [74.125.83.44]) by core3.amsl.com (Postfix) with ESMTP id 33DD83A6F43 for <core@ietf.org>; Mon,  7 Jun 2010 00:59:17 -0700 (PDT)
Received: by gwj21 with SMTP id 21so422938gwj.31 for <core@ietf.org>; Mon, 07 Jun 2010 00:59:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type; bh=ST+2zZR3BNLrRDGAtpTcl7s0OTWUf0xfkTalXwzVQ/U=; b=umBE0u8SqP7alnIhzV4ICzIBH7UDZuvwiS0RqxTLCI2OMoa8rUVDCyECZDiqlT3QGv +hPlNpiEzd/vy5OFK7jfO8uu0QL9P7HO067T7rpxYeYOh82DuJ+FInC8zJyQgVJEEgj5 k9bCp4Ku+qH8OotZEMPMOU+qNsd+D5m6vhV18=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; b=Vu9wmVjNGbN5AO17zn8+zOAFkygx9ZrtSAOpkA0vgZORvC53BJs2FmmPOk2kzUJW5G UMizgoOVuS/46l2o2O2pv3AX5eToREqGWlwXfM87QBF8rY7UdGmzLGI6teOTfWVbzPcB wICvEQX4csYwFktokU8xSO9eYdjRLqmSRFvkc=
MIME-Version: 1.0
Received: by 10.90.204.20 with SMTP id b20mr3661005agg.13.1275897554488; Mon,  07 Jun 2010 00:59:14 -0700 (PDT)
Sender: angelo.castellani@gmail.com
Received: by 10.90.54.12 with HTTP; Mon, 7 Jun 2010 00:59:14 -0700 (PDT)
In-Reply-To: <E2549175-1A08-4ED9-8B8D-A30DBA89CF01@cisco.com>
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com> <0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com> <E2549175-1A08-4ED9-8B8D-A30DBA89CF01@cisco.com>
Date: Mon, 7 Jun 2010 09:59:14 +0200
X-Google-Sender-Auth: BrJdqOG_vZQZbB_1IEQsOEovhsQ
Message-ID: <AANLkTilerORXUJQoXqpIHA3a0ZRhCVnegrChv-batP-D@mail.gmail.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
To: Cullen Jennings <fluffy@cisco.com>
Content-Type: multipart/alternative; boundary=00163630f09b81512804886c0c3d
Cc: core <core@ietf.org>
Subject: Re: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 15:50:58 -0000

--00163630f09b81512804886c0c3d
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

I agree with Adriano comments, and I really like the POST/DELETE (or GET?)
mapping of the subscriptions. We really need to define new HTTP verbs to
define a standard a subscription format?

What if we define the best HTTP-mapped subscription?

A solution can be, a SUBSCRIBE action is nothing more than a GET which
responses are repeated using some criterion (threshold, every N seconds,
etc.).

The trigger of the response, in my opinion, can be ranging a lot depending
upon the application, so could be inserted in the body of the request. A
possible version of the body format can be agreed, however it should be
extensible to fit particular cases.

ACK'ing the request or the responses is really transport dependant. If we
use TCP, ACKs are already there. If we use UDP, some ACK packet format can
be agreed to provide some level of reliability to UDP. etc.

*   Source                   Sink
     |           GET          |
     |<-----------------------+
     |                        |
     |           RES          |
     +----------------------->|
     |                        |
... Time Passes, something triggers in the Source ...
     |                        |
     |          RES           |
     +----------------------->|


* To realize this we can define some Options that will make that GET (or
POST?) request have the same meaning of a SUBSCRIBE (seems easier to define
new Options to make this eventually adopted by HTTP, or maybe there is some
Option already there we can overload in some way).

Repeats? Repeats-Every? Lifetime?

In this way we have easily the very initial value, and because the packet
format is the same for a standard response and for a NOTIFY its easier for =
a
CoAP/HTTP proxy to update its cached value.

Subscription can be updated/refreshed/deleted with the same message GET (or
POST?) message (delete -> Repeats=3Dfalse) and we can get in this way the
value on subscription deletion.

In this way I'm quite confident that node software architecture also can be
simpler, because a lot of code/procedures can be shared between GET and
SUBSCRIBE/NOTIFY with no particular effort.

Angelo
*
*On Fri, Jun 4, 2010 at 23:49, Cullen Jennings <fluffy@cisco.com> wrote:
>
> Great points - thanks.
>
> Just as a bit of other information for the WG, I'll try and describe how
SIP solved these problems. SIP has different design goals so what they did
is probably not appropriate for all of these but it is at least something t=
o
be aware of. My apologies to the SIP experts on the list that know this but
seems worth mentioning for folks that don't.
>
>
> On Jun 4, 2010, at 1:22 PM, Adriano Pezzuto (apezzuto) wrote:
>
>> my two cents
>>
>> a) how to cancel a subscription
>> [if sink node POST a new entry into the subscribers list on that
resource, then it can DELETE it]
>
> I can see how that works but looks like it might involve a few roundtrips=
.
What SIP does is it "refreshes" the subscriptions with an expiry time of
zero which causes it to instantly expire and go away. More of how the
refresh works down in point d.
>
>>
>> b) how to get the initial value of the subscription around the time you
subscribe
>> [the ACK  could be a response message containing the current value of th=
e
subscribed resource at time of subscription]
>
> I like the approach you are proposing. What SIP does is it sends a NOTIFY
as soon as the SUBcription happens. This was done due a variety of reasons
but a big part is SIP has some pretty significant problems with negotiating
size of responses. This would cause problems where the ACK ended up being
too large in SIP. I don't think we would have the problem in COAP so sendin=
g
it in the ACK might be better.
>
>>
>> c) what sort of filtering is available to limit the types of resource
changes that result in a NOTIFY
>> [it seems application specific; for example, you can define a sort of
trigger with thresholds and hysteresis to avoid bouncing]
>
> The SIP guys went round and round discussing a variety of increasingly
complicated generalized solutions which were never general enough to meet
all the use cases. Eventually  they came to the conclusion that it was
application specific.
>
>>
>> d) lifespan of subscription how to refresh a subscription
>> [sink and source nodes can agree on a subscription lifetime: sink can
refresh the subscription by sending a new SUB request]
>
> This is roughly what SIP does. The Sink proposes the max expiry time it
wants. The Source can make this smaller (but not larger) and returns the
"expiry time"  in the ACK. The Sink has to refresh the subscription before
the expiry time by sending a new SUB. I suspect this would wok well for
COAP.
>
>>
>> e) caching and interaction with sleeping device
>> [mmhh =85 no have cents for now. sorry]
>
> SIP has these, uh, I'm never going to manage to explain this in a
paragraph but if you are feeling masochistic you can go read RFC 2778, 3265=
,
3903, 4662, 4479, and 5839 as a starting point them move into the many RFCs
on the compression and optimization approaches. I'd suggest the full blow
SIP approach is probably a bit complex for constrained devices.
>
> I can easily imagine something where a COAP cache or caching proxy to HTT=
P
just subscribes to the resource. That way the cache is always up to date an=
d
when the cache receives a GET or SUBSCRIBE for the resource, it can just
respond with the correct data. The device that has the resource can sleep
and just update the cache any time the resource changes. To make a scheme
like this work really well it might be nice if a Source that received a SUB
could redirect the Sink to send the subscribe to a cache that the Source
knew was willing to cache the data. It also allows a cache that see a NOTIF=
Y
go by to update it data for that resource.
>
>
>>
>>
>> Adriano
>>
>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
Cullen Jennings (fluffy)
>> Sent: venerd=EC 4 giugno 2010 20.34
>> To: core
>> Subject: [core] SUB/NOT - the sea level view
>>
>>
>> Over the year I have had the pleasure of being in many conversations
about what a stateless protocol is, what REST is, HTTP, polling,
asynchronous notifications, web based RPC, and blowing soap bubbles.  Thoug=
h
interesting, I have a hard time concretely explaining it to anyone and the
oxygen always seems a bit thin at the 10,000 foot view. I do however have a
very easy time understanding a very low level view of the systems where
there are  some boxes and arrow diagrams of  message flow and roughly the
semantics of the data they cary. Let me try and draw my current
understanding of how this is going to work.
>>
>> We have two nodes - I will call them Source and Sink.
>>
>>
>>    Source         Sink
>>      |    SUB      |
>>      |<------------+
>>      |             |
>>      |    ACK      |
>>      +------------>|
>>      |             |
>>     ... Time Passes ...
>>      |             |
>>      |   NOTIF     |
>>      +------------>|
>>      |             |
>>      |   ACK       |
>>      |<------------+
>>      |             |
>>
>>
>> Sink starts by sending a message I will label "SUB" to the Source. The
SUB messages says which resource the Sink would like to be informed about
when the resource changes. The Source sends a OK or No there is a problem i=
n
some sort of ACK message to the SUB. Eventually the resource changes and
Source sends an message I called "NOTIFY" to the Sink. This tells the Sink
which resource changed and the current value of it.The Sink sends some sort
of acknowledgment. I find the terms client and server very confusing when
discussing SUB/NOT so I'm not using those terms.
>>
>> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, or
plain old polling, XMPP, SMTP, just about anything. As far as I can tell,
pretty much everything people have been proposing fit into this model.  So
first, I'd like to get an idea if people think I am in left field and there
is a very different message flow to consider. Second we need to figure out
some of the stuff I left out of the picture above such as
>>
>> a) how to cancel a subscription
>> [if sink node POST a new entry into the subscribers list on that
resource, then it can DELETE it]
>>
>> b) how to get the initial value of the subscription around the time you
subscribe
>> [the ACK  could be a response message containing the current value of th=
e
subscribed resource at time of subscription]
>>
>> c) what sort of filtering is available to limit the types of resource
changes that result in a NOTIFY
>> [it seems application specific; for example, you can define a sort of
trigger with thresholds and hysteresis to avoid bouncing]
>>
>> d) lifespan of subscription how to refresh a subscription
>> [it seems application specific; sink and source nodes can agree on a
subscription lifetime: sink can refresh the subscription by sending a new
SUB request]
>>
>> e) caching and interaction with sleeping device
>> [mmhh =85 no have cents for now. sorry]
>>
>>
>> We have to be clear on how this maps to HTTP and possibly other
protocols. One of the problems with HTTP is it has so many ways of doing
asynchronous notifications that it hard to decide what to map for. I would
be very conformable if we clearly new how to map it to HiBy and to direct
HTTP polling. It would be nice to have  back of the cocktail napkin belief
that it probably could be mapped to SMNP, XMPP, and the other HTTP
approaches. My guess is that the mapping to other protocols is going to tur=
n
out to be easy.
>>
>>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>

--00163630f09b81512804886c0c3d
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

I agree with Adriano comments, and I really like the POST/DELETE (or GET?) =
mapping of the subscriptions. We really need to define new HTTP verbs to de=
fine a standard a subscription format?<br><br>What if we define the best HT=
TP-mapped subscription?<br>
<br>A solution can be, a SUBSCRIBE action is nothing more than a GET which =
responses are repeated using some criterion (threshold, every N seconds, et=
c.).<br><br>The trigger of the response, in my opinion, can be ranging a lo=
t depending upon the application, so could be inserted in the body of the r=
equest. A possible version of the body format can be agreed, however it sho=
uld be extensible to fit particular cases.<br>
<br>ACK&#39;ing the request or the responses is really transport dependant.=
 If we use TCP, ACKs are already there. If we use UDP, some ACK packet form=
at can be agreed to provide some level of reliability to UDP. etc.<br><br>
 <b><span style=3D"font-size: 10.5pt; font-family: Courier;"><span>=A0=A0 S=
ource =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0
Sink =A0 =A0 =A0=A0</span><br>
<span>=A0=A0 =A0 | =A0=A0=A0=A0=A0=A0 =A0=A0 GET =A0 =A0 =A0
=A0=A0 | =A0 =A0 =A0 =A0=A0</span><br>
<span>=A0=A0 =A0 |&lt;-----------------------+ =A0
=A0 =A0 =A0=A0</span><br>
<span>=A0=A0 =A0 | =A0 =A0 =A0 =A0
=A0 =A0 =A0 =A0 =A0 =A0 =A0=A0 | =A0 =A0 =A0 =A0=A0</span><br>
<span>=A0=A0 =A0 |=A0=A0=A0 =A0 =A0 =A0=A0 RES =A0 =A0 =A0 =A0=A0 |=A0=A0 =
=A0 =A0 =A0=A0</span><br>
<span>=A0=A0 =A0 +-----------------------&gt;| =A0
=A0 =A0 =A0=A0</span><br>
<span>=A0=A0 =A0 | =A0 =A0 =A0 =A0
=A0 =A0 =A0 =A0 =A0 =A0=A0 =A0 | =A0 =A0 =A0=A0=A0 </span><span><br>... Tim=
e Passes, something triggers in the Source ... =A0
=A0 =A0 =A0=A0=A0</span><br>
<span>=A0=A0 =A0 | =A0 =A0 =A0 =A0
=A0 =A0 =A0 =A0 =A0 =A0 =A0=A0 | =A0 =A0 =A0 =A0=A0</span><br>
<span>=A0=A0 =A0 | =A0 =A0 =A0 =A0=A0 RES=A0 =A0 =A0 =A0 =A0=A0 |
=A0 =A0 =A0 =A0=A0</span><br>
<span>=A0=A0 =A0 +-----------------------&gt;|=A0=A0
=A0 =A0 =A0 =A0</span><br>
<span><br><br></span></span></b> To realize this we can define some Options=
 that will make that GET (or POST?) request have the same meaning of a SUBS=
CRIBE (seems easier to define new Options to make this eventually adopted b=
y HTTP, or maybe there is some Option already there we can overload in some=
 way).<br>
<br>Repeats? Repeats-Every? Lifetime?<br><br>In this way we have easily the=
 very initial value, and because the packet format is the same for a standa=
rd response and for a NOTIFY its easier for a CoAP/HTTP proxy to update its=
 cached value.<br>
<br>Subscription can be updated/refreshed/deleted with the same message GET=
 (or POST?) message (delete -&gt; Repeats=3Dfalse) and we can get in this w=
ay the value on subscription deletion.<br><br>In this way I&#39;m quite con=
fident that node software architecture also can be simpler, because a lot o=
f code/procedures can be shared between GET and SUBSCRIBE/NOTIFY with no pa=
rticular effort.<br>
<br>Angelo<br><b><span style=3D"font-size: 10.5pt; font-family: Courier;"><=
span><br></span></span></b>On Fri, Jun 4, 2010 at 23:49, Cullen Jennings &l=
t;<a href=3D"mailto:fluffy@cisco.com">fluffy@cisco.com</a>&gt; wrote:<br>&g=
t;<br>
&gt; Great points - thanks.<br>&gt;<br>&gt; Just as a bit of other informat=
ion for the WG, I&#39;ll try and describe how SIP solved these problems. SI=
P has different design goals so what they did is probably not appropriate f=
or all of these but it is at least something to be aware of. My apologies t=
o the SIP experts on the list that know this but seems worth mentioning for=
 folks that don&#39;t.<br>
&gt;<br>&gt;<br>&gt; On Jun 4, 2010, at 1:22 PM, Adriano Pezzuto (apezzuto)=
 wrote:<br>&gt;<br>&gt;&gt; my two cents<br>&gt;&gt;<br>&gt;&gt; a) how to =
cancel a subscription<br>&gt;&gt; [if sink node POST a new entry into the s=
ubscribers list on that resource, then it can DELETE it]<br>
&gt;<br>&gt; I can see how that works but looks like it might involve a few=
 roundtrips. What SIP does is it &quot;refreshes&quot; the subscriptions wi=
th an expiry time of zero which causes it to instantly expire and go away. =
More of how the refresh works down in point d.<br>
&gt;<br>&gt;&gt;<br>&gt;&gt; b) how to get the initial value of the subscri=
ption around the time you subscribe<br>&gt;&gt; [the ACK =A0could be a resp=
onse message containing the current value of the subscribed resource at tim=
e of subscription]<br>
&gt;<br>&gt; I like the approach you are proposing. What SIP does is it sen=
ds a NOTIFY as soon as the SUBcription happens. This was done due a variety=
 of reasons but a big part is SIP has some pretty significant problems with=
 negotiating size of responses. This would cause problems where the ACK end=
ed up being too large in SIP. I don&#39;t think we would have the problem i=
n COAP so sending it in the ACK might be better.<br>
&gt;<br>&gt;&gt;<br>&gt;&gt; c) what sort of filtering is available to limi=
t the types of resource changes that result in a NOTIFY<br>&gt;&gt; [it see=
ms application specific; for example, you can define a sort of trigger with=
 thresholds and hysteresis to avoid bouncing]<br>
&gt;<br>&gt; The SIP guys went round and round discussing a variety of incr=
easingly complicated generalized solutions which were never general enough =
to meet all the use cases. Eventually =A0they came to the conclusion that i=
t was application specific.<br>
&gt;<br>&gt;&gt;<br>&gt;&gt; d) lifespan of subscription how to refresh a s=
ubscription<br>&gt;&gt; [sink and source nodes can agree on a subscription =
lifetime: sink can refresh the subscription by sending a new SUB request]<b=
r>
&gt;<br>&gt; This is roughly what SIP does. The Sink proposes the max expir=
y time it wants. The Source can make this smaller (but not larger) and retu=
rns the &quot;expiry time&quot; =A0in the ACK. The Sink has to refresh the =
subscription before the expiry time by sending a new SUB. I suspect this wo=
uld wok well for COAP.<br>
&gt;<br>&gt;&gt;<br>&gt;&gt; e) caching and interaction with sleeping devic=
e<br>&gt;&gt; [mmhh =85 no have cents for now. sorry]<br>&gt;<br>&gt; SIP h=
as these, uh, I&#39;m never going to manage to explain this in a paragraph =
but if you are feeling masochistic you can go read RFC 2778, 3265, 3903, 46=
62, 4479, and 5839 as a starting point them move into the many RFCs on the =
compression and optimization approaches. I&#39;d suggest the full blow SIP =
approach is probably a bit complex for constrained devices.<br>
&gt;<br>&gt; I can easily imagine something where a COAP cache or caching p=
roxy to HTTP just subscribes to the resource. That way the cache is always =
up to date and when the cache receives a GET or SUBSCRIBE for the resource,=
 it can just respond with the correct data. The device that has the resourc=
e can sleep and just update the cache any time the resource changes. To mak=
e a scheme like this work really well it might be nice if a Source that rec=
eived a SUB could redirect the Sink to send the subscribe to a cache that t=
he Source knew was willing to cache the data. It also allows a cache that s=
ee a NOTIFY go by to update it data for that resource.<br>
&gt;<br>&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; Adriano<br>&gt;&gt;<br>&gt=
;&gt; From: <a href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org<=
/a> [mailto:<a href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org<=
/a>] On Behalf Of Cullen Jennings (fluffy)<br>
&gt;&gt; Sent: venerd=EC 4 giugno 2010 20.34<br>&gt;&gt; To: core<br>&gt;&g=
t; Subject: [core] SUB/NOT - the sea level view<br>&gt;&gt;<br>&gt;&gt;<br>=
&gt;&gt; Over the year I have had the pleasure of being in many conversatio=
ns about what a stateless protocol is, what REST is, HTTP, polling, asynchr=
onous notifications, web based RPC, and blowing soap bubbles. =A0Though int=
eresting, I have a hard time concretely explaining it to anyone and the oxy=
gen always seems a bit thin at the 10,000 foot view. I do however have a ve=
ry easy time understanding a very low level view of the systems where there=
 are =A0some boxes and arrow diagrams of =A0message flow and roughly the se=
mantics of the data they cary. Let me try and draw my current understanding=
 of how this is going to work.<br>
&gt;&gt;<br>&gt;&gt; We have two nodes - I will call them Source and Sink.<=
br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; =A0 =A0Source =A0 =A0 =A0 =A0 Sink<br>&=
gt;&gt; =A0 =A0 =A0| =A0 =A0SUB =A0 =A0 =A0|<br>&gt;&gt; =A0 =A0 =A0|&lt;--=
----------+<br>&gt;&gt; =A0 =A0 =A0| =A0 =A0 =A0 =A0 =A0 =A0 |<br>
&gt;&gt; =A0 =A0 =A0| =A0 =A0ACK =A0 =A0 =A0|<br>&gt;&gt; =A0 =A0 =A0+-----=
-------&gt;|<br>&gt;&gt; =A0 =A0 =A0| =A0 =A0 =A0 =A0 =A0 =A0 |<br>&gt;&gt;=
 =A0 =A0 ... Time Passes ...<br>&gt;&gt; =A0 =A0 =A0| =A0 =A0 =A0 =A0 =A0 =
=A0 |<br>&gt;&gt; =A0 =A0 =A0| =A0 NOTIF =A0 =A0 |<br>&gt;&gt; =A0 =A0 =A0+=
------------&gt;|<br>
&gt;&gt; =A0 =A0 =A0| =A0 =A0 =A0 =A0 =A0 =A0 |<br>&gt;&gt; =A0 =A0 =A0| =
=A0 ACK =A0 =A0 =A0 |<br>&gt;&gt; =A0 =A0 =A0|&lt;------------+<br>&gt;&gt;=
 =A0 =A0 =A0| =A0 =A0 =A0 =A0 =A0 =A0 |<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;=
 Sink starts by sending a message I will label &quot;SUB&quot; to the Sourc=
e. The SUB messages says which resource the Sink would like to be informed =
about when the resource changes. The Source sends a OK or No there is a pro=
blem in some sort of ACK message to the SUB. Eventually the resource change=
s and Source sends an message I called &quot;NOTIFY&quot; to the Sink. This=
 tells the Sink which resource changed and the current value of it.The Sink=
 sends some sort of acknowledgment. I find the terms client and server very=
 confusing when discussing SUB/NOT so I&#39;m not using those terms.<br>
&gt;&gt;<br>&gt;&gt; The Sink could be a HTTP proxy that mapped this to COM=
ET, WebSocket, or plain old polling, XMPP, SMTP, just about anything. As fa=
r as I can tell, pretty much everything people have been proposing fit into=
 this model. =A0So first, I&#39;d like to get an idea if people think I am =
in left field and there is a very different message flow to consider. Secon=
d we need to figure out some of the stuff I left out of the picture above s=
uch as<br>
&gt;&gt;<br>&gt;&gt; a) how to cancel a subscription<br>&gt;&gt; [if sink n=
ode POST a new entry into the subscribers list on that resource, then it ca=
n DELETE it]<br>&gt;&gt;<br>&gt;&gt; b) how to get the initial value of the=
 subscription around the time you subscribe<br>
&gt;&gt; [the ACK =A0could be a response message containing the current val=
ue of the subscribed resource at time of subscription]<br>&gt;&gt;<br>&gt;&=
gt; c) what sort of filtering is available to limit the types of resource c=
hanges that result in a NOTIFY<br>
&gt;&gt; [it seems application specific; for example, you can define a sort=
 of trigger with thresholds and hysteresis to avoid bouncing]<br>&gt;&gt;<b=
r>&gt;&gt; d) lifespan of subscription how to refresh a subscription<br>
&gt;&gt; [it seems application specific; sink and source nodes can agree on=
 a subscription lifetime: sink can refresh the subscription by sending a ne=
w SUB request]<br>&gt;&gt;<br>&gt;&gt; e) caching and interaction with slee=
ping device<br>
&gt;&gt; [mmhh =85 no have cents for now. sorry]<br>&gt;&gt;<br>&gt;&gt;<br=
>&gt;&gt; We have to be clear on how this maps to HTTP and possibly other p=
rotocols. One of the problems with HTTP is it has so many ways of doing asy=
nchronous notifications that it hard to decide what to map for. I would be =
very conformable if we clearly new how to map it to HiBy and to direct HTTP=
 polling. It would be nice to have =A0back of the cocktail napkin belief th=
at it probably could be mapped to SMNP, XMPP, and the other HTTP approaches=
. My guess is that the mapping to other protocols is going to turn out to b=
e easy.<br>
&gt;&gt;<br>&gt;&gt;<br>&gt; ______________________________________________=
_<br>&gt; core mailing list<br>&gt; <a href=3D"mailto:core@ietf.org">core@i=
etf.org</a><br>&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/core">=
https://www.ietf.org/mailman/listinfo/core</a><br>
&gt;<br><br>

--00163630f09b81512804886c0c3d--

From apezzuto@cisco.com  Mon Jun  7 09:43:30 2010
Return-Path: <apezzuto@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1FBB73A6C3A for <core@core3.amsl.com>; Mon,  7 Jun 2010 09:43:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.998
X-Spam-Level: 
X-Spam-Status: No, score=-7.998 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GTnoG5DICptz for <core@core3.amsl.com>; Mon,  7 Jun 2010 09:43:16 -0700 (PDT)
Received: from sj-iport-6.cisco.com (sj-iport-6.cisco.com [171.71.176.117]) by core3.amsl.com (Postfix) with ESMTP id 3DB213A710D for <core@ietf.org>; Mon,  7 Jun 2010 01:30:15 -0700 (PDT)
Authentication-Results: sj-iport-6.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AjEFAKtKDEyrR7H+/2dsb2JhbACBQ5x+caQ9mTKFFwQ
X-IronPort-AV: E=Sophos;i="4.53,377,1272844800";  d="scan'208,217";a="540917868"
Received: from sj-core-2.cisco.com ([171.71.177.254]) by sj-iport-6.cisco.com with ESMTP; 07 Jun 2010 08:30:15 +0000
Received: from xbh-ams-101.cisco.com (xbh-ams-101.cisco.com [144.254.74.71]) by sj-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o578U3A3021400; Mon, 7 Jun 2010 08:30:15 GMT
Received: from xmb-ams-106.cisco.com ([144.254.74.81]) by xbh-ams-101.cisco.com with Microsoft SMTPSVC(6.0.3790.3959);  Mon, 7 Jun 2010 10:30:12 +0200
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01CB061B.A57535E0"
Date: Mon, 7 Jun 2010 10:30:11 +0200
Message-ID: <0D212BD466921646B58854FB79092CEC0232F78F@XMB-AMS-106.cisco.com>
In-Reply-To: <AANLkTilerORXUJQoXqpIHA3a0ZRhCVnegrChv-batP-D@mail.gmail.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] SUB/NOT - the sea level view
Thread-Index: AcsGF2Euvo7virvvRG6ZTiExIZS6TAAAayMQ
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com><0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com><E2549175-1A08-4ED9-8B8D-A30DBA89CF01@cisco.com> <AANLkTilerORXUJQoXqpIHA3a0ZRhCVnegrChv-batP-D@mail.gmail.com>
From: "Adriano Pezzuto (apezzuto)" <apezzuto@cisco.com>
To: "Angelo P. Castellani" <angelo@castellani.net>, "Cullen Jennings (fluffy)" <fluffy@cisco.com>
X-OriginalArrivalTime: 07 Jun 2010 08:30:12.0557 (UTC) FILETIME=[A5CA3FD0:01CB061B]
Cc: core <core@ietf.org>
Subject: Re: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 16:43:30 -0000

This is a multi-part message in MIME format.

------_=_NextPart_001_01CB061B.A57535E0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi

not sure to understand but it sounds as an interesting way to see =
things. Multiple response messages to the same initial GET request =
message?

The initial GET request acts as subscription request to a certain =
resource. The first response message returns the value of the resource =
at time of subscription and subsequent responses act as notification =
messages about resource changes in the time.

=20

Questions:

=20

how to keep track of initial GET request and subsequent responses? using =
a sort of transaction id shared among request and responses messages?

how to fit with REST requirements? safety/idempotency?

how to distinguish this by a classic GET request/response transaction =
(one request followed by only one response)?

how to realize spontaneous notifications, i.e. notifications no =
triggered by a subscription?=20

=20

Adriano

=20

From: angelo.castellani@gmail.com [mailto:angelo.castellani@gmail.com] =
On Behalf Of Angelo P. Castellani
Sent: luned=EC 7 giugno 2010 9.59
To: Cullen Jennings (fluffy)
Cc: Adriano Pezzuto (apezzuto); core
Subject: Re: [core] SUB/NOT - the sea level view

=20

I agree with Adriano comments, and I really like the POST/DELETE (or =
GET?) mapping of the subscriptions. We really need to define new HTTP =
verbs to define a standard a subscription format?

What if we define the best HTTP-mapped subscription?

A solution can be, a SUBSCRIBE action is nothing more than a GET which =
responses are repeated using some criterion (threshold, every N seconds, =
etc.).

The trigger of the response, in my opinion, can be ranging a lot =
depending upon the application, so could be inserted in the body of the =
request. A possible version of the body format can be agreed, however it =
should be extensible to fit particular cases.

ACK'ing the request or the responses is really transport dependant. If =
we use TCP, ACKs are already there. If we use UDP, some ACK packet =
format can be agreed to provide some level of reliability to UDP. etc.

   Source                   Sink      =20
     |           GET          |        =20
     |<-----------------------+        =20
     |                        |        =20
     |           RES          |        =20
     +----------------------->|        =20
     |                        |        =20
... Time Passes, something triggers in the Source ...         =20
     |                        |        =20
     |          RES           |        =20
     +----------------------->|         =20


To realize this we can define some Options that will make that GET (or =
POST?) request have the same meaning of a SUBSCRIBE (seems easier to =
define new Options to make this eventually adopted by HTTP, or maybe =
there is some Option already there we can overload in some way).

Repeats? Repeats-Every? Lifetime?

In this way we have easily the very initial value, and because the =
packet format is the same for a standard response and for a NOTIFY its =
easier for a CoAP/HTTP proxy to update its cached value.

Subscription can be updated/refreshed/deleted with the same message GET =
(or POST?) message (delete -> Repeats=3Dfalse) and we can get in this =
way the value on subscription deletion.

In this way I'm quite confident that node software architecture also can =
be simpler, because a lot of code/procedures can be shared between GET =
and SUBSCRIBE/NOTIFY with no particular effort.

Angelo

On Fri, Jun 4, 2010 at 23:49, Cullen Jennings <fluffy@cisco.com> wrote:
>
> Great points - thanks.
>
> Just as a bit of other information for the WG, I'll try and describe =
how SIP solved these problems. SIP has different design goals so what =
they did is probably not appropriate for all of these but it is at least =
something to be aware of. My apologies to the SIP experts on the list =
that know this but seems worth mentioning for folks that don't.
>
>
> On Jun 4, 2010, at 1:22 PM, Adriano Pezzuto (apezzuto) wrote:
>
>> my two cents
>>
>> a) how to cancel a subscription
>> [if sink node POST a new entry into the subscribers list on that =
resource, then it can DELETE it]
>
> I can see how that works but looks like it might involve a few =
roundtrips. What SIP does is it "refreshes" the subscriptions with an =
expiry time of zero which causes it to instantly expire and go away. =
More of how the refresh works down in point d.
>
>>
>> b) how to get the initial value of the subscription around the time =
you subscribe
>> [the ACK  could be a response message containing the current value of =
the subscribed resource at time of subscription]
>
> I like the approach you are proposing. What SIP does is it sends a =
NOTIFY as soon as the SUBcription happens. This was done due a variety =
of reasons but a big part is SIP has some pretty significant problems =
with negotiating size of responses. This would cause problems where the =
ACK ended up being too large in SIP. I don't think we would have the =
problem in COAP so sending it in the ACK might be better.
>
>>
>> c) what sort of filtering is available to limit the types of resource =
changes that result in a NOTIFY
>> [it seems application specific; for example, you can define a sort of =
trigger with thresholds and hysteresis to avoid bouncing]
>
> The SIP guys went round and round discussing a variety of increasingly =
complicated generalized solutions which were never general enough to =
meet all the use cases. Eventually  they came to the conclusion that it =
was application specific.
>
>>
>> d) lifespan of subscription how to refresh a subscription
>> [sink and source nodes can agree on a subscription lifetime: sink can =
refresh the subscription by sending a new SUB request]
>
> This is roughly what SIP does. The Sink proposes the max expiry time =
it wants. The Source can make this smaller (but not larger) and returns =
the "expiry time"  in the ACK. The Sink has to refresh the subscription =
before the expiry time by sending a new SUB. I suspect this would wok =
well for COAP.
>
>>
>> e) caching and interaction with sleeping device
>> [mmhh ... no have cents for now. sorry]
>
> SIP has these, uh, I'm never going to manage to explain this in a =
paragraph but if you are feeling masochistic you can go read RFC 2778, =
3265, 3903, 4662, 4479, and 5839 as a starting point them move into the =
many RFCs on the compression and optimization approaches. I'd suggest =
the full blow SIP approach is probably a bit complex for constrained =
devices.
>
> I can easily imagine something where a COAP cache or caching proxy to =
HTTP just subscribes to the resource. That way the cache is always up to =
date and when the cache receives a GET or SUBSCRIBE for the resource, it =
can just respond with the correct data. The device that has the resource =
can sleep and just update the cache any time the resource changes. To =
make a scheme like this work really well it might be nice if a Source =
that received a SUB could redirect the Sink to send the subscribe to a =
cache that the Source knew was willing to cache the data. It also allows =
a cache that see a NOTIFY go by to update it data for that resource.
>
>
>>
>>
>> Adriano
>>
>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf =
Of Cullen Jennings (fluffy)
>> Sent: venerd=EC 4 giugno 2010 20.34
>> To: core
>> Subject: [core] SUB/NOT - the sea level view
>>
>>
>> Over the year I have had the pleasure of being in many conversations =
about what a stateless protocol is, what REST is, HTTP, polling, =
asynchronous notifications, web based RPC, and blowing soap bubbles.  =
Though interesting, I have a hard time concretely explaining it to =
anyone and the oxygen always seems a bit thin at the 10,000 foot view. I =
do however have a very easy time understanding a very low level view of =
the systems where there are  some boxes and arrow diagrams of  message =
flow and roughly the semantics of the data they cary. Let me try and =
draw my current understanding of how this is going to work.
>>
>> We have two nodes - I will call them Source and Sink.
>>
>>
>>    Source         Sink
>>      |    SUB      |
>>      |<------------+
>>      |             |
>>      |    ACK      |
>>      +------------>|
>>      |             |
>>     ... Time Passes ...
>>      |             |
>>      |   NOTIF     |
>>      +------------>|
>>      |             |
>>      |   ACK       |
>>      |<------------+
>>      |             |
>>
>>
>> Sink starts by sending a message I will label "SUB" to the Source. =
The SUB messages says which resource the Sink would like to be informed =
about when the resource changes. The Source sends a OK or No there is a =
problem in some sort of ACK message to the SUB. Eventually the resource =
changes and Source sends an message I called "NOTIFY" to the Sink. This =
tells the Sink which resource changed and the current value of it.The =
Sink sends some sort of acknowledgment. I find the terms client and =
server very confusing when discussing SUB/NOT so I'm not using those =
terms.
>>
>> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, =
or plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell, pretty much everything people have been proposing fit into this =
model.  So first, I'd like to get an idea if people think I am in left =
field and there is a very different message flow to consider. Second we =
need to figure out some of the stuff I left out of the picture above =
such as
>>
>> a) how to cancel a subscription
>> [if sink node POST a new entry into the subscribers list on that =
resource, then it can DELETE it]
>>
>> b) how to get the initial value of the subscription around the time =
you subscribe
>> [the ACK  could be a response message containing the current value of =
the subscribed resource at time of subscription]
>>
>> c) what sort of filtering is available to limit the types of resource =
changes that result in a NOTIFY
>> [it seems application specific; for example, you can define a sort of =
trigger with thresholds and hysteresis to avoid bouncing]
>>
>> d) lifespan of subscription how to refresh a subscription
>> [it seems application specific; sink and source nodes can agree on a =
subscription lifetime: sink can refresh the subscription by sending a =
new SUB request]
>>
>> e) caching and interaction with sleeping device
>> [mmhh ... no have cents for now. sorry]
>>
>>
>> We have to be clear on how this maps to HTTP and possibly other =
protocols. One of the problems with HTTP is it has so many ways of doing =
asynchronous notifications that it hard to decide what to map for. I =
would be very conformable if we clearly new how to map it to HiBy and to =
direct HTTP polling. It would be nice to have  back of the cocktail =
napkin belief that it probably could be mapped to SMNP, XMPP, and the =
other HTTP approaches. My guess is that the mapping to other protocols =
is going to turn out to be easy.
>>
>>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>


------_=_NextPart_001_01CB061B.A57535E0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<meta name=3DGenerator content=3D"Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Courier;
	panose-1:2 7 4 9 2 2 5 2 4 4;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 2.0cm 2.0cm 2.0cm;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'>Hi<o:p></o:p><=
/span></p>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'>not
sure to understand but it sounds as an interesting way to see things. =
Multiple
response messages to the same initial GET request =
message?<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'>The
initial GET request acts as subscription request to a certain resource. =
The
first response message returns the value of the resource at time of
subscription and subsequent responses act as notification messages about
resource changes in the time.<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o=
:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'>Questions:<o:p=
></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o=
:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'>how
to keep track of initial GET request and subsequent responses? using a =
sort of
transaction id shared among request and responses =
messages?<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'>how
to fit with REST requirements? safety/idempotency?<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'>how
to distinguish this by a classic GET request/response transaction (one =
request
followed by only one response)?<o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'>how
to realize spontaneous notifications, i.e. notifications no triggered by =
a
subscription? <o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o=
:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-family:"Calibri","sans-serif";color:#1F497D'>Adriano<o:p></=
o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt =
0cm 0cm 0cm'>

<p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span>=
</b><span
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
angelo.castellani@gmail.com [mailto:angelo.castellani@gmail.com] <b>On =
Behalf
Of </b>Angelo P. Castellani<br>
<b>Sent:</b> luned=EC 7 giugno 2010 9.59<br>
<b>To:</b> Cullen Jennings (fluffy)<br>
<b>Cc:</b> Adriano Pezzuto (apezzuto); core<br>
<b>Subject:</b> Re: [core] SUB/NOT - the sea level =
view<o:p></o:p></span></p>

</div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

<p class=3DMsoNormal style=3D'margin-bottom:12.0pt'>I agree with Adriano =
comments,
and I really like the POST/DELETE (or GET?) mapping of the =
subscriptions. We
really need to define new HTTP verbs to define a standard a subscription
format?<br>
<br>
What if we define the best HTTP-mapped subscription?<br>
<br>
A solution can be, a SUBSCRIBE action is nothing more than a GET which
responses are repeated using some criterion (threshold, every N seconds, =
etc.).<br>
<br>
The trigger of the response, in my opinion, can be ranging a lot =
depending upon
the application, so could be inserted in the body of the request. A =
possible
version of the body format can be agreed, however it should be =
extensible to
fit particular cases.<br>
<br>
ACK'ing the request or the responses is really transport dependant. If =
we use
TCP, ACKs are already there. If we use UDP, some ACK packet format can =
be
agreed to provide some level of reliability to UDP. etc.<br>
<br>
<b><span style=3D'font-size:10.5pt;font-family:Courier'>&nbsp;&nbsp; =
Source
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Sink =
&nbsp;
&nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; =
GET
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; |&lt;-----------------------+ &nbsp; &nbsp; &nbsp;
&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; |&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; RES =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp; |&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; +-----------------------&gt;| &nbsp; &nbsp; &nbsp;
&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; <br>
... Time Passes, something triggers in the Source ... &nbsp; &nbsp; =
&nbsp;
&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; RES&nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; +-----------------------&gt;|&nbsp;&nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp;<br>
<br>
<br>
</span></b>To realize this we can define some Options that will make =
that GET
(or POST?) request have the same meaning of a SUBSCRIBE (seems easier to =
define
new Options to make this eventually adopted by HTTP, or maybe there is =
some
Option already there we can overload in some way).<br>
<br>
Repeats? Repeats-Every? Lifetime?<br>
<br>
In this way we have easily the very initial value, and because the =
packet
format is the same for a standard response and for a NOTIFY its easier =
for a
CoAP/HTTP proxy to update its cached value.<br>
<br>
Subscription can be updated/refreshed/deleted with the same message GET =
(or
POST?) message (delete -&gt; Repeats=3Dfalse) and we can get in this way =
the
value on subscription deletion.<br>
<br>
In this way I'm quite confident that node software architecture also can =
be
simpler, because a lot of code/procedures can be shared between GET and
SUBSCRIBE/NOTIFY with no particular effort.<br>
<br>
Angelo<br>
<b><span style=3D'font-size:10.5pt;font-family:Courier'><br>
</span></b>On Fri, Jun 4, 2010 at 23:49, Cullen Jennings &lt;<a
href=3D"mailto:fluffy@cisco.com">fluffy@cisco.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Great points - thanks.<br>
&gt;<br>
&gt; Just as a bit of other information for the WG, I'll try and =
describe how
SIP solved these problems. SIP has different design goals so what they =
did is
probably not appropriate for all of these but it is at least something =
to be
aware of. My apologies to the SIP experts on the list that know this but =
seems
worth mentioning for folks that don't.<br>
&gt;<br>
&gt;<br>
&gt; On Jun 4, 2010, at 1:22 PM, Adriano Pezzuto (apezzuto) wrote:<br>
&gt;<br>
&gt;&gt; my two cents<br>
&gt;&gt;<br>
&gt;&gt; a) how to cancel a subscription<br>
&gt;&gt; [if sink node POST a new entry into the subscribers list on =
that
resource, then it can DELETE it]<br>
&gt;<br>
&gt; I can see how that works but looks like it might involve a few =
roundtrips.
What SIP does is it &quot;refreshes&quot; the subscriptions with an =
expiry time
of zero which causes it to instantly expire and go away. More of how the
refresh works down in point d.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; b) how to get the initial value of the subscription around the =
time
you subscribe<br>
&gt;&gt; [the ACK &nbsp;could be a response message containing the =
current
value of the subscribed resource at time of subscription]<br>
&gt;<br>
&gt; I like the approach you are proposing. What SIP does is it sends a =
NOTIFY
as soon as the SUBcription happens. This was done due a variety of =
reasons but
a big part is SIP has some pretty significant problems with negotiating =
size of
responses. This would cause problems where the ACK ended up being too =
large in
SIP. I don't think we would have the problem in COAP so sending it in =
the ACK
might be better.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; c) what sort of filtering is available to limit the types of =
resource
changes that result in a NOTIFY<br>
&gt;&gt; [it seems application specific; for example, you can define a =
sort of
trigger with thresholds and hysteresis to avoid bouncing]<br>
&gt;<br>
&gt; The SIP guys went round and round discussing a variety of =
increasingly
complicated generalized solutions which were never general enough to =
meet all
the use cases. Eventually &nbsp;they came to the conclusion that it was
application specific.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; d) lifespan of subscription how to refresh a subscription<br>
&gt;&gt; [sink and source nodes can agree on a subscription lifetime: =
sink can
refresh the subscription by sending a new SUB request]<br>
&gt;<br>
&gt; This is roughly what SIP does. The Sink proposes the max expiry =
time it
wants. The Source can make this smaller (but not larger) and returns the
&quot;expiry time&quot; &nbsp;in the ACK. The Sink has to refresh the
subscription before the expiry time by sending a new SUB. I suspect this =
would
wok well for COAP.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; e) caching and interaction with sleeping device<br>
&gt;&gt; [mmhh &#8230; no have cents for now. sorry]<br>
&gt;<br>
&gt; SIP has these, uh, I'm never going to manage to explain this in a
paragraph but if you are feeling masochistic you can go read RFC 2778, =
3265,
3903, 4662, 4479, and 5839 as a starting point them move into the many =
RFCs on
the compression and optimization approaches. I'd suggest the full blow =
SIP
approach is probably a bit complex for constrained devices.<br>
&gt;<br>
&gt; I can easily imagine something where a COAP cache or caching proxy =
to HTTP
just subscribes to the resource. That way the cache is always up to date =
and
when the cache receives a GET or SUBSCRIBE for the resource, it can just
respond with the correct data. The device that has the resource can =
sleep and
just update the cache any time the resource changes. To make a scheme =
like this
work really well it might be nice if a Source that received a SUB could
redirect the Sink to send the subscribe to a cache that the Source knew =
was
willing to cache the data. It also allows a cache that see a NOTIFY go =
by to
update it data for that resource.<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Adriano<br>
&gt;&gt;<br>
&gt;&gt; From: <a =
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a>
[mailto:<a =
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a>] On
Behalf Of Cullen Jennings (fluffy)<br>
&gt;&gt; Sent: venerd=EC 4 giugno 2010 20.34<br>
&gt;&gt; To: core<br>
&gt;&gt; Subject: [core] SUB/NOT - the sea level view<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Over the year I have had the pleasure of being in many =
conversations
about what a stateless protocol is, what REST is, HTTP, polling, =
asynchronous
notifications, web based RPC, and blowing soap bubbles. &nbsp;Though
interesting, I have a hard time concretely explaining it to anyone and =
the
oxygen always seems a bit thin at the 10,000 foot view. I do however =
have a
very easy time understanding a very low level view of the systems where =
there
are &nbsp;some boxes and arrow diagrams of &nbsp;message flow and =
roughly the
semantics of the data they cary. Let me try and draw my current =
understanding
of how this is going to work.<br>
&gt;&gt;<br>
&gt;&gt; We have two nodes - I will call them Source and Sink.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &nbsp; &nbsp;Source &nbsp; &nbsp; &nbsp; &nbsp; Sink<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp;SUB &nbsp; &nbsp; =
&nbsp;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;|&lt;------------+<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp;ACK &nbsp; &nbsp; =
&nbsp;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;+------------&gt;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; ... Time Passes ...<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; NOTIF &nbsp; &nbsp; |<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;+------------&gt;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; ACK &nbsp; &nbsp; &nbsp; |<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;|&lt;------------+<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Sink starts by sending a message I will label &quot;SUB&quot; =
to the
Source. The SUB messages says which resource the Sink would like to be =
informed
about when the resource changes. The Source sends a OK or No there is a =
problem
in some sort of ACK message to the SUB. Eventually the resource changes =
and
Source sends an message I called &quot;NOTIFY&quot; to the Sink. This =
tells the
Sink which resource changed and the current value of it.The Sink sends =
some
sort of acknowledgment. I find the terms client and server very =
confusing when
discussing SUB/NOT so I'm not using those terms.<br>
&gt;&gt;<br>
&gt;&gt; The Sink could be a HTTP proxy that mapped this to COMET, =
WebSocket,
or plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell,
pretty much everything people have been proposing fit into this model. =
&nbsp;So
first, I'd like to get an idea if people think I am in left field and =
there is
a very different message flow to consider. Second we need to figure out =
some of
the stuff I left out of the picture above such as<br>
&gt;&gt;<br>
&gt;&gt; a) how to cancel a subscription<br>
&gt;&gt; [if sink node POST a new entry into the subscribers list on =
that
resource, then it can DELETE it]<br>
&gt;&gt;<br>
&gt;&gt; b) how to get the initial value of the subscription around the =
time
you subscribe<br>
&gt;&gt; [the ACK &nbsp;could be a response message containing the =
current
value of the subscribed resource at time of subscription]<br>
&gt;&gt;<br>
&gt;&gt; c) what sort of filtering is available to limit the types of =
resource
changes that result in a NOTIFY<br>
&gt;&gt; [it seems application specific; for example, you can define a =
sort of
trigger with thresholds and hysteresis to avoid bouncing]<br>
&gt;&gt;<br>
&gt;&gt; d) lifespan of subscription how to refresh a subscription<br>
&gt;&gt; [it seems application specific; sink and source nodes can agree =
on a
subscription lifetime: sink can refresh the subscription by sending a =
new SUB
request]<br>
&gt;&gt;<br>
&gt;&gt; e) caching and interaction with sleeping device<br>
&gt;&gt; [mmhh &#8230; no have cents for now. sorry]<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; We have to be clear on how this maps to HTTP and possibly other
protocols. One of the problems with HTTP is it has so many ways of doing
asynchronous notifications that it hard to decide what to map for. I =
would be
very conformable if we clearly new how to map it to HiBy and to direct =
HTTP
polling. It would be nice to have &nbsp;back of the cocktail napkin =
belief that
it probably could be mapped to SMNP, XMPP, and the other HTTP =
approaches. My
guess is that the mapping to other protocols is going to turn out to be =
easy.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; core mailing list<br>
&gt; <a href=3D"mailto:core@ietf.org">core@ietf.org</a><br>
&gt; <a =
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><br>
&gt;<o:p></o:p></p>

</div>

</body>

</html>

------_=_NextPart_001_01CB061B.A57535E0--

From zach@sensinode.com  Mon Jun  7 10:20:24 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9E8123A6989 for <core@core3.amsl.com>; Mon,  7 Jun 2010 10:20:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.999
X-Spam-Level: 
X-Spam-Status: No, score=-0.999 tagged_above=-999 required=5 tests=[BAYES_50=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BXYzP6MsmqlA for <core@core3.amsl.com>; Mon,  7 Jun 2010 10:20:23 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 9347728C4BE for <core@ietf.org>; Mon,  7 Jun 2010 08:45:26 -0700 (PDT)
Received: from [62.145.172.52] ([62.145.172.52]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o57F03Q9003299 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO) for <core@ietf.org>; Mon, 7 Jun 2010 18:00:04 +0300
From: Zach Shelby <zach@sensinode.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Date: Mon, 7 Jun 2010 18:00:05 +0300
References: <20100607145200.988943A69B1@core3.amsl.com>
To: core <core@ietf.org>
Message-Id: <4DCE9944-2826-4360-AD52-ACA80695A793@sensinode.com>
Mime-Version: 1.0 (Apple Message framework v1078)
X-Mailer: Apple Mail (2.1078)
Subject: [core] Fwd: New Version Notification for draft-ietf-core-coap-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 17:20:24 -0000

Hi,

http://www.ietf.org/id/draft-ietf-core-coap-00.txt

A new version of the (now working group) document for CoAP has been =
posted (note it became -00 again as it now has a draft-ietf name). We =
integrated a bunch of editorial comments, removed the TCP binding, =
removed the Magic Byte header and Uri-Code for now, and marked the =
Sub/Notify feature as Experimental while we are discussing the new =
design in the WG. Managed to make a doc a couple pages shorter ;-) Next =
step is to make WG trac tickets for all the open issues and TODOs, these =
we should plan to close by the next release of the doc planned for the =
end of June.=20

   Changes from shelby-01 to ietf-00:

      o Removed the TCP binding section, left open for the future.

      o Fixed a bug in the example.

      o Marked current Sub/Notify as (Experimental) while under WG
      discussion.

      o Temporarily removed the Magic Byte header as TCP is no longer
      included as a binding.

      o Removed the Uri-code Option as different URI encoding schemes
      are being discussed.

      o Changed the rel=3D field to desc=3D for resource discovery.

      o Changed the maximum message size to 1024 bytes to allow for IP/
      UDP headers.

      o Made the URI slash optimization and method impotence MUSTs

      o Minor editing and bug fixing.
 =20

Begin forwarded message:

> From: IETF I-D Submission Tool <idsubmission@ietf.org>
> Date: June 7, 2010 5:52:00 PM GMT+03:00
> To: zach@sensinode.com
> Cc: brian@skyfoundry.com,d.sturek@att.net
> Subject: New Version Notification for draft-ietf-core-coap-00=20
>=20
>=20
> A new version of I-D, draft-ietf-core-coap-00.txt has been =
successfully submitted by Zach Shelby and posted to the IETF repository.
>=20
> Filename:	 draft-ietf-core-coap
> Revision:	 00
> Title:		 Constrained Application Protocol (CoAP)
> Creation_date:	 2010-06-07
> WG ID:		 core
> Number_of_pages: 30
>=20
> Abstract:
> This document specifies the Constrained Application Protocol (CoAP),
> a specialized transfer protocol for use with constrained networks and
> nodes for machine-to-machine applications such as smart energy and
> building automation.  These constrained nodes often have 8-bit
> microcontrollers with small amounts of ROM and RAM, while networks
> such as 6LoWPAN often have high packet error rates and typical
> throughput of 10s of kbit/s.  CoAP provides request/reply and
> subscribe/notify interaction models between application end-points,
> supports built-in resource discovery, and includes key web concepts
> such as URIs and RESTful methods.  CoAP easily translates to HTTP for
> integration with the web while meeting specialized requirements such
> as multicast support, very low overhead and simplicity for
> constrained environments.
>=20
>=20
>=20
> The IETF Secretariat.
>=20
>=20

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From jmani@comverge.com  Mon Jun  7 11:21:36 2010
Return-Path: <jmani@comverge.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7D8023A635F for <core@core3.amsl.com>; Mon,  7 Jun 2010 11:21:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.957
X-Spam-Level: 
X-Spam-Status: No, score=0.957 tagged_above=-999 required=5 tests=[BAYES_05=-1.11, RCVD_NUMERIC_HELO=2.067]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ucEiiDaBsNsB for <core@core3.amsl.com>; Mon,  7 Jun 2010 11:21:35 -0700 (PDT)
Received: from newman.comverge.com (newman.comverge.com [72.1.84.67]) by core3.amsl.com (Postfix) with ESMTP id 32FF53A672E for <core@ietf.org>; Mon,  7 Jun 2010 11:21:35 -0700 (PDT)
Received: from 98.248.136.168 ([98.248.136.168]) by NEWMAN.comverge.com ([192.168.1.5]) with Microsoft Exchange Server HTTP-DAV ;  Mon,  7 Jun 2010 18:21:40 +0000
User-Agent: Microsoft-Entourage/12.24.0.100205
Date: Mon, 07 Jun 2010 11:21:33 -0700
From: John Mani <jmani@comverge.com>
To: Zach Shelby <zach@sensinode.com>, core <core@ietf.org>
Message-ID: <C83286BD.ED08%jmani@comverge.com>
Thread-Topic: [core] Fwd: New Version Notification for draft-ietf-core-coap-00
Thread-Index: AcsGbkHIEDWwJwO35kG4MfL8MrSB4A==
In-Reply-To: <4DCE9944-2826-4360-AD52-ACA80695A793@sensinode.com>
Mime-version: 1.0
Content-type: text/plain; charset="US-ASCII"
Content-transfer-encoding: 7bit
Subject: Re: [core] Fwd: New Version Notification for draft-ietf-core-coap-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 18:21:36 -0000

Hi, are there any implementations (experimental, opensource, commercial or
otherwise) in progress for CoAP?

Thanx
-john


On 6/7/10 8:00 AM, "Zach Shelby" <zach@sensinode.com> wrote:

> Hi,
> 
> http://www.ietf.org/id/draft-ietf-core-coap-00.txt
> 
> A new version of the (now working group) document for CoAP has been posted
> (note it became -00 again as it now has a draft-ietf name). We integrated a
> bunch of editorial comments, removed the TCP binding, removed the Magic Byte
> header and Uri-Code for now, and marked the Sub/Notify feature as Experimental
> while we are discussing the new design in the WG. Managed to make a doc a
> couple pages shorter ;-) Next step is to make WG trac tickets for all the open
> issues and TODOs, these we should plan to close by the next release of the doc
> planned for the end of June.
> 
>    Changes from shelby-01 to ietf-00:
> 
>       o Removed the TCP binding section, left open for the future.
> 
>       o Fixed a bug in the example.
> 
>       o Marked current Sub/Notify as (Experimental) while under WG
>       discussion.
> 
>       o Temporarily removed the Magic Byte header as TCP is no longer
>       included as a binding.
> 
>       o Removed the Uri-code Option as different URI encoding schemes
>       are being discussed.
> 
>       o Changed the rel= field to desc= for resource discovery.
> 
>       o Changed the maximum message size to 1024 bytes to allow for IP/
>       UDP headers.
> 
>       o Made the URI slash optimization and method impotence MUSTs
> 
>       o Minor editing and bug fixing.
>   
> 
> Begin forwarded message:
> 
>> From: IETF I-D Submission Tool <idsubmission@ietf.org>
>> Date: June 7, 2010 5:52:00 PM GMT+03:00
>> To: zach@sensinode.com
>> Cc: brian@skyfoundry.com,d.sturek@att.net
>> Subject: New Version Notification for draft-ietf-core-coap-00
>> 
>> 
>> A new version of I-D, draft-ietf-core-coap-00.txt has been successfully
>> submitted by Zach Shelby and posted to the IETF repository.
>> 
>> Filename:  draft-ietf-core-coap
>> Revision:  00
>> Title:   Constrained Application Protocol (CoAP)
>> Creation_date:  2010-06-07
>> WG ID:   core
>> Number_of_pages: 30
>> 
>> Abstract:
>> This document specifies the Constrained Application Protocol (CoAP),
>> a specialized transfer protocol for use with constrained networks and
>> nodes for machine-to-machine applications such as smart energy and
>> building automation.  These constrained nodes often have 8-bit
>> microcontrollers with small amounts of ROM and RAM, while networks
>> such as 6LoWPAN often have high packet error rates and typical
>> throughput of 10s of kbit/s.  CoAP provides request/reply and
>> subscribe/notify interaction models between application end-points,
>> supports built-in resource discovery, and includes key web concepts
>> such as URIs and RESTful methods.  CoAP easily translates to HTTP for
>> integration with the web while meeting specialized requirements such
>> as multicast support, very low overhead and simplicity for
>> constrained environments.
>> 
>> 
>> 
>> The IETF Secretariat.
>> 
>> 


From guido.moritz@uni-rostock.de  Mon Jun  7 13:52:30 2010
Return-Path: <guido.moritz@uni-rostock.de>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 079273A6852 for <core@core3.amsl.com>; Mon,  7 Jun 2010 13:52:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.2
X-Spam-Level: 
X-Spam-Status: No, score=-2.2 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HELO_EQ_DE=0.35, MSGID_MULTIPLE_AT=1.449, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PFOTHovgV2Vs for <core@core3.amsl.com>; Mon,  7 Jun 2010 13:52:28 -0700 (PDT)
Received: from ida.uni-rostock.de (ida.uni-rostock.de [139.30.8.34]) by core3.amsl.com (Postfix) with ESMTP id A7CB33A683A for <core@ietf.org>; Mon,  7 Jun 2010 13:52:27 -0700 (PDT)
Received: from email2.uni-rostock.de (139.30.8.209) by ida.uni-rostock.de (139.30.8.162) with Microsoft SMTP Server (TLS) id 8.2.254.0; Mon, 7 Jun 2010 22:52:27 +0200
Received: from Schlappi (92.230.216.254) by email2.uni-rostock.de (139.30.8.210) with Microsoft SMTP Server (TLS) id 8.2.254.0; Mon, 7 Jun 2010 22:52:27 +0200
From: Guido Moritz <guido.moritz@uni-rostock.de>
To: <core@ietf.org>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<4C06F48D.1020600@cisco.com>	<87vda0u9ry.fsf@kelsey-ws.hq.ember.com>	<4C08098E.50305@gridmerge.com>	<4C083143.1060905@cisco.com>	<4C08DBAC.8030108@gridmerge.com>	<1944526115059294389@unknownmsgid> <AANLkTinXDHd1Oujr_Kj8t6zy_na6AT2_CNcH3-wn5QHB@mail.gmail.com>
In-Reply-To: <AANLkTinXDHd1Oujr_Kj8t6zy_na6AT2_CNcH3-wn5QHB@mail.gmail.com>
Date: Mon, 7 Jun 2010 22:52:27 +0200
Message-ID: <000301cb0683$56fb8e00$04f2aa00$@moritz@uni-rostock.de>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Office Outlook 12.0
Thread-Index: AcsGWt0GqNJEb+XmTMC7fcBvAOBatwAKAPag
Content-Language: de
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 20:52:30 -0000

> It is quite plausible under REST that PUT/POST could be used to create
> an active subscription on a node which would then be assigned its own
> URI at which to access it (similar to the Atom feed protocol). =20
Right, the creation of this subscription resource might possible using =
RESTful CRUD. But in origin REST design, the resource must be =
requested/invoked by the client. But the required behavior for sub/not =
means an active resource, sending out events on state changes instead of =
request/response. I think this fits not into origin RESTful design =
principles!?

Guido

> -----Urspr=C3=BCngliche Nachricht-----
> Von: Karl Ostendorf [mailto:karl@ostendorf.com]
> Gesendet: Montag, 7. Juni 2010 18:03
> An: Guido Moritz
> Betreff: Re: [core] Subscribe/Notify for CoAP
>=20
> Hi,
>=20
> It is quite plausible under REST that PUT/POST could be used to create
> an active subscription on a node which would then be assigned its own
> URI at which to access it (similar to the Atom feed protocol).  As
> long as the node maintains the same representation for all clients and
> not a per-client representation via cookies or other tracking
> mechanism.
>=20
> Karl
>=20
> On Mon, Jun 7, 2010 at 14:36, Guido Moritz =
<guido.moritz@uni-rostock.de>
> wrote:
> > With regard to the actual methods, I think we should stick to the =
CRUD
> > methods used in RESTful architectures.
> >
> > But REST means stateless passive resources. Using PUT/POST to create =
a
> > subscription resource that is fired/notified if something changes is =
almost
> > not REST.
>=20
>=20
>=20
>  So this is a new required functionality specific for M2M scenarios
> > which needs clear semantically unambiguously methods. As Zach =
mentioned
> > there is no state-of-the-art way of doing sub/not/event/=E2=80=A6 =
with HTTP. Some
> > even rely on TCP on transport layer. So from my point of view this =
is a) a
> > new required mechanism that implies new method(s) and thus b) an =
extension
> > of REST in general and thus legitimate.
> >
> >
> >
> > Mapping of COAP to HTTP can be performed by a Gateway/Proxy which =
has
> > sufficient computing power. As long as design of COAP does not =
prevent from
> > mapping of the eventing concept on the existing HTTP methods, from =
my point
> > of view introducing the new methods should not be an issue. This in =
return
> > will even allow much more complex scenarios. Deployments in general =
might
> > require the proxys for data aggregation, data storage, integration =
in legacy
> > systems, =E2=80=A6
> >
> >
> >
> > We should also keep in mind that defining the new methods does not =
imply to
> > use them in general. There might be implementations/deployments that =
will
> > use polling the sensors once a day instead of using the sub/not =
mechanism.
> > As long as both endpoints are capable of the sub/not great, =
otherwise they
> > can fall back to default CRUD style.
> >
> >
> >
> > Guido
> >
> >
> >
> > Von: core-bounces@ietf.org [mailto:core-bounces@ietf.org] Im Auftrag =
von
> > Robert Cragie
> > Gesendet: Freitag, 4. Juni 2010 12:56
> > An: core@ietf.org
> > Betreff: Re: [core] Subscribe/Notify for CoAP
> >
> >
> >
> > Hi Paul,
> >
> > I'm not overly fond of SUBSCRIBE as a method either, to be honest. I =
think
> > to be truly RESTful, there are two approaches to subscription:
> >
> > Don't separate it from the resource and use synchronous =
request/response
> > with long polling. The subscription is effected by a blocking wait =
on the
> > resource which gets responded to when it has been updated.
> > Have an explicit separate subscription resource where a notify =
resource is
> > registered and to where notifications are sent
> >
> > (1) is more elegant in some respects because in (2) there is a =
logical
> > separation from the subscription and the resource itself. In (1), =
the
> > subscription is effectively dynamic, i.e. the server has to keep =
tags on the
> > client requests and respond to all requests as appropriate. There =
are then
> > variations with respect to the delivery mechanism, e.g. update only =
(queue
> > in client potentially), queue in server, streaming (multipart =
delivery).
> >
> > If you consider the transaction models, I still think there is a =
benefit for
> > adding the notify message type to request/response, i.e. an =
asynchronous
> > message which is not paired with any other message, although I =
accept it is
> > not strictly necessary. This has benefits for streaming models etc. =
With
> > regard to the actual methods, I think we should stick to the CRUD =
methods
> > used in RESTful architectures.
> >
> > Robert
> >
> > Robert Cragie (Pacific Gas & Electric)
> >
> > Gridmerge Ltd.
> > 89 Greenfield Crescent,
> > Wakefield, WF4 4WA, UK
> > +44 1924 910888
> > +1 415 513 0064
> > http://www.gridmerge.com
> >
> > On 03/06/2010 11:48 PM, Paul Duffy wrote:
> >
> > We seem to be at a fork in the road now with the two paths of:
> >
> > Basing CoAP on the HTTP transaction model
> > Basing CoAP on a more typical M2M transaction model
> >
> > The advantage of using (1) would be an easier job at a gateway node. =
The
> > clear disadvantage of (1) is that it doesn't map well to the =
threading
> > models typically used in embedded systems (see my earlier post). It =
could be
> > made to map but there will inevitably have to be some additional
> > specification over the underlying communication to fit embedded =
device
> > models. This will then become in effect yet another
> > RestMS/PubSubHubbub/Webhooks/RMS (see Vlad Trifa's post).
> >
> > The advantage of (2) is that it gives an opportunity to model =
transactions
> > more closely to those typical to an embedded environment. There is =
nothing
> > to prevent this model extending into the web generally using =
translations at
> > a gateway or indeed building wider CoAP systems in the internet =
which can
> > handle the asynchronous multi-threaded transaction models natively.
> >
> > In a nutshell, using (1) is propagating the status quo, which is by =
no means
> > a bad thing,
> >
> > Which is my main issue.
> >
> > 1. HTTP semantics are not a perfect fit, but IMO (like it or not) =
the WEB of
> > things needs to align with those semantics (warts and all).  Its a =
close
> > enough, good enough fit.
> >
> > 2. Subscriptions are resources.  They are created, have a lifetime, =
can be
> > enumerated, and are destroyed.  From coap-2 "servers keep track of
> > subscriptions...", "a subscription SHOULD be removed...", etc.
> > Subscriptions are resources.
> >
> > Example. I use SUBSCRIBE to create a subscription.  Would I =
subsequently do
> > GET to enumerate?  DELETE to remove?  PUT to modify?  SUBSCRIBE =
method seems
> > a RESTfully twisted special case of POST.
> >
> > Cheers
> >
> >
> >
> > but I am not sure if it is appropriate for CORE. (2) is =
acknowledging the
> > unique properties of constrained and embedded environments and =
building a
> > transaction model more appropriate to such devices.
> >
> > Robert
> >
> > Robert Cragie (Pacific Gas & Electric)
> >
> > Gridmerge Ltd.
> > 89 Greenfield Crescent,
> > Wakefield, WF4 4WA, UK
> > +44 1924 910888
> > +1 415 513 0064
> > http://www.gridmerge.com
> >
> > On 03/06/2010 3:31 AM, Richard Kelsey wrote:
> >
> > Date: Wed, 02 Jun 2010 20:17:17 -0400
> >
> > From: Paul Duffy <paduffy@cisco.com>
> >
> >
> >
> > My understanding is that COAP is directed to the WEB of things.  I =
take
> >
> > that to mean going with the grain of pervasively  deployed WEB
> >
> > infrastructure.  Unless there is an overwhelming compelling reason =
to do
> >
> > otherwise, IMO COAP needs to implement a strict subset of HTTP
> >
> > semantics.  Otherwise, we open the door to complexity re: =
translating
> >
> > HTTP/COAP, and history has shown complex app gateways will always be =
a
> >
> > challenge.
> >
> >
> >
> > There are several ways to support pub/sub using stock HTTP methods.  =
I
> >
> > suggest we do so.
> >
> >
> >
> > Given the variety of ways people do pub/sub using stock HTTP
> >
> > methods, it isn't clear that we can keep both COAP and the
> >
> > COAP/HTTP gateways simple while still supporting multiple
> >
> > pub/sub methods on the HTTP side.  By making the translation
> >
> > of one form of HTTP pub/sub easy, we could easily make the
> >
> > translation of others harder.
> >
> >
> >
> > If we want to have COAP/HTTP gateways that support different
> >
> > HTTP pub/sub methods, then it might be better to add pub/sub
> >
> > to COAP directly, in a way that is not a strict subset of
> >
> > HTTP.
> >
> >
> >
> > Do we support several ways of doing pub/sub in HTTP, or just
> >
> > one?  If we do pick just one, can others be easily translated
> >
> > into it?
> >
> >                                 -Richard Kelsey
> >
> > _______________________________________________
> >
> > core mailing list
> >
> > core@ietf.org
> >
> > https://www.ietf.org/mailman/listinfo/core
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> >
> > core mailing list
> >
> > core@ietf.org
> >
> > https://www.ietf.org/mailman/listinfo/core
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> >
> > core mailing list
> >
> > core@ietf.org
> >
> > https://www.ietf.org/mailman/listinfo/core
> >
> >
> >
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> >
> >
>=20
>=20
>=20
> --
> Karl Ostendorf
> http://ostendorf.com/


From guido.moritz@uni-rostock.de  Mon Jun  7 14:10:45 2010
Return-Path: <guido.moritz@uni-rostock.de>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 8C0193A686C for <core@core3.amsl.com>; Mon,  7 Jun 2010 14:10:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.5
X-Spam-Level: 
X-Spam-Status: No, score=-3.5 tagged_above=-999 required=5 tests=[AWL=1.300, BAYES_00=-2.599, HELO_EQ_DE=0.35, HTML_MESSAGE=0.001, MSGID_MULTIPLE_AT=1.449, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dKAXUy4COYHj for <core@core3.amsl.com>; Mon,  7 Jun 2010 14:10:28 -0700 (PDT)
Received: from ida.uni-rostock.de (ida.uni-rostock.de [139.30.8.34]) by core3.amsl.com (Postfix) with ESMTP id 69E963A6834 for <core@ietf.org>; Mon,  7 Jun 2010 14:10:27 -0700 (PDT)
Received: from email2.uni-rostock.de (139.30.8.209) by ida.uni-rostock.de (139.30.8.162) with Microsoft SMTP Server (TLS) id 8.2.254.0; Mon, 7 Jun 2010 23:10:26 +0200
Received: from Schlappi (92.230.216.254) by email2.uni-rostock.de (139.30.8.210) with Microsoft SMTP Server (TLS) id 8.2.254.0; Mon, 7 Jun 2010 23:10:25 +0200
From: Guido Moritz <guido.moritz@uni-rostock.de>
To: <core@ietf.org>
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com><0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com><E2549175-1A08-4ED9-8B8D-A30DBA89CF01@cisco.com>	<AANLkTilerORXUJQoXqpIHA3a0ZRhCVnegrChv-batP-D@mail.gmail.com> <0D212BD466921646B58854FB79092CEC0232F78F@XMB-AMS-106.cisco.com>
In-Reply-To: <0D212BD466921646B58854FB79092CEC0232F78F@XMB-AMS-106.cisco.com>
Date: Mon, 7 Jun 2010 23:10:23 +0200
Message-ID: <000e01cb0685$d9ccb640$8d6622c0$@moritz@uni-rostock.de>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_000F_01CB0696.9D558640"
X-Mailer: Microsoft Office Outlook 12.0
Thread-Index: AcsGF2Euvo7virvvRG6ZTiExIZS6TAAAayMQABsBP1A=
Content-Language: de
Subject: Re: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 21:10:45 -0000

------=_NextPart_000_000F_01CB0696.9D558640
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Are we discussing the same topic now in 2 separated threads?

http://www.ietf.org/mail-archive/web/core/current/msg00281.html

=20

>Multiple response messages to the same initial GET request message?

In the thread of the link above is already a discussion raised by Zach =
about
asynchronous messaging pattern that fits into this question.

=20

>how to keep track of initial GET request and subsequent responses? =
using a
sort of transaction id shared among request and responses messages?

Jep, ist required. But not only for subscriptions, because of async
messaging for all messages!

=20

>how to fit with REST requirements? safety/idempotency?

That=92s the beaf. Is sub/not THE extension that does not fit into REST?

=20

>how to distinguish this by a classic GET request/response transaction =
(one
request followed by only one response)?

Same as above. GET is semantically clear for a single request/response, =
but
not as both singe GET and event subscription.

=20

>how to realize spontaneous notifications, i.e. notifications no =
triggered
by a subscription?=20

What is a notification without a subscription? Broadcasting messages? =
Spam?

=20

Guido

=20

Von: core-bounces@ietf.org [mailto:core-bounces@ietf.org] Im Auftrag von
Adriano Pezzuto (apezzuto)
Gesendet: Montag, 7. Juni 2010 10:30
An: Angelo P. Castellani; Cullen Jennings (fluffy)
Cc: core
Betreff: Re: [core] SUB/NOT - the sea level view

=20

Hi

not sure to understand but it sounds as an interesting way to see =
things.
Multiple response messages to the same initial GET request message?

The initial GET request acts as subscription request to a certain =
resource.
The first response message returns the value of the resource at time of
subscription and subsequent responses act as notification messages about
resource changes in the time.

=20

Questions:

=20

how to keep track of initial GET request and subsequent responses? using =
a
sort of transaction id shared among request and responses messages?

how to fit with REST requirements? safety/idempotency?

how to distinguish this by a classic GET request/response transaction =
(one
request followed by only one response)?

how to realize spontaneous notifications, i.e. notifications no =
triggered by
a subscription?=20

=20

Adriano

=20

From: angelo.castellani@gmail.com [mailto:angelo.castellani@gmail.com] =
On
Behalf Of Angelo P. Castellani
Sent: luned=EC 7 giugno 2010 9.59
To: Cullen Jennings (fluffy)
Cc: Adriano Pezzuto (apezzuto); core
Subject: Re: [core] SUB/NOT - the sea level view

=20

I agree with Adriano comments, and I really like the POST/DELETE (or =
GET?)
mapping of the subscriptions. We really need to define new HTTP verbs to
define a standard a subscription format?

What if we define the best HTTP-mapped subscription?

A solution can be, a SUBSCRIBE action is nothing more than a GET which
responses are repeated using some criterion (threshold, every N seconds,
etc.).

The trigger of the response, in my opinion, can be ranging a lot =
depending
upon the application, so could be inserted in the body of the request. A
possible version of the body format can be agreed, however it should be
extensible to fit particular cases.

ACK'ing the request or the responses is really transport dependant. If =
we
use TCP, ACKs are already there. If we use UDP, some ACK packet format =
can
be agreed to provide some level of reliability to UDP. etc.

   Source                   Sink      =20
     |           GET          |        =20
     |<-----------------------+        =20
     |                        |        =20
     |           RES          |        =20
     +----------------------->|        =20
     |                        |        =20
... Time Passes, something triggers in the Source ...         =20
     |                        |        =20
     |          RES           |        =20
     +----------------------->|         =20


To realize this we can define some Options that will make that GET (or
POST?) request have the same meaning of a SUBSCRIBE (seems easier to =
define
new Options to make this eventually adopted by HTTP, or maybe there is =
some
Option already there we can overload in some way).

Repeats? Repeats-Every? Lifetime?

In this way we have easily the very initial value, and because the =
packet
format is the same for a standard response and for a NOTIFY its easier =
for a
CoAP/HTTP proxy to update its cached value.

Subscription can be updated/refreshed/deleted with the same message GET =
(or
POST?) message (delete -> Repeats=3Dfalse) and we can get in this way =
the
value on subscription deletion.

In this way I'm quite confident that node software architecture also can =
be
simpler, because a lot of code/procedures can be shared between GET and
SUBSCRIBE/NOTIFY with no particular effort.

Angelo

On Fri, Jun 4, 2010 at 23:49, Cullen Jennings <fluffy@cisco.com> wrote:
>
> Great points - thanks.
>
> Just as a bit of other information for the WG, I'll try and describe =
how
SIP solved these problems. SIP has different design goals so what they =
did
is probably not appropriate for all of these but it is at least =
something to
be aware of. My apologies to the SIP experts on the list that know this =
but
seems worth mentioning for folks that don't.
>
>
> On Jun 4, 2010, at 1:22 PM, Adriano Pezzuto (apezzuto) wrote:
>
>> my two cents
>>
>> a) how to cancel a subscription
>> [if sink node POST a new entry into the subscribers list on that
resource, then it can DELETE it]
>
> I can see how that works but looks like it might involve a few =
roundtrips.
What SIP does is it "refreshes" the subscriptions with an expiry time of
zero which causes it to instantly expire and go away. More of how the
refresh works down in point d.
>
>>
>> b) how to get the initial value of the subscription around the time =
you
subscribe
>> [the ACK  could be a response message containing the current value of =
the
subscribed resource at time of subscription]
>
> I like the approach you are proposing. What SIP does is it sends a =
NOTIFY
as soon as the SUBcription happens. This was done due a variety of =
reasons
but a big part is SIP has some pretty significant problems with =
negotiating
size of responses. This would cause problems where the ACK ended up =
being
too large in SIP. I don't think we would have the problem in COAP so =
sending
it in the ACK might be better.
>
>>
>> c) what sort of filtering is available to limit the types of resource
changes that result in a NOTIFY
>> [it seems application specific; for example, you can define a sort of
trigger with thresholds and hysteresis to avoid bouncing]
>
> The SIP guys went round and round discussing a variety of increasingly
complicated generalized solutions which were never general enough to =
meet
all the use cases. Eventually  they came to the conclusion that it was
application specific.
>
>>
>> d) lifespan of subscription how to refresh a subscription
>> [sink and source nodes can agree on a subscription lifetime: sink can
refresh the subscription by sending a new SUB request]
>
> This is roughly what SIP does. The Sink proposes the max expiry time =
it
wants. The Source can make this smaller (but not larger) and returns the
"expiry time"  in the ACK. The Sink has to refresh the subscription =
before
the expiry time by sending a new SUB. I suspect this would wok well for
COAP.
>
>>
>> e) caching and interaction with sleeping device
>> [mmhh =85 no have cents for now. sorry]
>
> SIP has these, uh, I'm never going to manage to explain this in a
paragraph but if you are feeling masochistic you can go read RFC 2778, =
3265,
3903, 4662, 4479, and 5839 as a starting point them move into the many =
RFCs
on the compression and optimization approaches. I'd suggest the full =
blow
SIP approach is probably a bit complex for constrained devices.
>
> I can easily imagine something where a COAP cache or caching proxy to =
HTTP
just subscribes to the resource. That way the cache is always up to date =
and
when the cache receives a GET or SUBSCRIBE for the resource, it can just
respond with the correct data. The device that has the resource can =
sleep
and just update the cache any time the resource changes. To make a =
scheme
like this work really well it might be nice if a Source that received a =
SUB
could redirect the Sink to send the subscribe to a cache that the Source
knew was willing to cache the data. It also allows a cache that see a =
NOTIFY
go by to update it data for that resource.
>
>
>>
>>
>> Adriano
>>
>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf =
Of
Cullen Jennings (fluffy)
>> Sent: venerd=EC 4 giugno 2010 20.34
>> To: core
>> Subject: [core] SUB/NOT - the sea level view
>>
>>
>> Over the year I have had the pleasure of being in many conversations
about what a stateless protocol is, what REST is, HTTP, polling,
asynchronous notifications, web based RPC, and blowing soap bubbles.  =
Though
interesting, I have a hard time concretely explaining it to anyone and =
the
oxygen always seems a bit thin at the 10,000 foot view. I do however =
have a
very easy time understanding a very low level view of the systems where
there are  some boxes and arrow diagrams of  message flow and roughly =
the
semantics of the data they cary. Let me try and draw my current
understanding of how this is going to work.
>>
>> We have two nodes - I will call them Source and Sink.
>>
>>
>>    Source         Sink
>>      |    SUB      |
>>      |<------------+
>>      |             |
>>      |    ACK      |
>>      +------------>|
>>      |             |
>>     ... Time Passes ...
>>      |             |
>>      |   NOTIF     |
>>      +------------>|
>>      |             |
>>      |   ACK       |
>>      |<------------+
>>      |             |
>>
>>
>> Sink starts by sending a message I will label "SUB" to the Source. =
The
SUB messages says which resource the Sink would like to be informed =
about
when the resource changes. The Source sends a OK or No there is a =
problem in
some sort of ACK message to the SUB. Eventually the resource changes and
Source sends an message I called "NOTIFY" to the Sink. This tells the =
Sink
which resource changed and the current value of it.The Sink sends some =
sort
of acknowledgment. I find the terms client and server very confusing =
when
discussing SUB/NOT so I'm not using those terms.
>>
>> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, =
or
plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell,
pretty much everything people have been proposing fit into this model.  =
So
first, I'd like to get an idea if people think I am in left field and =
there
is a very different message flow to consider. Second we need to figure =
out
some of the stuff I left out of the picture above such as
>>
>> a) how to cancel a subscription
>> [if sink node POST a new entry into the subscribers list on that
resource, then it can DELETE it]
>>
>> b) how to get the initial value of the subscription around the time =
you
subscribe
>> [the ACK  could be a response message containing the current value of =
the
subscribed resource at time of subscription]
>>
>> c) what sort of filtering is available to limit the types of resource
changes that result in a NOTIFY
>> [it seems application specific; for example, you can define a sort of
trigger with thresholds and hysteresis to avoid bouncing]
>>
>> d) lifespan of subscription how to refresh a subscription
>> [it seems application specific; sink and source nodes can agree on a
subscription lifetime: sink can refresh the subscription by sending a =
new
SUB request]
>>
>> e) caching and interaction with sleeping device
>> [mmhh =85 no have cents for now. sorry]
>>
>>
>> We have to be clear on how this maps to HTTP and possibly other
protocols. One of the problems with HTTP is it has so many ways of doing
asynchronous notifications that it hard to decide what to map for. I =
would
be very conformable if we clearly new how to map it to HiBy and to =
direct
HTTP polling. It would be nice to have  back of the cocktail napkin =
belief
that it probably could be mapped to SMNP, XMPP, and the other HTTP
approaches. My guess is that the mapping to other protocols is going to =
turn
out to be easy.
>>
>>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>


------=_NextPart_000_000F_01CB0696.9D558640
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<meta name=3DGenerator content=3D"Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Courier;
	panose-1:2 7 4 9 2 2 5 2 4 4;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.E-MailFormatvorlage17
	{mso-style-type:personal;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
span.E-MailFormatvorlage18
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 2.0cm 2.0cm 2.0cm;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=3DDE link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Are we discussing the same topic now in 2 separated =
threads?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><a
href=3D"http://www.ietf.org/mail-archive/web/core/current/msg00281.html">=
http://www.ietf.org/mail-archive/web/core/current/msg00281.html</a><o:p><=
/o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>&gt;Multiple response messages to the same initial GET =
request
message?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>In the thread of the link above is already a discussion =
raised
by Zach about asynchronous messaging pattern that fits into this =
question.<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>&gt;how to keep track of initial GET request and =
subsequent
responses? using a sort of transaction id shared among request and =
responses
messages?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Jep, ist required. But not only for subscriptions, =
because of async
messaging for all messages!<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>&gt;how to fit with REST requirements? =
safety/idempotency?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>That&#8217;s the beaf. Is sub/not THE extension that does =
not
fit into REST?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>&gt;how to distinguish this by a classic GET =
request/response
transaction (one request followed by only one =
response)?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Same as above. GET is semantically clear for a single =
request/response,
but not as both singe GET and event subscription.<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>&gt;how to realize spontaneous notifications, i.e. =
notifications
no triggered by a subscription? <o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>What is a notification without a subscription? =
Broadcasting
messages? Spam?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Guido</span><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:
"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style=3D'border:none;border-left:solid blue 1.5pt;padding:0cm 0cm =
0cm 4.0pt'>

<div>

<div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt =
0cm 0cm 0cm'>

<p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Von:</span><=
/b><span
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'> =
core-bounces@ietf.org
[mailto:core-bounces@ietf.org] <b>Im Auftrag von </b>Adriano Pezzuto =
(apezzuto)<br>
<b>Gesendet:</b> Montag, 7. Juni 2010 10:30<br>
<b>An:</b> Angelo P. Castellani; Cullen Jennings (fluffy)<br>
<b>Cc:</b> core<br>
<b>Betreff:</b> Re: [core] SUB/NOT - the sea level =
view<o:p></o:p></span></p>

</div>

</div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Hi<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>not sure to understand but it sounds as an interesting =
way to
see things. Multiple response messages to the same initial GET request =
message?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>The initial GET request acts as subscription request to a
certain resource. The first response message returns the value of the =
resource
at time of subscription and subsequent responses act as notification =
messages
about resource changes in the time.<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Questions:<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>how to keep track of initial GET request and subsequent
responses? using a sort of transaction id shared among request and =
responses
messages?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>how to fit with REST requirements? =
safety/idempotency?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>how to distinguish this by a classic GET request/response
transaction (one request followed by only one =
response)?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>how to realize spontaneous notifications, i.e. =
notifications no
triggered by a subscription? <o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Adriano<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt =
0cm 0cm 0cm'>

<p class=3DMsoNormal><b><span lang=3DEN-US =
style=3D'font-size:10.0pt;font-family:
"Tahoma","sans-serif"'>From:</span></b><span lang=3DEN-US =
style=3D'font-size:10.0pt;
font-family:"Tahoma","sans-serif"'> angelo.castellani@gmail.com
[mailto:angelo.castellani@gmail.com] <b>On Behalf Of </b>Angelo P. =
Castellani<br>
<b>Sent:</b> luned=EC 7 giugno 2010 9.59<br>
<b>To:</b> Cullen Jennings (fluffy)<br>
<b>Cc:</b> Adriano Pezzuto (apezzuto); core<br>
<b>Subject:</b> Re: [core] SUB/NOT - the sea level =
view<o:p></o:p></span></p>

</div>

<p class=3DMsoNormal><span lang=3DEN-US><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal style=3D'margin-bottom:12.0pt'><span lang=3DEN-US>I =
agree with
Adriano comments, and I really like the POST/DELETE (or GET?) mapping of =
the
subscriptions. We really need to define new HTTP verbs to define a =
standard a
subscription format?<br>
<br>
What if we define the best HTTP-mapped subscription?<br>
<br>
A solution can be, a SUBSCRIBE action is nothing more than a GET which
responses are repeated using some criterion (threshold, every N seconds, =
etc.).<br>
<br>
The trigger of the response, in my opinion, can be ranging a lot =
depending upon
the application, so could be inserted in the body of the request. A =
possible
version of the body format can be agreed, however it should be =
extensible to
fit particular cases.<br>
<br>
ACK'ing the request or the responses is really transport dependant. If =
we use
TCP, ACKs are already there. If we use UDP, some ACK packet format can =
be
agreed to provide some level of reliability to UDP. etc.<br>
<br>
</span><b><span lang=3DEN-US =
style=3D'font-size:10.5pt;font-family:Courier'>&nbsp;&nbsp;
Source &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
Sink
&nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; =
GET
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; |&lt;-----------------------+ &nbsp; &nbsp; &nbsp;
&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; |&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; RES =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp; |&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; +-----------------------&gt;| &nbsp; &nbsp; &nbsp;
&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; <br>
... Time Passes, something triggers in the Source ... &nbsp; &nbsp; =
&nbsp;
&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; RES&nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; +-----------------------&gt;|&nbsp;&nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp;<br>
<br>
<br>
</span></b><span lang=3DEN-US>To realize this we can define some Options =
that
will make that GET (or POST?) request have the same meaning of a =
SUBSCRIBE
(seems easier to define new Options to make this eventually adopted by =
HTTP, or
maybe there is some Option already there we can overload in some =
way).<br>
<br>
Repeats? Repeats-Every? Lifetime?<br>
<br>
In this way we have easily the very initial value, and because the =
packet
format is the same for a standard response and for a NOTIFY its easier =
for a
CoAP/HTTP proxy to update its cached value.<br>
<br>
Subscription can be updated/refreshed/deleted with the same message GET =
(or
POST?) message (delete -&gt; Repeats=3Dfalse) and we can get in this way =
the
value on subscription deletion.<br>
<br>
In this way I'm quite confident that node software architecture also can =
be
simpler, because a lot of code/procedures can be shared between GET and
SUBSCRIBE/NOTIFY with no particular effort.<br>
<br>
Angelo<br>
</span><b><span lang=3DEN-US =
style=3D'font-size:10.5pt;font-family:Courier'><br>
</span></b><span lang=3DEN-US>On Fri, Jun 4, 2010 at 23:49, Cullen =
Jennings &lt;<a
href=3D"mailto:fluffy@cisco.com">fluffy@cisco.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Great points - thanks.<br>
&gt;<br>
&gt; Just as a bit of other information for the WG, I'll try and =
describe how
SIP solved these problems. SIP has different design goals so what they =
did is
probably not appropriate for all of these but it is at least something =
to be
aware of. My apologies to the SIP experts on the list that know this but =
seems
worth mentioning for folks that don't.<br>
&gt;<br>
&gt;<br>
&gt; On Jun 4, 2010, at 1:22 PM, Adriano Pezzuto (apezzuto) wrote:<br>
&gt;<br>
&gt;&gt; my two cents<br>
&gt;&gt;<br>
&gt;&gt; a) how to cancel a subscription<br>
&gt;&gt; [if sink node POST a new entry into the subscribers list on =
that
resource, then it can DELETE it]<br>
&gt;<br>
&gt; I can see how that works but looks like it might involve a few =
roundtrips.
What SIP does is it &quot;refreshes&quot; the subscriptions with an =
expiry time
of zero which causes it to instantly expire and go away. More of how the
refresh works down in point d.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; b) how to get the initial value of the subscription around the =
time
you subscribe<br>
&gt;&gt; [the ACK &nbsp;could be a response message containing the =
current
value of the subscribed resource at time of subscription]<br>
&gt;<br>
&gt; I like the approach you are proposing. What SIP does is it sends a =
NOTIFY
as soon as the SUBcription happens. This was done due a variety of =
reasons but
a big part is SIP has some pretty significant problems with negotiating =
size of
responses. This would cause problems where the ACK ended up being too =
large in
SIP. I don't think we would have the problem in COAP so sending it in =
the ACK
might be better.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; c) what sort of filtering is available to limit the types of =
resource
changes that result in a NOTIFY<br>
&gt;&gt; [it seems application specific; for example, you can define a =
sort of
trigger with thresholds and hysteresis to avoid bouncing]<br>
&gt;<br>
&gt; The SIP guys went round and round discussing a variety of =
increasingly
complicated generalized solutions which were never general enough to =
meet all
the use cases. Eventually &nbsp;they came to the conclusion that it was
application specific.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; d) lifespan of subscription how to refresh a subscription<br>
&gt;&gt; [sink and source nodes can agree on a subscription lifetime: =
sink can
refresh the subscription by sending a new SUB request]<br>
&gt;<br>
&gt; This is roughly what SIP does. The Sink proposes the max expiry =
time it
wants. The Source can make this smaller (but not larger) and returns the
&quot;expiry time&quot; &nbsp;in the ACK. The Sink has to refresh the
subscription before the expiry time by sending a new SUB. I suspect this =
would
wok well for COAP.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; e) caching and interaction with sleeping device<br>
&gt;&gt; [mmhh &#8230; no have cents for now. sorry]<br>
&gt;<br>
&gt; SIP has these, uh, I'm never going to manage to explain this in a
paragraph but if you are feeling masochistic you can go read RFC 2778, =
3265,
3903, 4662, 4479, and 5839 as a starting point them move into the many =
RFCs on
the compression and optimization approaches. I'd suggest the full blow =
SIP
approach is probably a bit complex for constrained devices.<br>
&gt;<br>
&gt; I can easily imagine something where a COAP cache or caching proxy =
to HTTP
just subscribes to the resource. That way the cache is always up to date =
and
when the cache receives a GET or SUBSCRIBE for the resource, it can just
respond with the correct data. The device that has the resource can =
sleep and
just update the cache any time the resource changes. To make a scheme =
like this
work really well it might be nice if a Source that received a SUB could
redirect the Sink to send the subscribe to a cache that the Source knew =
was
willing to cache the data. It also allows a cache that see a NOTIFY go =
by to
update it data for that resource.<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Adriano<br>
&gt;&gt;<br>
&gt;&gt; From: <a =
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a>
[mailto:<a =
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a>] On
Behalf Of Cullen Jennings (fluffy)<br>
&gt;&gt; Sent: venerd=EC 4 giugno 2010 20.34<br>
&gt;&gt; To: core<br>
&gt;&gt; Subject: [core] SUB/NOT - the sea level view<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Over the year I have had the pleasure of being in many =
conversations
about what a stateless protocol is, what REST is, HTTP, polling, =
asynchronous
notifications, web based RPC, and blowing soap bubbles. &nbsp;Though
interesting, I have a hard time concretely explaining it to anyone and =
the
oxygen always seems a bit thin at the 10,000 foot view. I do however =
have a
very easy time understanding a very low level view of the systems where =
there
are &nbsp;some boxes and arrow diagrams of &nbsp;message flow and =
roughly the
semantics of the data they cary. Let me try and draw my current =
understanding
of how this is going to work.<br>
&gt;&gt;<br>
&gt;&gt; We have two nodes - I will call them Source and Sink.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &nbsp; &nbsp;Source &nbsp; &nbsp; &nbsp; &nbsp; Sink<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp;SUB &nbsp; &nbsp; =
&nbsp;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;|&lt;------------+<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp;ACK &nbsp; &nbsp; =
&nbsp;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;+------------&gt;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; ... Time Passes ...<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; NOTIF &nbsp; &nbsp; |<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;+------------&gt;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; ACK &nbsp; &nbsp; &nbsp; |<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;|&lt;------------+<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Sink starts by sending a message I will label &quot;SUB&quot; =
to the
Source. The SUB messages says which resource the Sink would like to be =
informed
about when the resource changes. The Source sends a OK or No there is a =
problem
in some sort of ACK message to the SUB. Eventually the resource changes =
and
Source sends an message I called &quot;NOTIFY&quot; to the Sink. This =
tells the
Sink which resource changed and the current value of it.The Sink sends =
some
sort of acknowledgment. I find the terms client and server very =
confusing when
discussing SUB/NOT so I'm not using those terms.<br>
&gt;&gt;<br>
&gt;&gt; The Sink could be a HTTP proxy that mapped this to COMET, =
WebSocket,
or plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell,
pretty much everything people have been proposing fit into this model. =
&nbsp;So
first, I'd like to get an idea if people think I am in left field and =
there is
a very different message flow to consider. Second we need to figure out =
some of
the stuff I left out of the picture above such as<br>
&gt;&gt;<br>
&gt;&gt; a) how to cancel a subscription<br>
&gt;&gt; [if sink node POST a new entry into the subscribers list on =
that
resource, then it can DELETE it]<br>
&gt;&gt;<br>
&gt;&gt; b) how to get the initial value of the subscription around the =
time
you subscribe<br>
&gt;&gt; [the ACK &nbsp;could be a response message containing the =
current
value of the subscribed resource at time of subscription]<br>
&gt;&gt;<br>
&gt;&gt; c) what sort of filtering is available to limit the types of =
resource
changes that result in a NOTIFY<br>
&gt;&gt; [it seems application specific; for example, you can define a =
sort of
trigger with thresholds and hysteresis to avoid bouncing]<br>
&gt;&gt;<br>
&gt;&gt; d) lifespan of subscription how to refresh a subscription<br>
&gt;&gt; [it seems application specific; sink and source nodes can agree =
on a
subscription lifetime: sink can refresh the subscription by sending a =
new SUB
request]<br>
&gt;&gt;<br>
&gt;&gt; e) caching and interaction with sleeping device<br>
&gt;&gt; [mmhh &#8230; no have cents for now. sorry]<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; We have to be clear on how this maps to HTTP and possibly other
protocols. One of the problems with HTTP is it has so many ways of doing
asynchronous notifications that it hard to decide what to map for. I =
would be
very conformable if we clearly new how to map it to HiBy and to direct =
HTTP
polling. It would be nice to have &nbsp;back of the cocktail napkin =
belief that
it probably could be mapped to SMNP, XMPP, and the other HTTP =
approaches. My
guess is that the mapping to other protocols is going to turn out to be =
easy.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; core mailing list<br>
&gt; <a href=3D"mailto:core@ietf.org">core@ietf.org</a><br>
&gt; <a =
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><br>
&gt;<o:p></o:p></span></p>

</div>

</div>

</body>

</html>

------=_NextPart_000_000F_01CB0696.9D558640--

From guido.moritz@uni-rostock.de  Mon Jun  7 14:12:31 2010
Return-Path: <guido.moritz@uni-rostock.de>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id EC1E03A6826 for <core@core3.amsl.com>; Mon,  7 Jun 2010 14:12:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.149
X-Spam-Level: 
X-Spam-Status: No, score=-4.149 tagged_above=-999 required=5 tests=[AWL=0.650,  BAYES_00=-2.599, HELO_EQ_DE=0.35, HTML_MESSAGE=0.001, MSGID_MULTIPLE_AT=1.449, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id H-3lvjoF1pOB for <core@core3.amsl.com>; Mon,  7 Jun 2010 14:12:13 -0700 (PDT)
Received: from ida.uni-rostock.de (ida.uni-rostock.de [139.30.8.34]) by core3.amsl.com (Postfix) with ESMTP id 5EB083A6834 for <core@ietf.org>; Mon,  7 Jun 2010 14:12:12 -0700 (PDT)
Received: from email2.uni-rostock.de (139.30.8.209) by ida.uni-rostock.de (139.30.8.162) with Microsoft SMTP Server (TLS) id 8.2.254.0; Mon, 7 Jun 2010 23:12:11 +0200
Received: from Schlappi (92.230.216.254) by email2.uni-rostock.de (139.30.8.210) with Microsoft SMTP Server (TLS) id 8.2.254.0; Mon, 7 Jun 2010 23:12:11 +0200
From: Guido Moritz <guido.moritz@uni-rostock.de>
To: <core@ietf.org>
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com><0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com><E2549175-1A08-4ED9-8B8D-A30DBA89CF01@cisco.com>	<AANLkTilerORXUJQoXqpIHA3a0ZRhCVnegrChv-batP-D@mail.gmail.com> <0D212BD466921646B58854FB79092CEC0232F78F@XMB-AMS-106.cisco.com>
In-Reply-To: <0D212BD466921646B58854FB79092CEC0232F78F@XMB-AMS-106.cisco.com>
Date: Mon, 7 Jun 2010 23:12:11 +0200
Message-ID: <001301cb0686$18d44560$4a7cd020$@moritz@uni-rostock.de>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0014_01CB0696.DC5D1560"
X-Mailer: Microsoft Office Outlook 12.0
Thread-Index: AcsGF2Euvo7virvvRG6ZTiExIZS6TAAAayMQABs1AIA=
Content-Language: de
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 21:12:31 -0000

------=_NextPart_000_0014_01CB0696.DC5D1560
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

I apologize, but I cross post the answer in both threads handling the =
same
topic (from my point of view).=20

----------------------------

Are we discussing the same topic now in 2 separated threads?

http://www.ietf.org/mail-archive/web/core/current/msg00281.html

=20

>Multiple response messages to the same initial GET request message?

In the thread of the link above is already a discussion raised by Zach =
about
asynchronous messaging pattern that fits into this question.

=20

>how to keep track of initial GET request and subsequent responses? =
using a
sort of transaction id shared among request and responses messages?

Jep, ist required. But not only for subscriptions, because of async
messaging for all messages!

=20

>how to fit with REST requirements? safety/idempotency?

That=92s the beaf. Is sub/not THE extension that does not fit into REST?

=20

>how to distinguish this by a classic GET request/response transaction =
(one
request followed by only one response)?

Same as above. GET is semantically clear for a single request/response, =
but
not as both singe GET and event subscription.

=20

>how to realize spontaneous notifications, i.e. notifications no =
triggered
by a subscription?=20

What is a notification without a subscription? Broadcasting messages? =
Spam?

=20

Guido

=20

=20

Von: core-bounces@ietf.org [mailto:core-bounces@ietf.org] Im Auftrag von
Adriano Pezzuto (apezzuto)
Gesendet: Montag, 7. Juni 2010 10:30
An: Angelo P. Castellani; Cullen Jennings (fluffy)
Cc: core
Betreff: Re: [core] SUB/NOT - the sea level view

=20

Hi

not sure to understand but it sounds as an interesting way to see =
things.
Multiple response messages to the same initial GET request message?

The initial GET request acts as subscription request to a certain =
resource.
The first response message returns the value of the resource at time of
subscription and subsequent responses act as notification messages about
resource changes in the time.

=20

Questions:

=20

how to keep track of initial GET request and subsequent responses? using =
a
sort of transaction id shared among request and responses messages?

how to fit with REST requirements? safety/idempotency?

how to distinguish this by a classic GET request/response transaction =
(one
request followed by only one response)?

how to realize spontaneous notifications, i.e. notifications no =
triggered by
a subscription?=20

=20

Adriano

=20

From: angelo.castellani@gmail.com [mailto:angelo.castellani@gmail.com] =
On
Behalf Of Angelo P. Castellani
Sent: luned=EC 7 giugno 2010 9.59
To: Cullen Jennings (fluffy)
Cc: Adriano Pezzuto (apezzuto); core
Subject: Re: [core] SUB/NOT - the sea level view

=20

I agree with Adriano comments, and I really like the POST/DELETE (or =
GET?)
mapping of the subscriptions. We really need to define new HTTP verbs to
define a standard a subscription format?

What if we define the best HTTP-mapped subscription?

A solution can be, a SUBSCRIBE action is nothing more than a GET which
responses are repeated using some criterion (threshold, every N seconds,
etc.).

The trigger of the response, in my opinion, can be ranging a lot =
depending
upon the application, so could be inserted in the body of the request. A
possible version of the body format can be agreed, however it should be
extensible to fit particular cases.

ACK'ing the request or the responses is really transport dependant. If =
we
use TCP, ACKs are already there. If we use UDP, some ACK packet format =
can
be agreed to provide some level of reliability to UDP. etc.

   Source                   Sink      =20
     |           GET          |        =20
     |<-----------------------+        =20
     |                        |        =20
     |           RES          |        =20
     +----------------------->|        =20
     |                        |        =20
... Time Passes, something triggers in the Source ...         =20
     |                        |        =20
     |          RES           |        =20
     +----------------------->|         =20


To realize this we can define some Options that will make that GET (or
POST?) request have the same meaning of a SUBSCRIBE (seems easier to =
define
new Options to make this eventually adopted by HTTP, or maybe there is =
some
Option already there we can overload in some way).

Repeats? Repeats-Every? Lifetime?

In this way we have easily the very initial value, and because the =
packet
format is the same for a standard response and for a NOTIFY its easier =
for a
CoAP/HTTP proxy to update its cached value.

Subscription can be updated/refreshed/deleted with the same message GET =
(or
POST?) message (delete -> Repeats=3Dfalse) and we can get in this way =
the
value on subscription deletion.

In this way I'm quite confident that node software architecture also can =
be
simpler, because a lot of code/procedures can be shared between GET and
SUBSCRIBE/NOTIFY with no particular effort.

Angelo

On Fri, Jun 4, 2010 at 23:49, Cullen Jennings <fluffy@cisco.com> wrote:
>
> Great points - thanks.
>
> Just as a bit of other information for the WG, I'll try and describe =
how
SIP solved these problems. SIP has different design goals so what they =
did
is probably not appropriate for all of these but it is at least =
something to
be aware of. My apologies to the SIP experts on the list that know this =
but
seems worth mentioning for folks that don't.
>
>
> On Jun 4, 2010, at 1:22 PM, Adriano Pezzuto (apezzuto) wrote:
>
>> my two cents
>>
>> a) how to cancel a subscription
>> [if sink node POST a new entry into the subscribers list on that
resource, then it can DELETE it]
>
> I can see how that works but looks like it might involve a few =
roundtrips.
What SIP does is it "refreshes" the subscriptions with an expiry time of
zero which causes it to instantly expire and go away. More of how the
refresh works down in point d.
>
>>
>> b) how to get the initial value of the subscription around the time =
you
subscribe
>> [the ACK  could be a response message containing the current value of =
the
subscribed resource at time of subscription]
>
> I like the approach you are proposing. What SIP does is it sends a =
NOTIFY
as soon as the SUBcription happens. This was done due a variety of =
reasons
but a big part is SIP has some pretty significant problems with =
negotiating
size of responses. This would cause problems where the ACK ended up =
being
too large in SIP. I don't think we would have the problem in COAP so =
sending
it in the ACK might be better.
>
>>
>> c) what sort of filtering is available to limit the types of resource
changes that result in a NOTIFY
>> [it seems application specific; for example, you can define a sort of
trigger with thresholds and hysteresis to avoid bouncing]
>
> The SIP guys went round and round discussing a variety of increasingly
complicated generalized solutions which were never general enough to =
meet
all the use cases. Eventually  they came to the conclusion that it was
application specific.
>
>>
>> d) lifespan of subscription how to refresh a subscription
>> [sink and source nodes can agree on a subscription lifetime: sink can
refresh the subscription by sending a new SUB request]
>
> This is roughly what SIP does. The Sink proposes the max expiry time =
it
wants. The Source can make this smaller (but not larger) and returns the
"expiry time"  in the ACK. The Sink has to refresh the subscription =
before
the expiry time by sending a new SUB. I suspect this would wok well for
COAP.
>
>>
>> e) caching and interaction with sleeping device
>> [mmhh =85 no have cents for now. sorry]
>
> SIP has these, uh, I'm never going to manage to explain this in a
paragraph but if you are feeling masochistic you can go read RFC 2778, =
3265,
3903, 4662, 4479, and 5839 as a starting point them move into the many =
RFCs
on the compression and optimization approaches. I'd suggest the full =
blow
SIP approach is probably a bit complex for constrained devices.
>
> I can easily imagine something where a COAP cache or caching proxy to =
HTTP
just subscribes to the resource. That way the cache is always up to date =
and
when the cache receives a GET or SUBSCRIBE for the resource, it can just
respond with the correct data. The device that has the resource can =
sleep
and just update the cache any time the resource changes. To make a =
scheme
like this work really well it might be nice if a Source that received a =
SUB
could redirect the Sink to send the subscribe to a cache that the Source
knew was willing to cache the data. It also allows a cache that see a =
NOTIFY
go by to update it data for that resource.
>
>
>>
>>
>> Adriano
>>
>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf =
Of
Cullen Jennings (fluffy)
>> Sent: venerd=EC 4 giugno 2010 20.34
>> To: core
>> Subject: [core] SUB/NOT - the sea level view
>>
>>
>> Over the year I have had the pleasure of being in many conversations
about what a stateless protocol is, what REST is, HTTP, polling,
asynchronous notifications, web based RPC, and blowing soap bubbles.  =
Though
interesting, I have a hard time concretely explaining it to anyone and =
the
oxygen always seems a bit thin at the 10,000 foot view. I do however =
have a
very easy time understanding a very low level view of the systems where
there are  some boxes and arrow diagrams of  message flow and roughly =
the
semantics of the data they cary. Let me try and draw my current
understanding of how this is going to work.
>>
>> We have two nodes - I will call them Source and Sink.
>>
>>
>>    Source         Sink
>>      |    SUB      |
>>      |<------------+
>>      |             |
>>      |    ACK      |
>>      +------------>|
>>      |             |
>>     ... Time Passes ...
>>      |             |
>>      |   NOTIF     |
>>      +------------>|
>>      |             |
>>      |   ACK       |
>>      |<------------+
>>      |             |
>>
>>
>> Sink starts by sending a message I will label "SUB" to the Source. =
The
SUB messages says which resource the Sink would like to be informed =
about
when the resource changes. The Source sends a OK or No there is a =
problem in
some sort of ACK message to the SUB. Eventually the resource changes and
Source sends an message I called "NOTIFY" to the Sink. This tells the =
Sink
which resource changed and the current value of it.The Sink sends some =
sort
of acknowledgment. I find the terms client and server very confusing =
when
discussing SUB/NOT so I'm not using those terms.
>>
>> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, =
or
plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell,
pretty much everything people have been proposing fit into this model.  =
So
first, I'd like to get an idea if people think I am in left field and =
there
is a very different message flow to consider. Second we need to figure =
out
some of the stuff I left out of the picture above such as
>>
>> a) how to cancel a subscription
>> [if sink node POST a new entry into the subscribers list on that
resource, then it can DELETE it]
>>
>> b) how to get the initial value of the subscription around the time =
you
subscribe
>> [the ACK  could be a response message containing the current value of =
the
subscribed resource at time of subscription]
>>
>> c) what sort of filtering is available to limit the types of resource
changes that result in a NOTIFY
>> [it seems application specific; for example, you can define a sort of
trigger with thresholds and hysteresis to avoid bouncing]
>>
>> d) lifespan of subscription how to refresh a subscription
>> [it seems application specific; sink and source nodes can agree on a
subscription lifetime: sink can refresh the subscription by sending a =
new
SUB request]
>>
>> e) caching and interaction with sleeping device
>> [mmhh =85 no have cents for now. sorry]
>>
>>
>> We have to be clear on how this maps to HTTP and possibly other
protocols. One of the problems with HTTP is it has so many ways of doing
asynchronous notifications that it hard to decide what to map for. I =
would
be very conformable if we clearly new how to map it to HiBy and to =
direct
HTTP polling. It would be nice to have  back of the cocktail napkin =
belief
that it probably could be mapped to SMNP, XMPP, and the other HTTP
approaches. My guess is that the mapping to other protocols is going to =
turn
out to be easy.
>>
>>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>


------=_NextPart_000_0014_01CB0696.DC5D1560
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Diso-8859-1">
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" =
xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>

<meta name=3DGenerator content=3D"Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Courier;
	panose-1:2 7 4 9 2 2 5 2 4 4;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
span.E-MailFormatvorlage17
	{mso-style-type:personal;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
span.E-MailFormatvorlage18
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 2.0cm 2.0cm 2.0cm;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=3DDE link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I apologize, but I cross post the answer in both threads
handling the same topic (from my point of view). <o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>----------------------------<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Are we discussing the same topic now in 2 separated =
threads?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><a
href=3D"http://www.ietf.org/mail-archive/web/core/current/msg00281.html">=
http://www.ietf.org/mail-archive/web/core/current/msg00281.html</a><o:p><=
/o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>&gt;Multiple response messages to the same initial GET =
request
message?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>In the thread of the link above is already a discussion =
raised
by Zach about asynchronous messaging pattern that fits into this =
question.<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>&gt;how to keep track of initial GET request and =
subsequent
responses? using a sort of transaction id shared among request and =
responses
messages?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Jep, ist required. But not only for subscriptions, =
because of async
messaging for all messages!<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>&gt;how to fit with REST requirements? =
safety/idempotency?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>That&#8217;s the beaf. Is sub/not THE extension that does =
not fit into
REST?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>&gt;how to distinguish this by a classic GET =
request/response
transaction (one request followed by only one =
response)?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Same as above. GET is semantically clear for a single =
request/response,
but not as both singe GET and event subscription.<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>&gt;how to realize spontaneous notifications, i.e. =
notifications
no triggered by a subscription? <o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>What is a notification without a subscription? =
Broadcasting
messages? Spam?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Guido</span><span lang=3DEN-US =
style=3D'font-size:11.0pt;font-family:
"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span =
style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style=3D'border:none;border-left:solid blue 1.5pt;padding:0cm 0cm =
0cm 4.0pt'>

<div>

<div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt =
0cm 0cm 0cm'>

<p class=3DMsoNormal><b><span =
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Von:</span><=
/b><span
style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
core-bounces@ietf.org [mailto:core-bounces@ietf.org] <b>Im Auftrag von =
</b>Adriano
Pezzuto (apezzuto)<br>
<b>Gesendet:</b> Montag, 7. Juni 2010 10:30<br>
<b>An:</b> Angelo P. Castellani; Cullen Jennings (fluffy)<br>
<b>Cc:</b> core<br>
<b>Betreff:</b> Re: [core] SUB/NOT - the sea level =
view<o:p></o:p></span></p>

</div>

</div>

<p class=3DMsoNormal><o:p>&nbsp;</o:p></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Hi<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>not sure to understand but it sounds as an interesting =
way to
see things. Multiple response messages to the same initial GET request =
message?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>The initial GET request acts as subscription request to a
certain resource. The first response message returns the value of the =
resource
at time of subscription and subsequent responses act as notification =
messages
about resource changes in the time.<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Questions:<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>how to keep track of initial GET request and subsequent
responses? using a sort of transaction id shared among request and =
responses
messages?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>how to fit with REST requirements? =
safety/idempotency?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>how to distinguish this by a classic GET request/response
transaction (one request followed by only one =
response)?<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>how to realize spontaneous notifications, i.e. =
notifications no
triggered by a subscription? <o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-family:"Calibri","sans-serif";
color:#1F497D'>Adriano<o:p></o:p></span></p>

<p class=3DMsoNormal><span lang=3DEN-US =
style=3D'font-size:10.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt =
0cm 0cm 0cm'>

<p class=3DMsoNormal><b><span lang=3DEN-US =
style=3D'font-size:10.0pt;font-family:
"Tahoma","sans-serif"'>From:</span></b><span lang=3DEN-US =
style=3D'font-size:10.0pt;
font-family:"Tahoma","sans-serif"'> angelo.castellani@gmail.com
[mailto:angelo.castellani@gmail.com] <b>On Behalf Of </b>Angelo P. =
Castellani<br>
<b>Sent:</b> luned=EC 7 giugno 2010 9.59<br>
<b>To:</b> Cullen Jennings (fluffy)<br>
<b>Cc:</b> Adriano Pezzuto (apezzuto); core<br>
<b>Subject:</b> Re: [core] SUB/NOT - the sea level =
view<o:p></o:p></span></p>

</div>

<p class=3DMsoNormal><span lang=3DEN-US><o:p>&nbsp;</o:p></span></p>

<p class=3DMsoNormal style=3D'margin-bottom:12.0pt'><span lang=3DEN-US>I =
agree with
Adriano comments, and I really like the POST/DELETE (or GET?) mapping of =
the
subscriptions. We really need to define new HTTP verbs to define a =
standard a
subscription format?<br>
<br>
What if we define the best HTTP-mapped subscription?<br>
<br>
A solution can be, a SUBSCRIBE action is nothing more than a GET which
responses are repeated using some criterion (threshold, every N seconds, =
etc.).<br>
<br>
The trigger of the response, in my opinion, can be ranging a lot =
depending upon
the application, so could be inserted in the body of the request. A =
possible
version of the body format can be agreed, however it should be =
extensible to
fit particular cases.<br>
<br>
ACK'ing the request or the responses is really transport dependant. If =
we use
TCP, ACKs are already there. If we use UDP, some ACK packet format can =
be
agreed to provide some level of reliability to UDP. etc.<br>
<br>
</span><b><span lang=3DEN-US =
style=3D'font-size:10.5pt;font-family:Courier'>&nbsp;&nbsp;
Source &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
Sink
&nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; =
GET
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; =
&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; |&lt;-----------------------+ &nbsp; &nbsp; &nbsp;
&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; |&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; RES =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp; |&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; +-----------------------&gt;| &nbsp; &nbsp; &nbsp;
&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; <br>
... Time Passes, something triggers in the Source ... &nbsp; &nbsp; =
&nbsp;
&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; RES&nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp;&nbsp; | &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br>
&nbsp;&nbsp; &nbsp; +-----------------------&gt;|&nbsp;&nbsp; &nbsp; =
&nbsp;
&nbsp; &nbsp;<br>
<br>
<br>
</span></b><span lang=3DEN-US>To realize this we can define some Options =
that
will make that GET (or POST?) request have the same meaning of a =
SUBSCRIBE
(seems easier to define new Options to make this eventually adopted by =
HTTP, or
maybe there is some Option already there we can overload in some =
way).<br>
<br>
Repeats? Repeats-Every? Lifetime?<br>
<br>
In this way we have easily the very initial value, and because the =
packet
format is the same for a standard response and for a NOTIFY its easier =
for a
CoAP/HTTP proxy to update its cached value.<br>
<br>
Subscription can be updated/refreshed/deleted with the same message GET =
(or
POST?) message (delete -&gt; Repeats=3Dfalse) and we can get in this way =
the
value on subscription deletion.<br>
<br>
In this way I'm quite confident that node software architecture also can =
be
simpler, because a lot of code/procedures can be shared between GET and
SUBSCRIBE/NOTIFY with no particular effort.<br>
<br>
Angelo<br>
</span><b><span lang=3DEN-US =
style=3D'font-size:10.5pt;font-family:Courier'><br>
</span></b><span lang=3DEN-US>On Fri, Jun 4, 2010 at 23:49, Cullen =
Jennings &lt;<a
href=3D"mailto:fluffy@cisco.com">fluffy@cisco.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Great points - thanks.<br>
&gt;<br>
&gt; Just as a bit of other information for the WG, I'll try and =
describe how
SIP solved these problems. SIP has different design goals so what they =
did is
probably not appropriate for all of these but it is at least something =
to be
aware of. My apologies to the SIP experts on the list that know this but =
seems
worth mentioning for folks that don't.<br>
&gt;<br>
&gt;<br>
&gt; On Jun 4, 2010, at 1:22 PM, Adriano Pezzuto (apezzuto) wrote:<br>
&gt;<br>
&gt;&gt; my two cents<br>
&gt;&gt;<br>
&gt;&gt; a) how to cancel a subscription<br>
&gt;&gt; [if sink node POST a new entry into the subscribers list on =
that
resource, then it can DELETE it]<br>
&gt;<br>
&gt; I can see how that works but looks like it might involve a few =
roundtrips.
What SIP does is it &quot;refreshes&quot; the subscriptions with an =
expiry time
of zero which causes it to instantly expire and go away. More of how the
refresh works down in point d.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; b) how to get the initial value of the subscription around the =
time
you subscribe<br>
&gt;&gt; [the ACK &nbsp;could be a response message containing the =
current
value of the subscribed resource at time of subscription]<br>
&gt;<br>
&gt; I like the approach you are proposing. What SIP does is it sends a =
NOTIFY
as soon as the SUBcription happens. This was done due a variety of =
reasons but
a big part is SIP has some pretty significant problems with negotiating =
size of
responses. This would cause problems where the ACK ended up being too =
large in
SIP. I don't think we would have the problem in COAP so sending it in =
the ACK
might be better.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; c) what sort of filtering is available to limit the types of =
resource
changes that result in a NOTIFY<br>
&gt;&gt; [it seems application specific; for example, you can define a =
sort of
trigger with thresholds and hysteresis to avoid bouncing]<br>
&gt;<br>
&gt; The SIP guys went round and round discussing a variety of =
increasingly
complicated generalized solutions which were never general enough to =
meet all
the use cases. Eventually &nbsp;they came to the conclusion that it was
application specific.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; d) lifespan of subscription how to refresh a subscription<br>
&gt;&gt; [sink and source nodes can agree on a subscription lifetime: =
sink can
refresh the subscription by sending a new SUB request]<br>
&gt;<br>
&gt; This is roughly what SIP does. The Sink proposes the max expiry =
time it
wants. The Source can make this smaller (but not larger) and returns the
&quot;expiry time&quot; &nbsp;in the ACK. The Sink has to refresh the
subscription before the expiry time by sending a new SUB. I suspect this =
would
wok well for COAP.<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; e) caching and interaction with sleeping device<br>
&gt;&gt; [mmhh &#8230; no have cents for now. sorry]<br>
&gt;<br>
&gt; SIP has these, uh, I'm never going to manage to explain this in a
paragraph but if you are feeling masochistic you can go read RFC 2778, =
3265,
3903, 4662, 4479, and 5839 as a starting point them move into the many =
RFCs on
the compression and optimization approaches. I'd suggest the full blow =
SIP
approach is probably a bit complex for constrained devices.<br>
&gt;<br>
&gt; I can easily imagine something where a COAP cache or caching proxy =
to HTTP
just subscribes to the resource. That way the cache is always up to date =
and
when the cache receives a GET or SUBSCRIBE for the resource, it can just
respond with the correct data. The device that has the resource can =
sleep and
just update the cache any time the resource changes. To make a scheme =
like this
work really well it might be nice if a Source that received a SUB could
redirect the Sink to send the subscribe to a cache that the Source knew =
was willing
to cache the data. It also allows a cache that see a NOTIFY go by to =
update it
data for that resource.<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Adriano<br>
&gt;&gt;<br>
&gt;&gt; From: <a =
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a>
[mailto:<a =
href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a>] On
Behalf Of Cullen Jennings (fluffy)<br>
&gt;&gt; Sent: venerd=EC 4 giugno 2010 20.34<br>
&gt;&gt; To: core<br>
&gt;&gt; Subject: [core] SUB/NOT - the sea level view<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Over the year I have had the pleasure of being in many =
conversations
about what a stateless protocol is, what REST is, HTTP, polling, =
asynchronous
notifications, web based RPC, and blowing soap bubbles. &nbsp;Though
interesting, I have a hard time concretely explaining it to anyone and =
the
oxygen always seems a bit thin at the 10,000 foot view. I do however =
have a
very easy time understanding a very low level view of the systems where =
there
are &nbsp;some boxes and arrow diagrams of &nbsp;message flow and =
roughly the
semantics of the data they cary. Let me try and draw my current =
understanding
of how this is going to work.<br>
&gt;&gt;<br>
&gt;&gt; We have two nodes - I will call them Source and Sink.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; &nbsp; &nbsp;Source &nbsp; &nbsp; &nbsp; &nbsp; Sink<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp;SUB &nbsp; &nbsp; =
&nbsp;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;|&lt;------------+<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp;ACK &nbsp; &nbsp; =
&nbsp;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;+------------&gt;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; ... Time Passes ...<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; NOTIF &nbsp; &nbsp; |<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;+------------&gt;|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; ACK &nbsp; &nbsp; &nbsp; |<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;|&lt;------------+<br>
&gt;&gt; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =
|<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Sink starts by sending a message I will label &quot;SUB&quot; =
to the
Source. The SUB messages says which resource the Sink would like to be =
informed
about when the resource changes. The Source sends a OK or No there is a =
problem
in some sort of ACK message to the SUB. Eventually the resource changes =
and
Source sends an message I called &quot;NOTIFY&quot; to the Sink. This =
tells the
Sink which resource changed and the current value of it.The Sink sends =
some
sort of acknowledgment. I find the terms client and server very =
confusing when
discussing SUB/NOT so I'm not using those terms.<br>
&gt;&gt;<br>
&gt;&gt; The Sink could be a HTTP proxy that mapped this to COMET, =
WebSocket,
or plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell,
pretty much everything people have been proposing fit into this model. =
&nbsp;So
first, I'd like to get an idea if people think I am in left field and =
there is
a very different message flow to consider. Second we need to figure out =
some of
the stuff I left out of the picture above such as<br>
&gt;&gt;<br>
&gt;&gt; a) how to cancel a subscription<br>
&gt;&gt; [if sink node POST a new entry into the subscribers list on =
that
resource, then it can DELETE it]<br>
&gt;&gt;<br>
&gt;&gt; b) how to get the initial value of the subscription around the =
time
you subscribe<br>
&gt;&gt; [the ACK &nbsp;could be a response message containing the =
current
value of the subscribed resource at time of subscription]<br>
&gt;&gt;<br>
&gt;&gt; c) what sort of filtering is available to limit the types of =
resource
changes that result in a NOTIFY<br>
&gt;&gt; [it seems application specific; for example, you can define a =
sort of
trigger with thresholds and hysteresis to avoid bouncing]<br>
&gt;&gt;<br>
&gt;&gt; d) lifespan of subscription how to refresh a subscription<br>
&gt;&gt; [it seems application specific; sink and source nodes can agree =
on a
subscription lifetime: sink can refresh the subscription by sending a =
new SUB
request]<br>
&gt;&gt;<br>
&gt;&gt; e) caching and interaction with sleeping device<br>
&gt;&gt; [mmhh &#8230; no have cents for now. sorry]<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; We have to be clear on how this maps to HTTP and possibly other
protocols. One of the problems with HTTP is it has so many ways of doing
asynchronous notifications that it hard to decide what to map for. I =
would be
very conformable if we clearly new how to map it to HiBy and to direct =
HTTP
polling. It would be nice to have &nbsp;back of the cocktail napkin =
belief that
it probably could be mapped to SMNP, XMPP, and the other HTTP =
approaches. My
guess is that the mapping to other protocols is going to turn out to be =
easy.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; core mailing list<br>
&gt; <a href=3D"mailto:core@ietf.org">core@ietf.org</a><br>
&gt; <a =
href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org/=
mailman/listinfo/core</a><br>
&gt;<o:p></o:p></span></p>

</div>

</div>

</body>

</html>

------=_NextPart_000_0014_01CB0696.DC5D1560--

From mark@coactus.com  Mon Jun  7 14:19:35 2010
Return-Path: <mark@coactus.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id EF8633A686B for <core@core3.amsl.com>; Mon,  7 Jun 2010 14:19:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.977
X-Spam-Level: 
X-Spam-Status: No, score=-101.977 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id LEC8COjbkypX for <core@core3.amsl.com>; Mon,  7 Jun 2010 14:19:35 -0700 (PDT)
Received: from mail-yw0-f179.google.com (mail-yw0-f179.google.com [209.85.211.179]) by core3.amsl.com (Postfix) with ESMTP id 457C13A6834 for <core@ietf.org>; Mon,  7 Jun 2010 14:19:35 -0700 (PDT)
Received: by ywh9 with SMTP id 9so3691950ywh.17 for <core@ietf.org>; Mon, 07 Jun 2010 14:19:33 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.101.182.2 with SMTP id j2mr17002352anp.210.1275945573186; Mon,  07 Jun 2010 14:19:33 -0700 (PDT)
Sender: mark@coactus.com
Received: by 10.100.119.2 with HTTP; Mon, 7 Jun 2010 14:19:33 -0700 (PDT)
In-Reply-To: <AANLkTilMI8Wh0HhGcHulrinGukYYxr57VQ68XRkfVr4F@mail.gmail.com>
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com> <0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com> <E2549175-1A08-4ED9-8B8D-A30DBA89CF01@cisco.com> <AANLkTilerORXUJQoXqpIHA3a0ZRhCVnegrChv-batP-D@mail.gmail.com> <0D212BD466921646B58854FB79092CEC0232F78F@XMB-AMS-106.cisco.com> <AANLkTilMI8Wh0HhGcHulrinGukYYxr57VQ68XRkfVr4F@mail.gmail.com>
Date: Mon, 7 Jun 2010 17:19:33 -0400
X-Google-Sender-Auth: unPdg1-4F7WMwnoh0_QEskHBHZM
Message-ID: <AANLkTimXc4v0WBiDosmvxO0dL1-0Rp5b3bUASYOVXlhb@mail.gmail.com>
From: Mark Baker <distobj@acm.org>
To: "Angelo P. Castellani" <angelo@castellani.net>
Content-Type: text/plain; charset=ISO-8859-1
Cc: core <core@ietf.org>
Subject: Re: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Jun 2010 21:19:36 -0000

On Mon, Jun 7, 2010 at 5:10 AM, Angelo P. Castellani
<angelo@castellani.net> wrote:
>> how to fit with REST requirements? safety/idempotency?
>
> I don't feel that subscription "changes the resource state" in some way but
> it only changes the way the resource *reports* its actual state.

The issue with GET and safety isn't whether the resource changes state
or not, its that the client is explicitly *only* asking that
information be returned.

What you're describing here is where the sender of the GET has the
intention of establishing a long-lived relationship.  Such an exchange
is therefore *not* safe, and so cannot use GET.

Mark.

From karl@ostendorf.com  Mon Jun  7 23:39:30 2010
Return-Path: <karl@ostendorf.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 0901A28C0D0 for <core@core3.amsl.com>; Mon,  7 Jun 2010 23:39:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.118
X-Spam-Level: 
X-Spam-Status: No, score=-0.118 tagged_above=-999 required=5 tests=[BAYES_20=-0.74, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id l1YuaknEoVh8 for <core@core3.amsl.com>; Mon,  7 Jun 2010 23:39:29 -0700 (PDT)
Received: from mail-ww0-f44.google.com (mail-ww0-f44.google.com [74.125.82.44]) by core3.amsl.com (Postfix) with ESMTP id E97F228C0CF for <core@ietf.org>; Mon,  7 Jun 2010 23:39:28 -0700 (PDT)
Received: by wwc33 with SMTP id 33so311902wwc.31 for <core@ietf.org>; Mon, 07 Jun 2010 23:39:27 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.227.146.207 with SMTP id i15mr620490wbv.214.1275979166990;  Mon, 07 Jun 2010 23:39:26 -0700 (PDT)
Received: by 10.216.157.139 with HTTP; Mon, 7 Jun 2010 23:39:26 -0700 (PDT)
In-Reply-To: <2970989601747517847@unknownmsgid>
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com> <OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com> <0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com> <6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com> <4C06F48D.1020600@cisco.com> <87vda0u9ry.fsf@kelsey-ws.hq.ember.com> <4C08098E.50305@gridmerge.com> <4C083143.1060905@cisco.com> <4C08DBAC.8030108@gridmerge.com> <1944526115059294389@unknownmsgid> <AANLkTinXDHd1Oujr_Kj8t6zy_na6AT2_CNcH3-wn5QHB@mail.gmail.com> <2970989601747517847@unknownmsgid>
Date: Tue, 8 Jun 2010 08:39:26 +0200
Message-ID: <AANLkTim7ERBklZBIBI-KBply2z7lqXfscOmQtPhxjHnK@mail.gmail.com>
From: Karl Ostendorf <karl@ostendorf.com>
To: core@ietf.org
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 08 Jun 2010 06:39:30 -0000

I see your point, yes, there is no concept of "pushing" in REST.

On Mon, Jun 7, 2010 at 22:52, Guido Moritz <guido.moritz@uni-rostock.de> wr=
ote:
>> It is quite plausible under REST that PUT/POST could be used to create
>> an active subscription on a node which would then be assigned its own
>> URI at which to access it (similar to the Atom feed protocol).
> Right, the creation of this subscription resource might possible using RE=
STful CRUD. But in origin REST design, the resource must be requested/invok=
ed by the client. But the required behavior for sub/not means an active res=
ource, sending out events on state changes instead of request/response. I t=
hink this fits not into origin RESTful design principles!?
>
> Guido
>

From andreas.as.scholz@siemens.com  Tue Jun  8 02:44:24 2010
Return-Path: <andreas.as.scholz@siemens.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 48A7D28C156 for <core@core3.amsl.com>; Tue,  8 Jun 2010 02:44:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.649
X-Spam-Level: 
X-Spam-Status: No, score=-3.649 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id woV7mNkETwQ7 for <core@core3.amsl.com>; Tue,  8 Jun 2010 02:44:22 -0700 (PDT)
Received: from goliath.siemens.de (goliath.siemens.de [192.35.17.28]) by core3.amsl.com (Postfix) with ESMTP id 3A2F328C13E for <core@ietf.org>; Tue,  8 Jun 2010 02:44:22 -0700 (PDT)
Received: from mail2.siemens.de (mail2.siemens.de [139.25.208.11]) by goliath.siemens.de (8.12.11.20060308/8.12.11) with ESMTP id o589iL9H011696 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <core@ietf.org>; Tue, 8 Jun 2010 11:44:21 +0200
Received: from DEMCHP99ET3MSX.ww902.siemens.net ([139.25.131.243]) by mail2.siemens.de (8.12.11.20060308/8.12.11) with ESMTP id o589iLLu026734 for <core@ietf.org>; Tue, 8 Jun 2010 11:44:21 +0200
Received: from DEMCHP99E15MSX.ww902.siemens.net ([169.254.2.42]) by DEMCHP99ET3MSX.ww902.siemens.net ([139.25.131.243]) with mapi; Tue, 8 Jun 2010 11:44:21 +0200
From: "Scholz, Andreas" <andreas.as.scholz@siemens.com>
To: core <core@ietf.org>
Date: Tue, 8 Jun 2010 11:44:19 +0200
Thread-Topic: [core] Fwd: New Version Notification for draft-ietf-core-coap-00
Thread-Index: AcsGZmZ7RxhmH8ulTmmTkn14PAJ6fQAhl5Ug
Message-ID: <84BE493435BE6F499912056CD079FE5A01C18F0E8C@DEMCHP99E15MSX.ww902.siemens.net>
References: <20100607145200.988943A69B1@core3.amsl.com> <4DCE9944-2826-4360-AD52-ACA80695A793@sensinode.com>
In-Reply-To: <4DCE9944-2826-4360-AD52-ACA80695A793@sensinode.com>
Accept-Language: de-DE
Content-Language: de-DE
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
acceptlanguage: de-DE
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Subject: Re: [core] Fwd: New Version Notification for draft-ietf-core-coap-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 08 Jun 2010 09:44:24 -0000

The following considerations are all from an automation point of view, i.e.=
, I want to use subscriptions not for collecting monitoring values, but for=
 connecting sensors and actuators.

I have a practical question concerning the subscription mechanism. Assume I=
 want to use subscriptions to establish a M2M communication, e.g. to connec=
t a light switch to a light bulb. In order to receive notifications wheneve=
r the switch is pressed, the light bulb has to subscribe to a resource on t=
he switch.=20

How is this done in a practical setting? The user creating this subscriptio=
n is sitting at a control pc connected to the network (Such subscriptions c=
annot be established automatically, because the decission which switch is c=
onnected to which lamp is often solely driven by user preferences). I can s=
ee two ways for creating this subscription:

Option 1: "3rd party subscription"
The user issues a subscribe to the switch resource *on behalf* of the lamp.=
 The lamp will receive the corresponding notifications (and perhaps may als=
o cancel the subscription?). This would require an extension of the current=
ly proposed subscription message.

Option 2: "triggered subscription"
The user tells the light to subscribe at the switch. But how? One solution =
that comes to my mind is to define a "subscribe to target" endpoint on the =
light and the user posts the address of the switch to this endpoint. The li=
ght will then subscribe to the posted address. I am a little bit concerned =
that this will lead to a multitude of different "subscribe to target" endpo=
ints with different interfaces.=20

Are there other solutions?=20


Perhaps this question is also related to the other discussions concerning s=
ub/notify. If CoAP is aimed at networks with a central controller that cont=
rols all devices, the current subscription mechanism is sufficient (the con=
troller could even pull all devices so we do not need subscriptions at all)=
. This resembles more or less the traditional, centralized architecture of =
control applications.

The alternative (and in my opinion more appealing) solution is to allow a d=
istribution of the control logic on the nodes in the network. These distrib=
uted parts are then linked together via subscriptions. The tricky part here=
 is that the management will still be performed from a central station.


Andreas

_______________________________________________
Andreas Scholz
Siemens AG
Corporate Technology
Communication Systems & Control Networks
CT T DE IT2
Otto-Hahn-Ring 6
81739 Munich, Germany
Tel.: +49 (89) 636-29302
Fax: +49 (89) 636-51115
mailto:andreas.as.scholz@siemens.com

Siemens Aktiengesellschaft: Chairman of the Supervisory Board: Gerhard Crom=
me; Managing Board: Peter Loescher, Chairman, President and Chief Executive=
 Officer; Wolfgang Dehen, Heinrich Hiesinger, Joe Kaeser, Barbara Kux, Herm=
ann Requardt, Siegfried Russwurm, Peter Y. Solmssen; Registered offices: Be=
rlin and Munich, Germany; Commercial registries: Berlin Charlottenburg, HRB=
 12300, Munich, HRB 6684; WEEE-Reg.-No. DE 23691322



-----Original Message-----
From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of Zac=
h Shelby
Sent: Monday, June 07, 2010 5:00 PM
To: core
Subject: [core] Fwd: New Version Notification for draft-ietf-core-coap-00

Hi,

http://www.ietf.org/id/draft-ietf-core-coap-00.txt

A new version of the (now working group) document for CoAP has been posted =
(note it became -00 again as it now has a draft-ietf name). We integrated a=
 bunch of editorial comments, removed the TCP binding, removed the Magic By=
te header and Uri-Code for now, and marked the Sub/Notify feature as Experi=
mental while we are discussing the new design in the WG. Managed to make a =
doc a couple pages shorter ;-) Next step is to make WG trac tickets for all=
 the open issues and TODOs, these we should plan to close by the next relea=
se of the doc planned for the end of June.=20

   Changes from shelby-01 to ietf-00:

      o Removed the TCP binding section, left open for the future.

      o Fixed a bug in the example.

      o Marked current Sub/Notify as (Experimental) while under WG
      discussion.

      o Temporarily removed the Magic Byte header as TCP is no longer
      included as a binding.

      o Removed the Uri-code Option as different URI encoding schemes
      are being discussed.

      o Changed the rel=3D field to desc=3D for resource discovery.

      o Changed the maximum message size to 1024 bytes to allow for IP/
      UDP headers.

      o Made the URI slash optimization and method impotence MUSTs

      o Minor editing and bug fixing.
 =20

Begin forwarded message:

> From: IETF I-D Submission Tool <idsubmission@ietf.org>
> Date: June 7, 2010 5:52:00 PM GMT+03:00
> To: zach@sensinode.com
> Cc: brian@skyfoundry.com,d.sturek@att.net
> Subject: New Version Notification for draft-ietf-core-coap-00=20
>=20
>=20
> A new version of I-D, draft-ietf-core-coap-00.txt has been successfully s=
ubmitted by Zach Shelby and posted to the IETF repository.
>=20
> Filename:	 draft-ietf-core-coap
> Revision:	 00
> Title:		 Constrained Application Protocol (CoAP)
> Creation_date:	 2010-06-07
> WG ID:		 core
> Number_of_pages: 30
>=20
> Abstract:
> This document specifies the Constrained Application Protocol (CoAP),
> a specialized transfer protocol for use with constrained networks and
> nodes for machine-to-machine applications such as smart energy and
> building automation.  These constrained nodes often have 8-bit
> microcontrollers with small amounts of ROM and RAM, while networks
> such as 6LoWPAN often have high packet error rates and typical
> throughput of 10s of kbit/s.  CoAP provides request/reply and
> subscribe/notify interaction models between application end-points,
> supports built-in resource discovery, and includes key web concepts
> such as URIs and RESTful methods.  CoAP easily translates to HTTP for
> integration with the web while meeting specialized requirements such
> as multicast support, very low overhead and simplicity for
> constrained environments.
>=20
>=20
>=20
> The IETF Secretariat.
>=20
>=20

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297

_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core

From angelo.castellani@gmail.com  Tue Jun  8 05:27:42 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 71E4E28C196 for <core@core3.amsl.com>; Tue,  8 Jun 2010 05:27:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.53
X-Spam-Level: 
X-Spam-Status: No, score=0.53 tagged_above=-999 required=5 tests=[AWL=0.092, BAYES_40=-0.185, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5bFvMFCHyE65 for <core@core3.amsl.com>; Tue,  8 Jun 2010 05:27:41 -0700 (PDT)
Received: from mail-gw0-f44.google.com (mail-gw0-f44.google.com [74.125.83.44]) by core3.amsl.com (Postfix) with ESMTP id 4BE9028C173 for <core@ietf.org>; Tue,  8 Jun 2010 05:27:41 -0700 (PDT)
Received: by gwj21 with SMTP id 21so1400021gwj.31 for <core@ietf.org>; Tue, 08 Jun 2010 05:27:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type; bh=PRDso+Kiffl2DeanOm0P3SfFjLIk5klI51zemqOMgSs=; b=fT6/+k/ZNUJANICp5dGrYp4ZkbheQmizkwKid4dukMCI1x92ZjEtZyP7b38U8r60mB ysSoN7fIVsoSBaXm1sDLSDNM9xXVaWQTORqQ+f/ruko5x+YnwULe/yu+YLSxg5jOD5lb n+P+iDGwXmbnkwi956EAaY9Sne4d8KjYptUk8=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; b=io4DosrKfMBo2JDpAcfCx9z9EnIJ1969nJKn8BBG5x8WEkstlXp/CgyqhVuCzXu+yL qP2r11oF1qDQeEzsOsE4Xam/mfS7IqiL/GD//wDK22U5uB5iqAUI70ZfapxEjDmmxEzf qSeAroom6jfTHvQzMQ7oI9XMRaazZfWKB273M=
MIME-Version: 1.0
Received: by 10.90.7.34 with SMTP id 34mr8039621agg.96.1276000058861; Tue, 08  Jun 2010 05:27:38 -0700 (PDT)
Sender: angelo.castellani@gmail.com
Received: by 10.90.54.12 with HTTP; Tue, 8 Jun 2010 05:27:38 -0700 (PDT)
In-Reply-To: <AANLkTimXc4v0WBiDosmvxO0dL1-0Rp5b3bUASYOVXlhb@mail.gmail.com>
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com> <0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com> <E2549175-1A08-4ED9-8B8D-A30DBA89CF01@cisco.com> <AANLkTilerORXUJQoXqpIHA3a0ZRhCVnegrChv-batP-D@mail.gmail.com> <0D212BD466921646B58854FB79092CEC0232F78F@XMB-AMS-106.cisco.com> <AANLkTilMI8Wh0HhGcHulrinGukYYxr57VQ68XRkfVr4F@mail.gmail.com> <AANLkTimXc4v0WBiDosmvxO0dL1-0Rp5b3bUASYOVXlhb@mail.gmail.com>
Date: Tue, 8 Jun 2010 14:27:38 +0200
X-Google-Sender-Auth: LDKl1OCR0YmPBn1vDHdYkiKbJZo
Message-ID: <AANLkTimdNB3Jh-Urri9XYXxDtU_eiKOlblWjNqhB8Lay@mail.gmail.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
To: Mark Baker <distobj@acm.org>
Content-Type: multipart/alternative; boundary=0016e64651043de9d2048883eaa6
Cc: core <core@ietf.org>
Subject: Re: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 08 Jun 2010 12:27:42 -0000

--0016e64651043de9d2048883eaa6
Content-Type: text/plain; charset=ISO-8859-1

Mark,

I understand your point, however I write just some more thoughts about this.

Reading RFC2626 Sec. 9.1.1, what I understand using a GET or a HEAD implies
that no action is taken on the server. In this way an user knows that GET is
a "safe" request, no "damage" can happen because of this.

But if one GET is safe, a recurrent GET seems still safe; surely a
relationship is defined (at transport when possible and yes it can be very
long).

Having a look at the RFC is said that GET SHOULD be safe (no MUST)...

In my opinion there are benefits in choosing GET to do something like this,
mainly the simplified software architecture in the node and/or proxy.

Best,
Angelo

On Mon, Jun 7, 2010 at 23:19, Mark Baker <distobj@acm.org> wrote:

> On Mon, Jun 7, 2010 at 5:10 AM, Angelo P. Castellani
> <angelo@castellani.net> wrote:
> >> how to fit with REST requirements? safety/idempotency?
> >
> > I don't feel that subscription "changes the resource state" in some way
> but
> > it only changes the way the resource *reports* its actual state.
>
> The issue with GET and safety isn't whether the resource changes state
> or not, its that the client is explicitly *only* asking that
> information be returned.
>
> What you're describing here is where the sender of the GET has the
> intention of establishing a long-lived relationship.  Such an exchange
> is therefore *not* safe, and so cannot use GET.
>
> Mark.
>

--0016e64651043de9d2048883eaa6
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Mark,<br><br>I understand your point, however I write just some more though=
ts about this.<br><br>Reading RFC2626 Sec. 9.1.1, what I understand using a=
 GET or a HEAD implies that no action is taken on the server. In this way a=
n user knows that GET is a &quot;safe&quot; request, no &quot;damage&quot; =
can happen because of this.<br>
<br>But if one GET is safe, a recurrent GET seems still safe; surely a rela=
tionship is defined (at transport when possible and yes it can be very long=
).<br><br>Having a look at the RFC is said that GET SHOULD be safe (no MUST=
)...<br>
<br>In my opinion there are benefits in choosing GET to do something like t=
his, mainly the simplified software architecture in the node and/or proxy.<=
br><br>Best,<br>Angelo<br><br><div class=3D"gmail_quote">On Mon, Jun 7, 201=
0 at 23:19, Mark Baker <span dir=3D"ltr">&lt;<a href=3D"mailto:distobj@acm.=
org">distobj@acm.org</a>&gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class=3D"im"=
>On Mon, Jun 7, 2010 at 5:10 AM, Angelo P. Castellani<br>
&lt;<a href=3D"mailto:angelo@castellani.net">angelo@castellani.net</a>&gt; =
wrote:<br>
&gt;&gt; how to fit with REST requirements? safety/idempotency?<br>
&gt;<br>
&gt; I don&#39;t feel that subscription &quot;changes the resource state&qu=
ot; in some way but<br>
&gt; it only changes the way the resource *reports* its actual state.<br>
<br>
</div>The issue with GET and safety isn&#39;t whether the resource changes =
state<br>
or not, its that the client is explicitly *only* asking that<br>
information be returned.<br>
<br>
What you&#39;re describing here is where the sender of the GET has the<br>
intention of establishing a long-lived relationship. =A0Such an exchange<br=
>
is therefore *not* safe, and so cannot use GET.<br>
<font color=3D"#888888"><br>
Mark.<br>
</font></blockquote></div><br>

--0016e64651043de9d2048883eaa6--

From mark@coactus.com  Tue Jun  8 06:08:08 2010
Return-Path: <mark@coactus.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 8679F28C199 for <core@core3.amsl.com>; Tue,  8 Jun 2010 06:08:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -100.677
X-Spam-Level: 
X-Spam-Status: No, score=-100.677 tagged_above=-999 required=5 tests=[AWL=-1.300, BAYES_50=0.001, FM_FORGED_GMAIL=0.622, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rcSYpo0wuPX7 for <core@core3.amsl.com>; Tue,  8 Jun 2010 06:08:07 -0700 (PDT)
Received: from mail-yw0-f179.google.com (mail-yw0-f179.google.com [209.85.211.179]) by core3.amsl.com (Postfix) with ESMTP id BF56728C0DB for <core@ietf.org>; Tue,  8 Jun 2010 06:08:02 -0700 (PDT)
Received: by ywh9 with SMTP id 9so4454475ywh.17 for <core@ietf.org>; Tue, 08 Jun 2010 06:08:01 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.101.180.28 with SMTP id h28mr16647330anp.243.1276002480876;  Tue, 08 Jun 2010 06:08:00 -0700 (PDT)
Sender: mark@coactus.com
Received: by 10.100.119.2 with HTTP; Tue, 8 Jun 2010 06:07:59 -0700 (PDT)
In-Reply-To: <AANLkTimdNB3Jh-Urri9XYXxDtU_eiKOlblWjNqhB8Lay@mail.gmail.com>
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com> <0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com> <E2549175-1A08-4ED9-8B8D-A30DBA89CF01@cisco.com> <AANLkTilerORXUJQoXqpIHA3a0ZRhCVnegrChv-batP-D@mail.gmail.com> <0D212BD466921646B58854FB79092CEC0232F78F@XMB-AMS-106.cisco.com> <AANLkTilMI8Wh0HhGcHulrinGukYYxr57VQ68XRkfVr4F@mail.gmail.com> <AANLkTimXc4v0WBiDosmvxO0dL1-0Rp5b3bUASYOVXlhb@mail.gmail.com> <AANLkTimdNB3Jh-Urri9XYXxDtU_eiKOlblWjNqhB8Lay@mail.gmail.com>
Date: Tue, 8 Jun 2010 09:07:59 -0400
X-Google-Sender-Auth: Y9Xj4EwrfOhXX_ipjFVSgkG5zyo
Message-ID: <AANLkTilPl4VL7pwlrdYxFfPpOBwSOLsqado3LGmfFvFB@mail.gmail.com>
From: Mark Baker <distobj@acm.org>
To: "Angelo P. Castellani" <angelo@castellani.net>
Content-Type: text/plain; charset=ISO-8859-1
Cc: core <core@ietf.org>
Subject: Re: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 08 Jun 2010 13:08:08 -0000

On Tue, Jun 8, 2010 at 8:27 AM, Angelo P. Castellani
<angelo@castellani.net> wrote:
> Mark,
>
> I understand your point, however I write just some more thoughts about this.
>
> Reading RFC2626 Sec. 9.1.1, what I understand using a GET or a HEAD implies
> that no action is taken on the server. In this way an user knows that GET is
> a "safe" request, no "damage" can happen because of this.
>
> But if one GET is safe, a recurrent GET seems still safe; surely a
> relationship is defined (at transport when possible and yes it can be very
> long).

I don't follow.  The meaning of each GET message is independent of the
connection on which it arrives, so there's no relationship there.

> Having a look at the RFC is said that GET SHOULD be safe (no MUST)...

Right.  See the last paragraph of 9.1.1 for an explanation of why
that's the case.  That's really the key point here.

> In my opinion there are benefits in choosing GET to do something like this,
> mainly the simplified software architecture in the node and/or proxy.

I can't see any significant benefits over using an existing unsafe
method, or the creation of a new method.

Mark.

From robert.cragie@gridmerge.com  Tue Jun  8 06:42:01 2010
Return-Path: <robert.cragie@gridmerge.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id D429C28C1A1 for <core@core3.amsl.com>; Tue,  8 Jun 2010 06:42:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.302
X-Spam-Level: *
X-Spam-Status: No, score=1.302 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HTML_MESSAGE=0.001, MANGLED_TOOL=2.3, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oHBfz5ooMC9M for <core@core3.amsl.com>; Tue,  8 Jun 2010 06:41:26 -0700 (PDT)
Received: from mail78.extendcp.co.uk (mail78.extendcp.co.uk [79.170.40.78]) by core3.amsl.com (Postfix) with ESMTP id 3D33628C193 for <core@ietf.org>; Tue,  8 Jun 2010 06:41:25 -0700 (PDT)
Received: from 1044host10.starwoodbroadband.com ([12.158.59.10] helo=[192.168.170.183]) by mail78.extendcp.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.71) id 1OLz3S-0006hm-0p for core@ietf.org; Tue, 08 Jun 2010 14:41:23 +0100
Message-ID: <4C0E487D.6010101@gridmerge.com>
Date: Tue, 08 Jun 2010 14:41:17 +0100
From: Robert Cragie <robert.cragie@gridmerge.com>
Organization: Gridmerge Ltd.
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100317 Lightning/1.0b1 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <0D212BD466921646B58854FB79092CEC021F4E91@XMB-AMS-106.cisco.com>	<OF54E90C1C.C8997A73-ONC1257731.003EAAE3-C1257731.004127C6@schneider-electric.com>	<0D212BD466921646B58854FB79092CEC021F4EF2@XMB-AMS-106.cisco.com>	<6A9FCAC7-E2FA-482D-ABFF-DB6B111A9EA2@sensinode.com>	<AANLkTil1Vx4fVvrSn5X0LhDcFhDNrXAKNfUBODRkAL3a@mail.gmail.com>	<4BFFFBE4.4090108@gridmerge.com>	<AANLkTil0iB7pPhF_N56T_KMEAOu7dfA0lAdeBSFGqtjE@mail.gmail.com>	<506445AB-DEEC-4EFF-ACE8-AEF9CEE895BA@sensinode.com>	<4C08FF8F.1020608@gridmerge.com> <004601cb063b$af6378c0$0e2a6a40$@moritz@uni-rostock.de>
In-Reply-To: <004601cb063b$af6378c0$0e2a6a40$@moritz@uni-rostock.de>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms020304020806060904020900"
Subject: Re: [core] Subscribe/Notify for CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: robert.cragie@gridmerge.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 08 Jun 2010 13:42:02 -0000

This is a cryptographically signed message in MIME format.

--------------ms020304020806060904020900
Content-Type: multipart/alternative;
 boundary="------------020003010103090800090508"

This is a multi-part message in MIME format.
--------------020003010103090800090508
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable

In my mind the aim for distinguishing the message types and methods is=20
an attempt to be able to model transactions appropriate for M2M but=20
where a subset of the model could actually map very easily to the=20
transactional models currently being used using HTTP

With respect to client/server - I have no issue with whatever=20
terminology is used as long as it is appropriate and consistent.=20
Sink/source works but implies a push-only to some extent or at least a=20
certain 'gravity'; a sink could still pull but that's not the usual=20
behavior associated with a sink. Provider/consumer is better as it does=20
not imply push/pull (I will use this in the following MSCs)

Here are some random MSCs I drew some time ago for illustration of my=20
original concept to show the flexibiltiy. However, fundamentally I agree =

they could all be the same message and the function implied in the=20
method. Whether this is clearer or not is a moot point.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~> : Request
------------------------------------------> : Response
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D> : Notify

1) Long poll, request/response message types

Consumer                                     Provider
   |                                           |
   |  1.) GET to Resource URI                  |
   |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>|
   |                                           |
   |                                           |
   =3D                                           =3D
   |                                           | Resource is updated
   |  2.) 200 OK                               |
   |      [Resource representation]            |
   |<------------------------------------------|
   |  3.) GET to Resource URI                  |
   |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>|
   |                                           |
   |                                           |
   =3D                                           =3D
   |                                           | Resource is updated
   |  4.) 200 OK                               |
   |      [Resource representation]            |
   |<------------------------------------------|
   |  5.) GET to Resource URI                  |
   |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>|
   |                                           |

2) Streaming, notify message types only.

Consumer                                     Provider
   |                                           |
   |  1.) GET to Resource URI                  |
   |=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D>|
   |                                           |
   |                                           |
   =3D                                           =3D
   |                                           | Resource is updated
   |  2.) PUT                                  |
   |      [Resource representation]            |
   |<=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|
   |                                           |
   |                                           |
   =3D                                           =3D
   |                                           | Resource is updated
   |  3.) PUT                                  |
   |      [Resource representation]            |
   |<=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|
   |                                           |

3) Subscription manager, request/response message types

Consumer                                     Provider
   |                                           |
   |  1.) POST to Resource subscription URI    |
   |      [Notify Resource]                    |
   |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>| Notify Resource register=
ed
   |  2.) 200 OK                               |
   |<------------------------------------------|
   |                                           |
   |                                           |
   =3D                                           =3D
   |                                           | Resource is updated
   |  3.) PUT to Notify Resource URI           |
   |      [Resource representation]            |
   |<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
   |  4.) 200 OK                               |
   |------------------------------------------>|
   |                                           |
   |                                           |
   =3D                                           =3D
   |                                           |
   |                                           | Resource is updated
   |  5.) PUT to Notify Resource URI           |
   |      [Resource representation]            |
   |<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
   |  6.) 200 OK                               |
   |------------------------------------------>|
   |                                           |
   |  7.) DELETE to Resource subscription URI  |
   |      [Notify Resource]                    |
   |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>| Notify Resource=20
unregistered
   |  8.) 200 OK                               |
   |<------------------------------------------|
   |                                           |

4) Subscription manager, request/response/notify message types

Consumer                                     Provider
   |                                           |
   |  1.) POST to Resource subscription URI    |
   |      [Notify Resource]                    |
   |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>| Notify Resource register=
ed
   |  2.) 200 OK                               |
   |<------------------------------------------|
   |                                           |
   |                                           |
   =3D                                           =3D
   |                                           | Resource is updated
   |  3.) PUT to Notify Resource URI           |
   |      [Resource representation]            |
   |<=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|
   |                                           |
   |                                           |
   =3D                                           =3D
   |                                           |
   |                                           | Resource is updated
   |  4.) PUT to Notify Resource URI           |
   |      [Resource representation]            |
   |<=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|
   |                                           |
   |  5.) DELETE to Resource subscription URI  |
   |      [Notify Resource]                    |
   |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>| Notify Resource=20
unregistered
   |  6.) 200 OK                               |
   |<------------------------------------------|
   |                                           |

Robert

Robert Cragie (Pacific Gas & Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
http://www.gridmerge.com <http://www.gridmerge.com/>


On 07/06/2010 1:19 PM, Guido Moritz wrote:
>
> +1 for removing message type and leaving only methods.
>
> You mean messaging pattern between the server and client? Of course,=20
> for interoperability reasons there should be a clear specification=20
> which is the correct response on a request. But when using a datagram=20
> transport protocol like UDP and due to the partly expected high delay=20
> between request and response, messaging is be asynchronous by design.=20
> So this might be not be obviously classical client/server=20
> communication but more data sink/data source (or service=20
> provider/service consumer in terms of SOAs). Thus relationship between =

> request and response is part of the application layer and not of the=20
> transport layer like in traditional HTTP.
>
> Guido
>
> *Von:* core-bounces@ietf.org [mailto:core-bounces@ietf.org] *Im=20
> Auftrag von *Robert Cragie
> *Gesendet:* Freitag, 4. Juni 2010 15:29
> *An:* core@ietf.org
> *Betreff:* Re: [core] Subscribe/Notify for CoAP
>
> Hi Zach,
>
> At the end of the day, it obviously all comes down transmitting and=20
> receiving asynchronous packets going between peers. However I think=20
> there is some use in identifying at least message types to map to a=20
> suitable transaction model. Beyond that, we should specify methods,=20
> as, after all, this is CORE (RESTful environments) - the REST=20
> architectural style does impose rules here.
>
> I actually think client and server are still valid from the point of=20
> view of execution, i.e. the client initiates the transaction. Just=20
> thinking about packets flying about between peers doesn't help from=20
> the point of view of a processing environment particularly, so again=20
> is the aim to try to provide a pattern here?
>
> Robert
>
> Robert Cragie (Pacific Gas & Electric)
>
> Gridmerge Ltd.
> 89 Greenfield Crescent,
> Wakefield, WF4 4WA, UK
> +44 1924 910888
> +1 415 513 0064
> http://www.gridmerge.com <http://www.gridmerge.com/>
>
>
> On 04/06/2010 1:59 PM, Zach Shelby wrote:
>
>  =20
> On May 29, 2010, at 12:21 AM, Brian Frank wrote:
>  =20
>   =20
>
>     My two cents:
>
>      =20
>
>     Personally I find it confusing to have both a message type *and* a =
method.
>
>      =20
>
>     Do we really need both?  It seems we just combine the two into a si=
ngle method byte.  Maybe reserve a bit to say a message is a response to =
a GET, PUT, DELETE, etc.
>
>         =20
>
>  =20
> Interesting way of looking at things. Maybe we are making this too comp=
lex with having both messages and methods. Instead we could think of this=
 simply as sending Methods and receiving a Response. That would save a co=
uple bits (and parsing) from the header too. In the end, does HTTP even h=
ave messages types at all? In practice an HTTP client is just sending a m=
ethod and receiving a response code.
>  =20
> Another good concept we discussed off-line with Guido Moritz was whethe=
r we should think of the CoAP message as being synchronous at all. Alread=
y we have determined that talking about CoAP in terms of clients and serv=
ers doesn't work (coap-01 tries to avoid that terminology). Instead we ju=
st talk about peer CoAP end-points, which seems to work.
>  =20
> As we are working with UDP the message model can be thought of as being=
 just asyncronous, when the A bit is not set then no response will come. =
If the A bit is set a response should come, but even with a large delay a=
nd we may need to retransmit. So the A bit achieves the same as the HTTP =
req/res model, but we could think of it as two asynchronous CoAP messages=
=2E
>  =20
> Does that make sense to people?
>  =20
> Zach
>  =20
>   =20
>
>      =20
>
>      =20
>
>      =20
>
>     On Fri, May 28, 2010 at 1:22 PM, Robert Cragie<robert.cragie@gridme=
rge.com>  <mailto:robert.cragie@gridmerge.com>  wrote:
>
>     I think sometimes it makes more sense to think about threads of exe=
cution.
>
>      =20
>
>     Forgive me for this lengthy preamble but it will hopefully put thin=
gs into context.
>
>      =20
>
>     In the most abstract sense, processing is governed by a thread of e=
xecution, which sequences a series of data transformations to expedite th=
e required processing. If a data transformation can be completed synchron=
ously in the thread of execution, then the thread is conceptually easier =
to understand and follow. Most threading models assume this to be the cas=
e and if the data transformation cannot complete, it usually blocks pendi=
ng the required event to complete the transformation. During blocking, th=
e thread is suspended. In simple CPU models without any sort of scheduler=
, there are two threads of execution: A main thread, pre-emptable by an i=
nterrupt thread, usually not pre-emptable. In the main thread, sub-thread=
s are emulated; data transformations can be simply function calls which d=
on't block and therefore return effectively immediately and synchronously=
=2E Blocking data transformations are emulated by storing state relevant =
to each sub-thread then marshaling each event as
>
>       it is received e.g. through interrupt handling, which causes the =
second thread to run and thus allows changing sub-thread state so when th=
e main thread runs, the blocking data transformation can complete. Operat=
ing system schedulers for these simple CPUs simply abstract this operatio=
n through a kernel and associated task/thread scheduling calls. Continuat=
ions are a simpler form used in memory-constrained implementations.
>
>      =20
>
>     Why the lengthy pre-amble? However you look at it, what essentially=
 is required for any threading model (using kernel/scheduler, continuatio=
ns, emulated, whatever) are fundamentally three primitives:
>
>       . Request
>
>       . Response
>
>       . Notify
>
>     A thread of execution will call request and will typically (though =
not necessarily - see emulated blocking/continuations) wait for a respons=
e. If the thread blocks, it is typically woken by another worker thread h=
andling a notify. The worker thread handles notifies asynchronously and b=
uffers and/or signals the associated task accordingly.
>
>      =20
>
>     This is why I think the current foundation level of messages in coa=
p-01 is right.
>
>      =20
>
>     On top of this, the payload of the messages can reflect the actual =
method. Personally, I don't see the need for a specific SUBSCRIBE message=
; a POST/create to a subscription resource seems adequate to me. The noti=
fy message can carry a PUT or POST depending on whether the resource was =
simply updated or appended to (again it is no accident the data types in =
JSON are as they are).
>
>      =20
>
>     Robert
>
>     Robert Cragie (Pacific Gas&  Electric)
>
>      =20
>
>     Gridmerge Ltd.
>
>     89 Greenfield Crescent,
>
>     Wakefield, WF4 4WA, UK
>
>     +44 1924 910888
>
>     +1 415 513 0064
>
>     http://www.gridmerge.com
>
>      =20
>
>      =20
>
>     On 28/05/2010 2:13 PM, Angelo P. Castellani wrote:
>
>         =20
>
>         In my opinion Subscribe/Notify are special methods of interacti=
on
>
>         between resources.
>
>          =20
>
>         1) SUBSCRIBE: Any resource A can send a Request to SUBSCRIBE wi=
th a
>
>         resource B (to the resource B URI).
>
>          =20
>
>         When B receives the request, B can (should/must?) answer with a=

>
>         Response to the SUBSCRIBE Request, telling the result of the re=
quest
>
>         (subscription accepted/denied/unsupported?).
>
>          =20
>
>         2) NOTIFY: When subscription condition fires the resource B sen=
ds a
>
>         NOTIFY Request to resource A URI.
>
>          =20
>
>         When A receives the request, A can (should/must?) answer with a=

>
>         Response to the NOTIFY Request, telling the result of the reque=
st (OK,
>
>         cancel subscription, change notify options?).
>
>          =20
>
>         In each Request must be specified the URI of the resource doing=
 the
>
>         Request too (Option? From-URI?).
>
>          =20
>
>         Angelo
>
>          =20
>
>         On Fri, May 28, 2010 at 14:50, Zach Shelby
>
>         <zach@sensinode.com>  <mailto:zach@sensinode.com>
>
>           wrote:
>
>           =20
>
>          =20
>
>               =20
>
>             Hi,
>
>              =20
>
>             This is a really good conversation. One thing we need to do=
 is remember what our minimum requirements are for subscribe/notify and n=
ot try to solve something more than we should.> From what I know it is su=
fficient to be able to receive notifications when a URI changes or period=
ically. You might consider new URIs under this URI path to be changes to =
a URI though...
>
>              =20
>
>             On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wro=
te:
>
>              =20
>
>                 =20
>
>              =20
>
>                     =20
>
>                 Hello,
>
>                 with this flavor, the SUBSCRIBE may be replaced by a si=
mple POST. So no needs to have an explicit SUBSCRIBE method.
>
>                       =20
>
>                  =20
>
>                           =20
>
>             This is what coap-01 assumes.
>
>              =20
>
>                 =20
>
>              =20
>
>                     =20
>
>                 If we want support a more oriented peer-to-peer transac=
tion on CoAP, it looks to me both SUB and NOTIFY should be treated as mes=
sages.
>
>                       =20
>
>                  =20
>
>                           =20
>
>             The Request/Response model can be used peer-to-peer, and in=
 CoAP you can even use a Request asynchronously. Additionally, we want a =
native RESTful subscribe/notify technique, that is, we want to subscribe =
to resources and be susequently notified about those resources when they =
change.
>
>              =20
>
>             In that sense, you can think of a subscription as a request=
 to receive asynchronous notifications about a resource (about a URI). Th=
is can be achieved by:
>
>              =20
>
>             1.  as a SUBSCRIBE Request on the URI with some option indi=
cating the lifetime as in coap-01,
>
>             2.  as a Subcsribe message (no methods) on the URI with som=
e option,
>
>             3.  or as a POST Request on the URI with options indicating=
 that this is actually a subscription and the lifetime.  This bends the m=
eaning of POST quite a bit and might be prone to mistakes?
>
>              =20
>
>             The asynchronous response is a harder one. Can we bend the =
meaning of a Request for making asynchronous notifications? Also a notifi=
cation includes a URI about a resource on the requestor, which is inverse=
 from normal Requests in REST. So the options here are:
>
>              =20
>
>             1. as a Notify message about a URI (no methods) as in coap-=
01,
>
>             2. as a NOTIFY Request about a URI as was in coap-00,
>
>             3. hmmm... reusing CRUD methods really doesn't work for thi=
s one at all...
>
>              =20
>
>             I wonder what the HTTP designers would have done if this wo=
uld have been a requirement back then? Maybe we should ask them...
>
>              =20
>
>             Zach
>
>              =20
>
>                 =20
>
>              =20
>
>                     =20
>
>                 Adriano
>
>                  =20
>
>                 From:
>
>                 matthieu.vial@fr.non.schneider-electric.com  <mailto:ma=
tthieu.vial@fr.non.schneider-electric.com>  [mailto:matthieu.vial@fr.non.=
schneider-electric.com
>
>                 ]
>
>                 Sent: venerd=EC 28 maggio 2010 13.52
>
>                 To: Adriano Pezzuto (apezzuto)
>
>                 Cc: core;
>
>                 core-bounces@ietf.org  <mailto:core-bounces@ietf.org>;r=
obert.cragie@gridmerge.com  <mailto:robert.cragie@gridmerge.com>
>
>                  =20
>
>                 Subject: Re: [core] Subscribe/Notify for CoAP
>
>                  =20
>
>                       =20
>
>                  =20
>
>                           =20
>
>                     So strictly speaking, both NOTIFY and SUBSCRIBE are=
 message types not  methods!
>
>                             =20
>
>                      =20
>
>                                 =20
>
>                 SUBSCRIBE can be just an asynchronous GET on update the=
n I think it is a method and NOTIFY is an asynchronous response so a mess=
age.
>
>                 But if we want to have selective notifications when a r=
esource is created, updated or deleted then I think you're right NOTIFY a=
nd SUBSCRIBE are messages.
>
>                  =20
>
>                 Does that make sense ?
>
>                  =20
>
>                 Matthieu
>
>                  =20
>
>                 <image001.gif>"Adriano Pezzuto (apezzuto)"
>
>                 <apezzuto@cisco.com>  <mailto:apezzuto@cisco.com>
>
>                  =20
>
>                  =20
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 "Adriano Pezzuto (apezzuto)"
>
>                 <apezzuto@cisco.com>  <mailto:apezzuto@cisco.com>
>
>                  =20
>
>                 Envoy=E9 par :
>
>                 core-bounces@ietf.org  <mailto:core-bounces@ietf.org>
>
>                  =20
>
>                 28/05/2010 12:50
>
>                  =20

>
>                 <image003.png>
>
>                 A
>
>                 <image004.png>
>
>                  =20
>
>                 <robert.cragie@gridmerge.com>  <mailto:robert.cragie@gr=
idmerge.com>
>
>                  =20
>
>                 <image003.png>
>
>                 cc
>
>                 <image004.png>
>
>                 core
>
>                 <core@ietf.org>  <mailto:core@ietf.org>
>
>                  =20
>
>                 <image003.png>
>
>                 Objet
>
>                 <image004.png>
>
>                 Re: [core] Subscribe/Notify for CoAP
>
>                 <image004.png>
>
>                 <image004.png>
>
>                  =20
>
>                 Hi Roberto,
>
>                 I understand your point and personally agree on M2M is =
quite different from web page model. On the architectural RESTful style, =
the method information tells the server what to do with data kept in the =
URI information.
>
>                  =20
>
>                 So strictly speaking, both NOTIFY and SUBSCRIBE are mes=
sage types not  methods!
>
>                  =20
>
>                 Adriano
>
>                  =20
>
>                 From: Robert Cragie [
>
>                 mailto:robert.cragie@gridmerge.com
>
>                 ]
>
>                 Sent: venerd=EC 28 maggio 2010 11.53
>
>                 To: Adriano Pezzuto (apezzuto)
>
>                 Cc: Paul Duffy (paduffy); Zach Shelby; core
>
>                 Subject: Re: [core] Subscribe/Notify for CoAP
>
>                  =20
>
>                 I think the point here is that there are two levels we =
are considering.
>
>                  =20
>
>                 At the lowest (foundation) level, there are the transac=
tion messages as described below. This provides a flexible mechanism for =
the application with regard to synchronicity and threading. This is impor=
tant for the types of devices CoAP is being aimed at.
>
>                  =20
>
>                 Above that, the methods can be used according to the ar=
chitectural style. So in this case, it is RESTful (COnstrained Restful En=
vironments), which will naturally limit the number of methods and how tra=
nsactions occur.
>
>                  =20
>
>                 The actual architecture using a combination of the meth=
ods and messages also depends on what is required at the application laye=
r. Consider a typical client which wants to subscribe to a resource. That=
 client controls the feed of data but needs a component which is capable =
of handling (possibly buffering) the data it receives through notificatio=
ns. Is this a separate server? Or would we want to consider it part of an=
 enhanced client model which is able to process feeds of data? These are =
the sort of models which have led to the myriad of solutions (GENA, Webho=
oks, long polling, pubsubhubbub, RESTMS etc.) based around HTTP which are=
 all essentially ingenious ways of getting around the limitations imposed=
 by HTTP and how it is processed for anything which deviates from the cla=
ssic web page access model.
>
>                  =20
>
>                 I think the aim of CoAP should be clean from the word g=
o with regard to supporting these more peer-to-peer transactions, where t=
he client can exist on either entity and both entities can feed data to e=
ach other; typical in M2M applications.
>
>                  =20
>
>                 Robert
>
>                  =20
>
>                 Robert Cragie (Pacific Gas&  Electric)
>
>                  =20
>
>                 Gridmerge Ltd.
>
>                 89 Greenfield Crescent,
>
>                 Wakefield, WF4 4WA, UK
>
>                 +44 1924 910888
>
>                 +1 415 513 0064
>
>                  =20
>
>                 http://www.gridmerge.com
>
>                  =20
>
>                  =20
>
>                 On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote=
:
>
>                 Hi Robert,
>
>                  =20
>
>                 in my personal opinion, the option 1a) brings some sort=
 of ambiguity to CoAP specs.
>
>                  =20
>
>                 My be my understatement of new CoAP specs is not so dee=
p, but now we have 5 methods and 3 message types: request, response and n=
otify. Which methods are allowed with which messages types?
>
>                 I suppose you have to use PUT/POST method with notify m=
essage for asynch data notification. How to make a subscribe? I suppose y=
ou would use a SUBSCRIBE method with request/response message or SUBSCRIB=
E with notify message? Also what about POST/DELETE methods in a notify me=
ssage? They not make any sense..
>
>                  =20
>
>                 I think the choice is between: option 1) ->  only CRUD =
methods and option 1b) ->  CRUD + SUB/NOTIFY methods, keeping in mind cos=
t/benefits of both solutions.
>
>                  =20
>
>                 Adriano
>
>                  =20
>
>                 From: Robert Cragie [
>
>                 mailto:robert.cragie@gridmerge.com
>
>                 ]
>
>                 Sent: mercoled=EC 26 maggio 2010 20.09
>
>                 To: Adriano Pezzuto (apezzuto)
>
>                 Cc: Paul Duffy (paduffy); Zach Shelby; core
>
>                 Subject: Re: [core] Subscribe/Notify for CoAP
>
>                  =20
>
>                 Hi Adrian,
>
>                  =20
>
>                 I would also prefer to keep the protocol in CoAP asynch=
ronous. You can always map an asynchronous protocol to a synchronous one =
but, as we see in HTTP, it always ends up as a kludge to do it the other =
way round. The efforts which have been gone to to make HTTP quasi-asynchr=
onous via all the schemes mentioned below and many more besides (all non-=
interoperable of course) is testament to how important this is for M2M co=
mmunication.
>
>                  =20
>
>                 So, back to Zach's list, I favor 1a) for the following =
reasons:
>
>                  =20
>
>                 Foundation level of messages:
>
>                  =20
>
>                 1. request/response can be asynchronous or synchronous =
messages (as there is a transaction ID in there)
>
>                 2. notify is an asynchronous message
>
>                 Derived methods:
>
>                  =20
>
>                 I think it makes sense to add a pub/sub model as a usef=
ul mechanism for M2M.
>
>                  =20
>
>                 So, looking at it the other way round: It will be entir=
ely possible to translate whatever is currently built on HTTP to CoAP bas=
ed on the above, with all its restrictions regarding synchronous and clie=
nt/server transactions. What may be harder is to translate directly is a =
CoAP-based application to HTTP. So I guess the question is: Do we want to=
 be hamstrung to synchronous client/server transactions as dictated by HT=
TP and provide a direct mapping to HTTP, then have to come up with simila=
r kludges for asynchronous peer-to-peer transactions as has been done in =
numerous ways for HTTP, or do we want to define the protocol cleanly to s=
tart with and accept that some sort of transaction relaying/conversion wo=
uld have to take place at a mapping node?
>
>                  =20
>
>                 Robert
>
>                 Robert Cragie (Pacific Gas&  Electric)
>
>                  =20
>
>                 Gridmerge Ltd.
>
>                 89 Greenfield Crescent,
>
>                 Wakefield, WF4 4WA, UK
>
>                 +44 1924 910888
>
>                 +1 415 513 0064
>
>                  =20
>
>                 http://www.gridmerge.com
>
>                  =20
>
>                  =20
>
>                 On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote=
:
>
>                 Hi,
>
>                 it looks to me that CoAP should use an explicit sub/not=
ify mechanism since this is the core of the machine-to-machine interactio=
n model.
>
>                 HTTP suffers of this lack and we have seen a plethora o=
f solutions to give an asynch taste to it. Webhooks and websockets are on=
ly the lasts of the list.
>
>                 As someone has already pointed out on this list, it is =
theoretically possible to describe sub/notify using only CRUD methods but=
 it looks a little bit tricky and verbose.
>
>                  =20
>
>                 Now we have a chance to build from scratch a new protoc=
ol with and I think using explicit sub/notify methods with a clear and we=
ll defined semantic is the best option. It is easily understanding from e=
very developer and will prevent to build other fanny solutions on top of =
the CoAP. HTTP does not have this well defined semantic and (for hundreds=
 of other reasons also) it is not used as wide protocol for machine-to-ma=
chine communication.
>
>                  =20
>
>                 CoAP - as binary protocol - and with an explicit asynch=
 model has a chance to be a really wide protocol for M2M communication no=
t only for constrained environments.
>
>                  =20
>
>                 my 2 cents
>
>                  =20
>
>                 - adriano
>
>                  =20
>
>                 -----Original Message-----
>
>                 From:
>
>                 core-bounces@ietf.org  <mailto:core-bounces@ietf.org>  =
[mailto:core-bounces@ietf.org
>
>                 ] On Behalf Of Paul Duffy (paduffy)
>
>                 Sent: mercoled=EC 26 maggio 2010 0.47
>
>                 To: Zach Shelby
>
>                 Cc: core
>
>                 Subject: Re: [core] Subscribe/Notify for CoAP
>
>                  =20
>
>                 On 5/25/2010 6:41 PM, Zach Shelby wrote:
>
>                  =20
>
>                 Hi,
>
>                  =20
>
>                 On May 26, 2010, at 12:23 AM, Charles Palmer wrote:
>
>                  =20
>
>                  =20
>
>                 Hi folks
>
>                  =20
>
>                 It occurs to me that CoRE should be keeping a close eye=
 on ZigBee SE2.0 work, so that it is as easy as possible for ZigBee SE to=
 use CoRE when ready. That suggests to me that we should align with their=
 subscribe/notify process.
>
>                  =20
>
>                  =20
>
>                 I am not sure I understand that. I mean, ZigBee SE2.0 i=
s defining an application specific subscribe/notify mechanism for that pu=
rpose so far for HTTP. This uses standard HTTP methods and some custom pa=
yload and REST interfaces. CoAP Req/Res is already totally compatible wit=
h SE2.0 in that respect, so alignment is already OK there. Nothing stoppi=
ng someone from using SE2.0 over CoAP.
>
>                  =20
>
>                 Specifying a native susbcription/notify into CoAP is an=
other matter. We can't adopt a solution specific to one application as th=
at won't solve the problems of other applications nor general HTTP mappin=
g at all (probably would make it worse). It seems that for the near futur=
e there will be a bunch of HTTP push mechanisms in use without any clear =
standard appearing - or am I wrong there?
>
>                  =20
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 If COAP extends HTTP semantics with new subscription me=
thods, it will
>
>                 not be possible to easily interchange HTTP/COAP, and tr=
anslation
>
>                 gateways will become more complex to implement.
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 Zach
>
>                  =20
>
>                  =20
>
>                 Regards - Charles
>
>                  =20
>
>                  =20
>
>                 -----Original Message-----
>
>                 From:
>
>                 core-bounces@ietf.org  <mailto:core-bounces@ietf.org>  =
[mailto:core-bounces@ietf.org
>
>                 ] On Behalf Of Paul Duffy
>
>                 Sent: 25 May 2010 03:48
>
>                 To: Zach Shelby
>
>                 Cc: core
>
>                 Subject: Re: [core] Subscribe/Notify for CoAP
>
>                  =20
>
>                 Recommend something like #2, primarily to avoid introdu=
cing non HTTP
>
>                 method semantics, simplifying HTTP/COAP translation.gat=
eways, etc.
>
>                  =20
>
>                  =20
>
>                 On 5/24/2010 11:49 AM, Zach Shelby wrote:
>
>                  =20
>
>                 (thread renamed)
>
>                  =20
>
>                 We have two different paths with regard to a subscribe/=
notify mechanism for CoAP:
>
>                  =20
>
>                 1. Use specific Subscription and Notify mechanisms for =
CoAP as HTTP really does not include this concept.
>
>                 1a) Notify as a message and SUBSCRIBE as a method. This=
 is currently used in coap-01.
>
>                 1b) NOTIFY and SUBSCRIBE as methods. This was used in c=
oap-00, but we had a good list discussion about this leading to a. In pra=
ctice it doesn't make a big difference if notification is a message or me=
thod.
>
>                  =20
>
>                 2. Use an HTTP specific framework such as Webhooks, the=
 ZigBee SE2.0 proposal or GENA.
>
>                  =20
>
>                 So far we have focused on 1 in the WG, and every now an=
d again 2 comes up. At least I am not convinced that we need to suffer th=
e drawbacks of HTTP here. Anyways 2 does not help our mapping to HTTP in =
reality very much as there is no standard way of doing this over HTTP. Th=
us a CoAP-HTTP proxy may end up anyways translating between multiple HTTP=
 frameworks depending on the application. So instead of doing a CoAP Noti=
fy/Subscribe to Webhooks mapping, you will could end up having to do a Co=
AP Webhooks to HTTP GENA mapping.
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 I don't understand this last para. If CoAP sticks to th=
e semantics of
>
>                 the current HTTP methods, would this not offer a fairly=
 straightforward
>
>                 translation to/from HTTP?
>
>                  =20
>
>                  =20
>
>                  =20
>
>                  From what I have heard so far 1 still seems like a wis=
e choice, although I need to look at Webhooks more deeply. In reality man=
y applications specify their own way of doing a push interface using REST=
 methods and specific payloads (ZigBee SE2.0 is such an example). That is=
 just fine, and might be used instead of a specific CoAP notify/subscribe=
 in that case. So 1 doesn't prevent the application using its own mechani=
sm, it just provides a native way for doing push.
>
>                  =20
>
>                 What do people think?
>
>                  =20
>
>                 Zach
>
>                  =20
>
>                 On May 17, 2010, at 6:44 PM,
>
>                 matthieu.vial@fr.non.schneider-electric.com  <mailto:ma=
tthieu.vial@fr.non.schneider-electric.com>
>
>                   wrote:
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 Hi,
>
>                  =20
>
>                 My comments about the subscribe/notify mechanism of Zig=
bee IP.
>
>                  =20
>
>                 Pros:
>
>                 - Derived from the webhooks concept
>
>                 - If used by CORE it will be easier to map to HTTP beca=
use it uses only CRUD verbs.
>
>                 - The subscription message is extendable and could supp=
ort advanced options (delays, increment, ...)
>
>                 - Only one listening port whatever the transport bindin=
g is.
>
>                  =20
>
>                 Cons:
>
>                 - No interoperability without well known URIs and a wel=
l defined subscription message format (Not sure CoAP draft is the right p=
lace to specify this).
>
>                 - XML/EXI is too complex to be the required format for =
the default subscription/notification mechanism.
>
>                 - The notification should not require a subsequent GET =
to retrieve the content.
>
>                 - Subresource subscription is redundant.
>
>                  =20
>
>                 Hope this could help,
>
>                 Matthieu
>
>                  =20
>
>                  =20
>
>                 <graycol.gif>"Charles Palmer"
>
>                 <charles.palmer@onzo.com>  <mailto:charles.palmer@onzo.=
com>
>
>                  =20
>
>                  =20
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 "Charles Palmer"
>
>                 <charles.palmer@onzo.com>  <mailto:charles.palmer@onzo.=
com>
>
>                  =20
>
>                 Envoy=E9 par :
>
>                 core-bounces@ietf.org  <mailto:core-bounces@ietf.org>
>
>                  =20
>
>                 15/05/2010 14:06
>
>                  =20
>
>                 <ecblank.gif>
>
>                 A
>
>                 <ecblank.gif>
>
>                 "core"
>
>                 <core@ietf.org>  <mailto:core@ietf.org>
>
>                  =20
>
>                 <ecblank.gif>
>
>                 cc
>
>                 <ecblank.gif>
>
>                 <ecblank.gif>
>
>                 Objet
>
>                 <ecblank.gif>
>
>                 Re: [core] Selecting a WG document for CoAP
>
>                 <ecblank.gif>  <ecblank.gif>
>
>                  =20
>
>                 Dear all
>
>                  =20
>
>                 Those interested in the subscribe/notify discussion mig=
ht like to look
>
>                 at the draft Smart Energy Profile 2.0 Application Proto=
col
>
>                 Specification. It is available here:
>
>                  =20
>
>                 http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmart=
Energy20PublicApp
>
>                  =20
>
>                 licationProfile.aspx
>
>                  =20
>
>                 It manages subscribe/notify by using POST. This seems t=
o remove the need
>
>                 for SUBSCRIBE and notify.
>
>                  =20
>
>                 "Imagine a host A, which exposes a resource at http{s}:=
//A/resource and
>
>                 a second host B, which wishes to learn of changes to th=
is resource. To
>
>                 facilitate a subscription/ notification mechanism, A wo=
uld expose a
>
>                 resource http{s}://A/sub and B would expose a resource =
http{s}://B/ntfy.
>
>                 To subscribe to notifications regarding http{s}://A/res=
ource, B would
>
>                 send a POST to the address http{s}://A/sub/B containing=
 the URI of the
>
>                 resource of interest (http{s}://A/resource) and the URI=
 of B's
>
>                 notification resource (http{s}://B/ntfy). Following thi=
s subscription
>
>                 step, should A wish to notify B of a change to the reso=
urce addressed at
>
>                 http{s}://A/resource, A would send a POST to the addres=
s
>
>                 http{s}://B/ntfy containing the URI of the resource cha=
nged
>
>                 (http{s}://A/resource) and the URI of A's subscription =
resource
>
>                 (http{s}://A/sub/B), should A wish to change its subscr=
iption. The host
>
>                 B can then query the resource (or not) at its leisure."=

>
>                  =20
>
>                 Sleepy nodes are not allowed to subscribe, and must pol=
l.
>
>                  =20
>
>                 Regards - Charles Palmer
>
>                  =20
>
>                 -----Original Message-----
>
>                 From:
>
>                 core-bounces@ietf.org  <mailto:core-bounces@ietf.org>  =
[mailto:core-bounces@ietf.org
>
>                 ] On Behalf Of
>
>                 Angelo P. Castellani
>
>                 Sent: 14 May 2010 13:14
>
>                 To: Zach Shelby
>
>                 Cc: core
>
>                 Subject: Re: [core] Selecting a WG document for CoAP
>
>                  =20
>
>                 Zach,
>
>                  =20
>
>                 thanks for the comments, but please refer to my most re=
cent e-mail for
>
>                 a more specific list of technical issues I'm pointing t=
o.
>
>                  =20
>
>                 I want to do only a little integration to what I've wri=
tten there.
>
>                  =20
>
>                 In my very personal opinion, to maximize adherence with=
 the REST model
>
>                 and minimize implementation effort SUBSCRIBE and NOTIFY=
 should be
>
>                 mapped to methods (as discussed many times together...)=
=2E
>
>                  =20
>
>                 Uniform interface principle (Fielding PhD dissertation =
Section 5.1.5,
>
>                 "The central feature that distinguishes the REST archit=
ectural style
>
>                 [...]") states that to simplify the software architectu=
re, resource
>
>                 interfaces/interfaces should be as general as possible.=

>
>                  =20
>
>                 I agree with this principle in this specific case, main=
ly because
>
>                 handling a special message type for notify leads node s=
oftware design
>
>                 to a more complex architecture.
>
>                  =20
>
>                 The reason is that this new message type requires speci=
al handling and
>
>                 introduces a complexity in the software modularization.=

>
>                  =20
>
>                 Best,
>
>                 Angelo
>
>                  =20
>
>                 On Fri, May 14, 2010 at 13:06, Zach Shelby
>
>                 <zach@sensinode.com>  <mailto:zach@sensinode.com>
>
>                   wrote:
>
>                  =20
>
>                  =20
>
>                 Hi Angelo,
>
>                  =20
>
>                 On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:=

>
>                  =20
>
>                  =20
>
>                  =20
>
>                 Dear C. Bormann, all,
>
>                  =20
>
>                 before deciding for the final direction, I've the follo=
wing
>
>                 observations about draft-shelby-core-coap-01
>
>                  =20
>
>                 While I mostly share Zach's view of the protocol approa=
ch, and
>
>                 appreciate many aspects of the proposal, there are in m=
y opinion
>
>                  =20
>
>                  =20
>
>                 still
>
>                  =20
>
>                  =20
>
>                 some open issues that need to be at least discussed bef=
ore the
>
>                  =20
>
>                  =20
>
>                 current
>
>                  =20
>
>                  =20
>
>                 document can be selected.
>
>                  =20
>
>                  =20
>
>                 Of course there are plenty of open issues. Remember tha=
t working group
>
>                  =20
>
>                  =20
>
>                 documents still undertake as much change and improvemen=
t as the WG
>
>                 wants, so by no means is coap-01 set in stone. I would =
expect at least
>
>                 5-10 more revisions still along the way. Already severa=
l of your ideas
>
>                 have been integrated into coap-01, and several more are=
 under
>
>                 consideration, so it is coming along. Patience ;-)
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 In particular, I would like to highlight the following:=

>
>                  =20
>
>                 a) As it is now, it is not possible to have a straightf=
orward
>
>                 translation of HTTP ->  CoAP and viceversa: see
>
>                  =20
>
>                 http://www.ietf.org/mail-archive/web/core/current/msg00=
133.html
>
>                   (this
>
>                 impacts the scalability of the web service model too)
>
>                  =20
>
>                  =20
>
>                 In coap-01 the Method names are now identical to HTTP m=
ethods. The
>
>                  =20
>
>                  =20
>
>                 Req/Res interaction is a direct translation. The URI hi=
erarchy is
>
>                 compatible, and the URI binary code format we are still=
 working on
>
>                 obviously. The only thing that takes some state to tran=
slate is
>
>                 Subscribe/Notify. But note, Subscribe/Notify takes some=
 state no matter
>
>                 how you do it, even with HTTP-HTTP there is no clean an=
d easy way to
>
>                 handle subscriptions.
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 b) Moreover, CoAP's implementation is not as simple as =
it should be.
>
>                 I've investigated the implementation and some design ch=
oices (as
>
>                 Options) are leading to very high program complexity (R=
OM) on a
>
>                 MSP430-based device.
>
>                  =20
>
>                  =20
>
>                 This we can definitely improve, and already made severa=
l optimizations
>
>                  =20
>
>                  =20
>
>                 from -00 to -01. Here I need some very concrete proposa=
ls though. Also
>
>                 remember that many things are optional, for example sub=
scribe/notify is
>
>                 not required if you don't need it.
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 c) Finally when comparing HTTP message size with CoAP m=
essage size,
>
>                 the resulting compression isn't as good as you may expe=
ct.
>
>                  =20
>
>                 Example:
>
>                 HTTP: GET /sensor/temp.xml HTTP/1.0 =3D 32 B
>
>                 CoAP: 24 B with options parsing procedure requiring an =
added
>
>                 implementation complexity
>
>                  =20
>
>                  =20
>
>                 Right, that is not how it will work in practice. Workin=
g with a real
>
>                  =20
>
>                  =20
>
>                 HTTP server that HTTP header will be more complex, and =
on the CoAP side
>
>                 you would chose shorter URLs. The biggest improvement p=
ossible here is
>
>                 from using binary coded URLs of course. We need to look=
 at a wider range
>
>                 of interactions and real HTTP headers as well to check =
that we are
>
>                 efficient enough.
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 Addressing all these points potentially leads to major =
technical
>
>                 modifications (especially point a) on the current draft=
, hence it is
>
>                 appropriate in my opinion to discuss these points befor=
e making the
>
>                 final decision.
>
>                  =20
>
>                  =20
>
>                 I am not sure what else you have in mind for a). If we =
just forget
>
>                  =20
>
>                  =20
>
>                 about Subscribe/Notify then you are good to go. But the=
n you are also
>
>                 not fulfilling the charter or the industry needs in tha=
t respect.
>
>                  =20
>
>                  =20
>
>                 Thanks,
>
>                 Zach
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 Best regards,
>
>                  =20
>
>                 Angelo P. Castellani
>
>                  =20
>
>                  =20
>
>                 On Mon, May 10, 2010 at 18:51, Carsten Bormann
>
>                 <cabo@tzi.org>  <mailto:cabo@tzi.org>
>
>                 wrote:
>
>                  =20
>
>                  =20
>
>                 The CORE WG has a milestone to select a WG document for=
 CoAP in
>
>                  =20
>
>                  =20
>
>                 April:
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 http://datatracker.ietf.org/wg/core/charter/
>
>                  =20
>
>                 ...
>
>                 Apr 2010 Select WG document for basis of the CoAP proto=
col
>
>                  =20
>
>                 Of the various documents that have been contributed,
>
>                  =20
>
>                  =20
>
>                 draft-shelby-core-coap has significant discussion, as w=
ell as the
>
>                 largest number of updates (including a previous version=
 that was still
>
>                 called -6lowapp-coap).
>
>                  =20
>
>                  =20
>
>                 Today, another updated version of that draft was announ=
ced. See
>
>                  =20
>
>                 http://www.ietf.org/mail-archive/web/core/current/msg00=
138.html
>
>                  =20
>
>                 for the announcement and
>
>                  =20
>
>                 http://tools.ietf.org/html/draft-shelby-core-coap-01
>
>                  =20
>
>                 for the draft itself.
>
>                  =20
>
>                 However, as the authors say, there are still significan=
t TODOs.
>
>                  =20
>
>                 Are we in a state yet where we can say whether this is =
the right
>
>                  =20
>
>                  =20
>
>                 direction for the WG to take?
>
>                  =20
>
>                  =20
>
>                 If yes, is it the right direction? Should we adopt it a=
s a WG
>
>                  =20
>
>                  =20
>
>                 document?
>
>                  =20
>
>                  =20
>
>                 If you don't think we can say yet, is there a set of te=
chnical
>
>                  =20
>
>                  =20
>
>                 decisions you would like the authors to take with prior=
ity?
>
>                  =20
>
>                  =20
>
>                 Note that once a document has become a WG document, the=
 authors act
>
>                  =20
>
>                  =20
>
>                 as editors for the working group, making (and usually f=
leshing out the
>
>                 details of) any change that the WG decides it needs.
>
>                  =20
>
>                  =20
>
>                 If you think we can still improve the draft, this is no=
t an obstacle
>
>                  =20
>
>                  =20
>
>                 to making it a WG document.
>
>                  =20
>
>                  =20
>
>                 But of course we shouldn't do that if we intend to reve=
rse its
>
>                  =20
>
>                  =20
>
>                 fundamental technical direction.
>
>                  =20
>
>                  =20
>
>                 In order to stay roughly in sync with our milestones, w=
e should
>
>                  =20
>
>                  =20
>
>                 reach at a decision on how to go forward this week.
>
>                  =20
>
>                  =20
>
>                 Gruesse, Carsten
>
>                  =20
>
>                 _______________________________________________
>
>                 core mailing list
>
>                  =20
>
>                 core@ietf.org  <mailto:core@ietf.org>
>
>                 https://www.ietf.org/mailman/listinfo/core
>
>                  =20
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 _______________________________________________
>
>                 core mailing list
>
>                  =20
>
>                 core@ietf.org  <mailto:core@ietf.org>
>
>                 https://www.ietf.org/mailman/listinfo/core
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 --
>
>                 Zach Shelby, Chief Nerd, Sensinode Ltd.
>
>                  =20
>
>                 http://zachshelby.org  - My blog "On the Internet of Th=
ings
>
>                 "  <http://6lowpan.net-Mybook>
>
>                 http://6lowpan.net - My book "  <http://6lowpan.net-Myb=
ook>
>
>                 6LoWPAN: The Wireless Embedded Internet"
>
>                 Mobile: +358 40 7796297
>
>                  =20
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 _______________________________________________
>
>                 core mailing list
>
>                  =20
>
>                 core@ietf.org  <mailto:core@ietf.org>
>
>                 https://www.ietf.org/mailman/listinfo/core
>
>                  =20
>
>                  =20
>
>                 --------------------------------
>
>                 Onzo is a limited company number 06097997 registered in=
 England&  Wales. The
>
>                 registered office is 6 Great Newport Street, London, WC=
2H 7JB, United Kingdom.
>
>                  =20
>
>                 This email message may contain confidential and/or priv=
ileged information, and
>
>                 is intended solely for the addressee(s). If you have re=
ceived this email in
>
>                 error, please notify Onzo immediately. Unauthorised cop=
ying, disclosure or
>
>                 distribution of the material in this email is forbidden=
=2E
>
>                 --------------------------------
>
>                  =20
>
>                 _______________________________________________
>
>                 core mailing list
>
>                  =20
>
>                 core@ietf.org  <mailto:core@ietf.org>
>
>                 https://www.ietf.org/mailman/listinfo/core
>
>                  =20
>
>                  =20
>
>                 _______________________________________________________=
_______________
>
>                 This email has been scanned by the MessageLabs Email Se=
curity System.
>
>                 _______________________________________________________=
_______________
>
>                  =20
>
>                 _______________________________________________
>
>                 core mailing list
>
>                  =20
>
>                 core@ietf.org  <mailto:core@ietf.org>
>
>                 https://www.ietf.org/mailman/listinfo/core
>
>                  =20
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 _______________________________________________
>
>                 core mailing list
>
>                  =20
>
>                 core@ietf.org  <mailto:core@ietf.org>
>
>                 https://www.ietf.org/mailman/listinfo/core
>
>                  =20
>
>                  =20
>
>                 --------------------------------
>
>                 Onzo is a limited company number 06097997 registered in=
 England&  Wales. The
>
>                 registered office is 6 Great Newport Street, London, WC=
2H 7JB, United Kingdom.
>
>                  =20
>
>                 This email message may contain confidential and/or priv=
ileged information, and
>
>                 is intended solely for the addressee(s). If you have re=
ceived this email in
>
>                 error, please notify Onzo immediately. Unauthorised cop=
ying, disclosure or
>
>                 distribution of the material in this email is forbidden=
=2E
>
>                 --------------------------------
>
>                  =20
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 _______________________________________________
>
>                 core mailing list
>
>                  =20
>
>                 core@ietf.org  <mailto:core@ietf.org>
>
>                 https://www.ietf.org/mailman/listinfo/core
>
>                  =20
>
>                 _______________________________________________
>
>                 core mailing list
>
>                  =20
>
>                 core@ietf.org  <mailto:core@ietf.org>
>
>                 https://www.ietf.org/mailman/listinfo/core
>
>                  =20
>
>                  =20
>
>                  =20
>
>                  =20
>
>                 _______________________________________________________=
_______________
>
>                 This email has been scanned by the MessageLabs Email Se=
curity System.
>
>                 _______________________________________________________=
______________________________________________________________
>
>                 core mailing list
>
>                  =20
>
>                 core@ietf.org  <mailto:core@ietf.org>
>
>                 https://www.ietf.org/mailman/listinfo/core
>
>                  =20
>
>                  =20
>
>                 _______________________________________________
>
>                 core mailing list
>
>                  =20
>
>                 core@ietf.org  <mailto:core@ietf.org>
>
>                 https://www.ietf.org/mailman/listinfo/core
>
>                  =20
>
>                       =20
>
>                  =20
>
>                           =20
>
>             --
>
>             Zach Shelby, Chief Nerd, Sensinode Ltd.
>
>              =20
>
>             http://zachshelby.org   - My blog "On the Internet of Thing=
s
>
>             "  <http://6lowpan.net-Mybook>
>
>             http://6lowpan.net - My book "  <http://6lowpan.net-Mybook>=

>
>             6LoWPAN: The Wireless Embedded Internet"
>
>             Mobile: +358 40 7796297
>
>              =20
>
>             _______________________________________________
>
>             core mailing list
>
>              =20
>
>             core@ietf.org  <mailto:core@ietf.org>
>
>             https://www.ietf.org/mailman/listinfo/core
>
>              =20
>
>              =20
>
>                 =20
>
>              =20
>
>                     =20
>
>         _______________________________________________
>
>         core mailing list
>
>          =20
>
>         core@ietf.org  <mailto:core@ietf.org>
>
>         https://www.ietf.org/mailman/listinfo/core
>
>          =20
>
>          =20
>
>           =20
>
>          =20
>
>               =20
>
>      =20
>
>     _______________________________________________
>
>     core mailing list
>
>     core@ietf.org  <mailto:core@ietf.org>
>
>     https://www.ietf.org/mailman/listinfo/core
>
>      =20
>
>      =20
>
>     _______________________________________________
>
>     core mailing list
>
>     core@ietf.org  <mailto:core@ietf.org>
>
>     https://www.ietf.org/mailman/listinfo/core
>
>         =20
>
>  =20
>   =20
>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>   =20

--------------020003010103090800090508
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content=3D"text/html; charset=3DISO-8859-1"
 http-equiv=3D"Content-Type">
</head>
<body bgcolor=3D"#ffffff" text=3D"#000000">
In my mind the aim for distinguishing the message types and methods is
an attempt to be able to model transactions appropriate for M2M but
where a subset of the model could actually map very easily to the
transactional models currently being used using HTTP<br>
<br>
With respect to client/server - I have no issue with whatever
terminology is used as long as it is appropriate and consistent.
Sink/source works but implies a push-only to some extent or at least a
certain 'gravity'; a sink could still pull but that's not the usual
behavior associated with a sink. Provider/consumer is better as it does
not imply push/pull (I will use this in the following MSCs)<br>
<br>
Here are some random MSCs I drew some time ago for illustration of my
original concept to show the flexibiltiy. However, fundamentally I
agree they could all be the same message and the function implied in
the method. Whether this is clearer or not is a moot point.<br>
<br>
<tt>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&gt; : Request<br>
------------------------------------------&gt; : Response<br>
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D&gt; : Notify<br>
</tt><br>
1) Long poll, request/response message types<br>
<br>
<tt>Consumer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp; Provider<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp; 1.) GET to Resource URI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>=

&nbsp; |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&gt;|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; =3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =3D<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Resource is updated<br>
&nbsp; |&nbsp; 2.) 200 OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Resource representation]&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;------------------------------------------|<br>
&nbsp; |&nbsp; 3.) GET to Resource URI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>=

&nbsp; |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&gt;|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; =3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =3D<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Resource is updated<br>
&nbsp; |&nbsp; 4.) 200 OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Resource representation]&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;------------------------------------------|<br>
&nbsp; |&nbsp; 5.) GET to Resource URI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>=

&nbsp; |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&gt;|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
</tt><br>
2) Streaming, notify message types only. <br>
<br>
<tt>Consumer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp; Provider<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp; 1.) GET to Resource URI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>=

&nbsp; |=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D&gt;|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; =3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =3D<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Resource is updated<br>
&nbsp; |&nbsp; 2.) PUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Resource representation]&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; =3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =3D<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Resource is updated<br>
&nbsp; |&nbsp; 3.) PUT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Resource representation]&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
</tt>&nbsp; <br>
3) Subscription manager, request/response message types<br>
&nbsp; <br>
<tt>Consumer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp; Provider<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp; 1.) POST to Resource subscription URI&nbsp;&nbsp;&nbsp; |<=
br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Notify Resource]&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&gt;| Notify Resource
registered<br>
&nbsp; |&nbsp; 2.) 200 OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;------------------------------------------|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; =3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =3D<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Resource is updated<br>
&nbsp; |&nbsp; 3.) PUT to Notify Resource URI&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Resource representation]&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|<br>
&nbsp; |&nbsp; 4.) 200 OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |------------------------------------------&gt;|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; =3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =3D<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Resource is updated<br>
&nbsp; |&nbsp; 5.) PUT to Notify Resource URI&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Resource representation]&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|<br>
&nbsp; |&nbsp; 6.) 200 OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |------------------------------------------&gt;|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; <br>
&nbsp; |&nbsp; 7.) DELETE to Resource subscription URI&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Notify Resource]&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&gt;| Notify Resource
unregistered<br>
&nbsp; |&nbsp; 8.) 200 OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;------------------------------------------|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
</tt><br>
4) Subscription manager, request/response/notify message types<br>
&nbsp; <br>
<tt>Consumer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp; Provider<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp; 1.) POST to Resource subscription URI&nbsp;&nbsp;&nbsp; |<=
br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Notify Resource]&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&gt;| Notify Resource
registered<br>
&nbsp; |&nbsp; 2.) 200 OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;------------------------------------------|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; =3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =3D<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Resource is updated<br>
&nbsp; |&nbsp; 3.) PUT to Notify Resource URI&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Resource representation]&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; =3D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =3D<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Resource is updated<br>
&nbsp; |&nbsp; 4.) PUT to Notify Resource URI&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Resource representation]&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; <br>
&nbsp; |&nbsp; 5.) DELETE to Resource subscription URI&nbsp; |<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Notify Resource]&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&gt;| Notify Resource
unregistered<br>
&nbsp; |&nbsp; 6.) 200 OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
&nbsp; |&lt;------------------------------------------|<br>
&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |<br>
</tt>&nbsp; <br>
Robert<br>
<div class=3D"moz-signature">
<style type=3D"text/css">
p
{
font-family:Verdana,Arial,sans-serif;
font-size:8pt;
}
=2Ename
{
font-size:12pt;
}
</style>
<p class=3D"name">Robert Cragie (Pacific Gas &amp; Electric)</p>
<p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
<a href=3D"http://www.gridmerge.com/">http://www.gridmerge.com</a></p>
</div>
<br>
On 07/06/2010 1:19 PM, Guido Moritz wrote:
<blockquote
 cite=3D"mid:004601cb063b$af6378c0$0e2a6a40$@moritz@uni-rostock.de"
 type=3D"cite">
  <meta http-equiv=3D"Content-Type"
 content=3D"text/html; charset=3DISO-8859-1">
  <meta name=3D"Generator" content=3D"Microsoft Word 12 (filtered medium)=
">
  <style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
	{font-family:Verdana;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman","serif";
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p
	{mso-style-priority:99;
	mso-margin-top-alt:auto;
	margin-right:0cm;
	mso-margin-bottom-alt:auto;
	margin-left:0cm;
	font-size:8.0pt;
	font-family:"Verdana","sans-serif";
	color:black;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Vorformatiert Zchn";
	margin:0cm;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
p.name, li.name, div.name
	{mso-style-name:name;
	mso-margin-top-alt:auto;
	margin-right:0cm;
	mso-margin-bottom-alt:auto;
	margin-left:0cm;
	font-size:12.0pt;
	font-family:"Verdana","sans-serif";
	color:black;}
span.HTMLVorformatiertZchn
	{mso-style-name:"HTML Vorformatiert Zchn";
	mso-style-priority:99;
	mso-style-link:"HTML Vorformatiert";
	font-family:Consolas;
	color:black;}
span.E-MailFormatvorlage21
	{mso-style-type:personal-reply;
	font-family:"Calibri","sans-serif";
	color:#1F497D;}
=2EMsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.Section1
	{page:Section1;}
-->
  </style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1" />
 </o:shapelayout></xml><![endif]-->
  <div class=3D"Section1">
  <p class=3D"MsoNormal"><span
 style=3D"font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-se=
rif&quot;; color: rgb(31, 73, 125);"
 lang=3D"EN-US">+1 for removing message type and leaving only methods.<o:=
p></o:p></span></p>
  <p class=3D"MsoNormal"><span
 style=3D"font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-se=
rif&quot;; color: rgb(31, 73, 125);"
 lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
  <p class=3D"MsoNormal"><span
 style=3D"font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-se=
rif&quot;; color: rgb(31, 73, 125);"
 lang=3D"EN-US">You mean messaging pattern between the server and client?=

Of
course, for interoperability reasons there should be a clear
specification
which is the correct response on a request. But when using a datagram
transport
protocol like UDP and due to the partly expected high delay between
request and
response, messaging is be asynchronous by design. So this might be not
be obviously
classical client/server communication but more data sink/data source
(or
service provider/service consumer in terms of SOAs). Thus relationship
between
request and response is part of the application layer and not of the
transport
layer like in traditional HTTP. <o:p></o:p></span></p>
  <p class=3D"MsoNormal"><span
 style=3D"font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-se=
rif&quot;; color: rgb(31, 73, 125);"
 lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
  <p class=3D"MsoNormal"><span
 style=3D"font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-se=
rif&quot;; color: rgb(31, 73, 125);"
 lang=3D"EN-US">Guido<o:p></o:p></span></p>
  <p class=3D"MsoNormal"><span
 style=3D"font-size: 11pt; font-family: &quot;Calibri&quot;,&quot;sans-se=
rif&quot;; color: rgb(31, 73, 125);"
 lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
  <div
 style=3D"border-style: none none none solid; border-color: -moz-use-text=
-color -moz-use-text-color -moz-use-text-color blue; border-width: medium=
 medium medium 1.5pt; padding: 0cm 0cm 0cm 4pt;">
  <div>
  <div
 style=3D"border-style: solid none none; border-color: rgb(181, 196, 223)=
 -moz-use-text-color -moz-use-text-color; border-width: 1pt medium medium=
; padding: 3pt 0cm 0cm;">
  <p class=3D"MsoNormal"><b><span
 style=3D"font-size: 10pt; font-family: &quot;Tahoma&quot;,&quot;sans-ser=
if&quot;; color: windowtext;">Von:</span></b><span
 style=3D"font-size: 10pt; font-family: &quot;Tahoma&quot;,&quot;sans-ser=
if&quot;; color: windowtext;">
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core-bounces@ietf.or=
g">core-bounces@ietf.org</a>
[<a class=3D"moz-txt-link-freetext" href=3D"mailto:core-bounces@ietf.org"=
>mailto:core-bounces@ietf.org</a>] <b>Im Auftrag von </b>Robert Cragie<br=
>
  <b>Gesendet:</b> Freitag, 4. Juni 2010 15:29<br>
  <b>An:</b> <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ie=
tf.org">core@ietf.org</a><br>
  <b>Betreff:</b> Re: [core] Subscribe/Notify for CoAP<o:p></o:p></span><=
/p>
  </div>
  </div>
  <p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
  <p class=3D"MsoNormal">Hi Zach,<br>
  <br>
At the end of the day, it obviously all comes down transmitting and
receiving
asynchronous packets going between peers. However I think there is some
use in
identifying at least message types to map to a suitable transaction
model.
Beyond that, we should specify methods, as, after all, this is CORE
(RESTful
environments) - the REST architectural style does impose rules here.<br>
  <br>
I actually think client and server are still valid from the point of
view of
execution, i.e. the client initiates the transaction. Just thinking
about
packets flying about between peers doesn't help from the point of view
of a
processing environment particularly, so again is the aim to try to
provide a
pattern here?<br>
  <br>
Robert<o:p></o:p></p>
  <div>
  <p class=3D"name">Robert Cragie (Pacific Gas &amp; Electric)<o:p></o:p>=
</p>
  <p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
  <a moz-do-not-send=3D"true" href=3D"http://www.gridmerge.com/">http://w=
ww.gridmerge.com</a><o:p></o:p></p>
  </div>
  <p class=3D"MsoNormal"><br>
On 04/06/2010 1:59 PM, Zach Shelby wrote: <o:p></o:p></p>
  <pre><o:p>&nbsp;</o:p></pre>
  <pre>On May 29, 2010, at 12:21 AM, Brian Frank wrote:<o:p></o:p></pre>
  <pre><o:p>&nbsp;</o:p></pre>
  <pre>&nbsp; <o:p></o:p></pre>
  <blockquote style=3D"margin-top: 5pt; margin-bottom: 5pt;">
    <pre>My two cents: <o:p></o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>Personally I find it confusing to have both a message type *and*=
 a method.<o:p></o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>Do we really need both?&nbsp; It seems we just combine the two i=
nto a single method byte.&nbsp; Maybe reserve a bit to say a message is a=
 response to a GET, PUT, DELETE, etc.<o:p></o:p></pre>
    <pre>&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
  </blockquote>
  <pre><o:p>&nbsp;</o:p></pre>
  <pre>Interesting way of looking at things. Maybe we are making this too=
 complex with having both messages and methods. Instead we could think of=
 this simply as sending Methods and receiving a Response. That would save=
 a couple bits (and parsing) from the header too. In the end, does HTTP e=
ven have messages types at all? In practice an HTTP client is just sendin=
g a method and receiving a response code. <o:p></o:p></pre>
  <pre><o:p>&nbsp;</o:p></pre>
  <pre>Another good concept we discussed off-line with Guido Moritz was w=
hether we should think of the CoAP message as being synchronous at all. A=
lready we have determined that talking about CoAP in terms of clients and=
 servers doesn't work (coap-01 tries to avoid that terminology). Instead =
we just talk about peer CoAP end-points, which seems to work.<o:p></o:p><=
/pre>
  <pre><o:p>&nbsp;</o:p></pre>
  <pre>As we are working with UDP the message model can be thought of as =
being just asyncronous, when the A bit is not set then no response will c=
ome. If the A bit is set a response should come, but even with a large de=
lay and we may need to retransmit. So the A bit achieves the same as the =
HTTP req/res model, but we could think of it as two asynchronous CoAP mes=
sages. <o:p></o:p></pre>
  <pre><o:p>&nbsp;</o:p></pre>
  <pre>Does that make sense to people? <o:p></o:p></pre>
  <pre><o:p>&nbsp;</o:p></pre>
  <pre>Zach<o:p></o:p></pre>
  <pre><o:p>&nbsp;</o:p></pre>
  <pre>&nbsp; <o:p></o:p></pre>
  <blockquote style=3D"margin-top: 5pt; margin-bottom: 5pt;">
    <pre><o:p>&nbsp;</o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>On Fri, May 28, 2010 at 1:22 PM, Robert Cragie <a
 moz-do-not-send=3D"true" href=3D"mailto:robert.cragie@gridmerge.com">&lt=
;robert.cragie@gridmerge.com&gt;</a> wrote:<o:p></o:p></pre>
    <pre>I think sometimes it makes more sense to think about threads of =
execution.<o:p></o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>Forgive me for this lengthy preamble but it will hopefully put t=
hings into context.<o:p></o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>In the most abstract sense, processing is governed by a thread o=
f execution, which sequences a series of data transformations to expedite=
 the required processing. If a data transformation can be completed synch=
ronously in the thread of execution, then the thread is conceptually easi=
er to understand and follow. Most threading models assume this to be the =
case and if the data transformation cannot complete, it usually blocks pe=
nding the required event to complete the transformation. During blocking,=
 the thread is suspended. In simple CPU models without any sort of schedu=
ler, there are two threads of execution: A main thread, pre-emptable by a=
n interrupt thread, usually not pre-emptable. In the main thread, sub-thr=
eads are emulated; data transformations can be simply function calls whic=
h don't block and therefore return effectively immediately and synchronou=
sly. Blocking data transformations are emulated by storing state relevant=
 to each sub-thread then marshaling each
 event as<o:p></o:p></pre>
    <pre> it is received e.g. through interrupt handling, which causes th=
e second thread to run and thus allows changing sub-thread state so when =
the main thread runs, the blocking data transformation can complete. Oper=
ating system schedulers for these simple CPUs simply abstract this operat=
ion through a kernel and associated task/thread scheduling calls. Continu=
ations are a simpler form used in memory-constrained implementations.<o:p=
></o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>Why the lengthy pre-amble? However you look at it, what essentia=
lly is required for any threading model (using kernel/scheduler, continua=
tions, emulated, whatever) are fundamentally three primitives:<o:p></o:p>=
</pre>
    <pre> &#8226; Request<o:p></o:p></pre>
    <pre> &#8226; Response<o:p></o:p></pre>
    <pre> &#8226; Notify<o:p></o:p></pre>
    <pre>A thread of execution will call request and will typically (thou=
gh not necessarily - see emulated blocking/continuations) wait for a resp=
onse. If the thread blocks, it is typically woken by another worker threa=
d handling a notify. The worker thread handles notifies asynchronously an=
d buffers and/or signals the associated task accordingly.<o:p></o:p></pre=
>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>This is why I think the current foundation level of messages in =
coap-01 is right.<o:p></o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>On top of this, the payload of the messages can reflect the actu=
al method. Personally, I don't see the need for a specific SUBSCRIBE mess=
age; a POST/create to a subscription resource seems adequate to me. The n=
otify message can carry a PUT or POST depending on whether the resource w=
as simply updated or appended to (again it is no accident the data types =
in JSON are as they are).<o:p></o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>Robert <o:p></o:p></pre>
    <pre>Robert Cragie (Pacific Gas &amp; Electric)<o:p></o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>Gridmerge Ltd.<o:p></o:p></pre>
    <pre>89 Greenfield Crescent,<o:p></o:p></pre>
    <pre>Wakefield, WF4 4WA, UK<o:p></o:p></pre>
    <pre>+44 1924 910888<o:p></o:p></pre>
    <pre>+1 415 513 0064<o:p></o:p></pre>
    <pre><a moz-do-not-send=3D"true" href=3D"http://www.gridmerge.com">ht=
tp://www.gridmerge.com</a><o:p></o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>On 28/05/2010 2:13 PM, Angelo P. Castellani wrote:<o:p></o:p></p=
re>
    <pre>&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
    <blockquote style=3D"margin-top: 5pt; margin-bottom: 5pt;">
      <pre>In my opinion Subscribe/Notify are special methods of interact=
ion<o:p></o:p></pre>
      <pre>between resources.<o:p></o:p></pre>
      <pre><o:p>&nbsp;</o:p></pre>
      <pre>1) SUBSCRIBE: Any resource A can send a Request to SUBSCRIBE w=
ith a<o:p></o:p></pre>
      <pre>resource B (to the resource B URI).<o:p></o:p></pre>
      <pre><o:p>&nbsp;</o:p></pre>
      <pre>When B receives the request, B can (should/must?) answer with =
a<o:p></o:p></pre>
      <pre>Response to the SUBSCRIBE Request, telling the result of the r=
equest<o:p></o:p></pre>
      <pre>(subscription accepted/denied/unsupported?).<o:p></o:p></pre>
      <pre><o:p>&nbsp;</o:p></pre>
      <pre>2) NOTIFY: When subscription condition fires the resource B se=
nds a<o:p></o:p></pre>
      <pre>NOTIFY Request to resource A URI.<o:p></o:p></pre>
      <pre><o:p>&nbsp;</o:p></pre>
      <pre>When A receives the request, A can (should/must?) answer with =
a<o:p></o:p></pre>
      <pre>Response to the NOTIFY Request, telling the result of the requ=
est (OK,<o:p></o:p></pre>
      <pre>cancel subscription, change notify options?).<o:p></o:p></pre>=

      <pre><o:p>&nbsp;</o:p></pre>
      <pre>In each Request must be specified the URI of the resource doin=
g the<o:p></o:p></pre>
      <pre>Request too (Option? From-URI?).<o:p></o:p></pre>
      <pre><o:p>&nbsp;</o:p></pre>
      <pre>Angelo<o:p></o:p></pre>
      <pre><o:p>&nbsp;</o:p></pre>
      <pre>On Fri, May 28, 2010 at 14:50, Zach Shelby <o:p></o:p></pre>
      <pre><a moz-do-not-send=3D"true" href=3D"mailto:zach@sensinode.com"=
>&lt;zach@sensinode.com&gt;</a><o:p></o:p></pre>
      <pre> wrote:<o:p></o:p></pre>
      <pre>&nbsp; <o:p></o:p></pre>
      <pre><o:p>&nbsp;</o:p></pre>
      <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
      <blockquote style=3D"margin-top: 5pt; margin-bottom: 5pt;">
        <pre>Hi,<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>This is a really good conversation. One thing we need to do =
is remember what our minimum requirements are for subscribe/notify and no=
t try to solve something more than we should. &gt;From what I know it is =
sufficient to be able to receive notifications when a URI changes or peri=
odically. You might consider new URIs under this URI path to be changes t=
o a URI though...<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>On May 28, 2010, at 3:08 PM, Adriano Pezzuto (apezzuto) wrot=
e:<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>=

        <blockquote style=3D"margin-top: 5pt; margin-bottom: 5pt;">
          <pre>Hello,<o:p></o:p></pre>
          <pre>with this flavor, the SUBSCRIBE may be replaced by a simpl=
e POST. So no needs to have an explicit SUBSCRIBE method.<o:p></o:p></pre=
>
          <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:=
p></o:p></pre>
        </blockquote>
        <pre>This is what coap-01 assumes.<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>=

        <blockquote style=3D"margin-top: 5pt; margin-bottom: 5pt;">
          <pre>If we want support a more oriented peer-to-peer transactio=
n on CoAP, it looks to me both SUB and NOTIFY should be treated as messag=
es.<o:p></o:p></pre>
          <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:=
p></o:p></pre>
        </blockquote>
        <pre>The Request/Response model can be used peer-to-peer, and in =
CoAP you can even use a Request asynchronously. Additionally, we want a n=
ative RESTful subscribe/notify technique, that is, we want to subscribe t=
o resources and be susequently notified about those resources when they c=
hange.<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>In that sense, you can think of a subscription as a request =
to receive asynchronous notifications about a resource (about a URI). Thi=
s can be achieved by:<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>1.&nbsp; as a SUBSCRIBE Request on the URI with some option =
indicating the lifetime as in coap-01,<o:p></o:p></pre>
        <pre>2.&nbsp; as a Subcsribe message (no methods) on the URI with=
 some option,<o:p></o:p></pre>
        <pre>3.&nbsp; or as a POST Request on the URI with options indica=
ting that this is actually a subscription and the lifetime.&nbsp; This be=
nds the meaning of POST quite a bit and might be prone to mistakes?<o:p><=
/o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>The asynchronous response is a harder one. Can we bend the m=
eaning of a Request for making asynchronous notifications? Also a notific=
ation includes a URI about a resource on the requestor, which is inverse =
from normal Requests in REST. So the options here are:<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>1. as a Notify message about a URI (no methods) as in coap-0=
1,<o:p></o:p></pre>
        <pre>2. as a NOTIFY Request about a URI as was in coap-00,<o:p></=
o:p></pre>
        <pre>3. hmmm... reusing CRUD methods really doesn't work for this=
 one at all...<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>I wonder what the HTTP designers would have done if this wou=
ld have been a requirement back then? Maybe we should ask them...<o:p></o=
:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>Zach<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>=

        <blockquote style=3D"margin-top: 5pt; margin-bottom: 5pt;">
          <pre>Adriano<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>From: <o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:matthieu.vial@fr.non.schneider-electric.com">matthieu.via=
l@fr.non.schneider-electric.com</a> [<a
 moz-do-not-send=3D"true"
 href=3D"mailto:matthieu.vial@fr.non.schneider-electric.com">mailto:matth=
ieu.vial@fr.non.schneider-electric.com</a><o:p></o:p></pre>
          <pre>]<o:p></o:p></pre>
          <pre>Sent: venerd&igrave; 28 maggio 2010 13.52<o:p></o:p></pre>=

          <pre>To: Adriano Pezzuto (apezzuto)<o:p></o:p></pre>
          <pre>Cc: core; <o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a>; <a
 moz-do-not-send=3D"true" href=3D"mailto:robert.cragie@gridmerge.com">rob=
ert.cragie@gridmerge.com</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Subject: Re: [core] Subscribe/Notify for CoAP<o:p></o:p></=
pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:=
p></o:p></pre>
          <blockquote style=3D"margin-top: 5pt; margin-bottom: 5pt;">
            <pre>So strictly speaking, both NOTIFY and SUBSCRIBE are mess=
age types not&nbsp; methods!<o:p></o:p></pre>
            <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></=
pre>
            <pre><o:p>&nbsp;</o:p></pre>
            <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp; <o:p></o:p></pre>
          </blockquote>
          <pre>SUBSCRIBE can be just an asynchronous GET on update then I=
 think it is a method and NOTIFY is an asynchronous response so a message=
=2E<o:p></o:p></pre>
          <pre>But if we want to have selective notifications when a reso=
urce is created, updated or deleted then I think you're right NOTIFY and =
SUBSCRIBE are messages.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Does that make sense ?<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Matthieu<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&lt;image001.gif&gt;"Adriano Pezzuto (apezzuto)" <o:p></o:=
p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:apezzuto@cisco.com">&lt;apezzuto@cisco.com&gt;</a><o:p></=
o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>"Adriano Pezzuto (apezzuto)" <o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:apezzuto@cisco.com">&lt;apezzuto@cisco.com&gt;</a><o:p></=
o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Envoy&eacute; par : <o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a><o:p></o:=
p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>28/05/2010 12:50<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&lt;image003.png&gt;<o:p></o:p></pre>
          <pre>A<o:p></o:p></pre>
          <pre>&lt;image004.png&gt;<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:robert.cragie@gridmerge.com">&lt;robert.cragie@gridmerge.=
com&gt;</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&lt;image003.png&gt;<o:p></o:p></pre>
          <pre>cc<o:p></o:p></pre>
          <pre>&lt;image004.png&gt;<o:p></o:p></pre>
          <pre>core <o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
&lt;core@ietf.org&gt;</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&lt;image003.png&gt;<o:p></o:p></pre>
          <pre>Objet<o:p></o:p></pre>
          <pre>&lt;image004.png&gt;<o:p></o:p></pre>
          <pre>Re: [core] Subscribe/Notify for CoAP<o:p></o:p></pre>
          <pre>&lt;image004.png&gt;<o:p></o:p></pre>
          <pre>&lt;image004.png&gt;<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Hi Roberto,<o:p></o:p></pre>
          <pre>I understand your point and personally agree on M2M is qui=
te different from web page model. On the architectural RESTful style, the=
 method information tells the server what to do with data kept in the URI=
 information.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>So strictly speaking, both NOTIFY and SUBSCRIBE are messag=
e types not&nbsp; methods!<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Adriano<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>From: Robert Cragie [<o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:robert.cragie@gridmerge.com">mailto:robert.cragie@gridmer=
ge.com</a><o:p></o:p></pre>
          <pre>]<o:p></o:p></pre>
          <pre>Sent: venerd&igrave; 28 maggio 2010 11.53<o:p></o:p></pre>=

          <pre>To: Adriano Pezzuto (apezzuto)<o:p></o:p></pre>
          <pre>Cc: Paul Duffy (paduffy); Zach Shelby; core<o:p></o:p></pr=
e>
          <pre>Subject: Re: [core] Subscribe/Notify for CoAP<o:p></o:p></=
pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>I think the point here is that there are two levels we are=
 considering.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>At the lowest (foundation) level, there are the transactio=
n messages as described below. This provides a flexible mechanism for the=
 application with regard to synchronicity and threading. This is importan=
t for the types of devices CoAP is being aimed at.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Above that, the methods can be used according to the archi=
tectural style. So in this case, it is RESTful (COnstrained Restful Envir=
onments), which will naturally limit the number of methods and how transa=
ctions occur.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>The actual architecture using a combination of the methods=
 and messages also depends on what is required at the application layer. =
Consider a typical client which wants to subscribe to a resource. That cl=
ient controls the feed of data but needs a component which is capable of =
handling (possibly buffering) the data it receives through notifications.=
 Is this a separate server? Or would we want to consider it part of an en=
hanced client model which is able to process feeds of data? These are the=
 sort of models which have led to the myriad of solutions (GENA, Webhooks=
, long polling, pubsubhubbub, RESTMS etc.) based around HTTP which are al=
l essentially ingenious ways of getting around the limitations imposed by=
 HTTP and how it is processed for anything which deviates from the classi=
c web page access model.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>I think the aim of CoAP should be clean from the word go w=
ith regard to supporting these more peer-to-peer transactions, where the =
client can exist on either entity and both entities can feed data to each=
 other; typical in M2M applications.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Robert<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Robert Cragie (Pacific Gas &amp; Electric)<o:p></o:p></pre=
>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Gridmerge Ltd.<o:p></o:p></pre>
          <pre>89 Greenfield Crescent,<o:p></o:p></pre>
          <pre>Wakefield, WF4 4WA, UK<o:p></o:p></pre>
          <pre>+44 1924 910888<o:p></o:p></pre>
          <pre>+1 415 513 0064<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"http://www.gridmerge.c=
om">http://www.gridmerge.com</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>On 27/05/2010 7:08 PM, Adriano Pezzuto (apezzuto) wrote:<o=
:p></o:p></pre>
          <pre>Hi Robert,<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>in my personal opinion, the option 1a) brings some sort of=
 ambiguity to CoAP specs.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>My be my understatement of new CoAP specs is not so deep, =
but now we have 5 methods and 3 message types: request, response and noti=
fy. Which methods are allowed with which messages types?<o:p></o:p></pre>=

          <pre>I suppose you have to use PUT/POST method with notify mess=
age for asynch data notification. How to make a subscribe? I suppose you =
would use a SUBSCRIBE method with request/response message or SUBSCRIBE w=
ith notify message? Also what about POST/DELETE methods in a notify messa=
ge? They not make any sense..<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>I think the choice is between: option 1) -&gt; only CRUD m=
ethods and option 1b) -&gt; CRUD + SUB/NOTIFY methods, keeping in mind co=
st/benefits of both solutions.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Adriano<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>From: Robert Cragie [<o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:robert.cragie@gridmerge.com">mailto:robert.cragie@gridmer=
ge.com</a><o:p></o:p></pre>
          <pre>]<o:p></o:p></pre>
          <pre>Sent: mercoled&igrave; 26 maggio 2010 20.09<o:p></o:p></pr=
e>
          <pre>To: Adriano Pezzuto (apezzuto)<o:p></o:p></pre>
          <pre>Cc: Paul Duffy (paduffy); Zach Shelby; core<o:p></o:p></pr=
e>
          <pre>Subject: Re: [core] Subscribe/Notify for CoAP<o:p></o:p></=
pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Hi Adrian,<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>I would also prefer to keep the protocol in CoAP asynchron=
ous. You can always map an asynchronous protocol to a synchronous one but=
, as we see in HTTP, it always ends up as a kludge to do it the other way=
 round. The efforts which have been gone to to make HTTP quasi-asynchrono=
us via all the schemes mentioned below and many more besides (all non-int=
eroperable of course) is testament to how important this is for M2M commu=
nication.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>So, back to Zach's list, I favor 1a) for the following rea=
sons:<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Foundation level of messages:<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>1. request/response can be asynchronous or synchronous mes=
sages (as there is a transaction ID in there)<o:p></o:p></pre>
          <pre>2. notify is an asynchronous message<o:p></o:p></pre>
          <pre>Derived methods:<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>I think it makes sense to add a pub/sub model as a useful =
mechanism for M2M.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>So, looking at it the other way round: It will be entirely=
 possible to translate whatever is currently built on HTTP to CoAP based =
on the above, with all its restrictions regarding synchronous and client/=
server transactions. What may be harder is to translate directly is a CoA=
P-based application to HTTP. So I guess the question is: Do we want to be=
 hamstrung to synchronous client/server transactions as dictated by HTTP =
and provide a direct mapping to HTTP, then have to come up with similar k=
ludges for asynchronous peer-to-peer transactions as has been done in num=
erous ways for HTTP, or do we want to define the protocol cleanly to star=
t with and accept that some sort of transaction relaying/conversion would=
 have to take place at a mapping node?<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Robert<o:p></o:p></pre>
          <pre>Robert Cragie (Pacific Gas &amp; Electric)<o:p></o:p></pre=
>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Gridmerge Ltd.<o:p></o:p></pre>
          <pre>89 Greenfield Crescent,<o:p></o:p></pre>
          <pre>Wakefield, WF4 4WA, UK<o:p></o:p></pre>
          <pre>+44 1924 910888<o:p></o:p></pre>
          <pre>+1 415 513 0064<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"http://www.gridmerge.c=
om">http://www.gridmerge.com</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>On 26/05/2010 7:17 AM, Adriano Pezzuto (apezzuto) wrote:<o=
:p></o:p></pre>
          <pre>Hi,<o:p></o:p></pre>
          <pre>it looks to me that CoAP should use an explicit sub/notify=
 mechanism since this is the core of the machine-to-machine interaction m=
odel.<o:p></o:p></pre>
          <pre>HTTP suffers of this lack and we have seen a plethora of s=
olutions to give an asynch taste to it. Webhooks and websockets are only =
the lasts of the list.<o:p></o:p></pre>
          <pre>As someone has already pointed out on this list, it is the=
oretically possible to describe sub/notify using only CRUD methods but it=
 looks a little bit tricky and verbose.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Now we have a chance to build from scratch a new protocol =
with and I think using explicit sub/notify methods with a clear and well =
defined semantic is the best option. It is easily understanding from ever=
y developer and will prevent to build other fanny solutions on top of the=
 CoAP. HTTP does not have this well defined semantic and (for hundreds of=
 other reasons also) it is not used as wide protocol for machine-to-machi=
ne communication.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>CoAP - as binary protocol - and with an explicit asynch mo=
del has a chance to be a really wide protocol for M2M communication not o=
nly for constrained environments.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>my 2 cents<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>- adriano<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>-----Original Message-----<o:p></o:p></pre>
          <pre>From: <o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a> [<a
 moz-do-not-send=3D"true" href=3D"mailto:core-bounces@ietf.org">mailto:co=
re-bounces@ietf.org</a><o:p></o:p></pre>
          <pre>] On Behalf Of Paul Duffy (paduffy)<o:p></o:p></pre>
          <pre>Sent: mercoled&igrave; 26 maggio 2010 0.47<o:p></o:p></pre=
>
          <pre>To: Zach Shelby<o:p></o:p></pre>
          <pre>Cc: core<o:p></o:p></pre>
          <pre>Subject: Re: [core] Subscribe/Notify for CoAP<o:p></o:p></=
pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>On 5/25/2010 6:41 PM, Zach Shelby wrote:<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Hi,<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>On May 26, 2010, at 12:23 AM, Charles Palmer wrote:<o:p></=
o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Hi folks<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>It occurs to me that CoRE should be keeping a close eye on=
 ZigBee SE2.0 work, so that it is as easy as possible for ZigBee SE to us=
e CoRE when ready. That suggests to me that we should align with their su=
bscribe/notify process.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>I am not sure I understand that. I mean, ZigBee SE2.0 is d=
efining an application specific subscribe/notify mechanism for that purpo=
se so far for HTTP. This uses standard HTTP methods and some custom paylo=
ad and REST interfaces. CoAP Req/Res is already totally compatible with S=
E2.0 in that respect, so alignment is already OK there. Nothing stopping =
someone from using SE2.0 over CoAP.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Specifying a native susbcription/notify into CoAP is anoth=
er matter. We can't adopt a solution specific to one application as that =
won't solve the problems of other applications nor general HTTP mapping a=
t all (probably would make it worse). It seems that for the near future t=
here will be a bunch of HTTP push mechanisms in use without any clear sta=
ndard appearing - or am I wrong there?<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>If COAP extends HTTP semantics with new subscription metho=
ds, it will<o:p></o:p></pre>
          <pre>not be possible to easily interchange HTTP/COAP, and trans=
lation<o:p></o:p></pre>
          <pre>gateways will become more complex to implement.<o:p></o:p>=
</pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Zach<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Regards - Charles<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>-----Original Message-----<o:p></o:p></pre>
          <pre>From: <o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a> [<a
 moz-do-not-send=3D"true" href=3D"mailto:core-bounces@ietf.org">mailto:co=
re-bounces@ietf.org</a><o:p></o:p></pre>
          <pre>] On Behalf Of Paul Duffy<o:p></o:p></pre>
          <pre>Sent: 25 May 2010 03:48<o:p></o:p></pre>
          <pre>To: Zach Shelby<o:p></o:p></pre>
          <pre>Cc: core<o:p></o:p></pre>
          <pre>Subject: Re: [core] Subscribe/Notify for CoAP<o:p></o:p></=
pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Recommend something like #2, primarily to avoid introducin=
g non HTTP<o:p></o:p></pre>
          <pre>method semantics, simplifying HTTP/COAP translation.gatewa=
ys, etc.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>On 5/24/2010 11:49 AM, Zach Shelby wrote:<o:p></o:p></pre>=

          <pre><o:p>&nbsp;</o:p></pre>
          <pre>(thread renamed)<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>We have two different paths with regard to a subscribe/not=
ify mechanism for CoAP:<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>1. Use specific Subscription and Notify mechanisms for CoA=
P as HTTP really does not include this concept.<o:p></o:p></pre>
          <pre>1a) Notify as a message and SUBSCRIBE as a method. This is=
 currently used in coap-01.<o:p></o:p></pre>
          <pre>1b) NOTIFY and SUBSCRIBE as methods. This was used in coap=
-00, but we had a good list discussion about this leading to a. In practi=
ce it doesn't make a big difference if notification is a message or metho=
d.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>2. Use an HTTP specific framework such as Webhooks, the Zi=
gBee SE2.0 proposal or GENA.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>So far we have focused on 1 in the WG, and every now and a=
gain 2 comes up. At least I am not convinced that we need to suffer the d=
rawbacks of HTTP here. Anyways 2 does not help our mapping to HTTP in rea=
lity very much as there is no standard way of doing this over HTTP. Thus =
a CoAP-HTTP proxy may end up anyways translating between multiple HTTP fr=
ameworks depending on the application. So instead of doing a CoAP Notify/=
Subscribe to Webhooks mapping, you will could end up having to do a CoAP =
Webhooks to HTTP GENA mapping.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>I don't understand this last para. If CoAP sticks to the s=
emantics of<o:p></o:p></pre>
          <pre>the current HTTP methods, would this not offer a fairly st=
raightforward<o:p></o:p></pre>
          <pre>translation to/from HTTP?<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>From what I have heard so far 1 still seems like a wise ch=
oice, although I need to look at Webhooks more deeply. In reality many ap=
plications specify their own way of doing a push interface using REST met=
hods and specific payloads (ZigBee SE2.0 is such an example). That is jus=
t fine, and might be used instead of a specific CoAP notify/subscribe in =
that case. So 1 doesn't prevent the application using its own mechanism, =
it just provides a native way for doing push.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>What do people think?<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Zach<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>On May 17, 2010, at 6:44 PM,<o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:matthieu.vial@fr.non.schneider-electric.com">matthieu.via=
l@fr.non.schneider-electric.com</a><o:p></o:p></pre>
          <pre> wrote:<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Hi,<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>My comments about the subscribe/notify mechanism of Zigbee=
 IP.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Pros:<o:p></o:p></pre>
          <pre>- Derived from the webhooks concept<o:p></o:p></pre>
          <pre>- If used by CORE it will be easier to map to HTTP because=
 it uses only CRUD verbs.<o:p></o:p></pre>
          <pre>- The subscription message is extendable and could support=
 advanced options (delays, increment, ...)<o:p></o:p></pre>
          <pre>- Only one listening port whatever the transport binding i=
s.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Cons:<o:p></o:p></pre>
          <pre>- No interoperability without well known URIs and a well d=
efined subscription message format (Not sure CoAP draft is the right plac=
e to specify this).<o:p></o:p></pre>
          <pre>- XML/EXI is too complex to be the required format for the=
 default subscription/notification mechanism.<o:p></o:p></pre>
          <pre>- The notification should not require a subsequent GET to =
retrieve the content.<o:p></o:p></pre>
          <pre>- Subresource subscription is redundant.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Hope this could help,<o:p></o:p></pre>
          <pre>Matthieu<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&lt;graycol.gif&gt;"Charles Palmer"<o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:charles.palmer@onzo.com">&lt;charles.palmer@onzo.com&gt;<=
/a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>"Charles Palmer"<o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:charles.palmer@onzo.com">&lt;charles.palmer@onzo.com&gt;<=
/a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Envoy&eacute; par : <o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a><o:p></o:=
p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>15/05/2010 14:06<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&lt;ecblank.gif&gt;<o:p></o:p></pre>
          <pre>A<o:p></o:p></pre>
          <pre>&lt;ecblank.gif&gt;<o:p></o:p></pre>
          <pre>"core"<o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
&lt;core@ietf.org&gt;</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&lt;ecblank.gif&gt;<o:p></o:p></pre>
          <pre>cc<o:p></o:p></pre>
          <pre>&lt;ecblank.gif&gt;<o:p></o:p></pre>
          <pre>&lt;ecblank.gif&gt;<o:p></o:p></pre>
          <pre>Objet<o:p></o:p></pre>
          <pre>&lt;ecblank.gif&gt;<o:p></o:p></pre>
          <pre>Re: [core] Selecting a WG document for CoAP<o:p></o:p></pr=
e>
          <pre>&lt;ecblank.gif&gt; &lt;ecblank.gif&gt;<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Dear all<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Those interested in the subscribe/notify discussion might =
like to look<o:p></o:p></pre>
          <pre>at the draft Smart Energy Profile 2.0 Application Protocol=
<o:p></o:p></pre>
          <pre>Specification. It is available here:<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20P=
ublicApp">http://zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergy20=
PublicApp</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>licationProfile.aspx<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>It manages subscribe/notify by using POST. This seems to r=
emove the need<o:p></o:p></pre>
          <pre>for SUBSCRIBE and notify.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>"Imagine a host A, which exposes a resource at http{s}://A=
/resource and<o:p></o:p></pre>
          <pre>a second host B, which wishes to learn of changes to this =
resource. To<o:p></o:p></pre>
          <pre>facilitate a subscription/ notification mechanism, A would=
 expose a<o:p></o:p></pre>
          <pre>resource http{s}://A/sub and B would expose a resource htt=
p{s}://B/ntfy.<o:p></o:p></pre>
          <pre>To subscribe to notifications regarding http{s}://A/resour=
ce, B would<o:p></o:p></pre>
          <pre>send a POST to the address http{s}://A/sub/B containing th=
e URI of the<o:p></o:p></pre>
          <pre>resource of interest (http{s}://A/resource) and the URI of=
 B's<o:p></o:p></pre>
          <pre>notification resource (http{s}://B/ntfy). Following this s=
ubscription<o:p></o:p></pre>
          <pre>step, should A wish to notify B of a change to the resourc=
e addressed at<o:p></o:p></pre>
          <pre>http{s}://A/resource, A would send a POST to the address<o=
:p></o:p></pre>
          <pre>http{s}://B/ntfy containing the URI of the resource change=
d<o:p></o:p></pre>
          <pre>(http{s}://A/resource) and the URI of A's subscription res=
ource<o:p></o:p></pre>
          <pre>(http{s}://A/sub/B), should A wish to change its subscript=
ion. The host<o:p></o:p></pre>
          <pre>B can then query the resource (or not) at its leisure."<o:=
p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Sleepy nodes are not allowed to subscribe, and must poll.<=
o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Regards - Charles Palmer<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>-----Original Message-----<o:p></o:p></pre>
          <pre>From: <o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</a> [<a
 moz-do-not-send=3D"true" href=3D"mailto:core-bounces@ietf.org">mailto:co=
re-bounces@ietf.org</a><o:p></o:p></pre>
          <pre>] On Behalf Of<o:p></o:p></pre>
          <pre>Angelo P. Castellani<o:p></o:p></pre>
          <pre>Sent: 14 May 2010 13:14<o:p></o:p></pre>
          <pre>To: Zach Shelby<o:p></o:p></pre>
          <pre>Cc: core<o:p></o:p></pre>
          <pre>Subject: Re: [core] Selecting a WG document for CoAP<o:p><=
/o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Zach,<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>thanks for the comments, but please refer to my most recen=
t e-mail for<o:p></o:p></pre>
          <pre>a more specific list of technical issues I'm pointing to.<=
o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>I want to do only a little integration to what I've writte=
n there.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>In my very personal opinion, to maximize adherence with th=
e REST model<o:p></o:p></pre>
          <pre>and minimize implementation effort SUBSCRIBE and NOTIFY sh=
ould be<o:p></o:p></pre>
          <pre>mapped to methods (as discussed many times together...).<o=
:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Uniform interface principle (Fielding PhD dissertation Sec=
tion 5.1.5,<o:p></o:p></pre>
          <pre>"The central feature that distinguishes the REST architect=
ural style<o:p></o:p></pre>
          <pre>[...]") states that to simplify the software architecture,=
 resource<o:p></o:p></pre>
          <pre>interfaces/interfaces should be as general as possible.<o:=
p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>I agree with this principle in this specific case, mainly =
because<o:p></o:p></pre>
          <pre>handling a special message type for notify leads node soft=
ware design<o:p></o:p></pre>
          <pre>to a more complex architecture.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>The reason is that this new message type requires special =
handling and<o:p></o:p></pre>
          <pre>introduces a complexity in the software modularization.<o:=
p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Best,<o:p></o:p></pre>
          <pre>Angelo<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>On Fri, May 14, 2010 at 13:06, Zach Shelby<o:p></o:p></pre=
>
          <pre><a moz-do-not-send=3D"true"
 href=3D"mailto:zach@sensinode.com">&lt;zach@sensinode.com&gt;</a><o:p></=
o:p></pre>
          <pre> wrote:<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Hi Angelo,<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>On May 13, 2010, at 14:24 , Angelo P. Castellani wrote:<o:=
p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Dear C. Bormann, all,<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>before deciding for the final direction, I've the followin=
g<o:p></o:p></pre>
          <pre>observations about draft-shelby-core-coap-01<o:p></o:p></p=
re>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>While I mostly share Zach's view of the protocol approach,=
 and<o:p></o:p></pre>
          <pre>appreciate many aspects of the proposal, there are in my o=
pinion<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>still<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>some open issues that need to be at least discussed before=
 the<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>current<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>document can be selected.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Of course there are plenty of open issues. Remember that w=
orking group<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>documents still undertake as much change and improvement a=
s the WG<o:p></o:p></pre>
          <pre>wants, so by no means is coap-01 set in stone. I would exp=
ect at least<o:p></o:p></pre>
          <pre>5-10 more revisions still along the way. Already several o=
f your ideas<o:p></o:p></pre>
          <pre>have been integrated into coap-01, and several more are un=
der<o:p></o:p></pre>
          <pre>consideration, so it is coming along. Patience ;-)<o:p></o=
:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>In particular, I would like to highlight the following:<o:=
p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>a) As it is now, it is not possible to have a straightforw=
ard<o:p></o:p></pre>
          <pre>translation of HTTP -&gt; CoAP and viceversa: see<o:p></o:=
p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"http://www.ietf.org/mail-archive/web/core/current/msg00133.html"=
>http://www.ietf.org/mail-archive/web/core/current/msg00133.html</a><o:p>=
</o:p></pre>
          <pre> (this<o:p></o:p></pre>
          <pre>impacts the scalability of the web service model too)<o:p>=
</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>In coap-01 the Method names are now identical to HTTP meth=
ods. The<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Req/Res interaction is a direct translation. The URI hiera=
rchy is<o:p></o:p></pre>
          <pre>compatible, and the URI binary code format we are still wo=
rking on<o:p></o:p></pre>
          <pre>obviously. The only thing that takes some state to transla=
te is<o:p></o:p></pre>
          <pre>Subscribe/Notify. But note, Subscribe/Notify takes some st=
ate no matter<o:p></o:p></pre>
          <pre>how you do it, even with HTTP-HTTP there is no clean and e=
asy way to<o:p></o:p></pre>
          <pre>handle subscriptions.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>b) Moreover, CoAP's implementation is not as simple as it =
should be.<o:p></o:p></pre>
          <pre>I've investigated the implementation and some design choic=
es (as<o:p></o:p></pre>
          <pre>Options) are leading to very high program complexity (ROM)=
 on a<o:p></o:p></pre>
          <pre>MSP430-based device.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>This we can definitely improve, and already made several o=
ptimizations<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>from -00 to -01. Here I need some very concrete proposals =
though. Also<o:p></o:p></pre>
          <pre>remember that many things are optional, for example subscr=
ibe/notify is<o:p></o:p></pre>
          <pre>not required if you don't need it.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>c) Finally when comparing HTTP message size with CoAP mess=
age size,<o:p></o:p></pre>
          <pre>the resulting compression isn't as good as you may expect.=
<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Example:<o:p></o:p></pre>
          <pre>HTTP: GET /sensor/temp.xml HTTP/1.0 =3D 32 B<o:p></o:p></p=
re>
          <pre>CoAP: 24 B with options parsing procedure requiring an add=
ed<o:p></o:p></pre>
          <pre>implementation complexity<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Right, that is not how it will work in practice. Working w=
ith a real<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>HTTP server that HTTP header will be more complex, and on =
the CoAP side<o:p></o:p></pre>
          <pre>you would chose shorter URLs. The biggest improvement poss=
ible here is<o:p></o:p></pre>
          <pre>from using binary coded URLs of course. We need to look at=
 a wider range<o:p></o:p></pre>
          <pre>of interactions and real HTTP headers as well to check tha=
t we are<o:p></o:p></pre>
          <pre>efficient enough.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Addressing all these points potentially leads to major tec=
hnical<o:p></o:p></pre>
          <pre>modifications (especially point a) on the current draft, h=
ence it is<o:p></o:p></pre>
          <pre>appropriate in my opinion to discuss these points before m=
aking the<o:p></o:p></pre>
          <pre>final decision.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>I am not sure what else you have in mind for a). If we jus=
t forget<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>about Subscribe/Notify then you are good to go. But then y=
ou are also<o:p></o:p></pre>
          <pre>not fulfilling the charter or the industry needs in that r=
espect.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Thanks,<o:p></o:p></pre>
          <pre>Zach<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Best regards,<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Angelo P. Castellani<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>On Mon, May 10, 2010 at 18:51, Carsten Bormann<o:p></o:p><=
/pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:cabo@tzi.org">&=
lt;cabo@tzi.org&gt;</a><o:p></o:p></pre>
          <pre>wrote:<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>The CORE WG has a milestone to select a WG document for Co=
AP in<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>April:<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"http://datatracker.ietf.org/wg/core/charter/">http://datatracker=
=2Eietf.org/wg/core/charter/</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>...<o:p></o:p></pre>
          <pre>Apr 2010 Select WG document for basis of the CoAP protocol=
<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Of the various documents that have been contributed,<o:p><=
/o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>draft-shelby-core-coap has significant discussion, as well=
 as the<o:p></o:p></pre>
          <pre>largest number of updates (including a previous version th=
at was still<o:p></o:p></pre>
          <pre>called -6lowapp-coap).<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Today, another updated version of that draft was announced=
=2E See<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"http://www.ietf.org/mail-archive/web/core/current/msg00138.html"=
>http://www.ietf.org/mail-archive/web/core/current/msg00138.html</a><o:p>=
</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>for the announcement and<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"http://tools.ietf.org/html/draft-shelby-core-coap-01">http://too=
ls.ietf.org/html/draft-shelby-core-coap-01</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>for the draft itself.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>However, as the authors say, there are still significant T=
ODOs.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Are we in a state yet where we can say whether this is the=
 right<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>direction for the WG to take?<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>If yes, is it the right direction? Should we adopt it as a=
 WG<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>document?<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>If you don't think we can say yet, is there a set of techn=
ical<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>decisions you would like the authors to take with priority=
?<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Note that once a document has become a WG document, the au=
thors act<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>as editors for the working group, making (and usually fles=
hing out the<o:p></o:p></pre>
          <pre>details of) any change that the WG decides it needs.<o:p><=
/o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>If you think we can still improve the draft, this is not a=
n obstacle<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>to making it a WG document.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>But of course we shouldn't do that if we intend to reverse=
 its<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>fundamental technical direction.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>In order to stay roughly in sync with our milestones, we s=
hould<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>reach at a decision on how to go forward this week.<o:p></=
o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>Gruesse, Carsten<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>_______________________________________________<o:p></o:p>=
</pre>
          <pre>core mailing list<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
core@ietf.org</a><o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>_______________________________________________<o:p></o:p>=
</pre>
          <pre>core mailing list<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
core@ietf.org</a><o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>--<o:p></o:p></pre>
          <pre>Zach Shelby, Chief Nerd, Sensinode Ltd.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"http://zachshelby.org"=
>http://zachshelby.org</a> - My blog "On the Internet of Things<o:p></o:p=
></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"http://6lowpan.net-Mybook">"<o:p></o:p></a></pre>
          <pre><span class=3D"MsoHyperlink"><a moz-do-not-send=3D"true"
 href=3D"http://6lowpan.net-Mybook">http://6lowpan.net - My book "</a></s=
pan><o:p></o:p></pre>
          <pre>6LoWPAN: The Wireless Embedded Internet"<o:p></o:p></pre>
          <pre>Mobile: +358 40 7796297<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>_______________________________________________<o:p></o:p>=
</pre>
          <pre>core mailing list<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
core@ietf.org</a><o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>--------------------------------<o:p></o:p></pre>
          <pre>Onzo is a limited company number 06097997 registered in En=
gland&amp; Wales. The<o:p></o:p></pre>
          <pre>registered office is 6 Great Newport Street, London, WC2H =
7JB, United Kingdom.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>This email message may contain confidential and/or privile=
ged information, and<o:p></o:p></pre>
          <pre>is intended solely for the addressee(s). If you have recei=
ved this email in<o:p></o:p></pre>
          <pre>error, please notify Onzo immediately. Unauthorised copyin=
g, disclosure or<o:p></o:p></pre>
          <pre>distribution of the material in this email is forbidden.<o=
:p></o:p></pre>
          <pre>--------------------------------<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>_______________________________________________<o:p></o:p>=
</pre>
          <pre>core mailing list<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
core@ietf.org</a><o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>__________________________________________________________=
____________<o:p></o:p></pre>
          <pre>This email has been scanned by the MessageLabs Email Secur=
ity System.<o:p></o:p></pre>
          <pre>__________________________________________________________=
____________<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>_______________________________________________<o:p></o:p>=
</pre>
          <pre>core mailing list<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
core@ietf.org</a><o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>_______________________________________________<o:p></o:p>=
</pre>
          <pre>core mailing list<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
core@ietf.org</a><o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>--------------------------------<o:p></o:p></pre>
          <pre>Onzo is a limited company number 06097997 registered in En=
gland&amp; Wales. The<o:p></o:p></pre>
          <pre>registered office is 6 Great Newport Street, London, WC2H =
7JB, United Kingdom.<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>This email message may contain confidential and/or privile=
ged information, and<o:p></o:p></pre>
          <pre>is intended solely for the addressee(s). If you have recei=
ved this email in<o:p></o:p></pre>
          <pre>error, please notify Onzo immediately. Unauthorised copyin=
g, disclosure or<o:p></o:p></pre>
          <pre>distribution of the material in this email is forbidden.<o=
:p></o:p></pre>
          <pre>--------------------------------<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>_______________________________________________<o:p></o:p>=
</pre>
          <pre>core mailing list<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
core@ietf.org</a><o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>_______________________________________________<o:p></o:p>=
</pre>
          <pre>core mailing list<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
core@ietf.org</a><o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>__________________________________________________________=
____________<o:p></o:p></pre>
          <pre>This email has been scanned by the MessageLabs Email Secur=
ity System.<o:p></o:p></pre>
          <pre>__________________________________________________________=
___________________________________________________________<o:p></o:p></p=
re>
          <pre>core mailing list<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
core@ietf.org</a><o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>_______________________________________________<o:p></o:p>=
</pre>
          <pre>core mailing list<o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">=
core@ietf.org</a><o:p></o:p></pre>
          <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
          <pre><o:p>&nbsp;</o:p></pre>
          <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:=
p></o:p></pre>
        </blockquote>
        <pre>--<o:p></o:p></pre>
        <pre>Zach Shelby, Chief Nerd, Sensinode Ltd.<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre><a moz-do-not-send=3D"true" href=3D"http://zachshelby.org">h=
ttp://zachshelby.org</a>&nbsp; - My blog "On the Internet of Things<o:p><=
/o:p></pre>
        <pre><a moz-do-not-send=3D"true" href=3D"http://6lowpan.net-Myboo=
k">"<o:p></o:p></a></pre>
        <pre><span class=3D"MsoHyperlink"><a moz-do-not-send=3D"true"
 href=3D"http://6lowpan.net-Mybook">http://6lowpan.net - My book "</a></s=
pan><o:p></o:p></pre>
        <pre>6LoWPAN: The Wireless Embedded Internet"<o:p></o:p></pre>
        <pre>Mobile: +358 40 7796297<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>_______________________________________________<o:p></o:p></=
pre>
        <pre>core mailing list<o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">co=
re@ietf.org</a><o:p></o:p></pre>
        <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
        <pre><o:p>&nbsp;</o:p></pre>
        <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>=

      </blockquote>
      <pre>_______________________________________________<o:p></o:p></pr=
e>
      <pre>core mailing list<o:p></o:p></pre>
      <pre><o:p>&nbsp;</o:p></pre>
      <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">core=
@ietf.org</a><o:p></o:p></pre>
      <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
      <pre><o:p>&nbsp;</o:p></pre>
      <pre><o:p>&nbsp;</o:p></pre>
      <pre>&nbsp; <o:p></o:p></pre>
      <pre><o:p>&nbsp;</o:p></pre>
      <pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
    </blockquote>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>_______________________________________________<o:p></o:p></pre>=

    <pre>core mailing list<o:p></o:p></pre>
    <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">core@i=
etf.org</a><o:p></o:p></pre>
    <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre><o:p>&nbsp;</o:p></pre>
    <pre>_______________________________________________<o:p></o:p></pre>=

    <pre>core mailing list<o:p></o:p></pre>
    <pre><a moz-do-not-send=3D"true" href=3D"mailto:core@ietf.org">core@i=
etf.org</a><o:p></o:p></pre>
    <pre><a moz-do-not-send=3D"true"
 href=3D"https://www.ietf.org/mailman/listinfo/core">https://www.ietf.org=
/mailman/listinfo/core</a><o:p></o:p></pre>
    <pre>&nbsp;&nbsp;&nbsp; <o:p></o:p></pre>
  </blockquote>
  <pre><o:p>&nbsp;</o:p></pre>
  <pre>&nbsp; <o:p></o:p></pre>
  </div>
  </div>
  <pre wrap=3D"">
<fieldset class=3D"mimeAttachmentHeader"></fieldset>
_______________________________________________
core mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>
  </pre>
</blockquote>
</body>
</html>

--------------020003010103090800090508--

--------------ms020304020806060904020900
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

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
NTlaMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBM
dGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxKY8VXNV+065yplaHmjAdQRwnd/p/6Me7L3N9Vvy
Gna9fww6YfK/Uc4B1OVQCjDXAmNaLIkVcI7dyfArhVqqP3FWy688Cwfn8R+RNiQqE88r1fOC
dz0Dviv+uxg+B79AgAJk16emu59l0cUqVIUPSAR/p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCB
kTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwudGhh
d3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWlsQ0EuY3JsMAsGA1UdDwQEAwIBBjApBgNV
HREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxhYmVsMi0xMzgwDQYJKoZIhvcNAQEFBQAD
gYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/TCG4+DYfqi2fNi/A9BxQIJNwPP2t4WFi
w9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amcOY6MIE9lX5Xa9/eH1sYITq726jTlEBpb
NU1341YheILcIRk13iSx0x1G/11fZU8xggNxMIIDbQIBATB2MGIxCzAJBgNVBAYTAlpBMSUw
IwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUg
UGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQdBWGHEaYIBO/4g+d746QHzAJBgUrDgMC
GgUAoIIB0DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA2
MDgxMzQxMTdaMCMGCSqGSIb3DQEJBDEWBBT33p+0n7YLqYg3uySOWgSH6jwPPTBfBgkqhkiG
9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYI
KoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwgYUGCSsGAQQBgjcQBDF4MHYw
YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x
LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpgg
E7/iD53vjpAfMIGHBgsqhkiG9w0BCRACCzF4oHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpggE7/iD53vjpAfMA0GCSqGSIb3DQEBAQUA
BIIBAJqIcl8wO326yyaWWnaFbQpcB3TF/j02UvLdrW9v+9BFEWTmzKrG1DbIj7R6zD52qBF7
pvbvHY6DXvMfL23yTCVelZuD5U0BpBnjRBjDAFGAdV9UyVgk03kPYPHwwc2nC7GqGYrAZh6a
i0tQRsV/nr199aMaM6fCS8UEFenNqbznQNIOvmz/IRK7s+LZqDvj1TaqQgL3bUMnN1eeHUp4
kPhQ+mwbpMqqa9137n93rQT3g+fC0n6gPR7SCu2xWMIYes/+X53AnWA1vfMvwWInp1rbVzv2
A6kaClYagC2kzSVAnXXie8znZwZX1nC48y461QpftIZhIQbDXIlcpGttf/gAAAAAAAA=
--------------ms020304020806060904020900--

From angelo.castellani@gmail.com  Tue Jun  8 07:18:26 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 71A8D28C1D7 for <core@core3.amsl.com>; Tue,  8 Jun 2010 07:18:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.577
X-Spam-Level: 
X-Spam-Status: No, score=0.577 tagged_above=-999 required=5 tests=[AWL=-0.047,  BAYES_50=0.001, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZPiNfFS7txK6 for <core@core3.amsl.com>; Tue,  8 Jun 2010 07:18:25 -0700 (PDT)
Received: from mail-gw0-f44.google.com (mail-gw0-f44.google.com [74.125.83.44]) by core3.amsl.com (Postfix) with ESMTP id 18A4E28C1C5 for <core@ietf.org>; Tue,  8 Jun 2010 07:18:25 -0700 (PDT)
Received: by gwj15 with SMTP id 15so83751gwj.31 for <core@ietf.org>; Tue, 08 Jun 2010 07:18:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type; bh=DGevH//ed4dqPb3IKzHDymOyVZycSRAjGZYPtxJhbts=; b=UzwZs70SeGMYW+pW7CQND7lGm/q3EbQpH8WDXsWEH1eDmuPPAjU5oQlCePL/kHCWme k3XobmB76XxeB+mH6PP2fbJgzZVHdDFFrJU56c/DEzojywIhDqgcRg6buVqsscooERBr Mc0EgViGDAfE0Qbyo+qOJt2ZjV155XuvCfOis=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; b=VanGmkg/pRPpLURI6W9hbA8vrqYgy93hLXopNHBgQuCipebtZRkKfuRKgAgnU4nRB4 IZz92XjWv852wEDAr5z/4FckFO8Ik8R7DHY0BG7QsOX0NFgF93PduU9li+Xva7wdKPk2 y0VVRlkCSIfZfGtbDjA26SQVj8bvhEW62Nxss=
MIME-Version: 1.0
Received: by 10.90.77.17 with SMTP id z17mr8867501aga.7.1276006699643; Tue, 08  Jun 2010 07:18:19 -0700 (PDT)
Sender: angelo.castellani@gmail.com
Received: by 10.90.54.12 with HTTP; Tue, 8 Jun 2010 07:18:19 -0700 (PDT)
In-Reply-To: <AANLkTilPl4VL7pwlrdYxFfPpOBwSOLsqado3LGmfFvFB@mail.gmail.com>
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com> <0D212BD466921646B58854FB79092CEC0232F4D5@XMB-AMS-106.cisco.com> <E2549175-1A08-4ED9-8B8D-A30DBA89CF01@cisco.com> <AANLkTilerORXUJQoXqpIHA3a0ZRhCVnegrChv-batP-D@mail.gmail.com> <0D212BD466921646B58854FB79092CEC0232F78F@XMB-AMS-106.cisco.com> <AANLkTilMI8Wh0HhGcHulrinGukYYxr57VQ68XRkfVr4F@mail.gmail.com> <AANLkTimXc4v0WBiDosmvxO0dL1-0Rp5b3bUASYOVXlhb@mail.gmail.com> <AANLkTimdNB3Jh-Urri9XYXxDtU_eiKOlblWjNqhB8Lay@mail.gmail.com> <AANLkTilPl4VL7pwlrdYxFfPpOBwSOLsqado3LGmfFvFB@mail.gmail.com>
Date: Tue, 8 Jun 2010 16:18:19 +0200
X-Google-Sender-Auth: uxr0onFPRQcLxyqEPLZFb5XQyJ8
Message-ID: <AANLkTilp7cVeBbmFdq2o3e6Jei3y4RBXL_H77d3-u7u6@mail.gmail.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
To: Mark Baker <distobj@acm.org>
Content-Type: multipart/alternative; boundary=00163630ecd31035580488857623
Cc: core <core@ietf.org>
Subject: Re: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 08 Jun 2010 14:18:26 -0000

--00163630ecd31035580488857623
Content-Type: text/plain; charset=ISO-8859-1

Mark,

there could be benefits in the constrained node/proxy sw architecture,
because it doesn't need to handle a method different from GET but only a
specialization using option(s) of GET... Code to handle this is supposed to
be directly reusable and shared with GET.

However it is not a very strong optimization, so if using GET there is a
substantial violation of the HTTP specification (I can't understand fully
the reason, GET is a read-only method and Subscribed-GET will be the same),
I agree with you that another method (or a new one) should be used.

Best,
Angelo


On Tue, Jun 8, 2010 at 15:07, Mark Baker <distobj@acm.org> wrote:

> On Tue, Jun 8, 2010 at 8:27 AM, Angelo P. Castellani
> <angelo@castellani.net> wrote:
> > Mark,
> >
> > I understand your point, however I write just some more thoughts about
> this.
> >
> > Reading RFC2626 Sec. 9.1.1, what I understand using a GET or a HEAD
> implies
> > that no action is taken on the server. In this way an user knows that GET
> is
> > a "safe" request, no "damage" can happen because of this.
> >
> > But if one GET is safe, a recurrent GET seems still safe; surely a
> > relationship is defined (at transport when possible and yes it can be
> very
> > long).
>
> I don't follow.  The meaning of each GET message is independent of the
> connection on which it arrives, so there's no relationship there.
>
> > Having a look at the RFC is said that GET SHOULD be safe (no MUST)...
>
> Right.  See the last paragraph of 9.1.1 for an explanation of why
> that's the case.  That's really the key point here.
>
> > In my opinion there are benefits in choosing GET to do something like
> this,
> > mainly the simplified software architecture in the node and/or proxy.
>
> I can't see any significant benefits over using an existing unsafe
> method, or the creation of a new method.
>
> Mark.
>

--00163630ecd31035580488857623
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Mark,<br><br>there could be benefits in the constrained node/proxy sw archi=
tecture, because it doesn&#39;t need to handle a method different from GET =
but only a specialization using option(s) of GET... Code to handle this is =
supposed to be directly reusable and shared with GET.<br>
<br>However it is not a very strong optimization, so if using GET there is =
a substantial violation of the HTTP specification (I can&#39;t understand f=
ully the reason, GET is a read-only method and Subscribed-GET will be the s=
ame), I agree with you that another method (or a new one) should be used.<b=
r>
<br>Best,<br>Angelo<br><br><br><div class=3D"gmail_quote">On Tue, Jun 8, 20=
10 at 15:07, Mark Baker <span dir=3D"ltr">&lt;<a href=3D"mailto:distobj@acm=
.org">distobj@acm.org</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_q=
uote" style=3D"border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0=
pt 0.8ex; padding-left: 1ex;">
<div class=3D"im">On Tue, Jun 8, 2010 at 8:27 AM, Angelo P. Castellani<br>
&lt;<a href=3D"mailto:angelo@castellani.net">angelo@castellani.net</a>&gt; =
wrote:<br>
&gt; Mark,<br>
&gt;<br>
&gt; I understand your point, however I write just some more thoughts about=
 this.<br>
&gt;<br>
&gt; Reading RFC2626 Sec. 9.1.1, what I understand using a GET or a HEAD im=
plies<br>
&gt; that no action is taken on the server. In this way an user knows that =
GET is<br>
&gt; a &quot;safe&quot; request, no &quot;damage&quot; can happen because o=
f this.<br>
&gt;<br>
&gt; But if one GET is safe, a recurrent GET seems still safe; surely a<br>
&gt; relationship is defined (at transport when possible and yes it can be =
very<br>
&gt; long).<br>
<br>
</div>I don&#39;t follow. =A0The meaning of each GET message is independent=
 of the<br>
connection on which it arrives, so there&#39;s no relationship there.<br>
<div class=3D"im"><br>
&gt; Having a look at the RFC is said that GET SHOULD be safe (no MUST)...<=
br>
<br>
</div>Right. =A0See the last paragraph of 9.1.1 for an explanation of why<b=
r>
that&#39;s the case. =A0That&#39;s really the key point here.<br>
<div class=3D"im"><br>
&gt; In my opinion there are benefits in choosing GET to do something like =
this,<br>
&gt; mainly the simplified software architecture in the node and/or proxy.<=
br>
<br>
</div>I can&#39;t see any significant benefits over using an existing unsaf=
e<br>
method, or the creation of a new method.<br>
<font color=3D"#888888"><br>
Mark.<br>
</font></blockquote></div><br>

--00163630ecd31035580488857623--

From trac@tools.ietf.org  Fri Jun 11 02:18:10 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9C12B3A6A2E for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:18:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.857
X-Spam-Level: 
X-Spam-Status: No, score=-101.857 tagged_above=-999 required=5 tests=[AWL=0.743, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id csLuASUYKmVj for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:18:09 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 6AC343A693A for <core@ietf.org>; Fri, 11 Jun 2010 02:18:09 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1ON0NP-0007T4-04; Fri, 11 Jun 2010 02:18:11 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: fluffy@cisco.com, zach@sensinode.com
X-Trac-Project: core
Date: Fri, 11 Jun 2010 09:18:10 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: https://wiki.tools.ietf.org/wg/core/trac/ticket/1
Message-ID: <057.8d37fc1963a953ac6712dad4000b6b92@tools.ietf.org>
X-Trac-Ticket-ID: 1
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: fluffy@cisco.com, zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
X-Mailman-Approved-At: Fri, 11 Jun 2010 02:20:30 -0700
Cc: core@ietf.org
Subject: [core]  #1: Agree on Sub/Not model and requirements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 09:18:10 -0000

#1: Agree on Sub/Not model and requirements
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  Cullen Jennings <fluffy@â€¦>        
     Type:  task                |      Status:  new                               
 Priority:  critical            |   Milestone:                                    
Component:  coap                |     Version:                                    
 Severity:  -                   |    Keywords:                                    
--------------------------------+-------------------------------------------
 The working group has intensely discussed detailed solutions for
 Subscribe/Notify, however Cullen pointed out that we didn't yet have a
 common understanding of the model to use and the requirements. This ticket
 is for the WG to converge on the general model and requirements. After
 this a new design based on that model and requirements will be included in
 draft-ietf-coap-01.

 Cullen started this important thread here:
 http://www.ietf.org/mail-archive/web/core/current/msg00274.html

 The goal of this ticket is to have a short I-D capturing this model and
 requirements.

-- 
Ticket URL: <https://wiki.tools.ietf.org/wg/core/trac/ticket/1>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Fri Jun 11 02:20:45 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C4E133A68E1 for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:20:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.896
X-Spam-Level: 
X-Spam-Status: No, score=-101.896 tagged_above=-999 required=5 tests=[AWL=0.704, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AcMBe6OnwKsb for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:20:37 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 1563028C0D7 for <core@ietf.org>; Fri, 11 Jun 2010 02:20:37 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1ON0Pn-0007mB-Pf; Fri, 11 Jun 2010 02:20:39 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: zach@sensinode.com
X-Trac-Project: core
Date: Fri, 11 Jun 2010 09:20:39 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: https://wiki.tools.ietf.org/wg/core/trac/ticket/2
Message-ID: <057.f066386920aa68369202bab242483a0f@tools.ietf.org>
X-Trac-Ticket-ID: 2
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #2: New Sub/Not design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 09:20:45 -0000

#2: New Sub/Not design
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  zach@â€¦            
     Type:  enhancement         |      Status:  new               
 Priority:  critical            |   Milestone:                    
Component:  coap                |     Version:                    
 Severity:  -                   |    Keywords:                    
--------------------------------+-------------------------------------------
 After the WG has converged on the general Sub/Not model and requirements
 (Ticket #1) - this ticket is for a new design for Sub/Not in the next
 revision of the coap draft.

 coap-00 currently includes a straw-man approach to this, which is now
 marked as "Experimental" until the next version of the draft with the new
 design.

-- 
Ticket URL: <https://wiki.tools.ietf.org/wg/core/trac/ticket/2>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Fri Jun 11 02:25:43 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 45C1128C146 for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:25:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.187
X-Spam-Level: 
X-Spam-Status: No, score=-101.187 tagged_above=-999 required=5 tests=[AWL=-0.076, BAYES_05=-1.11, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ovxxuO+4iWdQ for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:25:42 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 7B4C228C0E0 for <core@ietf.org>; Fri, 11 Jun 2010 02:25:42 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1ON0Ui-0001MX-S9; Fri, 11 Jun 2010 02:25:44 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: zach@sensinode.com
X-Trac-Project: core
Date: Fri, 11 Jun 2010 09:25:44 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/3
Message-ID: <057.9990f45e4a0caf57c2536f6cbd946c0d@tools.ietf.org>
X-Trac-Ticket-ID: 3
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #3: Section 2.1 improvements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 09:25:43 -0000

#3: Section 2.1 improvements
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  zach@â€¦            
     Type:  enhancement         |      Status:  new               
 Priority:  minor               |   Milestone:                    
Component:  coap                |     Version:                    
 Severity:  -                   |    Keywords:                    
--------------------------------+-------------------------------------------
 Section 2.1 "Interaction Model" needs the following improvements:

 - Distinguish which options are used by the CoAP end-point and which are
 passed to the application[[BR]]

 - Define the behavior on parsing failure. Error or silent discard?[[BR]]

 - Finish Option validation and processing text.[[BR]]

 - This current Transaction ID specification does not work for a large
 client interacting with thousands of servers. Also, maybe add something
 about lifetimes/MSL? (Carsten)

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/3>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Fri Jun 11 02:32:37 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 4E7B128C172 for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:32:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.183
X-Spam-Level: 
X-Spam-Status: No, score=-101.183 tagged_above=-999 required=5 tests=[AWL=-0.072, BAYES_05=-1.11, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id U4ZJSjHYnaSq for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:32:30 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 2660E3A692C for <core@ietf.org>; Fri, 11 Jun 2010 02:31:45 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1ON0aY-0004PR-4N; Fri, 11 Jun 2010 02:31:46 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: zach@sensinode.com
X-Trac-Project: core
Date: Fri, 11 Jun 2010 09:31:46 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: https://wiki.tools.ietf.org/wg/core/trac/ticket/4
Message-ID: <057.dc1f73d93c692bd4317583193bbbd467@tools.ietf.org>
X-Trac-Ticket-ID: 4
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 09:32:37 -0000

#4: URI Encoding
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  zach@â€¦            
     Type:  enhancement         |      Status:  new               
 Priority:  major               |   Milestone:                    
Component:  coap                |     Version:                    
 Severity:  -                   |    Keywords:                    
--------------------------------+-------------------------------------------
 The working group needs to consider the encoding of URIs in order to save
 overhead. The WG needs to converge on an approach to integrate in coap-01.

 The following approaches have been suggested so far:

 - Encode the URI with 7-bit ASCII encoding.
 - Encode the URI with Base64 encoding (requires mapping table).
 - Encode the URI with Ascii85 encoding (works on blocks of 5 characters)
 - Define a custom ASCII encoding only for valid URI characters.

 There is an obvious tradeoff of space savings vs. complexity in these
 approaches. At the minimum 7-bit ASCII encoding is doable.

 Furthermore, the Uri-code option was dropped in favor of integrating
 "short" URIs into the normal URI string option. Here is one proposed
 approach from Carsten:

 - We could do an ASCII form of at least 4000 or so using /.xy or /!xy
 style shortcuts (essentially encoding the "codedness" in the first ASCII
 character).

-- 
Ticket URL: <https://wiki.tools.ietf.org/wg/core/trac/ticket/4>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Fri Jun 11 02:57:16 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id DAED93A68B5 for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:57:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -100.995
X-Spam-Level: 
X-Spam-Status: No, score=-100.995 tagged_above=-999 required=5 tests=[AWL=-0.254, BAYES_20=-0.74, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dh+MMSsM8KUI for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:57:15 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id C15153A6940 for <core@ietf.org>; Fri, 11 Jun 2010 02:57:15 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1ON0zF-0008AD-Ud; Fri, 11 Jun 2010 02:57:17 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: zach@sensinode.com
X-Trac-Project: core
Date: Fri, 11 Jun 2010 09:57:17 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/5
Message-ID: <057.d0fcfea87792cc64efe59a7a1c2cf3ac@tools.ietf.org>
X-Trac-Ticket-ID: 5
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #5: Header improvements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 09:57:16 -0000

#5: Header improvements
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  zach@â€¦            
     Type:  enhancement         |      Status:  new               
 Priority:  minor               |   Milestone:                    
Component:  coap                |     Version:                    
 Severity:  -                   |    Keywords:                    
--------------------------------+-------------------------------------------
 In addition to possible ramifications of the Sub/Not design, there are
 general header optimizations still to be considered and discussed for
 coap-01.

 - If possible, the Method or Code field should be part of the first octet
 of the header. This way a simple comparison of the first octet tells you
 the version and method/code for an incoming header. The variable fields
 such as O and A would be included in the second octet along with any other
 flags.

 - It has been proposed (by Angelo) to move the URI to an integral part of
 the header instead of an option as it is so common.

 - It has also been proposed to include the Content-Type in the beginning
 of the payload (first octet?) instead of as an option. Currently Content-
 Type is 1-2 octets so it would have to be simplified in that case.
 Currently the Content-Type can be left out in the case of text/plain.

 - Can the option header be somewhat simplified? At least the options could
 be fixed-length instead of variable length. If the URI went to the base
 header, then there would no longer be a need for a long length field.
 Instead length could be limited to 32-bits e.g. as it is crazy for a
 constrained node to work with anything larger than that anyways.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/5>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Fri Jun 11 02:58:06 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 36D503A69E6 for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:58:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.914
X-Spam-Level: 
X-Spam-Status: No, score=-101.914 tagged_above=-999 required=5 tests=[AWL=0.686, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KpXbfhuFegmZ for <core@core3.amsl.com>; Fri, 11 Jun 2010 02:58:05 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 411EF3A69E1 for <core@ietf.org>; Fri, 11 Jun 2010 02:58:05 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1ON103-0008Ap-TM; Fri, 11 Jun 2010 02:58:07 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: fluffy@cisco.com, zach@sensinode.com
X-Trac-Project: core
Date: Fri, 11 Jun 2010 09:58:07 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/6
Message-ID: <057.da78d33bccd664276d29b01bb2121dd2@tools.ietf.org>
X-Trac-Ticket-ID: 6
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: fluffy@cisco.com, zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #6: Date option text needs update
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 09:58:06 -0000

#6: Date option text needs update
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  Cullen Jennings <fluffy@â€¦>        
     Type:  defect              |      Status:  new                               
 Priority:  trivial             |   Milestone:                                    
Component:  coap                |     Version:                                    
 Severity:  -                   |    Keywords:                                    
--------------------------------+-------------------------------------------
 Fix the text of the date option and simplify it.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/6>
core <http://tools.ietf.org/core/>


From lars.eggert@nokia.com  Fri Jun 11 03:41:02 2010
Return-Path: <lars.eggert@nokia.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 8B0923A6929 for <core@core3.amsl.com>; Fri, 11 Jun 2010 03:41:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.153
X-Spam-Level: 
X-Spam-Status: No, score=-6.153 tagged_above=-999 required=5 tests=[AWL=0.446,  BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0Z4zSAr2TzC6 for <core@core3.amsl.com>; Fri, 11 Jun 2010 03:41:01 -0700 (PDT)
Received: from mgw-mx09.nokia.com (smtp.nokia.com [192.100.105.134]) by core3.amsl.com (Postfix) with ESMTP id A92823A6920 for <core@ietf.org>; Fri, 11 Jun 2010 03:41:01 -0700 (PDT)
Received: from vaebh106.NOE.Nokia.com (vaebh106.europe.nokia.com [10.160.244.32]) by mgw-mx09.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o5BAenCB020017; Fri, 11 Jun 2010 05:41:02 -0500
Received: from esebh102.NOE.Nokia.com ([172.21.138.183]) by vaebh106.NOE.Nokia.com with Microsoft SMTPSVC(6.0.3790.4675);  Fri, 11 Jun 2010 13:40:45 +0300
Received: from mgw-sa01.ext.nokia.com ([147.243.1.47]) by esebh102.NOE.Nokia.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Fri, 11 Jun 2010 13:40:45 +0300
Received: from mail.fit.nokia.com (esdhcp030222.research.nokia.com [172.21.30.222]) by mgw-sa01.ext.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o5BAeiSb008701 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 11 Jun 2010 13:40:45 +0300
X-Virus-Status: Clean
X-Virus-Scanned: clamav-milter 0.96.1 at fit.nokia.com
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: multipart/signed; boundary=Apple-Mail-22--554588971; protocol="application/pkcs7-signature"; micalg=sha1
From: Lars Eggert <lars.eggert@nokia.com>
In-Reply-To: <4DCE9944-2826-4360-AD52-ACA80695A793@sensinode.com>
Date: Fri, 11 Jun 2010 13:40:37 +0300
Message-Id: <D106F0A0-35F7-4FAC-AC43-BD90C05DB6DF@nokia.com>
References: <20100607145200.988943A69B1@core3.amsl.com> <4DCE9944-2826-4360-AD52-ACA80695A793@sensinode.com>
To: Zach Shelby <zach@sensinode.com>
X-Mailer: Apple Mail (2.1078)
X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.5 (mail.fit.nokia.com); Fri, 11 Jun 2010 13:40:38 +0300 (EEST)
X-OriginalArrivalTime: 11 Jun 2010 10:40:45.0485 (UTC) FILETIME=[8C3B35D0:01CB0952]
X-Nokia-AV: Clean
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification for draft-ietf-core-coap-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 10:41:02 -0000

--Apple-Mail-22--554588971
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi,

> 4.2.  Default Port
>=20
>    CoAP SHOULD use a default port of 61616 which is within the
>    compressed UDP port space defined in [RFC4944].  As this port is in
>    the dynamic port space, it however can not be reserved for CoAP =
use.

it's a bit unfortunate that all the RFC4944 ports are in the dynamic =
range, because we would probably like to reserve a port for CoAP. In =
retrospect, it would have been nicer had we burned 16 port numbers in =
the registered range...

Lars=

--Apple-Mail-22--554588971
Content-Disposition: attachment;
	filename=smime.p7s
Content-Type: application/pkcs7-signature;
	name=smime.p7s
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGbDCCAyUw
ggKOoAMCAQICEAdjk36sXKbnVn15S0/qUp0wDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCWkEx
JTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQ
ZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA5MDYxNTExMjYxNFoXDTEwMDYxNTExMjYx
NFowXDEPMA0GA1UEBBMGRWdnZXJ0MQ0wCwYDVQQqEwRMYXJzMRQwEgYDVQQDEwtMYXJzIEVnZ2Vy
dDEkMCIGCSqGSIb3DQEJARYVbGFycy5lZ2dlcnRAbm9raWEuY29tMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEA7mR8A+Pn0/FsUkMX6Pyjw+FL3IFcJk8GaKV5VJ40TMI0Wh8oq20cqA9X
uqnVDW9WztKwH+o+msJenLwWpprbpJm4TImYGbnUJxYyN8gb81aiX1Bw2xCpJ5z3H2+8DsReJLuY
Rdl4bVvaIxLIL4odmfsRwzPyNkOK8LRtfl6OPcaDOlFWzbikULfIVGGu7BqK4lxQSpYwwpZkOMOB
6nnBSfUOtBEmqO+qZG/nL/JxWFV5vxQgg4XHbsMMTxFf6+ji18BD09BUIfDLTuJoCzFmQhrM9vLT
VuRhHWSL20LoafGjXv6mPt3i9IGJHpVb2dMQUgOgRyWHTKiUJVU/rUTdWwIDAQABo14wXDAqBgUr
ZQEEAQQhMB8CAQAwGjAYAgEEBBNMMnVNeWZmQk5VYk5KSmNkWjJzMCAGA1UdEQQZMBeBFWxhcnMu
ZWdnZXJ0QG5va2lhLmNvbTAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBQUAA4GBADUx+67n98wt
I1vydB90HeSZP4Y64VCxxb0NxGGFvfc2+JdVKeHJ/xT+l+ygYKsWNwJJprkPi4WZ5G0crkq4VK1H
5drEJIztpSPVfWI05vPidaaGuuuCR+6MvJMtOTEYEvc/6eovBnkrzRf9x5x5EyuJXAWTeuBADg80
QI3vQ1tZMIIDPzCCAqigAwIBAgIBDTANBgkqhkiG9w0BAQUFADCB0TELMAkGA1UEBhMCWkExFTAT
BgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUg
Q29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIG
A1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25h
bC1mcmVlbWFpbEB0aGF3dGUuY29tMB4XDTAzMDcxNzAwMDAwMFoXDTEzMDcxNjIzNTk1OVowYjEL
MAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNV
BAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQDEpjxVc1X7TrnKmVoeaMB1BHCd3+n/ox7svc31W/Iadr1/DDph8r9RzgHU5VAK
MNcCY1osiRVwjt3J8CuFWqo/cVbLrzwLB+fxH5E2JCoTzyvV84J3PQO+K/67GD4Hv0CAAmTXp6a7
n2XRxSpUhQ9IBH+nttE8YQRAHmQZcmC3+wIDAQABo4GUMIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAw
QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC50aGF3dGUuY29tL1RoYXd0ZVBlcnNvbmFsRnJl
ZW1haWxDQS5jcmwwCwYDVR0PBAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFQcml2YXRl
TGFiZWwyLTEzODANBgkqhkiG9w0BAQUFAAOBgQBIjNFQg+oLLswNo2asZw9/r6y+whehQ5aUnX9M
Ibj4Nh+qLZ82L8D0HFAgk3A8/a3hYWLD2ToZfoSxmRsAxRoLgnSeJVCUYsfbJ3FXJY3dqZw5jowg
T2Vfldr394fWxghOrvbqNOUQGls1TXfjViF4gtwhGTXeJLHTHUb/XV9lTzGCAxAwggMMAgEBMHYw
YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAq
BgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhAHY5N+rFym51Z9eUtP
6lKdMAkGBSsOAwIaBQCgggFvMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkF
MQ8XDTEwMDYxMTEwNDAzOFowIwYJKoZIhvcNAQkEMRYEFA++KcJjvDHJJ5etyBbRkCaL82HyMIGF
BgkrBgEEAYI3EAQxeDB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGlu
ZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBD
QQIQB2OTfqxcpudWfXlLT+pSnTCBhwYLKoZIhvcNAQkQAgsxeKB2MGIxCzAJBgNVBAYTAlpBMSUw
IwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVy
c29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQB2OTfqxcpudWfXlLT+pSnTANBgkqhkiG9w0BAQEF
AASCAQAaSIHwAlvSq4VELB/WLKJBYtEdYhQijZrMidZzroYdypn4nN8OFdP4kbByv8p4FQf6NkKs
l7F0CqFcgWhof90gbUaCc0zx3F1wF7YOui9FLkS9J/jseazjtZK/arGx2evyRzKlx3rYjNI9fuUh
6zM3Qe5JDcKO/HDDBUxU2VuQ9u9LZW48az1E/IVobqo/Rd0iRIGN0Iorips1Cyw6nNBQcvUWV1Cb
Z66UJQv54DCgzvO2m2iHwB4uEdZih1bnr8NCmPS71NOO3VsIj2kG1BHtXvee54/sYvjsX+4xVBOP
X+iJTYlYpFFuNJwwFB1nk+CRQw22Qt+zB3QTxcuXlpz2AAAAAAAA

--Apple-Mail-22--554588971--

From zach@sensinode.com  Fri Jun 11 03:49:35 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 53BA73A68D9 for <core@core3.amsl.com>; Fri, 11 Jun 2010 03:49:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.299
X-Spam-Level: 
X-Spam-Status: No, score=-2.299 tagged_above=-999 required=5 tests=[AWL=1.300,  BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZfdAir6cQhJy for <core@core3.amsl.com>; Fri, 11 Jun 2010 03:49:34 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id A5F783A693F for <core@ietf.org>; Fri, 11 Jun 2010 03:49:33 -0700 (PDT)
Received: from [62.145.172.52] ([62.145.172.52]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5BAnUm8017069 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Fri, 11 Jun 2010 13:49:31 +0300
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <D106F0A0-35F7-4FAC-AC43-BD90C05DB6DF@nokia.com>
Date: Fri, 11 Jun 2010 13:49:32 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <B404839E-6493-4ED8-B1C7-3EDB5F47F275@sensinode.com>
References: <20100607145200.988943A69B1@core3.amsl.com> <4DCE9944-2826-4360-AD52-ACA80695A793@sensinode.com> <D106F0A0-35F7-4FAC-AC43-BD90C05DB6DF@nokia.com>
To: Lars Eggert <lars.eggert@nokia.com>
X-Mailer: Apple Mail (2.1078)
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification for draft-ietf-core-coap-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 10:49:35 -0000

On Jun 11, 2010, at 1:40 PM, Lars Eggert wrote:

> Hi,
>=20
>> 4.2.  Default Port
>>=20
>>   CoAP SHOULD use a default port of 61616 which is within the
>>   compressed UDP port space defined in [RFC4944].  As this port is in
>>   the dynamic port space, it however can not be reserved for CoAP =
use.
>=20
> it's a bit unfortunate that all the RFC4944 ports are in the dynamic =
range, because we would probably like to reserve a port for CoAP. In =
retrospect, it would have been nicer had we burned 16 port numbers in =
the registered range...

Yep :-(=20

I was just about to make a ticket on this Lars. What do you suggest we =
do here, I mean we can live with ports outside of 61616-61632. Should we =
define a default CoAP port in the registered range, and then recommend =
(SHOULD/MUST?) that a port in the LoWPAN range is also supported on =
6LoWPAN end-nodes?=20

Or can we ask IANA for an exception here and request that part of the =
LoWPAN port range be reserved for registration - a long shot, I know...

Zach

>=20
> Lars

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From lars.eggert@Nokia.com  Fri Jun 11 03:59:46 2010
Return-Path: <lars.eggert@Nokia.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 40F4B3A6951 for <core@core3.amsl.com>; Fri, 11 Jun 2010 03:59:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.171
X-Spam-Level: 
X-Spam-Status: No, score=-6.171 tagged_above=-999 required=5 tests=[AWL=0.428,  BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id W9z9oZHl78Sp for <core@core3.amsl.com>; Fri, 11 Jun 2010 03:59:45 -0700 (PDT)
Received: from mgw-mx09.nokia.com (smtp.nokia.com [192.100.105.134]) by core3.amsl.com (Postfix) with ESMTP id 6DFF63A6800 for <core@ietf.org>; Fri, 11 Jun 2010 03:59:45 -0700 (PDT)
Received: from esebh106.NOE.Nokia.com (esebh106.ntc.nokia.com [172.21.138.213]) by mgw-mx09.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o5BAxSmk003683; Fri, 11 Jun 2010 05:59:47 -0500
Received: from vaebh104.NOE.Nokia.com ([10.160.244.30]) by esebh106.NOE.Nokia.com with Microsoft SMTPSVC(6.0.3790.4675);  Fri, 11 Jun 2010 13:59:45 +0300
Received: from mgw-sa01.ext.nokia.com ([147.243.1.47]) by vaebh104.NOE.Nokia.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Fri, 11 Jun 2010 13:59:45 +0300
Received: from mail.fit.nokia.com (esdhcp030222.research.nokia.com [172.21.30.222]) by mgw-sa01.ext.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o5BAxj4v005152 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 11 Jun 2010 13:59:45 +0300
X-Virus-Status: Clean
X-Virus-Scanned: clamav-milter 0.96.1 at fit.nokia.com
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: multipart/signed; boundary=Apple-Mail-24--553448663; protocol="application/pkcs7-signature"; micalg=sha1
From: Lars Eggert <lars.eggert@Nokia.com>
In-Reply-To: <B404839E-6493-4ED8-B1C7-3EDB5F47F275@sensinode.com>
Date: Fri, 11 Jun 2010 13:59:38 +0300
Message-Id: <61B2D66D-BBD7-42E8-B8A1-C9754DA69DC1@nokia.com>
References: <20100607145200.988943A69B1@core3.amsl.com> <4DCE9944-2826-4360-AD52-ACA80695A793@sensinode.com> <D106F0A0-35F7-4FAC-AC43-BD90C05DB6DF@nokia.com> <B404839E-6493-4ED8-B1C7-3EDB5F47F275@sensinode.com>
To: Zach Shelby <zach@sensinode.com>
X-Mailer: Apple Mail (2.1078)
X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.5 (mail.fit.nokia.com); Fri, 11 Jun 2010 13:59:38 +0300 (EEST)
X-OriginalArrivalTime: 11 Jun 2010 10:59:45.0469 (UTC) FILETIME=[33B6F6D0:01CB0955]
X-Nokia-AV: Clean
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification for draft-ietf-core-coap-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 10:59:46 -0000

--Apple-Mail-24--553448663
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi,

On 2010-6-11, at 13:49, Zach Shelby wrote:
> I was just about to make a ticket on this Lars. What do you suggest we =
do here, I mean we can live with ports outside of 61616-61632. Should we =
define a default CoAP port in the registered range, and then recommend =
(SHOULD/MUST?) that a port in the LoWPAN range is also supported on =
6LoWPAN end-nodes?=20

I think you should definitely (also) ask for a port in the registered =
range, for deployments that may need this. Whether you want to recommend =
this port as the default I don't know, because the compression then =
becomes slightly less efficient.

> Or can we ask IANA for an exception here and request that part of the =
LoWPAN port range be reserved for registration - a long shot, I know...

Not possible, I'm afraid. IANA won't assign ports above 49152.

Lars=

--Apple-Mail-24--553448663
Content-Disposition: attachment;
	filename=smime.p7s
Content-Type: application/pkcs7-signature;
	name=smime.p7s
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGbDCCAyUw
ggKOoAMCAQICEAdjk36sXKbnVn15S0/qUp0wDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCWkEx
JTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQ
ZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA5MDYxNTExMjYxNFoXDTEwMDYxNTExMjYx
NFowXDEPMA0GA1UEBBMGRWdnZXJ0MQ0wCwYDVQQqEwRMYXJzMRQwEgYDVQQDEwtMYXJzIEVnZ2Vy
dDEkMCIGCSqGSIb3DQEJARYVbGFycy5lZ2dlcnRAbm9raWEuY29tMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEA7mR8A+Pn0/FsUkMX6Pyjw+FL3IFcJk8GaKV5VJ40TMI0Wh8oq20cqA9X
uqnVDW9WztKwH+o+msJenLwWpprbpJm4TImYGbnUJxYyN8gb81aiX1Bw2xCpJ5z3H2+8DsReJLuY
Rdl4bVvaIxLIL4odmfsRwzPyNkOK8LRtfl6OPcaDOlFWzbikULfIVGGu7BqK4lxQSpYwwpZkOMOB
6nnBSfUOtBEmqO+qZG/nL/JxWFV5vxQgg4XHbsMMTxFf6+ji18BD09BUIfDLTuJoCzFmQhrM9vLT
VuRhHWSL20LoafGjXv6mPt3i9IGJHpVb2dMQUgOgRyWHTKiUJVU/rUTdWwIDAQABo14wXDAqBgUr
ZQEEAQQhMB8CAQAwGjAYAgEEBBNMMnVNeWZmQk5VYk5KSmNkWjJzMCAGA1UdEQQZMBeBFWxhcnMu
ZWdnZXJ0QG5va2lhLmNvbTAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBQUAA4GBADUx+67n98wt
I1vydB90HeSZP4Y64VCxxb0NxGGFvfc2+JdVKeHJ/xT+l+ygYKsWNwJJprkPi4WZ5G0crkq4VK1H
5drEJIztpSPVfWI05vPidaaGuuuCR+6MvJMtOTEYEvc/6eovBnkrzRf9x5x5EyuJXAWTeuBADg80
QI3vQ1tZMIIDPzCCAqigAwIBAgIBDTANBgkqhkiG9w0BAQUFADCB0TELMAkGA1UEBhMCWkExFTAT
BgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUg
Q29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIG
A1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25h
bC1mcmVlbWFpbEB0aGF3dGUuY29tMB4XDTAzMDcxNzAwMDAwMFoXDTEzMDcxNjIzNTk1OVowYjEL
MAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNV
BAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQDEpjxVc1X7TrnKmVoeaMB1BHCd3+n/ox7svc31W/Iadr1/DDph8r9RzgHU5VAK
MNcCY1osiRVwjt3J8CuFWqo/cVbLrzwLB+fxH5E2JCoTzyvV84J3PQO+K/67GD4Hv0CAAmTXp6a7
n2XRxSpUhQ9IBH+nttE8YQRAHmQZcmC3+wIDAQABo4GUMIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAw
QwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC50aGF3dGUuY29tL1RoYXd0ZVBlcnNvbmFsRnJl
ZW1haWxDQS5jcmwwCwYDVR0PBAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFQcml2YXRl
TGFiZWwyLTEzODANBgkqhkiG9w0BAQUFAAOBgQBIjNFQg+oLLswNo2asZw9/r6y+whehQ5aUnX9M
Ibj4Nh+qLZ82L8D0HFAgk3A8/a3hYWLD2ToZfoSxmRsAxRoLgnSeJVCUYsfbJ3FXJY3dqZw5jowg
T2Vfldr394fWxghOrvbqNOUQGls1TXfjViF4gtwhGTXeJLHTHUb/XV9lTzGCAxAwggMMAgEBMHYw
YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAq
BgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhAHY5N+rFym51Z9eUtP
6lKdMAkGBSsOAwIaBQCgggFvMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkF
MQ8XDTEwMDYxMTEwNTkzOFowIwYJKoZIhvcNAQkEMRYEFOnsTv7elXmzD4U8VJeWWGxmLJIMMIGF
BgkrBgEEAYI3EAQxeDB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGlu
ZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBD
QQIQB2OTfqxcpudWfXlLT+pSnTCBhwYLKoZIhvcNAQkQAgsxeKB2MGIxCzAJBgNVBAYTAlpBMSUw
IwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVy
c29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQB2OTfqxcpudWfXlLT+pSnTANBgkqhkiG9w0BAQEF
AASCAQCsVI0kJBeRBfYsoqFeJKFifwNNoXeJWsrpsfZ6bf1fMCf/nrfZ1+YoRxC/U6j6K85HnlCB
GMh3tpqizA3N8cw/NjUlAPV2GpgU9j8Qs/Tmg3/tb9cdM1mCTBZJSsUV4sZQr0e4FWmNp1EH/fVB
bXvAkQFPhnDLNbOMNLX5ET9RPpgwYLYf8zrYmaBXQ/Kskkq4lhActPj9PFfcVAXrq7tNdblBzBF8
Rnp25/k5OdBqtT2rdzSa85ua6wouGXGw4/7zCCJ/nLzwYdUf+7P89G/j2SJyHoaFdLF8sJ62NaqC
Y0yPlfAxTPleuINZ7b5K4G2IxvDpIwwU89kWqJjW/Bp6AAAAAAAA

--Apple-Mail-24--553448663--

From trac@tools.ietf.org  Fri Jun 11 04:11:52 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 815183A695B for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:11:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.942
X-Spam-Level: 
X-Spam-Status: No, score=-101.942 tagged_above=-999 required=5 tests=[AWL=0.658, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id b7psdVth2apM for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:11:50 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 9DDA228C0D8 for <core@ietf.org>; Fri, 11 Jun 2010 04:11:50 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1ON29Q-0003Zd-I8; Fri, 11 Jun 2010 04:11:52 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: zach@sensinode.com
X-Trac-Project: core
Date: Fri, 11 Jun 2010 11:11:52 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/7
Message-ID: <057.f3a3ec72477d421e9dab4a988579cc09@tools.ietf.org>
X-Trac-Ticket-ID: 7
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #7: CoAP ports
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 11:11:52 -0000

#7: CoAP ports
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  zach@â€¦            
     Type:  defect              |      Status:  new               
 Priority:  minor               |   Milestone:                    
Component:  coap                |     Version:                    
 Severity:  -                   |    Keywords:                    
--------------------------------+-------------------------------------------
 The current coap-00 has text on the CoAP port that needs work:

 "4.2.  Default Port

 CoAP SHOULD use a default port of 61616 which is within the compressed UDP
 port space defined in [RFC4944].  As this port is  in the dynamic port
 space, it however can not be reserved for CoAP use."

 On 2010-6-11, at 13:49, Zach Shelby wrote:
 I was just about to make a ticket on this Lars. What do you suggest we do
 here, I mean we can live with ports outside of 61616-61632. Should we
 define a default CoAP port in the registered range, and then recommend
 (SHOULD/MUST?) that a port in the LoWPAN range is also supported on
 6LoWPAN end-nodes?

 Lars:
 I think you should definitely (also) ask for a port in the registered
 range, for deployments that may need this. Whether you want to recommend
 this port as the default I don't know, because the compression then
 becomes slightly less efficient.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/7>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Fri Jun 11 04:29:02 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 6E74F3A6943 for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:29:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -100.761
X-Spam-Level: 
X-Spam-Status: No, score=-100.761 tagged_above=-999 required=5 tests=[AWL=-0.575, BAYES_40=-0.185, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id q9OKYUFZEKIH for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:29:01 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 84A0C3A68D8 for <core@ietf.org>; Fri, 11 Jun 2010 04:29:01 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1ON2Q1-0001GG-49; Fri, 11 Jun 2010 04:29:01 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: brian@skyfoundry.com, zach@sensinode.com
X-Trac-Project: core
Date: Fri, 11 Jun 2010 11:29:01 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: https://wiki.tools.ietf.org/wg/core/trac/ticket/8
Message-ID: <057.5550c2ce1e044942c5f36167340ceedd@tools.ietf.org>
X-Trac-Ticket-ID: 8
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: brian@skyfoundry.com, zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #8: Complete Section 5.3 Proxying
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 11:29:02 -0000

#8: Complete Section 5.3 Proxying
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  Brian Frank <brian@â€¦>             
     Type:  enhancement         |      Status:  new                               
 Priority:  major               |   Milestone:                                    
Component:  coap                |     Version:                                    
 Severity:  -                   |    Keywords:                                    
--------------------------------+-------------------------------------------
 Some open issues on Proxying:

   o  Are interception proxies are still required to deal with a)
       sleeping nodes and b) protecting Internet HTTP traffic from
       overwhelming the CoAP network?[[BR]]

    o  But interception proxies breaks end-to-end IP encapsulation and
       requires support at the routing level[[BR]]


    o  Often the interception proxy is the same as the HTTP-to-CoAP
       gateway, so we need to decide how these topics dovetail[[BR]]


    o  In Chopan, the sleeping problem was tackled by having sleeping
       nodes check-in with their proxies while awake, notify model might
       solve this problem to some extent but still have to coordinate the
       sleep/awake times[[BR]]


    o  In Chopan we actually used caching to deal with POSTs, etc because
       otherwise how do you send a request to a sleeping node?  The
       current caching sections are to be exclusive to GETs, but we still
       need to solve the problem for other types if methods.[[BR]]

-- 
Ticket URL: <https://wiki.tools.ietf.org/wg/core/trac/ticket/8>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Fri Jun 11 04:31:51 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7E9B73A68F6 for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:31:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.946
X-Spam-Level: 
X-Spam-Status: No, score=-101.946 tagged_above=-999 required=5 tests=[AWL=0.654, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id i9-wROk1bXak for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:31:47 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id AD0D43A68D8 for <core@ietf.org>; Fri, 11 Jun 2010 04:31:47 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1ON2Sk-0001nr-DU; Fri, 11 Jun 2010 04:31:50 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: zach@sensinode.com
X-Trac-Project: core
Date: Fri, 11 Jun 2010 11:31:50 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/9
Message-ID: <057.991b4b209b798e7fdfa5e0f4fd31a63a@tools.ietf.org>
X-Trac-Ticket-ID: 9
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #9: Section 6 "Resource Discovery" improvements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 11:31:51 -0000

#9: Section 6 "Resource Discovery" improvements
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  zach@â€¦            
     Type:  enhancement         |      Status:  new               
 Priority:  minor               |   Milestone:                    
Component:  coap                |     Version:                    
 Severity:  -                   |    Keywords:                    
--------------------------------+-------------------------------------------
 The following improvements should be made to Section 6:

 - Explain the m-DNS naming stuff in more detail with an example.

 - If URIs are encoded using e.g. 7-bit ASCII encoding, should this HTTP
 Link Header format also be? Would be 15% more compact...

 - Comment on the example from Carsten: These are two generations from the
 link-value production. How are these fit together? CRLF? We need a top-
 level production.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/9>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Fri Jun 11 04:36:08 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 346B13A694C for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:36:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.971
X-Spam-Level: 
X-Spam-Status: No, score=-101.971 tagged_above=-999 required=5 tests=[AWL=0.629, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7zb1o6d1ecof for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:36:07 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 4EAC83A6930 for <core@ietf.org>; Fri, 11 Jun 2010 04:36:07 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1ON2Wu-00023F-Ob; Fri, 11 Jun 2010 04:36:08 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: dsturek@grid2home.com, zach@sensinode.com
X-Trac-Project: core
Date: Fri, 11 Jun 2010 11:36:08 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: https://wiki.tools.ietf.org/wg/core/trac/ticket/10
Message-ID: <057.c60ec3c41742023dc334f5017523d546@tools.ietf.org>
X-Trac-Ticket-ID: 10
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: dsturek@grid2home.com, zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #10: HTTP Mapping
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 11:36:08 -0000

#10: HTTP Mapping
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  Don Sturek <dsturek@â€¦>            
     Type:  enhancement         |      Status:  new                               
 Priority:  major               |   Milestone:                                    
Component:  coap                |     Version:                                    
 Severity:  -                   |    Keywords:                                    
--------------------------------+-------------------------------------------
 The HTTP mapping section needs to be written. There are probably three
 general topics here:

 1. Basic HTTP mapping

 How basic GET/POST/PUT/DELETE requests are mapped. How to deal with the
 smaller subset of CoAP options and codes? How are options mapped?

 2. Proxying issues (with reference to Proxying section)

 Are there any special issues here not covered in the Proxying section
 (when finished)? The basic issue is that an HTTP mapping entity will often
 also proxy.

 3. Sub/Not mapping

 To be done after the new Sub/Not design is complete.

-- 
Ticket URL: <https://wiki.tools.ietf.org/wg/core/trac/ticket/10>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Fri Jun 11 04:37:26 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A7FD03A69E1 for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:37:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.993
X-Spam-Level: 
X-Spam-Status: No, score=-101.993 tagged_above=-999 required=5 tests=[AWL=0.607, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6KoDWFDKetoh for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:37:26 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id F0D9D3A68D8 for <core@ietf.org>; Fri, 11 Jun 2010 04:37:25 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1ON2YC-00024a-OF; Fri, 11 Jun 2010 04:37:28 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: zach@sensinode.com
X-Trac-Project: core
Date: Fri, 11 Jun 2010 11:37:28 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/11
Message-ID: <057.6a78f44a17984067e2625df14b0e601d@tools.ietf.org>
X-Trac-Ticket-ID: 11
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #11: Finish Examples
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 11:37:26 -0000

#11: Finish Examples
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  zach@â€¦            
     Type:  enhancement         |      Status:  new               
 Priority:  minor               |   Milestone:                    
Component:  coap                |     Version:                    
 Severity:  -                   |    Keywords:                    
--------------------------------+-------------------------------------------
 Finish the examples section.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/11>
core <http://tools.ietf.org/core/>


From cabo@tzi.org  Fri Jun 11 04:42:51 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 09E273A6930 for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:42:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.649
X-Spam-Level: 
X-Spam-Status: No, score=-3.649 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id t3Qi1Iq26skN for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:42:50 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 958DE3A694C for <core@ietf.org>; Fri, 11 Jun 2010 04:42:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5BBghc0002953 for <core@ietf.org>; Fri, 11 Jun 2010 13:42:43 +0200 (CEST)
Received: from [10.0.1.198] (reingewinn.informatik.uni-bremen.de [134.102.218.123]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 0044AB9B1;  Fri, 11 Jun 2010 13:42:42 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <057.8d37fc1963a953ac6712dad4000b6b92@tools.ietf.org>
Date: Fri, 11 Jun 2010 13:42:42 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <FA186CB6-07B5-486C-915B-4EC8B2296490@tzi.org>
References: <057.8d37fc1963a953ac6712dad4000b6b92@tools.ietf.org>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1078)
Subject: Re: [core] #1: Agree on Sub/Not model and requirements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 11:42:51 -0000

> common understanding of the model to use and the requirements

(Posting as an individual member of the WG.)

While discussing this here with a student, we noticed that the usual =
model for doing asynchronous notification in HTTP, i.e. long-poll, does =
not work in CoAP.

When a client requests the representation of a resource and the server =
does not immediately respond, the client will retransmit.

To make long-poll (or any kind of response that takes more than =
RESPONSE_TIMEOUT) work, we would need to have a provisional response =
(100-style, if you have the SIP scars).
This would stop the client from retransmitting, but shift the burden to =
the server:
In turn, the actual response would need an acknowledgement (and thus an =
A-bit) to make sure it doesn't just get lost.

In the end, a delayed response looks very close to what is called =
"notify" in CoAP-00.
Once that problem is addressed, it seems as if a SUBSCRIBE might look =
very close to a GET.
We are currently discussing how to get a more REST-like version of =
SUBSCRIBE defined on this basis.
(We are calling that method OBSERVE.  Both GET and OBSERVE will elicit =
responses, some of which are immediate and some are happening later.)

I'd like to move some of the discussion to who maintains conversation =
state.
For the server, REST is stateless on the application layer (i.e., all =
state is in the resources, not in the conversation).
That is no longer true when you look at the transport layer: opening a =
TCP connection creates conversation state in the server.
The fact that POST is not idempotent is only tolerable because a POST is =
supported by the TCP conversation state.

One objective I have in mind is to minimize the negative effects of the =
conversation state.
It will be impossible to completely avoid any conversation state in our =
domain (e.g., in 6LoWPAN, we definitely will have to reassemble at the =
adaptation layer -- this is also conversation state, and it is really =
hard to manage properly).
Shifting conversation state down the stack is generally *not* a good =
solution; it usually just makes the problem worse (only when it doesn't =
can we really reap benefits off the separation of concern layering gives =
us).
Shifting certain conversation state up into the resources *may* be a =
good solution (this strategy helps making REST successful in the =
existing Web, e.g., think session objects).

So my questions are:
1) Which conversation state is tolerable, which state do we want to =
avoid?
2) How can we avoid conversation state?
3) What do we have to do to make the conversation state we do need less =
fragile?
(E.g., how can we make sure eventual convergence as opposed to just =
deadlocking/dropping the ball?)

(While these questions may sound complex, the protocol that will result =
from the right answers will be very simple.)

Gruesse, Carsten


From zach@sensinode.com  Fri Jun 11 04:50:24 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7FEEC3A694C for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:50:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.432
X-Spam-Level: 
X-Spam-Status: No, score=-1.432 tagged_above=-999 required=5 tests=[AWL=-0.433, BAYES_50=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wlYE+IPSe9v5 for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:50:23 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 240E828C0E5 for <core@ietf.org>; Fri, 11 Jun 2010 04:50:22 -0700 (PDT)
Received: from [62.145.172.52] ([62.145.172.52]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5BBoKQW007157 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO) for <core@ietf.org>; Fri, 11 Jun 2010 14:50:21 +0300
From: Zach Shelby <zach@sensinode.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Date: Fri, 11 Jun 2010 14:50:22 +0300
Message-Id: <E1E8164B-E8A3-43E9-8D55-A03ED13F4409@sensinode.com>
To: core <core@ietf.org>
Mime-Version: 1.0 (Apple Message framework v1078)
X-Mailer: Apple Mail (2.1078)
Subject: [core] Tickets and next steps
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 11:50:24 -0000

Hi,

I combed through the .xml comments in draft-core-coap-00 along with the =
e-mail threads and made 11 tickets that we should aim at closing and =
integrating into coap-01 by the end of June to give us a complete spec =
to implement and test in Maastricht.=20

For those of you new to the IETF Trac setup you can see the tickets =
here:=20

http://trac.tools.ietf.org/wg/core/trac/report/1

There will be several parallel threads here, so let's discuss each of =
these tickets by replying to the initial ticket announcement message, =
this way we can sanely track the outcome.. (Thanks Carsten for doing =
that just now)

Ticket #2 "New Sub/Not design" is off-limits until Ticket #1 has =
converged. So lets refrain from arguing on which particular =
method/message/option will be used for Sub/Not for now, even if its tons =
of fun :-)

We need the WG's help here in order to move forward on tickets, so don't =
be afraid to speak up.
=20
Zach

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From cabo@tzi.org  Fri Jun 11 04:54:03 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id D829F3A69E1 for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:54:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.949
X-Spam-Level: 
X-Spam-Status: No, score=-4.949 tagged_above=-999 required=5 tests=[AWL=1.300,  BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id l3WU5TusbxTh for <core@core3.amsl.com>; Fri, 11 Jun 2010 04:54:03 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id C79353A6985 for <core@ietf.org>; Fri, 11 Jun 2010 04:54:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5BBruZe009498; Fri, 11 Jun 2010 13:53:56 +0200 (CEST)
Received: from [10.0.1.198] (reingewinn.informatik.uni-bremen.de [134.102.218.123]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 9495AB9C8;  Fri, 11 Jun 2010 13:53:56 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <057.f3a3ec72477d421e9dab4a988579cc09@tools.ietf.org>
Date: Fri, 11 Jun 2010 13:53:56 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <9FF0C698-C3E2-43CE-87C6-F3640879E21F@tzi.org>
References: <057.f3a3ec72477d421e9dab4a988579cc09@tools.ietf.org>
To: "core issue tracker" <trac@tools.ietf.org>
X-Mailer: Apple Mail (2.1078)
Cc: core@ietf.org
Subject: Re: [core] #7: CoAP ports
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 11:54:04 -0000

On Jun 11, 2010, at 13:11, core issue tracker wrote:

> default port of 61616

There are two aspects to this.

1) What is the port number implied by

coap://some.host/...
as opposed by
coap://some.host:12345/...

There is nothing that would stop us from saying 61616, but we might as =
well opt for a reserved port.
We just have to remember 61616 never can be a reserved port.

2) Do we have a reserved (what decades ago was called "well-known") port =
for CoAP, i.e. a port that would allow somebody who knows a host name =
but not the port number to infer the latter.  Is that a likely scenario, =
i.e., do we even need that?  We can always transport the port number in =
the URI.  (We can amplify that point by not even allowing to elide it =
from the URI, but that is an orthogonal decision, see #1.)

Gruesse, Carsten


From zach@sensinode.com  Fri Jun 11 05:10:42 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C234C3A69F2 for <core@core3.amsl.com>; Fri, 11 Jun 2010 05:10:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.324
X-Spam-Level: 
X-Spam-Status: No, score=-1.324 tagged_above=-999 required=5 tests=[AWL=-0.325, BAYES_50=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id O7BN0N9dEBqg for <core@core3.amsl.com>; Fri, 11 Jun 2010 05:10:41 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 197C13A67D4 for <core@ietf.org>; Fri, 11 Jun 2010 05:10:40 -0700 (PDT)
Received: from [62.145.172.52] ([62.145.172.52]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5BCAZXr019351 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Fri, 11 Jun 2010 15:10:36 +0300
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com>
Date: Fri, 11 Jun 2010 15:10:37 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <BF9FEDBF-51EA-4232-9A97-7F6FB449E758@sensinode.com>
References: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com>
To: Cullen Jennings <fluffy@cisco.com>
X-Mailer: Apple Mail (2.1078)
Cc: core <core@ietf.org>
Subject: Re: [core] SUB/NOT - the sea level view
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 12:10:42 -0000

I think I didn't answer to this earlier.=20

On Jun 4, 2010, at 9:33 PM, Cullen Jennings wrote:

>=20
> Over the year I have had the pleasure of being in many conversations =
about what a stateless protocol is, what REST is, HTTP, polling, =
asynchronous notifications, web based RPC, and blowing soap bubbles.  =
Though interesting, I have a hard time concretely explaining it to =
anyone and the oxygen always seems a bit thin at the 10,000 foot view. I =
do however have a very easy time understanding a very low level view of =
the systems where there are  some boxes and arrow diagrams of  message =
flow and roughly the semantics of the data they cary. Let me try and =
draw my current understanding of how this is going to work.

You have the honor of getting the CoRE WG's first ticket Cullen! We'll =
think of a prize in Maastricht (beer works?). Now this also means you =
need to write a 2-page ID on this once we converge so that the WG =
doesn't forget what we decided upon ;-)

>=20
> We have two nodes - I will call them Source and Sink.=20

Source and Sink - YUCK. If we don't want to use client/server then I =
think Robert's suggestion of consumer/provider is better.

>=20
>                             =20
>    Source         Sink      =20
>      |    SUB      |        =20
>      |<------------+        =20
>      |             |        =20
>      |    ACK      |        =20
>      +------------>|        =20
>      |             |        =20
>     ... Time Passes ...         =20
>      |             |        =20
>      |   NOTIF     |        =20
>      +------------>|         =20
>      |             |        =20
>      |   ACK       |        =20
>      |<------------+         =20
>      |             |        =20

This is also my understanding of what we want to achieve.=20

> Sink starts by sending a message I will label "SUB" to the Source. The =
SUB messages says which resource the Sink would like to be informed =
about when the resource changes. The Source sends a OK or No there is a =
problem in some sort of ACK message to the SUB. Eventually the resource =
changes and Source sends an message I called "NOTIFY" to the Sink. This =
tells the Sink which resource changed and the current value of it.The =
Sink sends some sort of acknowledgment. I find the terms client and =
server very confusing when discussing SUB/NOT so I'm not using those =
terms.=20

One thing missing in this high-level description is that NOTIFY keeps =
happening until the SUB times out. So we can think of a  SUB resulting =
in a single NOTIFY to be equivalent to a long poll.=20

I do think it is important in the diagram above that we are able to ACK =
both the subscribe and the NOTIFY.=20

> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, =
or plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell, pretty much everything people have been proposing fit into this =
model.  So first, I'd like to get an idea if people think I am in left =
field and there is a very different message flow to consider. Second we =
need to figure out some of the stuff I left out of the picture above =
such as=20

Regarding an HTTP proxy, we should decide on one other important model =
concept here. When we talk about "mapping" SUB/NOT to HTTP - we should =
strictly be considering a split-model where the HTTP proxy performs the =
needed SUBs on behalf of whatever mechanism is used on the HTTP side, =
and the resulting NOTIFY is cached and then used by the HTTP side =
mechanism. This also serves to shield constrained devices from way too =
many subscribers out there. This brings me to another point - we need to =
assume that a constrained end-point will only be able to handle a small =
number of simultaneous subscriptions.=20

>=20
> a) how to cancel a subscription=20

Update the SUB (re-subscribe) with a zero lifetime.=20

>=20
> b) how to get the initial value of the subscription around the time =
you subscribe=20

This can be included by default in the ACK to the SUB.

>=20
> c) what sort of filtering is available to limit the types of resource =
changes that result in a NOTIFY=20

In my opinion this is out of scope for CoAP. If the application wants to =
include a payload-specific filter it need to do that in the payload of =
the SUB message.

>=20
> d) lifespan of subscription how to refresh a subscription

We need a SUB_LIFETIME parameter for every SUB message. The subscription =
is refreshed by sending the SUB again.
>=20
> e) caching and interaction with sleeping device=20

One important requirement is for a cache to easily be able to cache =
responses to a request for resource A  as well as a NOTIFY about =
resource A. So both the GET and the NOTIFY must contain the same URI.

We do need to consider how a subscriber is able to get the first SUB to =
a sleeping device. Is an intermediate proxy able to cache a SUB message =
until a sleeping device wakes up? How does it determine that the device =
woke up?=20

>=20
> We have to be clear on how this maps to HTTP and possibly other =
protocols. One of the problems with HTTP is it has so many ways of doing =
asynchronous notifications that it hard to decide what to map for. I =
would be very conformable if we clearly new how to map it to HiBy and to =
direct HTTP polling. It would be nice to have  back of the cocktail =
napkin belief that it probably could be mapped to SMNP, XMPP, and the =
other HTTP approaches. My guess is that the mapping to other protocols =
is going to turn out to be easy.=20

Yep, I agree. And even the mapping to HTTP is easy with the split model =
as the NOTIFY is simply cached. After that the HTTP side can offer the =
resource to polls, HiBy, Webhooks or whatever.=20

Zach

>=20
>=20
>=20
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From angelo.castellani@gmail.com  Fri Jun 11 07:08:23 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 6FF2E3A69FC for <core@core3.amsl.com>; Fri, 11 Jun 2010 07:08:23 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.923
X-Spam-Level: 
X-Spam-Status: No, score=0.923 tagged_above=-999 required=5 tests=[AWL=0.300,  BAYES_50=0.001, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CptMMgyeQnix for <core@core3.amsl.com>; Fri, 11 Jun 2010 07:08:22 -0700 (PDT)
Received: from mail-bw0-f44.google.com (mail-bw0-f44.google.com [209.85.214.44]) by core3.amsl.com (Postfix) with ESMTP id BC1533A69FB for <core@ietf.org>; Fri, 11 Jun 2010 07:08:21 -0700 (PDT)
Received: by bwz6 with SMTP id 6so398608bwz.31 for <core@ietf.org>; Fri, 11 Jun 2010 07:08:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=hdLERl81DUzrANLPGCgpBcoRRUZCF8EYaHZCx7Fd6D8=; b=bDj9MtPty+6LpE3VdpAcTwk6yefQQN1hdKnpNIrlwPg9xlL60N+S2uhT/pwzUWLre4 bDQHt3RnIeK6OMC4cowg7oczv4CDc2ZJutPpQ/u4OeEE+7Ta8ilG9l+gCo7w6FKrAdv0 QPLVv5+y26VvmPe4aCNpg4MxaSLDqBGxN/jfk=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=BurVCiTmQmQqSqrmATVgk2Bgef75SSveudqV4f6IuQXRd14fdqFQkZommlgMdaWdEZ IRlFZAl0gA0d0o3wvRQM+5gky2qRX+4TS4P8bLyd6rj9r/DXYSX3tjNUufk7P8XTSJDx sXI7xwaUCmClcbZKNLXMS4/CVTovkmsjsnNuI=
MIME-Version: 1.0
Received: by 10.204.34.140 with SMTP id l12mr1322213bkd.167.1276265300457;  Fri, 11 Jun 2010 07:08:20 -0700 (PDT)
Sender: angelo.castellani@gmail.com
Received: by 10.204.66.130 with HTTP; Fri, 11 Jun 2010 07:08:20 -0700 (PDT)
In-Reply-To: <FA186CB6-07B5-486C-915B-4EC8B2296490@tzi.org>
References: <057.8d37fc1963a953ac6712dad4000b6b92@tools.ietf.org> <FA186CB6-07B5-486C-915B-4EC8B2296490@tzi.org>
Date: Fri, 11 Jun 2010 16:08:20 +0200
X-Google-Sender-Auth: Qw1fuOjOazoOsCfwliJRBPCyHs8
Message-ID: <AANLkTikHZd6Zmvs1N4GYkHr-rmNAXiMQqaGCGOeoQDcZ@mail.gmail.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
To: Carsten Bormann <cabo@tzi.org>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: core <core@ietf.org>
Subject: Re: [core] #1: Agree on Sub/Not model and requirements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 14:08:23 -0000

I share your concerns about conversation state/session handling. TCP
has really simplified the design of  HTTP, using UDP leads to a more
complex design. In general using a transport layer providing a
reliable, full-duplex stream session helps a lot.

In my opinion, all the functionalities included in CoAP doesn't need
to retain any state, except subscription/delayed replies (on the
delayed GET topic look here
http://www.ietf.org/mail-archive/web/core/current/msg00282.html and
http://www.ietf.org/mail-archive/web/core/current/msg00278.html).
However transport state is still required by every interaction.

The real problem here is to understand how to solve transport related
problems without defining a new transport protocol (which is probably
needed to efficiently design CoAP).

Best,
Angelo

On Fri, Jun 11, 2010 at 13:42, Carsten Bormann <cabo@tzi.org> wrote:
>> common understanding of the model to use and the requirements
>
> (Posting as an individual member of the WG.)
>
> While discussing this here with a student, we noticed that the usual mode=
l for doing asynchronous notification in HTTP, i.e. long-poll, does not wor=
k in CoAP.
>
> When a client requests the representation of a resource and the server do=
es not immediately respond, the client will retransmit.
>
> To make long-poll (or any kind of response that takes more than RESPONSE_=
TIMEOUT) work, we would need to have a provisional response (100-style, if =
you have the SIP scars).
> This would stop the client from retransmitting, but shift the burden to t=
he server:
> In turn, the actual response would need an acknowledgement (and thus an A=
-bit) to make sure it doesn't just get lost.
>
> In the end, a delayed response looks very close to what is called "notify=
" in CoAP-00.
> Once that problem is addressed, it seems as if a SUBSCRIBE might look ver=
y close to a GET.
> We are currently discussing how to get a more REST-like version of SUBSCR=
IBE defined on this basis.
> (We are calling that method OBSERVE. =A0Both GET and OBSERVE will elicit =
responses, some of which are immediate and some are happening later.)
>
> I'd like to move some of the discussion to who maintains conversation sta=
te.
> For the server, REST is stateless on the application layer (i.e., all sta=
te is in the resources, not in the conversation).
> That is no longer true when you look at the transport layer: opening a TC=
P connection creates conversation state in the server.
> The fact that POST is not idempotent is only tolerable because a POST is =
supported by the TCP conversation state.
>
> One objective I have in mind is to minimize the negative effects of the c=
onversation state.
> It will be impossible to completely avoid any conversation state in our d=
omain (e.g., in 6LoWPAN, we definitely will have to reassemble at the adapt=
ation layer -- this is also conversation state, and it is really hard to ma=
nage properly).
> Shifting conversation state down the stack is generally *not* a good solu=
tion; it usually just makes the problem worse (only when it doesn't can we =
really reap benefits off the separation of concern layering gives us).
> Shifting certain conversation state up into the resources *may* be a good=
 solution (this strategy helps making REST successful in the existing Web, =
e.g., think session objects).
>
> So my questions are:
> 1) Which conversation state is tolerable, which state do we want to avoid=
?
> 2) How can we avoid conversation state?
> 3) What do we have to do to make the conversation state we do need less f=
ragile?
> (E.g., how can we make sure eventual convergence as opposed to just deadl=
ocking/dropping the ball?)
>
> (While these questions may sound complex, the protocol that will result f=
rom the right answers will be very simple.)
>
> Gruesse, Carsten
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>

From angelo.castellani@gmail.com  Fri Jun 11 07:52:29 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id F02963A6879 for <core@core3.amsl.com>; Fri, 11 Jun 2010 07:52:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.227
X-Spam-Level: 
X-Spam-Status: No, score=-0.227 tagged_above=-999 required=5 tests=[AWL=1.150,  BAYES_50=0.001, FM_FORGED_GMAIL=0.622, GB_I_LETTER=-2]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cqb+NxMeyudb for <core@core3.amsl.com>; Fri, 11 Jun 2010 07:52:27 -0700 (PDT)
Received: from mail-bw0-f44.google.com (mail-bw0-f44.google.com [209.85.214.44]) by core3.amsl.com (Postfix) with ESMTP id 2A5D83A6821 for <core@ietf.org>; Fri, 11 Jun 2010 07:52:26 -0700 (PDT)
Received: by bwz13 with SMTP id 13so14254bwz.31 for <core@ietf.org>; Fri, 11 Jun 2010 07:52:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=6h1+Yvmb+lwBeBn8hmqdLhcJYw3RVnWxgViHgK1kE/k=; b=IDsRrByimG+zJ/FVna/XlnbVwxjLQUu9y4SJO043I2QiNusPMGDqdNWwFccBwgzVv8 L/SMqxYOl+xAfwPtSPRMMI7bNwNG3sP9vL9Y8oq3v4YI75XEzFxA8k7Ww2fknsp01lU7 GJFVRSkKzhjol0Ti069iQbWWnO4pLb403UjcQ=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=d+jTOQ5KQSXZUp6pbWf2NkVtdOA2z08A5ne2dMDWhZ8p3v5VvHXzQKgRpsUfVbMSDx 7bEcmoNA/kRs/DUAyq/hIiRRItMtKXnsxHHeM2bLtWocUBCxXaV/t6HfGSLe6gb7DG83 f/Cb0wssZDn9/bCIwUj1q5/WjFtuP4yRollYo=
MIME-Version: 1.0
Received: by 10.204.81.74 with SMTP id w10mr1388757bkk.79.1276267945476; Fri,  11 Jun 2010 07:52:25 -0700 (PDT)
Sender: angelo.castellani@gmail.com
Received: by 10.204.66.130 with HTTP; Fri, 11 Jun 2010 07:52:25 -0700 (PDT)
In-Reply-To: <057.dc1f73d93c692bd4317583193bbbd467@tools.ietf.org>
References: <057.dc1f73d93c692bd4317583193bbbd467@tools.ietf.org>
Date: Fri, 11 Jun 2010 16:52:25 +0200
X-Google-Sender-Auth: l6NayFoY7ex_WaYESvySlFJI9ks
Message-ID: <AANLkTimCp4x4i_9JNML8fOJfn_JzxDQc0YSTVrwv00Gb@mail.gmail.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
To: core issue tracker <trac@tools.ietf.org>
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable
Cc: core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 14:52:29 -0000

I've two different proposals on this topic:

1) Compressed URI using a dictionary:

Exploiting the fact the URI is a 7-bit ASCII, we can represent most
frequent URI characters (regex format: [0-9a-zA-Z/]) using a 6 bit
encoding, a NULL (\x00) octet signals that an uncompressed character
is following. Every 3 compressed chars we have 6 unused bits that can
be used to represent another character (0.75 ratio if characters are
all from the dictionary).

Maybe some predefined dictionaries can be agreed, and the used
dictionary can be chosen in a preceding field (another example:
[a-zA-Z%+._/\|=3D&?-], etc.)

Reference: http://www.ietf.org/mail-archive/web/core/current/msg00166.html

2) Binary-URI encoding:

Binary-URI is a compressed mapping of the URI:
* It is N bytes long, where N is the depth of the resource in the URI. exam=
ple:

(a) /document/letter/order.html DEPTH: 3
(b) / DEPTH: 0
(c) /index.html DEPTH: 1

* byte K is equal to the sum modulo 256 of ASCII values forming the
K-level resource name in the tree:

(a) document =3D 95, letter =3D 144, order.html =3D 255. So Binary-URI =3D =
{
95, 144, 255 } (c-style representation)
(b) no byte so Binary-URI =3D {}
(c) index.html =3D 251. Binary-URI =3D { 251 }

Here is the code of the program used to compute the values:

sum.c
#include <stdio.h>
#include <stdlib.h>

int main (int argc, char* argv[]) {
       if (argc=3D=3D2) {
               unsigned char* p =3D argv[1];
               int sum=3D0;
               do {
                       sum+=3D*p;
               } while (*(++p));
               printf("word: \"%s\" sum: %d\n", argv[1], sum&0xff);
       }
}

Resources created on a CoAP server should not collide with each-other,
to achieve this when we try to register a new resource the CoAP server
should check if it is colliding with other available resources and
accept the request only if this condition is satisfied.

Reference: http://www.ietf.org/mail-archive/web/core/current/msg00133.html

In my opinion both are useful, because (1) is useful when a CoAP node
wants to access a resource which cannot be represented in Binary-URI
format (CoAP node -> HTTP server on the internet); (2) can be used
when a CoAP server (a node) provides only non-colliding resources and
thanks to this its URI can be represented using the very short and
hierarchical Binary-URI format.

Best,
Angelo

On Fri, Jun 11, 2010 at 11:31, core issue tracker <trac@tools.ietf.org> wro=
te:
> #4: URI Encoding
> --------------------------------+----------------------------------------=
---
> =A0Reporter: =A0zach@=85 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A0 =A0 Owner: =
=A0zach@=85
> =A0 =A0 Type: =A0enhancement =A0 =A0 =A0 =A0 | =A0 =A0 =A0Status: =A0new
> =A0Priority: =A0major =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 Milestone:
> Component: =A0coap =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A0 Version:
> =A0Severity: =A0- =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 =A0Keywords:
> --------------------------------+----------------------------------------=
---
> =A0The working group needs to consider the encoding of URIs in order to s=
ave
> =A0overhead. The WG needs to converge on an approach to integrate in coap=
-01.
>
> =A0The following approaches have been suggested so far:
>
> =A0- Encode the URI with 7-bit ASCII encoding.
> =A0- Encode the URI with Base64 encoding (requires mapping table).
> =A0- Encode the URI with Ascii85 encoding (works on blocks of 5 character=
s)
> =A0- Define a custom ASCII encoding only for valid URI characters.
>
> =A0There is an obvious tradeoff of space savings vs. complexity in these
> =A0approaches. At the minimum 7-bit ASCII encoding is doable.
>
> =A0Furthermore, the Uri-code option was dropped in favor of integrating
> =A0"short" URIs into the normal URI string option. Here is one proposed
> =A0approach from Carsten:
>
> =A0- We could do an ASCII form of at least 4000 or so using /.xy or /!xy
> =A0style shortcuts (essentially encoding the "codedness" in the first ASC=
II
> =A0character).
>
> --
> Ticket URL: <https://wiki.tools.ietf.org/wg/core/trac/ticket/4>
> core <http://tools.ietf.org/core/>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>

From Michael.Stuber@itron.com  Fri Jun 11 12:00:20 2010
Return-Path: <Michael.Stuber@itron.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 4367628C1EE for <core@core3.amsl.com>; Fri, 11 Jun 2010 12:00:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.11
X-Spam-Level: 
X-Spam-Status: No, score=-3.11 tagged_above=-999 required=5 tests=[BAYES_05=-1.11, GB_I_LETTER=-2]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hzQAOK3HKwz2 for <core@core3.amsl.com>; Fri, 11 Jun 2010 12:00:17 -0700 (PDT)
Received: from mailer-1.itron.com (mailer-1.itron.com [198.182.8.121]) by core3.amsl.com (Postfix) with ESMTP id B2AF628C1AB for <core@ietf.org>; Fri, 11 Jun 2010 12:00:13 -0700 (PDT)
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Date: Fri, 11 Jun 2010 12:00:19 -0700
Message-ID: <05C6A38D732F1144A8C4016BA4416BFE02E94AB2@SPO-EXVS-02.itron.com>
In-Reply-To: <AANLkTimCp4x4i_9JNML8fOJfn_JzxDQc0YSTVrwv00Gb@mail.gmail.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] #4: URI Encoding
Thread-Index: AcsJdcf6wtf5lPXnRfWTuwFBrmHU/gAIUyBA
References: <057.dc1f73d93c692bd4317583193bbbd467@tools.ietf.org> <AANLkTimCp4x4i_9JNML8fOJfn_JzxDQc0YSTVrwv00Gb@mail.gmail.com>
From: "Stuber, Michael" <Michael.Stuber@itron.com>
To: "Angelo P. Castellani" <angelo@castellani.net>, "core issue tracker" <trac@tools.ietf.org>
Cc: core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 19:00:20 -0000

I like #1.  I recognize that #2 may be useful, but it seems it would =
force you into walking a URI structure on a given server.  Put another =
way, let's say I have a resource like /machine/pump/flowstate.  (I =
recognize you may want to use shorter names, but I just want something =
readable for this example.)  Now I have several nodes that each offer =
this resource.  If I read #2 correctly, the beautiful thing is that I =
could compress this URI to a mere three bytes (woot!), but I have no =
reason to believe it could, would, or should, be consistent between =
these nodes.  Thus, it would seem (unless I have misunderstood), that I =
would have to walk the resource tree of each of these nodes to find =
where /machine/pump/flowstate is.  With option #1, I could still get =
some compression, and, should I choose to use fixed URIs, avoid =
navigating the resource tree.

Or have I misunderstood the potential implications of #2?


-----Original Message-----
From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of =
Angelo P. Castellani
Sent: Friday, June 11, 2010 7:52 AM
To: core issue tracker
Cc: core
Subject: Re: [core] #4: URI Encoding

I've two different proposals on this topic:

1) Compressed URI using a dictionary:

Exploiting the fact the URI is a 7-bit ASCII, we can represent most =
frequent URI characters (regex format: [0-9a-zA-Z/]) using a 6 bit =
encoding, a NULL (\x00) octet signals that an uncompressed character is =
following. Every 3 compressed chars we have 6 unused bits that can be =
used to represent another character (0.75 ratio if characters are all =
from the dictionary).

Maybe some predefined dictionaries can be agreed, and the used =
dictionary can be chosen in a preceding field (another example:
[a-zA-Z%+._/\|=3D&?-], etc.)

Reference: =
http://www.ietf.org/mail-archive/web/core/current/msg00166.html

2) Binary-URI encoding:

Binary-URI is a compressed mapping of the URI:
* It is N bytes long, where N is the depth of the resource in the URI. =
example:

(a) /document/letter/order.html DEPTH: 3
(b) / DEPTH: 0
(c) /index.html DEPTH: 1

* byte K is equal to the sum modulo 256 of ASCII values forming the =
K-level resource name in the tree:

(a) document =3D 95, letter =3D 144, order.html =3D 255. So Binary-URI =
=3D { 95, 144, 255 } (c-style representation)
(b) no byte so Binary-URI =3D {}
(c) index.html =3D 251. Binary-URI =3D { 251 }

Here is the code of the program used to compute the values:

sum.c
#include <stdio.h>
#include <stdlib.h>

int main (int argc, char* argv[]) {
       if (argc=3D=3D2) {
               unsigned char* p =3D argv[1];
               int sum=3D0;
               do {
                       sum+=3D*p;
               } while (*(++p));
               printf("word: \"%s\" sum: %d\n", argv[1], sum&0xff);
       }
}

Resources created on a CoAP server should not collide with each-other, =
to achieve this when we try to register a new resource the CoAP server =
should check if it is colliding with other available resources and =
accept the request only if this condition is satisfied.

Reference: =
http://www.ietf.org/mail-archive/web/core/current/msg00133.html

In my opinion both are useful, because (1) is useful when a CoAP node =
wants to access a resource which cannot be represented in Binary-URI =
format (CoAP node -> HTTP server on the internet); (2) can be used when =
a CoAP server (a node) provides only non-colliding resources and thanks =
to this its URI can be represented using the very short and hierarchical =
Binary-URI format.

Best,
Angelo

On Fri, Jun 11, 2010 at 11:31, core issue tracker <trac@tools.ietf.org> =
wrote:
> #4: URI Encoding
> --------------------------------+-------------------------------------
> --------------------------------+------
> =A0Reporter: =A0zach@... =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A0 =A0 =
Owner: =A0zach@...
> =A0 =A0 Type: =A0enhancement =A0 =A0 =A0 =A0 | =A0 =A0 =A0Status: =
=A0new
> =A0Priority: =A0major =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 Milestone:
> Component: =A0coap =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A0 Version:
> =A0Severity: =A0- =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 =
=A0Keywords:
> --------------------------------+-------------------------------------
> --------------------------------+------
> =A0The working group needs to consider the encoding of URIs in order =
to=20
> save
> =A0overhead. The WG needs to converge on an approach to integrate in =
coap-01.
>
> =A0The following approaches have been suggested so far:
>
> =A0- Encode the URI with 7-bit ASCII encoding.
> =A0- Encode the URI with Base64 encoding (requires mapping table).
> =A0- Encode the URI with Ascii85 encoding (works on blocks of 5=20
> characters)
> =A0- Define a custom ASCII encoding only for valid URI characters.
>
> =A0There is an obvious tradeoff of space savings vs. complexity in =
these
> =A0approaches. At the minimum 7-bit ASCII encoding is doable.
>
> =A0Furthermore, the Uri-code option was dropped in favor of =
integrating
> =A0"short" URIs into the normal URI string option. Here is one =
proposed
> =A0approach from Carsten:
>
> =A0- We could do an ASCII form of at least 4000 or so using /.xy or =
/!xy
> =A0style shortcuts (essentially encoding the "codedness" in the first=20
> ASCII
> =A0character).
>
> --
> Ticket URL: <https://wiki.tools.ietf.org/wg/core/trac/ticket/4>
> core <http://tools.ietf.org/core/>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core

From hgs@cs.columbia.edu  Fri Jun 11 12:31:11 2010
Return-Path: <hgs@cs.columbia.edu>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C3CA63A68CC for <core@core3.amsl.com>; Fri, 11 Jun 2010 12:31:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.599
X-Spam-Level: 
X-Spam-Status: No, score=-4.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, GB_I_LETTER=-2]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YukCAWkCGcti for <core@core3.amsl.com>; Fri, 11 Jun 2010 12:31:06 -0700 (PDT)
Received: from tarap.cc.columbia.edu (tarap.cc.columbia.edu [128.59.29.7]) by core3.amsl.com (Postfix) with ESMTP id E9F1B28C138 for <core@ietf.org>; Fri, 11 Jun 2010 12:31:03 -0700 (PDT)
Received: from [10.59.2.9] (addr-213-216-194-138.suomi.net [213.216.194.138]) (user=hgs10 mech=PLAIN bits=0) by tarap.cc.columbia.edu (8.14.3/8.14.3) with ESMTP id o5BJV1hX025148 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Fri, 11 Jun 2010 15:31:03 -0400 (EDT)
References: <057.dc1f73d93c692bd4317583193bbbd467@tools.ietf.org> <AANLkTimCp4x4i_9JNML8fOJfn_JzxDQc0YSTVrwv00Gb@mail.gmail.com> <05C6A38D732F1144A8C4016BA4416BFE02E94AB2@SPO-EXVS-02.itron.com>
In-Reply-To: <05C6A38D732F1144A8C4016BA4416BFE02E94AB2@SPO-EXVS-02.itron.com>
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
Message-Id: <EE835DD7-8139-48F9-A24F-B6AFB932F487@cs.columbia.edu>
Content-Transfer-Encoding: quoted-printable
From: Henning Schulzrinne <hgs@cs.columbia.edu>
Date: Fri, 11 Jun 2010 15:31:00 -0400
To: "Stuber, Michael" <Michael.Stuber@itron.com>
X-Mailer: Apple Mail (2.1078)
X-No-Spam-Score: Local
X-Scanned-By: MIMEDefang 2.68 on 128.59.29.7
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 19:31:11 -0000

Two remarks:

- see http://www.ietf.org/id/draft-ietf-iri-3987bis-00.txt - it would =
seem advisable to at least consider this ahead of time
- see the Punycode translation for DNS for the translation (this is not =
a compression)

Henning

On Jun 11, 2010, at 3:00 PM, Stuber, Michael wrote:

> I like #1.  I recognize that #2 may be useful, but it seems it would =
force you into walking a URI structure on a given server.  Put another =
way, let's say I have a resource like /machine/pump/flowstate.  (I =
recognize you may want to use shorter names, but I just want something =
readable for this example.)  Now I have several nodes that each offer =
this resource.  If I read #2 correctly, the beautiful thing is that I =
could compress this URI to a mere three bytes (woot!), but I have no =
reason to believe it could, would, or should, be consistent between =
these nodes.  Thus, it would seem (unless I have misunderstood), that I =
would have to walk the resource tree of each of these nodes to find =
where /machine/pump/flowstate is.  With option #1, I could still get =
some compression, and, should I choose to use fixed URIs, avoid =
navigating the resource tree.
>=20
> Or have I misunderstood the potential implications of #2?
>=20
>=20
> -----Original Message-----
> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf =
Of Angelo P. Castellani
> Sent: Friday, June 11, 2010 7:52 AM
> To: core issue tracker
> Cc: core
> Subject: Re: [core] #4: URI Encoding
>=20
> I've two different proposals on this topic:
>=20
> 1) Compressed URI using a dictionary:
>=20
> Exploiting the fact the URI is a 7-bit ASCII, we can represent most =
frequent URI characters (regex format: [0-9a-zA-Z/]) using a 6 bit =
encoding, a NULL (\x00) octet signals that an uncompressed character is =
following. Every 3 compressed chars we have 6 unused bits that can be =
used to represent another character (0.75 ratio if characters are all =
from the dictionary).
>=20
> Maybe some predefined dictionaries can be agreed, and the used =
dictionary can be chosen in a preceding field (another example:
> [a-zA-Z%+._/\|=3D&?-], etc.)
>=20
> Reference: =
http://www.ietf.org/mail-archive/web/core/current/msg00166.html
>=20
> 2) Binary-URI encoding:
>=20
> Binary-URI is a compressed mapping of the URI:
> * It is N bytes long, where N is the depth of the resource in the URI. =
example:
>=20
> (a) /document/letter/order.html DEPTH: 3
> (b) / DEPTH: 0
> (c) /index.html DEPTH: 1
>=20
> * byte K is equal to the sum modulo 256 of ASCII values forming the =
K-level resource name in the tree:
>=20
> (a) document =3D 95, letter =3D 144, order.html =3D 255. So Binary-URI =
=3D { 95, 144, 255 } (c-style representation)
> (b) no byte so Binary-URI =3D {}
> (c) index.html =3D 251. Binary-URI =3D { 251 }
>=20
> Here is the code of the program used to compute the values:
>=20
> sum.c
> #include <stdio.h>
> #include <stdlib.h>
>=20
> int main (int argc, char* argv[]) {
>       if (argc=3D=3D2) {
>               unsigned char* p =3D argv[1];
>               int sum=3D0;
>               do {
>                       sum+=3D*p;
>               } while (*(++p));
>               printf("word: \"%s\" sum: %d\n", argv[1], sum&0xff);
>       }
> }
>=20
> Resources created on a CoAP server should not collide with each-other, =
to achieve this when we try to register a new resource the CoAP server =
should check if it is colliding with other available resources and =
accept the request only if this condition is satisfied.
>=20
> Reference: =
http://www.ietf.org/mail-archive/web/core/current/msg00133.html
>=20
> In my opinion both are useful, because (1) is useful when a CoAP node =
wants to access a resource which cannot be represented in Binary-URI =
format (CoAP node -> HTTP server on the internet); (2) can be used when =
a CoAP server (a node) provides only non-colliding resources and thanks =
to this its URI can be represented using the very short and hierarchical =
Binary-URI format.
>=20
> Best,
> Angelo
>=20
> On Fri, Jun 11, 2010 at 11:31, core issue tracker =
<trac@tools.ietf.org> wrote:
>> #4: URI Encoding
>> =
--------------------------------+-------------------------------------
>> --------------------------------+------
>>  Reporter:  zach@...              |       Owner:  zach@...
>>     Type:  enhancement         |      Status:  new
>>  Priority:  major               |   Milestone:
>> Component:  coap                |     Version:
>>  Severity:  -                   |    Keywords:
>> =
--------------------------------+-------------------------------------
>> --------------------------------+------
>>  The working group needs to consider the encoding of URIs in order to=20=

>> save
>>  overhead. The WG needs to converge on an approach to integrate in =
coap-01.
>>=20
>>  The following approaches have been suggested so far:
>>=20
>>  - Encode the URI with 7-bit ASCII encoding.
>>  - Encode the URI with Base64 encoding (requires mapping table).
>>  - Encode the URI with Ascii85 encoding (works on blocks of 5=20
>> characters)
>>  - Define a custom ASCII encoding only for valid URI characters.
>>=20
>>  There is an obvious tradeoff of space savings vs. complexity in =
these
>>  approaches. At the minimum 7-bit ASCII encoding is doable.
>>=20
>>  Furthermore, the Uri-code option was dropped in favor of integrating
>>  "short" URIs into the normal URI string option. Here is one proposed
>>  approach from Carsten:
>>=20
>>  - We could do an ASCII form of at least 4000 or so using /.xy or =
/!xy
>>  style shortcuts (essentially encoding the "codedness" in the first=20=

>> ASCII
>>  character).
>>=20
>> --
>> Ticket URL: <https://wiki.tools.ietf.org/wg/core/trac/ticket/4>
>> core <http://tools.ietf.org/core/>
>>=20
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>=20


From cabo@tzi.org  Fri Jun 11 14:19:59 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A092E28C0F4 for <core@core3.amsl.com>; Fri, 11 Jun 2010 14:19:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.249
X-Spam-Level: 
X-Spam-Status: No, score=-6.249 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MHSICM9MP-bU for <core@core3.amsl.com>; Fri, 11 Jun 2010 14:19:58 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 63C403A63CB for <core@ietf.org>; Fri, 11 Jun 2010 14:19:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5BKUBnN010237; Fri, 11 Jun 2010 22:30:11 +0200 (CEST)
Received: from [192.168.217.101] (p5489FC84.dip.t-dialin.net [84.137.252.132]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 2C593BB6C;  Fri, 11 Jun 2010 22:30:11 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <AANLkTikHZd6Zmvs1N4GYkHr-rmNAXiMQqaGCGOeoQDcZ@mail.gmail.com>
Date: Fri, 11 Jun 2010 22:30:09 +0200
Content-Transfer-Encoding: 7bit
Message-Id: <2F0BB999-81BE-48AF-9291-7FDCB9A9546D@tzi.org>
References: <057.8d37fc1963a953ac6712dad4000b6b92@tools.ietf.org> <FA186CB6-07B5-486C-915B-4EC8B2296490@tzi.org> <AANLkTikHZd6Zmvs1N4GYkHr-rmNAXiMQqaGCGOeoQDcZ@mail.gmail.com>
To: "Angelo P. Castellani" <angelo@castellani.net>
X-Mailer: Apple Mail (2.1078)
Cc: core <core@ietf.org>
Subject: Re: [core] #1: Agree on Sub/Not model and requirements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 21:19:59 -0000

On Jun 11, 2010, at 16:08, Angelo P. Castellani wrote:

> However transport state is still required by every interaction.

Why?

> The real problem here is to understand how to solve transport related
> problems without defining a new transport protocol (which is probably
> needed to efficiently design CoAP).

Why do you believe a new transport protocol would help?
As I said, I don't believe pushing the state down a layer solves any problem.

Gruesse, Carsten


From paduffy@cisco.com  Fri Jun 11 15:08:33 2010
Return-Path: <paduffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 24A9E3A659A for <core@core3.amsl.com>; Fri, 11 Jun 2010 15:08:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -12.599
X-Spam-Level: 
X-Spam-Status: No, score=-12.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, GB_I_LETTER=-2, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TEKjwF4nBYA6 for <core@core3.amsl.com>; Fri, 11 Jun 2010 15:08:32 -0700 (PDT)
Received: from rtp-iport-2.cisco.com (rtp-iport-2.cisco.com [64.102.122.149]) by core3.amsl.com (Postfix) with ESMTP id BFF663A67A5 for <core@ietf.org>; Fri, 11 Jun 2010 15:08:31 -0700 (PDT)
Authentication-Results: rtp-iport-2.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEABdREkxAZnwN/2dsb2JhbACee3GlJ4F2CwGXdoUYBA
X-IronPort-AV: E=Sophos;i="4.53,405,1272844800"; d="scan'208";a="120816088"
Received: from rtp-core-2.cisco.com ([64.102.124.13]) by rtp-iport-2.cisco.com with ESMTP; 11 Jun 2010 22:08:33 +0000
Received: from [10.86.250.196] (bxb-vpn3-708.cisco.com [10.86.250.196]) by rtp-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o5BM8Xb7012646; Fri, 11 Jun 2010 22:08:33 GMT
Message-ID: <4C12B3E1.9050602@cisco.com>
Date: Fri, 11 Jun 2010 18:08:33 -0400
From: Paul Duffy <paduffy@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: "Angelo P. Castellani" <angelo@castellani.net>
References: <057.dc1f73d93c692bd4317583193bbbd467@tools.ietf.org> <AANLkTimCp4x4i_9JNML8fOJfn_JzxDQc0YSTVrwv00Gb@mail.gmail.com>
In-Reply-To: <AANLkTimCp4x4i_9JNML8fOJfn_JzxDQc0YSTVrwv00Gb@mail.gmail.com>
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 8bit
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: paduffy@cisco.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 22:08:33 -0000

DEFLATE appears to be popping up quite frequently re: various 
constrained node capabilities.

Viable for URIs?


On 6/11/2010 10:52 AM, Angelo P. Castellani wrote:
> I've two different proposals on this topic:
>
> 1) Compressed URI using a dictionary:
>
> Exploiting the fact the URI is a 7-bit ASCII, we can represent most
> frequent URI characters (regex format: [0-9a-zA-Z/]) using a 6 bit
> encoding, a NULL (\x00) octet signals that an uncompressed character
> is following. Every 3 compressed chars we have 6 unused bits that can
> be used to represent another character (0.75 ratio if characters are
> all from the dictionary).
>
> Maybe some predefined dictionaries can be agreed, and the used
> dictionary can be chosen in a preceding field (another example:
> [a-zA-Z%+._/\|=&?-], etc.)
>
> Reference: http://www.ietf.org/mail-archive/web/core/current/msg00166.html
>
> 2) Binary-URI encoding:
>
> Binary-URI is a compressed mapping of the URI:
> * It is N bytes long, where N is the depth of the resource in the URI. example:
>
> (a) /document/letter/order.html DEPTH: 3
> (b) / DEPTH: 0
> (c) /index.html DEPTH: 1
>
> * byte K is equal to the sum modulo 256 of ASCII values forming the
> K-level resource name in the tree:
>
> (a) document = 95, letter = 144, order.html = 255. So Binary-URI = {
> 95, 144, 255 } (c-style representation)
> (b) no byte so Binary-URI = {}
> (c) index.html = 251. Binary-URI = { 251 }
>
> Here is the code of the program used to compute the values:
>
> sum.c
> #include<stdio.h>
> #include<stdlib.h>
>
> int main (int argc, char* argv[]) {
>         if (argc==2) {
>                 unsigned char* p = argv[1];
>                 int sum=0;
>                 do {
>                         sum+=*p;
>                 } while (*(++p));
>                 printf("word: \"%s\" sum: %d\n", argv[1], sum&0xff);
>         }
> }
>
> Resources created on a CoAP server should not collide with each-other,
> to achieve this when we try to register a new resource the CoAP server
> should check if it is colliding with other available resources and
> accept the request only if this condition is satisfied.
>
> Reference: http://www.ietf.org/mail-archive/web/core/current/msg00133.html
>
> In my opinion both are useful, because (1) is useful when a CoAP node
> wants to access a resource which cannot be represented in Binary-URI
> format (CoAP node ->  HTTP server on the internet); (2) can be used
> when a CoAP server (a node) provides only non-colliding resources and
> thanks to this its URI can be represented using the very short and
> hierarchical Binary-URI format.
>
> Best,
> Angelo
>
> On Fri, Jun 11, 2010 at 11:31, core issue tracker<trac@tools.ietf.org>  wrote:
>    
>> #4: URI Encoding
>> --------------------------------+-------------------------------------------
>>   Reporter:  zach@…              |       Owner:  zach@…
>>      Type:  enhancement         |      Status:  new
>>   Priority:  major               |   Milestone:
>> Component:  coap                |     Version:
>>   Severity:  -                   |    Keywords:
>> --------------------------------+-------------------------------------------
>>   The working group needs to consider the encoding of URIs in order to save
>>   overhead. The WG needs to converge on an approach to integrate in coap-01.
>>
>>   The following approaches have been suggested so far:
>>
>>   - Encode the URI with 7-bit ASCII encoding.
>>   - Encode the URI with Base64 encoding (requires mapping table).
>>   - Encode the URI with Ascii85 encoding (works on blocks of 5 characters)
>>   - Define a custom ASCII encoding only for valid URI characters.
>>
>>   There is an obvious tradeoff of space savings vs. complexity in these
>>   approaches. At the minimum 7-bit ASCII encoding is doable.
>>
>>   Furthermore, the Uri-code option was dropped in favor of integrating
>>   "short" URIs into the normal URI string option. Here is one proposed
>>   approach from Carsten:
>>
>>   - We could do an ASCII form of at least 4000 or so using /.xy or /!xy
>>   style shortcuts (essentially encoding the "codedness" in the first ASCII
>>   character).
>>
>> --
>> Ticket URL:<https://wiki.tools.ietf.org/wg/core/trac/ticket/4>
>> core<http://tools.ietf.org/core/>
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>
>>      
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>    


From Michael.Stuber@itron.com  Fri Jun 11 15:30:55 2010
Return-Path: <Michael.Stuber@itron.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9E7113A67C1 for <core@core3.amsl.com>; Fri, 11 Jun 2010 15:30:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.854
X-Spam-Level: 
X-Spam-Status: No, score=-3.854 tagged_above=-999 required=5 tests=[AWL=0.745,  BAYES_00=-2.599, GB_I_LETTER=-2]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yTDnpFS5JFOJ for <core@core3.amsl.com>; Fri, 11 Jun 2010 15:30:54 -0700 (PDT)
Received: from mailer-1.itron.com (mailer-1.itron.com [198.182.8.121]) by core3.amsl.com (Postfix) with ESMTP id 4F9943A67A5 for <core@ietf.org>; Fri, 11 Jun 2010 15:30:54 -0700 (PDT)
Received: from 192.168.9.12 ([192.168.9.12]) by SPO-EXVS-02.itron.com ([192.168.9.22]) with Microsoft Exchange Server HTTP-DAV ;  Fri, 11 Jun 2010 22:30:56 +0000
MIME-Version: 1.0
Message-ID: <a10401cb09b5$c2788f00$0c09a8c0@itron.com>
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-class: 
X-MimeOLE: Produced By Microsoft Exchange V6.5
Thread-Index: AcsJtcJ45YN8JZlnSgCTbNmcafp+eA==
Thread-Topic: [core] #4: URI Encoding
From: "Stuber, Michael" <Michael.Stuber@itron.com>
Date: Fri, 11 Jun 2010 15:30:54 -0700
Importance: normal
X-Priority: 3
To: <paduffy@cisco.com>, "Angelo P. Castellani" <angelo@castellani.net>
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 22:30:55 -0000

Aren't you going to have too much overhead with the symbol table? =20

-----Original Message-----
From: Paul Duffy <paduffy@cisco.com>
Sent: Friday, June 11, 2010 3:08 PM
To: Angelo P. Castellani <angelo@castellani.net>
Cc: core issue tracker <trac@tools.ietf.org>; core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding

DEFLATE appears to be popping up quite frequently re: various=20
constrained node capabilities.

Viable for URIs?


On 6/11/2010 10:52 AM, Angelo P. Castellani wrote:
> I've two different proposals on this topic:
>
> 1) Compressed URI using a dictionary:
>
> Exploiting the fact the URI is a 7-bit ASCII, we can represent most
> frequent URI characters (regex format: [0-9a-zA-Z/]) using a 6 bit
> encoding, a NULL (\x00) octet signals that an uncompressed character
> is following. Every 3 compressed chars we have 6 unused bits that can
> be used to represent another character (0.75 ratio if characters are
> all from the dictionary).
>
> Maybe some predefined dictionaries can be agreed, and the used
> dictionary can be chosen in a preceding field (another example:
> [a-zA-Z%+._/\|=3D&?-], etc.)
>
> Reference: =
http://www.ietf.org/mail-archive/web/core/current/msg00166.html
>
> 2) Binary-URI encoding:
>
> Binary-URI is a compressed mapping of the URI:
> * It is N bytes long, where N is the depth of the resource in the URI. =
example:
>
> (a) /document/letter/order.html DEPTH: 3
> (b) / DEPTH: 0
> (c) /index.html DEPTH: 1
>
> * byte K is equal to the sum modulo 256 of ASCII values forming the
> K-level resource name in the tree:
>
> (a) document =3D 95, letter =3D 144, order.html =3D 255. So Binary-URI =
=3D {
> 95, 144, 255 } (c-style representation)
> (b) no byte so Binary-URI =3D {}
> (c) index.html =3D 251. Binary-URI =3D { 251 }
>
> Here is the code of the program used to compute the values:
>
> sum.c
> #include<stdio.h>
> #include<stdlib.h>
>
> int main (int argc, char* argv[]) {
>         if (argc=3D=3D2) {
>                 unsigned char* p =3D argv[1];
>                 int sum=3D0;
>                 do {
>                         sum+=3D*p;
>                 } while (*(++p));
>                 printf("word: \"%s\" sum: %d\n", argv[1], sum&0xff);
>         }
> }
>
> Resources created on a CoAP server should not collide with each-other,
> to achieve this when we try to register a new resource the CoAP server
> should check if it is colliding with other available resources and
> accept the request only if this condition is satisfied.
>
> Reference: =
http://www.ietf.org/mail-archive/web/core/current/msg00133.html
>
> In my opinion both are useful, because (1) is useful when a CoAP node
> wants to access a resource which cannot be represented in Binary-URI
> format (CoAP node ->  HTTP server on the internet); (2) can be used
> when a CoAP server (a node) provides only non-colliding resources and
> thanks to this its URI can be represented using the very short and
> hierarchical Binary-URI format.
>
> Best,
> Angelo
>
> On Fri, Jun 11, 2010 at 11:31, core issue tracker<trac@tools.ietf.org> =
 wrote:
>   =20
>> #4: URI Encoding
>> =
--------------------------------+----------------------------------------=
---
>>   Reporter:  zach@=85              |       Owner:  zach@=85
>>      Type:  enhancement         |      Status:  new
>>   Priority:  major               |   Milestone:
>> Component:  coap                |     Version:
>>   Severity:  -                   |    Keywords:
>> =
--------------------------------+----------------------------------------=
---
>>   The working group needs to consider the encoding of URIs in order =
to save
>>   overhead. The WG needs to converge on an approach to integrate in =
coap-01.
>>
>>   The following approaches have been suggested so far:
>>
>>   - Encode the URI with 7-bit ASCII encoding.
>>   - Encode the URI with Base64 encoding (requires mapping table).
>>   - Encode the URI with Ascii85 encoding (works on blocks of 5 =
characters)
>>   - Define a custom ASCII encoding only for valid URI characters.
>>
>>   There is an obvious tradeoff of space savings vs. complexity in =
these
>>   approaches. At the minimum 7-bit ASCII encoding is doable.
>>
>>   Furthermore, the Uri-code option was dropped in favor of =
integrating
>>   "short" URIs into the normal URI string option. Here is one =
proposed
>>   approach from Carsten:
>>
>>   - We could do an ASCII form of at least 4000 or so using /.xy or =
/!xy
>>   style shortcuts (essentially encoding the "codedness" in the first =
ASCII
>>   character).
>>
>> --
>> Ticket URL:<https://wiki.tools.ietf.org/wg/core/trac/ticket/4>
>> core<http://tools.ietf.org/core/>
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>
>>     =20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>   =20

_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core

From cabo@tzi.org  Fri Jun 11 16:26:21 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id AB1E53A69AA for <core@core3.amsl.com>; Fri, 11 Jun 2010 16:26:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.124
X-Spam-Level: 
X-Spam-Status: No, score=-4.124 tagged_above=-999 required=5 tests=[AWL=-2.125, BAYES_50=0.001, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4, SARE_CSBIG=1.65]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PsDNl4ewuFaH for <core@core3.amsl.com>; Fri, 11 Jun 2010 16:26:20 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 491AE3A67CC for <core@ietf.org>; Fri, 11 Jun 2010 16:26:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5BNQE2C027618; Sat, 12 Jun 2010 01:26:14 +0200 (CEST)
Received: from [192.168.217.101] (p5489FC84.dip.t-dialin.net [84.137.252.132]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 25CCCBB8B;  Sat, 12 Jun 2010 01:26:14 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
X-Priority: 3
In-Reply-To: <a10401cb09b5$c2788f00$0c09a8c0@itron.com>
Date: Sat, 12 Jun 2010 01:26:12 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1078)
Cc: core issue tracker <trac@tools.ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 11 Jun 2010 23:26:21 -0000

> DEFLATE

Deflate (RFC 1951, as used in RFC 2616 in conjunction with RFC 1950) =
derives its relatively high compression of text and most binary files =
from the repetition of byte sequences (it is based on the LZ77 =
algorithm, see
http://en.wikipedia.org/wiki/LZ77_and_LZ78
for a reasonably short description).

There is very little repetition in most URI paths, so Deflate on its own =
does not help there.
With a predefined dictionary (such as the one we made in RFC 3485 for =
RFC 3320), it *might* be useful if we manage to hit the right strings.

However, there is a lot of strain on constrained nodes: The whole =
dictionary would have to be available in all nodes.
Even with a small dictionary (such as the priority 1 subset from RFC =
3485) it also still requires a lot of code.

If we really want to save space in encoding URIs, a simple static =
Huffman code seems more appropriate.
http://en.wikipedia.org/wiki/Huffman_coding has a nice example in the =
boxes at the right.
(Trying to use 6 bits for [0-9A-Za-z/] is a not particularly efficient =
form of static Huffman code.)
Again, URIs are too short to benefit much from a dynamic Huffman code, =
so a static table in the standard would be it.

But I'm not at all convinced the gain is worth all the code and the =
complexity.

The idea of hashing the URI path components is interesting.  But it =
requires the client to know all resources on a server to decide whether =
there is a collision.  (Alternatively, if we rule out collisions, we =
arbitrarily constrain the URI space, which may not work too well with =
user-generated names in URIs.)  Due to the birthday paradox =
(http://en.wikipedia.org/wiki/Birthday_Paradox), a hash that is long =
enough to make collisions unlikely would also be long enough to make big =
gains from hashing unlikely.
There is a considerable body of knowledge on perfect hashing (see =
http://en.wikipedia.org/wiki/Perfect_hash_function), but it is not clear =
how to make that work in our application.

In summary, I think we should be careful to include an optimization that =
might easily double the code size of a CoAP implementation.

Gruesse, Carsten


From paduffy@cisco.com  Fri Jun 11 19:29:15 2010
Return-Path: <paduffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 6308C3A684C for <core@core3.amsl.com>; Fri, 11 Jun 2010 19:29:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.567
X-Spam-Level: 
X-Spam-Status: No, score=-9.567 tagged_above=-999 required=5 tests=[AWL=-3.032, BAYES_40=-0.185, RCVD_IN_DNSWL_HI=-8, SARE_CSBIG=1.65]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id h3Lb6PmEotqz for <core@core3.amsl.com>; Fri, 11 Jun 2010 19:29:13 -0700 (PDT)
Received: from rtp-iport-1.cisco.com (rtp-iport-1.cisco.com [64.102.122.148]) by core3.amsl.com (Postfix) with ESMTP id 86F183A684A for <core@ietf.org>; Fri, 11 Jun 2010 19:29:13 -0700 (PDT)
Authentication-Results: rtp-iport-1.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAI+NEkxAZnwM/2dsb2JhbACefnGlc4F2CwGXd4UYBA
X-IronPort-AV: E=Sophos;i="4.53,406,1272844800"; d="scan'208";a="120732382"
Received: from rtp-core-1.cisco.com ([64.102.124.12]) by rtp-iport-1.cisco.com with ESMTP; 12 Jun 2010 02:29:15 +0000
Received: from [10.86.244.116] ([10.86.244.116]) by rtp-core-1.cisco.com (8.13.8/8.14.3) with ESMTP id o5C2TFYP027920; Sat, 12 Jun 2010 02:29:15 GMT
Message-ID: <4C12F0FB.6030104@cisco.com>
Date: Fri, 11 Jun 2010 22:29:15 -0400
From: Paul Duffy <paduffy@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: Carsten Bormann <cabo@tzi.org>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org>
In-Reply-To: <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: paduffy@cisco.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 12 Jun 2010 02:29:15 -0000

On 6/11/2010 7:26 PM, Carsten Bormann wrote:
>> DEFLATE
>>      
> Deflate (RFC 1951, as used in RFC 2616 in conjunction with RFC 1950) derives its relatively high compression of text and most binary files from the repetition of byte sequences (it is based on the LZ77 algorithm, see
> http://en.wikipedia.org/wiki/LZ77_and_LZ78
> for a reasonably short description).
>
> There is very little repetition in most URI paths, so Deflate on its own does not help there.
> With a predefined dictionary (such as the one we made in RFC 3485 for RFC 3320), it *might* be useful if we manage to hit the right strings.
>    

That scenario was what I was pondering, but that seems more appropriate 
for a specific application of COAP (not COAP itself), and even then runs 
afoul of RESTful in that fixed, predicatable  URI structure would be 
needed to take advantage of a dictionary.

> However, there is a lot of strain on constrained nodes: The whole dictionary would have to be available in all nodes.
> Even with a small dictionary (such as the priority 1 subset from RFC 3485) it also still requires a lot of code.
>    

Agreed, but there are application profiles that may be using DEFLATE for 
certificate compression, and I believe DEFLATE is also part of the EXI 
machinery.


> If we really want to save space in encoding URIs, a simple static Huffman code seems more appropriate.
> http://en.wikipedia.org/wiki/Huffman_coding has a nice example in the boxes at the right.
> (Trying to use 6 bits for [0-9A-Za-z/] is a not particularly efficient form of static Huffman code.)
> Again, URIs are too short to benefit much from a dynamic Huffman code, so a static table in the standard would be it.
>
> But I'm not at all convinced the gain is worth all the code and the complexity.
>
> The idea of hashing the URI path components is interesting.  But it requires the client to know all resources on a server to decide whether there is a collision.  (Alternatively, if we rule out collisions, we arbitrarily constrain the URI space, which may not work too well with user-generated names in URIs.)  Due to the birthday paradox (http://en.wikipedia.org/wiki/Birthday_Paradox), a hash that is long enough to make collisions unlikely would also be long enough to make big gains from hashing unlikely.
> There is a considerable body of knowledge on perfect hashing (see http://en.wikipedia.org/wiki/Perfect_hash_function), but it is not clear how to make that work in our application.
>
> In summary, I think we should be careful to include an optimization that might easily double the code size of a CoAP implementation.
>
> Gruesse, Carsten
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>    


From cabo@tzi.org  Sat Jun 12 05:02:56 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 744E93A6781 for <core@core3.amsl.com>; Sat, 12 Jun 2010 05:02:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.418
X-Spam-Level: 
X-Spam-Status: No, score=-4.418 tagged_above=-999 required=5 tests=[AWL=-0.769, BAYES_50=0.001, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id chfzk-vDJha9 for <core@core3.amsl.com>; Sat, 12 Jun 2010 05:02:55 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id E8AD93A6915 for <core@ietf.org>; Sat, 12 Jun 2010 05:02:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5CC2hLL009008; Sat, 12 Jun 2010 14:02:43 +0200 (CEST)
Received: from [192.168.217.101] (p5489A35F.dip.t-dialin.net [84.137.163.95]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 816C4BBEA;  Sat, 12 Jun 2010 14:02:43 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
X-Priority: 3
In-Reply-To: <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org>
Date: Sat, 12 Jun 2010 14:02:41 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1078)
Cc: core issue tracker <trac@tools.ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 12 Jun 2010 12:02:56 -0000

On Jun 12, 2010, at 01:26, Carsten Bormann wrote:

> Huffman

Since a discussion about compression is useless without numbers, I did a =
couple little experiments.
These experiments, of course, depend on the corpus of URIs that are =
submitted to compression.
Nobody knows how CoAP url-paths are going to look like in the future, so =
there is no "good" corpus I could have been using.
Lacking one, I just grabbed a random access.log from a web server and =
used the referer links.
(These are relatively long URIs, and are dominated by searches, so take =
the following numbers with a large grain of salt -- real world CoAP =
numbers will be worse.)

First, I determined the lower bound achievable by Huffman-compressing =
this corpus with a single static table *optimized for this corpus*.  In =
other words, any real compression ratio with a static table will be =
worse than that because of the mismatch between the corpus we use for =
deriving the static table and whatever turns out to be the real world.  =
(Also, the padding to full bytes further reduces efficiency for shorter =
URIs.)

Anyway, the number:

uncompressed: 66600, compressed: 46512, ratio: 0.698378378378378

So the best case we can possibly hope out of using any of the base64 =
tricks etc. (which are essentially just non-optimal Huffman schemes) is =
~ 30 % reduction.

As I didn't consider bit-wise Huffman coding very realistic for =
constrained devices, I also did a nibble-wise (16-ary) Huffman.  Again =
the static table was optimized for the corpus I have.

uncompressed: 66600, compressed: 50791, ratio: 0.762627627627628

Not much worse, and much simpler code, as there are only sizes 4, 8, and =
12.
Still, I'm not thrilled.

For comparison, I also did the RFC 1951 (Deflate *without a header*) =
case:

uncompressed: 66600, compressed: 57085, ratio: 0.857132132132132

(I didn't try adding a static dictionary, because I have absolutely no =
idea what we would put there; if you want to suggest one, I'll redo that =
number; I can also rerun any corpus you have.)
Even with the long URIs from my unrealistic corpus, the gains are much =
worse than Huffman, as I expected.

My verdict on the optimization opportunity "URI compression": Let's not =
go there; absolutely not worth it.

Gruesse, Carsten


From hgs@cs.columbia.edu  Sat Jun 12 05:36:18 2010
Return-Path: <hgs@cs.columbia.edu>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 960163A67EA for <core@core3.amsl.com>; Sat, 12 Jun 2010 05:36:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.392
X-Spam-Level: 
X-Spam-Status: No, score=-4.392 tagged_above=-999 required=5 tests=[AWL=-0.207, BAYES_40=-0.185, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 96+33FET1zNv for <core@core3.amsl.com>; Sat, 12 Jun 2010 05:36:17 -0700 (PDT)
Received: from serrano.cc.columbia.edu (serrano.cc.columbia.edu [128.59.29.6]) by core3.amsl.com (Postfix) with ESMTP id 6A8033A67B8 for <core@ietf.org>; Sat, 12 Jun 2010 05:36:17 -0700 (PDT)
Received: from [10.59.2.9] (addr-213-216-194-138.suomi.net [213.216.194.138]) (user=hgs10 mech=PLAIN bits=0) by serrano.cc.columbia.edu (8.14.3/8.14.3) with ESMTP id o5CCaGWu026917 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Sat, 12 Jun 2010 08:36:18 -0400 (EDT)
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org> <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org>
In-Reply-To: <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org>
Mime-Version: 1.0 (Apple Message framework v1078)
X-Priority: 3
Content-Type: text/plain; charset=us-ascii
Message-Id: <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu>
Content-Transfer-Encoding: quoted-printable
From: Henning Schulzrinne <hgs@cs.columbia.edu>
Date: Sat, 12 Jun 2010 08:36:14 -0400
To: Carsten Bormann <cabo@tzi.org>
X-Mailer: Apple Mail (2.1078)
X-No-Spam-Score: Local
X-Scanned-By: MIMEDefang 2.68 on 128.59.29.6
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 12 Jun 2010 12:36:18 -0000

One possibility is to optimize for the case where the same URL is used =
again and again, which is likely to be common for many small devices =
(since they only have a small number of resources and devices in a local =
6lowpan network are likely to talk to each other a lot). In that case, =
you could do the following:

- Use the full URL on first use
- The server returns a hint ("URL /home/lights/kitchen this is my URL =
#5"), as an 8 or 16-bit integer (say), in the response; popular URLs get =
the short codes
- On subsequent requests, the client uses the 8 or 16-bit URL
- If the client forgets the binding or doesn't care to remember it, it =
uses the regular URL. The usual caching mechanisms can be applied if you =
want to get fancy, but that's an implementation matter.
- If the server forgets the table, it returns an error, and the request =
gets repeated with the usual URL.

I think the problem here is fundamentally different from, say, SIP =
header compression since the community of nodes is likely to be much =
more closed, i.e., with high rates of locality.

That's probably about as efficient as you can make it while not =
requiring generic dictionaries. Like Carsten, I'm not convinced it's =
worth it, but at least it gets you more than 20-30%.

This is vaguely similar to the bit.ly-style services that are popular in =
Facebook and Twitter.

Henning

On Jun 12, 2010, at 8:02 AM, Carsten Bormann wrote:

> On Jun 12, 2010, at 01:26, Carsten Bormann wrote:
>=20
>> Huffman
>=20
> Since a discussion about compression is useless without numbers, I did =
a couple little experiments.
> These experiments, of course, depend on the corpus of URIs that are =
submitted to compression.
> Nobody knows how CoAP url-paths are going to look like in the future, =
so there is no "good" corpus I could have been using.
> Lacking one, I just grabbed a random access.log from a web server and =
used the referer links.
> (These are relatively long URIs, and are dominated by searches, so =
take the following numbers with a large grain of salt -- real world CoAP =
numbers will be worse.)
>=20
> First, I determined the lower bound achievable by Huffman-compressing =
this corpus with a single static table *optimized for this corpus*.  In =
other words, any real compression ratio with a static table will be =
worse than that because of the mismatch between the corpus we use for =
deriving the static table and whatever turns out to be the real world.  =
(Also, the padding to full bytes further reduces efficiency for shorter =
URIs.)
>=20
> Anyway, the number:
>=20
> uncompressed: 66600, compressed: 46512, ratio: 0.698378378378378
>=20
> So the best case we can possibly hope out of using any of the base64 =
tricks etc. (which are essentially just non-optimal Huffman schemes) is =
~ 30 % reduction.
>=20
> As I didn't consider bit-wise Huffman coding very realistic for =
constrained devices, I also did a nibble-wise (16-ary) Huffman.  Again =
the static table was optimized for the corpus I have.
>=20
> uncompressed: 66600, compressed: 50791, ratio: 0.762627627627628
>=20
> Not much worse, and much simpler code, as there are only sizes 4, 8, =
and 12.
> Still, I'm not thrilled.
>=20
> For comparison, I also did the RFC 1951 (Deflate *without a header*) =
case:
>=20
> uncompressed: 66600, compressed: 57085, ratio: 0.857132132132132
>=20
> (I didn't try adding a static dictionary, because I have absolutely no =
idea what we would put there; if you want to suggest one, I'll redo that =
number; I can also rerun any corpus you have.)
> Even with the long URIs from my unrealistic corpus, the gains are much =
worse than Huffman, as I expected.
>=20
> My verdict on the optimization opportunity "URI compression": Let's =
not go there; absolutely not worth it.
>=20
> Gruesse, Carsten
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>=20


From zach@sensinode.com  Sat Jun 12 12:22:50 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 67F623A698A for <core@core3.amsl.com>; Sat, 12 Jun 2010 12:22:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.001
X-Spam-Level: 
X-Spam-Status: No, score=0.001 tagged_above=-999 required=5 tests=[BAYES_50=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YueiNbGhaz3J for <core@core3.amsl.com>; Sat, 12 Jun 2010 12:22:49 -0700 (PDT)
Received: from smtp-68.nebula.fi (smtp.nblnetworks.fi [IPv6:2001:1bc8:100c:f220::66]) by core3.amsl.com (Postfix) with ESMTP id 6FE353A692D for <core@ietf.org>; Sat, 12 Jun 2010 12:22:47 -0700 (PDT)
Received: from webmail3.nebula.fi (webmail3.nebula.fi [83.145.246.137]) by smtp-68.nebula.fi (Postfix) with ESMTP id 6157743F05D8; Sat, 12 Jun 2010 22:22:48 +0300 (EEST)
MIME-Version: 1.0
Date: Sat, 12 Jun 2010 22:22:48 +0300
From: "zach@sensinode.com" <zach@sensinode.com>
To: Henning Schulzrinne <hgs@cs.columbia.edu>
In-Reply-To: <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org> <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org> <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu>
X-Priority: 5 (Lowest)
Message-ID: <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi>
X-Sender: zach@sensinode.com
User-Agent: Nebula Webmail
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="UTF-8"
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 12 Jun 2010 19:22:50 -0000

+1 - I like that Henning. 

In addition, a server could let clients know about its popular URLs a
priori in its /.well-known/resources links as alt= or short=. Instead of
thinking of this as a special integer code, we can do this exactly like a
short URL service. The server just assigns multiple URLs to a resource, one
happens to be /5 in addition to /sensors/temp/indoor/centigrade. Or as
Carsten suggested, it could have a special form like /!5. 

But it wouldn't hurt to do 7-bit ASCII packing on URLs anyways? That is 15%
savings by just bit shifting. I agree that more sophisticated algorithms
probably aren't worth it.

Zach

On Sat, 12 Jun 2010 08:36:14 -0400, Henning Schulzrinne
<hgs@cs.columbia.edu> wrote:
> One possibility is to optimize for the case where the same URL is used
> again and again, which is likely to be common for many small devices
(since
> they only have a small number of resources and devices in a local 6lowpan
> network are likely to talk to each other a lot). In that case, you could
do
> the following:
> 
> - Use the full URL on first use
> - The server returns a hint ("URL /home/lights/kitchen this is my URL
#5"),
> as an 8 or 16-bit integer (say), in the response; popular URLs get the
> short codes
> - On subsequent requests, the client uses the 8 or 16-bit URL
> - If the client forgets the binding or doesn't care to remember it, it
uses
> the regular URL. The usual caching mechanisms can be applied if you want
to
> get fancy, but that's an implementation matter.
> - If the server forgets the table, it returns an error, and the request
> gets repeated with the usual URL.
> 
> I think the problem here is fundamentally different from, say, SIP header
> compression since the community of nodes is likely to be much more
closed,
> i.e., with high rates of locality.
> 
> That's probably about as efficient as you can make it while not requiring
> generic dictionaries. Like Carsten, I'm not convinced it's worth it, but
at
> least it gets you more than 20-30%.
> 
> This is vaguely similar to the bit.ly-style services that are popular in
> Facebook and Twitter.
> 
> Henning
> 
> On Jun 12, 2010, at 8:02 AM, Carsten Bormann wrote:
> 
>> On Jun 12, 2010, at 01:26, Carsten Bormann wrote:
>> 
>>> Huffman
>> 
>> Since a discussion about compression is useless without numbers, I did a
>> couple little experiments.
>> These experiments, of course, depend on the corpus of URIs that are
>> submitted to compression.
>> Nobody knows how CoAP url-paths are going to look like in the future, so
>> there is no "good" corpus I could have been using.
>> Lacking one, I just grabbed a random access.log from a web server and
>> used the referer links.
>> (These are relatively long URIs, and are dominated by searches, so take
>> the following numbers with a large grain of salt -- real world CoAP
>> numbers will be worse.)
>> 
>> First, I determined the lower bound achievable by Huffman-compressing
>> this corpus with a single static table *optimized for this corpus*.  In
>> other words, any real compression ratio with a static table will be
worse
>> than that because of the mismatch between the corpus we use for deriving
>> the static table and whatever turns out to be the real world.  (Also,
the
>> padding to full bytes further reduces efficiency for shorter URIs.)
>> 
>> Anyway, the number:
>> 
>> uncompressed: 66600, compressed: 46512, ratio: 0.698378378378378
>> 
>> So the best case we can possibly hope out of using any of the base64
>> tricks etc. (which are essentially just non-optimal Huffman schemes) is
~
>> 30 % reduction.
>> 
>> As I didn't consider bit-wise Huffman coding very realistic for
>> constrained devices, I also did a nibble-wise (16-ary) Huffman.  Again
>> the static table was optimized for the corpus I have.
>> 
>> uncompressed: 66600, compressed: 50791, ratio: 0.762627627627628
>> 
>> Not much worse, and much simpler code, as there are only sizes 4, 8, and
>> 12.
>> Still, I'm not thrilled.
>> 
>> For comparison, I also did the RFC 1951 (Deflate *without a header*)
>> case:
>> 
>> uncompressed: 66600, compressed: 57085, ratio: 0.857132132132132
>> 
>> (I didn't try adding a static dictionary, because I have absolutely no
>> idea what we would put there; if you want to suggest one, I'll redo that
>> number; I can also rerun any corpus you have.)
>> Even with the long URIs from my unrealistic corpus, the gains are much
>> worse than Huffman, as I expected.
>> 
>> My verdict on the optimization opportunity "URI compression": Let's not
>> go there; absolutely not worth it.
>> 
>> Gruesse, Carsten
>> 
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>> 
> 
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

From cabo@tzi.org  Sat Jun 12 13:23:25 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 31BEB3A69A5 for <core@core3.amsl.com>; Sat, 12 Jun 2010 13:23:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.964
X-Spam-Level: 
X-Spam-Status: No, score=-3.964 tagged_above=-999 required=5 tests=[AWL=-0.915, BAYES_50=0.001, HELO_EQ_DE=0.35, J_CHICKENPOX_42=0.6, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rosUaQasTI7k for <core@core3.amsl.com>; Sat, 12 Jun 2010 13:23:24 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 4C6E73A6991 for <core@ietf.org>; Sat, 12 Jun 2010 13:23:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5CKNDcS026197; Sat, 12 Jun 2010 22:23:13 +0200 (CEST)
Received: from [192.168.217.101] (p5489A35F.dip.t-dialin.net [84.137.163.95]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 58063BC71;  Sat, 12 Jun 2010 22:23:13 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
X-Priority: 5 (Lowest)
In-Reply-To: <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi>
Date: Sat, 12 Jun 2010 22:23:08 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <3DF22516-31FA-4EC9-8667-8CAB2EAD8D0E@tzi.org>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org> <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org> <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu> <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1078)
Cc: core issue tracker <trac@tools.ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 12 Jun 2010 20:23:25 -0000

On Jun 12, 2010, at 21:22, zach@sensinode.com wrote:

> That is 15% savings by just bit shifting.

It's 12.5 % best case (if you have an exact multiple of 8 characters).
For /.well-known/resources, the saving is two bytes (i.e., 19 instead of =
21 as we are eliding the initial slash), or 9.5 %.
(The 16-ary Huffman code I've cooked up happens to save 6 bytes or 28.5 =
% in this case.  Much better, but still barely worth it.)

Agreeing on /!r or some such would reduce the URI to a grand total of =
two bytes, or save 19 bytes =3D 90.5 % :-)
Heck, just calling it /.well-known/rsrcs has twice the benefit of 7-bit =
crunching...

Just to cite (and maybe learn from) some precedence: When SIP was =
defined, some of its header fields were assigned alternative, =
single-character "compact form" names.
Most SIP implementations send long form names, not compact forms; this =
has led to a number of interoperability problems when some =
implementations did use the compact form and then other implementations =
didn't include full(ly debugged) support for the compact forms.  (IOW, =
aliasing =3D having the same feature under two names can cause =
problems.)
I haven't seen compact forms in the wild (but then I don't spend much =
time debugging SIP flows), but I'm sure Henning can fill us in on how =
much these are liked these days.

Gruesse, Carsten


From hgs@cs.columbia.edu  Sat Jun 12 14:08:47 2010
Return-Path: <hgs@cs.columbia.edu>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id D1CDD3A699D for <core@core3.amsl.com>; Sat, 12 Jun 2010 14:08:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.74
X-Spam-Level: 
X-Spam-Status: No, score=-4.74 tagged_above=-999 required=5 tests=[BAYES_20=-0.74, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id paY0T0NFpiWw for <core@core3.amsl.com>; Sat, 12 Jun 2010 14:08:47 -0700 (PDT)
Received: from brinza.cc.columbia.edu (brinza.cc.columbia.edu [128.59.29.8]) by core3.amsl.com (Postfix) with ESMTP id DEDB03A67DA for <core@ietf.org>; Sat, 12 Jun 2010 14:08:46 -0700 (PDT)
Received: from [192.168.1.113] (dsl-olubrasgw1-ff5bc000-232.dhcp.inet.fi [88.192.91.232]) (user=hgs10 mech=PLAIN bits=0) by brinza.cc.columbia.edu (8.14.3/8.14.3) with ESMTP id o5CL8j3R014947 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Sat, 12 Jun 2010 17:08:48 -0400 (EDT)
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org> <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org> <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu> <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi> <3DF22516-31FA-4EC9-8667-8CAB2EAD8D0E@tzi.org>
In-Reply-To: <3DF22516-31FA-4EC9-8667-8CAB2EAD8D0E@tzi.org>
Mime-Version: 1.0 (Apple Message framework v1078)
X-Priority: 5 (Lowest)
Content-Type: text/plain; charset=us-ascii
Message-Id: <2D422DC4-24F1-4C8A-82DF-C9486038FC4F@cs.columbia.edu>
Content-Transfer-Encoding: quoted-printable
From: Henning Schulzrinne <hgs@cs.columbia.edu>
Date: Sat, 12 Jun 2010 17:08:45 -0400
To: Carsten Bormann <cabo@tzi.org>
X-Mailer: Apple Mail (2.1078)
X-No-Spam-Score: Local
X-Scanned-By: MIMEDefang 2.68 on 128.59.29.8
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 12 Jun 2010 21:08:48 -0000

>=20
> I haven't seen compact forms in the wild (but then I don't spend much =
time debugging SIP flows), but I'm sure Henning can fill us in on how =
much these are liked these days.

I'm sure *somebody* uses them, but they have not been popular and have, =
as Carsten said, led to more interoperability problems, plus the usual =
issues of equivalency checks (e.g., for signing). I'm pretty sure we =
would not define them again if given a chance; while they were meant to =
be an extensible list, no new headers have defined short forms.

I think such tricks also make life more difficult if we want to go for =
internationalized URI at some point, which I consider more valuable than =
15% of hypothetical savings.

Henning=

From brian.tridium@gmail.com  Sat Jun 12 19:02:58 2010
Return-Path: <brian.tridium@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7D81C3A6807 for <core@core3.amsl.com>; Sat, 12 Jun 2010 19:02:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.416
X-Spam-Level: 
X-Spam-Status: No, score=0.416 tagged_above=-999 required=5 tests=[BAYES_40=-0.185, HTML_MESSAGE=0.001, J_CHICKENPOX_42=0.6]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id niDZGb-pSt0F for <core@core3.amsl.com>; Sat, 12 Jun 2010 19:02:57 -0700 (PDT)
Received: from mail-bw0-f44.google.com (mail-bw0-f44.google.com [209.85.214.44]) by core3.amsl.com (Postfix) with ESMTP id 31F623A6802 for <core@ietf.org>; Sat, 12 Jun 2010 19:02:57 -0700 (PDT)
Received: by bwz13 with SMTP id 13so1000648bwz.31 for <core@ietf.org>; Sat, 12 Jun 2010 19:02:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=l0oWM+9chbx/kQbmHfAzZLul+KSWMd2hzuPkmsgUVxE=; b=BDYlImdX9XPJSe//FaLVG1AzksBN4kSf/5aqGbE0UkHtK4e9cYHvvs6l02/q10Iu3z z8Lyyi5KBWMpzdOO9XWmOzZWa+AuC5L5iQ2i01LKfMmr2r1JTPxGUPRxEPxm0jbyVOAG /0Dxs0O0Rfe/XAUH5E3+n5zPIAjJ4jo7dlBFo=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=jnI6lzjDSPPIH0TLCDgUEvUB0g/ZhsbiBTdHGdwrEYKlNKbUXLeU971StA8MOdmuc+ uJsmZ4vXaL57ohzt++PeXw/pqQ3DOaKFu+YjWiU8N/LUjkjpZTXbVEEMB7C5tpYk2Zqi B599TKkJLK39c/z2NriXeGW60m2rHBfCAqd7g=
MIME-Version: 1.0
Received: by 10.204.81.133 with SMTP id x5mr2863368bkk.91.1276394576722; Sat,  12 Jun 2010 19:02:56 -0700 (PDT)
Received: by 10.204.53.8 with HTTP; Sat, 12 Jun 2010 19:02:56 -0700 (PDT)
In-Reply-To: <3DF22516-31FA-4EC9-8667-8CAB2EAD8D0E@tzi.org>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org> <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org> <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu> <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi> <3DF22516-31FA-4EC9-8667-8CAB2EAD8D0E@tzi.org>
Date: Sat, 12 Jun 2010 22:02:56 -0400
Message-ID: <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com>
From: Brian Frank <brian.tridium@gmail.com>
To: Carsten Bormann <cabo@tzi.org>
Content-Type: multipart/alternative; boundary=0016e6da9b9756b94c0488dfc559
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 13 Jun 2010 02:02:58 -0000

--0016e6da9b9756b94c0488dfc559
Content-Type: text/plain; charset=ISO-8859-1

My vote is to not bother with URI compression.  If you want to use short
compact URIs, then just define your URI space that way.  There is nothing to
say that URIs have to be human friendly.  I suspect that most 6LoWPAN
devices have less than 2^16 addressable resources, in which case you can use
a four byte hex number to create a simple URI space for all your resources.
 Yes it might be nice to shrink that a byte or two, but is it worth the
added complexity?


On Sat, Jun 12, 2010 at 4:23 PM, Carsten Bormann <cabo@tzi.org> wrote:

> On Jun 12, 2010, at 21:22, zach@sensinode.com wrote:
>
> > That is 15% savings by just bit shifting.
>
> It's 12.5 % best case (if you have an exact multiple of 8 characters).
> For /.well-known/resources, the saving is two bytes (i.e., 19 instead of 21
> as we are eliding the initial slash), or 9.5 %.
> (The 16-ary Huffman code I've cooked up happens to save 6 bytes or 28.5 %
> in this case.  Much better, but still barely worth it.)
>
> Agreeing on /!r or some such would reduce the URI to a grand total of two
> bytes, or save 19 bytes = 90.5 % :-)
> Heck, just calling it /.well-known/rsrcs has twice the benefit of 7-bit
> crunching...
>
> Just to cite (and maybe learn from) some precedence: When SIP was defined,
> some of its header fields were assigned alternative, single-character
> "compact form" names.
> Most SIP implementations send long form names, not compact forms; this has
> led to a number of interoperability problems when some implementations did
> use the compact form and then other implementations didn't include full(ly
> debugged) support for the compact forms.  (IOW, aliasing = having the same
> feature under two names can cause problems.)
> I haven't seen compact forms in the wild (but then I don't spend much time
> debugging SIP flows), but I'm sure Henning can fill us in on how much these
> are liked these days.
>
> Gruesse, Carsten
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>

--0016e6da9b9756b94c0488dfc559
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

My vote is to not bother with URI compression. =A0If you want to use short =
compact URIs, then just define your URI space that way. =A0There is nothing=
 to say that URIs have to be human friendly. =A0I suspect that most 6LoWPAN=
 devices have less than 2^16 addressable resources, in which case you can u=
se a four byte hex number to create a simple URI space for all your resourc=
es. =A0Yes it might be nice to shrink that a byte or two, but is it worth t=
he added complexity?=A0<div>
<br><br><div class=3D"gmail_quote">On Sat, Jun 12, 2010 at 4:23 PM, Carsten=
 Bormann <span dir=3D"ltr">&lt;<a href=3D"mailto:cabo@tzi.org">cabo@tzi.org=
</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin=
:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class=3D"im">On Jun 12, 2010, at 21:22, <a href=3D"mailto:zach@sensino=
de.com">zach@sensinode.com</a> wrote:<br>
<br>
&gt; That is 15% savings by just bit shifting.<br>
<br>
</div>It&#39;s 12.5 % best case (if you have an exact multiple of 8 charact=
ers).<br>
For /.well-known/resources, the saving is two bytes (i.e., 19 instead of 21=
 as we are eliding the initial slash), or 9.5 %.<br>
(The 16-ary Huffman code I&#39;ve cooked up happens to save 6 bytes or 28.5=
 % in this case. =A0Much better, but still barely worth it.)<br>
<br>
Agreeing on /!r or some such would reduce the URI to a grand total of two b=
ytes, or save 19 bytes =3D 90.5 % :-)<br>
Heck, just calling it /.well-known/rsrcs has twice the benefit of 7-bit cru=
nching...<br>
<br>
Just to cite (and maybe learn from) some precedence: When SIP was defined, =
some of its header fields were assigned alternative, single-character &quot=
;compact form&quot; names.<br>
Most SIP implementations send long form names, not compact forms; this has =
led to a number of interoperability problems when some implementations did =
use the compact form and then other implementations didn&#39;t include full=
(ly debugged) support for the compact forms. =A0(IOW, aliasing =3D having t=
he same feature under two names can cause problems.)<br>

I haven&#39;t seen compact forms in the wild (but then I don&#39;t spend mu=
ch time debugging SIP flows), but I&#39;m sure Henning can fill us in on ho=
w much these are liked these days.<br>
<div><div></div><div class=3D"h5"><br>
Gruesse, Carsten<br>
<br>
_______________________________________________<br>
core mailing list<br>
<a href=3D"mailto:core@ietf.org">core@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/core" target=3D"_blank">ht=
tps://www.ietf.org/mailman/listinfo/core</a><br>
</div></div></blockquote></div><br></div>

--0016e6da9b9756b94c0488dfc559--

From angelo.castellani@gmail.com  Mon Jun 14 01:37:03 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id B19563A68A4 for <core@core3.amsl.com>; Mon, 14 Jun 2010 01:37:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.69
X-Spam-Level: 
X-Spam-Status: No, score=0.69 tagged_above=-999 required=5 tests=[AWL=-0.533,  BAYES_50=0.001, FM_FORGED_GMAIL=0.622, J_CHICKENPOX_42=0.6]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dp0ouQBYejm7 for <core@core3.amsl.com>; Mon, 14 Jun 2010 01:37:02 -0700 (PDT)
Received: from mail-bw0-f44.google.com (mail-bw0-f44.google.com [209.85.214.44]) by core3.amsl.com (Postfix) with ESMTP id D8D183A68A0 for <core@ietf.org>; Mon, 14 Jun 2010 01:37:01 -0700 (PDT)
Received: by bwz13 with SMTP id 13so1704439bwz.31 for <core@ietf.org>; Mon, 14 Jun 2010 01:36:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=cxAf0qf9+OZqx+OouXgKi8426/yCRtz66aUl7GsiWZU=; b=B+T7necqlZcquZVMen9GreKCr2Uhn+Q62Fe3mZApiJDlJwkV8TVNWOPIrZ/DfYYqXg ZW9IpLo9Imsz119WeImiflDGxGaXqMd4iTMKsNDbJojKp5e6LLtYChnWKzR8Yzt/iVhA fSWm5K2BJbGmJVGH1rMM4QAn4binmq+9VB2I8=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=dvumrAfSysw5HNHjb2jpm088Dy7XqlTRLkqex7m0fCCCpEdMyngrV1bgQnaI0CCdXf EUhv5yGALKYn06XMm1rVQgF+RdiaLTLJUnqsvnqhFSVZD8wAnVQeZwspE11h9i3BG1Rq TlP1Vu7LG1/G+O04cnohjRa8Li3FiSIQVYUWM=
MIME-Version: 1.0
Received: by 10.204.46.197 with SMTP id k5mr4056411bkf.47.1276504607437; Mon,  14 Jun 2010 01:36:47 -0700 (PDT)
Sender: angelo.castellani@gmail.com
Received: by 10.204.71.4 with HTTP; Mon, 14 Jun 2010 01:36:47 -0700 (PDT)
In-Reply-To: <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org> <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org> <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu> <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi> <3DF22516-31FA-4EC9-8667-8CAB2EAD8D0E@tzi.org> <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com>
Date: Mon, 14 Jun 2010 10:36:47 +0200
X-Google-Sender-Auth: PWbOuAkEM1wgOXyMKO2bP648APs
Message-ID: <AANLkTikO37MhRJmayxiQ8ma0alvbOeGWJZovYlYnio_z@mail.gmail.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
To: Brian Frank <brian.tridium@gmail.com>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 14 Jun 2010 08:37:03 -0000

Dear Brian, Carsten, all,

I see your concerns about complexity, which in general I really share.

However the URI compression format #1 is really really simple to
implement on a constrained node.

Without long discussion I quickly implemented the relevant code to
apply URI compression with dictionary [/0-9a-zA-Z], vocabulary is
defined by a small matrix in the encoder/decoder and can be easily
changed. Nodes can easily support multiple dictionaries and use them
depending on the kind of characters on the URI (or something else)
they want to encode.

http://www.dei.unipd.it/~castellani/encode.c
http://www.dei.unipd.it/~castellani/decode.c
(only the marked parts of the code are the actual compression, very few lin=
es)

Compression is up to -25% which is not that bad for a method simple
like this. In my opinion we can define 2-4 dictionaries for URI
compression, the first can be "no compression" leave the URI as it is,
others can be using the dictionary compression format and a predefined
dictionary.

An user can choose how to compress the URI depending on the URI (using
the dictionary that performs better on that URI) or depending if it
implements dictionary compression or not.

Best,
Angelo

On Sun, Jun 13, 2010 at 04:02, Brian Frank <brian.tridium@gmail.com> wrote:
> My vote is to not bother with URI compression. =A0If you want to use shor=
t
> compact URIs, then just define your URI space that way. =A0There is nothi=
ng to
> say that URIs have to be human friendly. =A0I suspect that most 6LoWPAN
> devices have less than 2^16 addressable resources, in which case you can =
use
> a four byte hex number to create a simple URI space for all your resource=
s.
> =A0Yes it might be nice to shrink that a byte or two, but is it worth the
> added complexity?
>
> On Sat, Jun 12, 2010 at 4:23 PM, Carsten Bormann <cabo@tzi.org> wrote:
>>
>> On Jun 12, 2010, at 21:22, zach@sensinode.com wrote:
>>
>> > That is 15% savings by just bit shifting.
>>
>> It's 12.5 % best case (if you have an exact multiple of 8 characters).
>> For /.well-known/resources, the saving is two bytes (i.e., 19 instead of
>> 21 as we are eliding the initial slash), or 9.5 %.
>> (The 16-ary Huffman code I've cooked up happens to save 6 bytes or 28.5 =
%
>> in this case. =A0Much better, but still barely worth it.)
>>
>> Agreeing on /!r or some such would reduce the URI to a grand total of tw=
o
>> bytes, or save 19 bytes =3D 90.5 % :-)
>> Heck, just calling it /.well-known/rsrcs has twice the benefit of 7-bit
>> crunching...
>>
>> Just to cite (and maybe learn from) some precedence: When SIP was define=
d,
>> some of its header fields were assigned alternative, single-character
>> "compact form" names.
>> Most SIP implementations send long form names, not compact forms; this h=
as
>> led to a number of interoperability problems when some implementations d=
id
>> use the compact form and then other implementations didn't include full(=
ly
>> debugged) support for the compact forms. =A0(IOW, aliasing =3D having th=
e same
>> feature under two names can cause problems.)
>> I haven't seen compact forms in the wild (but then I don't spend much ti=
me
>> debugging SIP flows), but I'm sure Henning can fill us in on how much th=
ese
>> are liked these days.
>>
>> Gruesse, Carsten
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>

From angelo.castellani@gmail.com  Mon Jun 14 02:01:16 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 935283A680C for <core@core3.amsl.com>; Mon, 14 Jun 2010 02:01:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.523
X-Spam-Level: 
X-Spam-Status: No, score=0.523 tagged_above=-999 required=5 tests=[AWL=-0.100,  BAYES_50=0.001, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id knXUcGnbcyQu for <core@core3.amsl.com>; Mon, 14 Jun 2010 02:01:15 -0700 (PDT)
Received: from mail-bw0-f44.google.com (mail-bw0-f44.google.com [209.85.214.44]) by core3.amsl.com (Postfix) with ESMTP id 950703A6403 for <core@ietf.org>; Mon, 14 Jun 2010 02:01:15 -0700 (PDT)
Received: by bwz13 with SMTP id 13so1719999bwz.31 for <core@ietf.org>; Mon, 14 Jun 2010 02:01:15 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type; bh=tLM27UiqLbbq2ZWXvrMyoJs650HdFg61Oq+6vOr73g0=; b=S4Wy1X1z0yQM6u5IewTUjNp6Hhg/RGrt2+hSPyUaWasVlAjKXv2YX19CbYxxlZFABY KsNwvDN6yZDYLxJDMqTWgZLv+lYJnpjW/R+yYwRg1M6JxjtVbnxp+IdGEi0TBJLsP6xy LUlb9xzPgN082sJzJhHT9BOjZ9MfBxzzQOA/k=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; b=E9HI2gDgZh/H1zLlEnexB/gkbznrpDN+ssnBWyj6VFvFnKX40AFIGXm+gbD8WzZY3n wl0CnUL6nUUdxaE7rm20g/r3YIBwTygrApW2WqQ4JS6TN+XADwrkb3fm5MNgrZ9ymKKA SK5XwLlRHHRJxK45xK9MXnJ2w+FlGX4PeqwAU=
MIME-Version: 1.0
Received: by 10.204.83.2 with SMTP id d2mr4077029bkl.110.1276506074912; Mon,  14 Jun 2010 02:01:14 -0700 (PDT)
Sender: angelo.castellani@gmail.com
Received: by 10.204.71.4 with HTTP; Mon, 14 Jun 2010 02:01:14 -0700 (PDT)
In-Reply-To: <2F0BB999-81BE-48AF-9291-7FDCB9A9546D@tzi.org>
References: <057.8d37fc1963a953ac6712dad4000b6b92@tools.ietf.org> <FA186CB6-07B5-486C-915B-4EC8B2296490@tzi.org> <AANLkTikHZd6Zmvs1N4GYkHr-rmNAXiMQqaGCGOeoQDcZ@mail.gmail.com> <2F0BB999-81BE-48AF-9291-7FDCB9A9546D@tzi.org>
Date: Mon, 14 Jun 2010 11:01:14 +0200
X-Google-Sender-Auth: Tto-RmqfM2WnxMb7BSgU0e76u3E
Message-ID: <AANLkTill1iGLGhnvlpxPCG-8RAmSpoStHBr4oMC3wnYh@mail.gmail.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
To: Carsten Bormann <cabo@tzi.org>
Content-Type: text/plain; charset=ISO-8859-1
Cc: core <core@ietf.org>
Subject: Re: [core] #1: Agree on Sub/Not model and requirements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 14 Jun 2010 09:01:16 -0000

A CoAP server has to track at least every received non-idempotent CoAP
request for a time long enought to avoid to interpret a retransmission
as a new request. In general a CoAP server should track every request
to avoid handling every retransmission as a new request (inefficient)

A CoAP client has to track and handle retransmissions of every sent
request requiring ACK and/or response, otherwise it has only to wait
for the response event or for a timeout event.

CoAP subscription architecture using subscribed-GET will be very
simple with a transport session established by a lower level module,
as discussed in the messages I referenced in my last message.

State informations to be tracked by CoAP are really transport
dependant and maybe beneficial to implement that features in a
separate module, which can be also shared with other protocols.

TransactionID is not needed using TCP or DTLS, using UDP can be almost
everytime replaced by the client source port (a transactionID option
can be defined for those rare cases where TID is really useful).

If a viable transport protocol providing reliability is defined,
transactionID will not be needed anymore.

Best,
Angelo

On Fri, Jun 11, 2010 at 22:30, Carsten Bormann <cabo@tzi.org> wrote:
> On Jun 11, 2010, at 16:08, Angelo P. Castellani wrote:
>
>> However transport state is still required by every interaction.
>
> Why?
>
>> The real problem here is to understand how to solve transport related
>> problems without defining a new transport protocol (which is probably
>> needed to efficiently design CoAP).
>
> Why do you believe a new transport protocol would help?
> As I said, I don't believe pushing the state down a layer solves any problem.
>
> Gruesse, Carsten
>
>

From cabo@tzi.org  Mon Jun 14 02:42:56 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 0D8723A687F for <core@core3.amsl.com>; Mon, 14 Jun 2010 02:42:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.204
X-Spam-Level: 
X-Spam-Status: No, score=-4.204 tagged_above=-999 required=5 tests=[AWL=-0.369, BAYES_40=-0.185, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id y3BRtyLYxZw5 for <core@core3.amsl.com>; Mon, 14 Jun 2010 02:42:53 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 96DCC3A6857 for <core@ietf.org>; Mon, 14 Jun 2010 02:42:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5E9gmAi021354; Mon, 14 Jun 2010 11:42:48 +0200 (CEST)
Received: from [192.168.217.101] (p5489F743.dip.t-dialin.net [84.137.247.67]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 16EB2BF90;  Mon, 14 Jun 2010 11:42:48 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <AANLkTikO37MhRJmayxiQ8ma0alvbOeGWJZovYlYnio_z@mail.gmail.com>
Date: Mon, 14 Jun 2010 11:42:46 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <483675B5-9B96-4156-A4C2-C8626D1EB164@tzi.org>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org> <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org> <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu> <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi> <3DF22516-31FA-4EC9-8667-8CAB2EAD8D0E@tzi.org> <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com> <AANLkTikO37MhRJmayxiQ8ma0alvbOeGWJZovYlYnio_z@mail.gmail.com>
To: "Angelo P. Castellani" <angelo@castellani.net>
X-Mailer: Apple Mail (2.1078)
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 14 Jun 2010 09:42:56 -0000

On Jun 14, 2010, at 10:36, Angelo P. Castellani wrote:

> really simple to
> implement

I couldn't understand why your code should work so I tried it out to =
ascertain it doesn't.

$ ./encode /.well-known/resources/lightswitchnumber111 | ./decode | od =
-c
initial length: 43
final length: 35
compressed chars: 41
ratio: 0.813953
0000000    /   .   w   e   l   l   -   k   n   o   w   n   /   r   e   s
0000020    o   u   r   c   e   s   /   l   i   g   h   t   s   w   i   t
0000040    c   h   n   u   m   b   e   r   1   1   1   _  \n           =20=

0000055

Consider that my case in point :-)
This stuff is indeed hard to get right.

(Oh, and using the "nibbles" 16ary Huffman, this compresses to 31.5, =
i.e., 32 bytes.
And it's much simpler, so I'm sure I could get it right.  I still don't =
think it's worth it.)

Gruesse, Carsten


From angelo.castellani@gmail.com  Mon Jun 14 03:00:14 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A41A73A67A7 for <core@core3.amsl.com>; Mon, 14 Jun 2010 03:00:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.757
X-Spam-Level: 
X-Spam-Status: No, score=-0.757 tagged_above=-999 required=5 tests=[AWL=1.220,  BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id awr-i24wwB8l for <core@core3.amsl.com>; Mon, 14 Jun 2010 03:00:14 -0700 (PDT)
Received: from mail-bw0-f44.google.com (mail-bw0-f44.google.com [209.85.214.44]) by core3.amsl.com (Postfix) with ESMTP id AAC773A681D for <core@ietf.org>; Mon, 14 Jun 2010 03:00:13 -0700 (PDT)
Received: by bwz13 with SMTP id 13so1757303bwz.31 for <core@ietf.org>; Mon, 14 Jun 2010 03:00:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=3O4vc1zl9LyIqk00b+U1iyCdqKZnGopGr2NUU5/tndo=; b=LRIUJcWVYMfDuoirESpfftjS27QVar2xNuLFr/IkRQGOxfqD2PfoRBKKE4TgDvLO5G xD/QXkuc1c9pxascUl3sM4mN9koNHBz/039472U3H/6nSaAYjedjLoPAm1DJP+IdIttS rLhzPi+MiOeyOh43F4VD7jhVgTTxpM2rjQz1Y=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=MQYVS3qemRnoLkypbe5iKHmzGsqNkhmihki8AcoKAouXe2iHzrNKdDY1PWeVM0srHQ 3XyufoHUjgZbFLlkeV9zojiK2z7XVRl0pT9gmF+YlVl4GP4JfZQnlI6Q4rs9W0OoMcvs C3mQREDeX0DfNYCwZ3dNt+oRln9soKA2AdnbQ=
MIME-Version: 1.0
Received: by 10.204.83.85 with SMTP id e21mr4141045bkl.42.1276509613905; Mon,  14 Jun 2010 03:00:13 -0700 (PDT)
Sender: angelo.castellani@gmail.com
Received: by 10.204.71.4 with HTTP; Mon, 14 Jun 2010 03:00:13 -0700 (PDT)
In-Reply-To: <483675B5-9B96-4156-A4C2-C8626D1EB164@tzi.org>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org> <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org> <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu> <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi> <3DF22516-31FA-4EC9-8667-8CAB2EAD8D0E@tzi.org> <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com> <AANLkTikO37MhRJmayxiQ8ma0alvbOeGWJZovYlYnio_z@mail.gmail.com> <483675B5-9B96-4156-A4C2-C8626D1EB164@tzi.org>
Date: Mon, 14 Jun 2010 12:00:13 +0200
X-Google-Sender-Auth: bNr79QnnQBpoLZXth8cAUqP5v68
Message-ID: <AANLkTim5fhQCj9Ov0Tw7i-Qce-hiuersSD9Dcq5BW_O2@mail.gmail.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
To: Carsten Bormann <cabo@tzi.org>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 14 Jun 2010 10:00:14 -0000

Thanks for the comments and to try out my quickly written programs.

Well actually the encoding worked, there was a small bug in the
decoding stop condition... Check out the updated decode.c version at
the same URL.

I'm sure that a properly cooked static Huffman code can save some more
bytes (not that much), however I believe that Huffman implementation
will be more painful and not "much simpler"; probably I'm wrong can
you argument why you believe it is that simple?

Best,
Angelo

On Mon, Jun 14, 2010 at 11:42, Carsten Bormann <cabo@tzi.org> wrote:
> On Jun 14, 2010, at 10:36, Angelo P. Castellani wrote:
>
>> really simple to
>> implement
>
> I couldn't understand why your code should work so I tried it out to asce=
rtain it doesn't.
>
> $ ./encode /.well-known/resources/lightswitchnumber111 | ./decode | od -c
> initial length: 43
> final length: 35
> compressed chars: 41
> ratio: 0.813953
> 0000000 =A0 =A0/ =A0 . =A0 w =A0 e =A0 l =A0 l =A0 - =A0 k =A0 n =A0 o =
=A0 w =A0 n =A0 / =A0 r =A0 e =A0 s
> 0000020 =A0 =A0o =A0 u =A0 r =A0 c =A0 e =A0 s =A0 / =A0 l =A0 i =A0 g =
=A0 h =A0 t =A0 s =A0 w =A0 i =A0 t
> 0000040 =A0 =A0c =A0 h =A0 n =A0 u =A0 m =A0 b =A0 e =A0 r =A0 1 =A0 1 =
=A0 1 =A0 _ =A0\n
> 0000055
>
> Consider that my case in point :-)
> This stuff is indeed hard to get right.
>
> (Oh, and using the "nibbles" 16ary Huffman, this compresses to 31.5, i.e.=
, 32 bytes.
> And it's much simpler, so I'm sure I could get it right. =A0I still don't=
 think it's worth it.)
>
> Gruesse, Carsten
>
>

From fluffy@cisco.com  Mon Jun 14 11:10:38 2010
Return-Path: <fluffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 8C9C53A6903 for <core@core3.amsl.com>; Mon, 14 Jun 2010 11:10:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -109.203
X-Spam-Level: 
X-Spam-Status: No, score=-109.203 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, MIME_QP_LONG_LINE=1.396, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id azFQ2If6SM2E for <core@core3.amsl.com>; Mon, 14 Jun 2010 11:10:36 -0700 (PDT)
Received: from sj-iport-4.cisco.com (sj-iport-4.cisco.com [171.68.10.86]) by core3.amsl.com (Postfix) with ESMTP id 2AF7E3A6899 for <core@ietf.org>; Mon, 14 Jun 2010 11:10:36 -0700 (PDT)
Authentication-Results: sj-iport-4.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AloFAKANFkyrRN+J/2dsb2JhbACeDlpxpmmaCYUaBINN
X-IronPort-AV: E=Sophos;i="4.53,415,1272844800"; d="scan'208";a="144382511"
Received: from sj-core-3.cisco.com ([171.68.223.137]) by sj-iport-4.cisco.com with ESMTP; 14 Jun 2010 18:10:40 +0000
Received: from [192.168.4.177] (rcdn-fluffy-8711.cisco.com [10.99.9.18]) by sj-core-3.cisco.com (8.13.8/8.14.3) with ESMTP id o5EIAdeY015725 for <core@ietf.org>; Mon, 14 Jun 2010 18:10:39 GMT
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Apple Message framework v1078)
Impp: xmpp:cullenfluffyjennings@jabber.org
From: Cullen Jennings <fluffy@cisco.com>
Date: Mon, 14 Jun 2010 12:10:38 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <7E8D9097-1214-425E-9A45-FCE07B0B2566@cisco.com>
References: <20100611152115.2B9473A6A07@core3.amsl.com>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1078)
Subject: [core] Fwd: Last Call: draft-mcgrew-fundamental-ecc (Fundamental Elliptic Curve Cryptography Algorithms) to Informational RFC
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 14 Jun 2010 18:10:38 -0000

Just wanted to point out a draft about ECC that is of interest in this =
group. My basic understanding of the draft is it helps outline a set of =
ECC algorithms that are likely to be old enough that patents most places =
have expired or will expire soon. It's in IETF LC now so if people have =
comments, send them soon.=20

Cullen

Begin forwarded message:

> From: The IESG <iesg-secretary@ietf.org>
> Date: June 11, 2010 9:21:13 AM MDT
> To: IETF-Announce <ietf-announce@ietf.org>
> Subject: Last Call: draft-mcgrew-fundamental-ecc (Fundamental Elliptic =
Curve Cryptography Algorithms) to Informational RFC
> Reply-To: ietf@ietf.org
>=20
> The IESG has received a request from an individual submitter to =
consider=20
> the following document:
>=20
> - 'Fundamental Elliptic Curve Cryptography Algorithms '
>   <draft-mcgrew-fundamental-ecc-03.txt> as an Informational RFC
>=20
> The IESG plans to make a decision in the next few weeks, and solicits
> final comments on this action.  Please send substantive comments to =
the
> ietf@ietf.org mailing lists by 2010-07-09. Exceptionally,=20
> comments may be sent to iesg@ietf.org instead. In either case, please=20=

> retain the beginning of the Subject line to allow automated sorting.
>=20
> The file can be obtained via
> =
http://www.ietf.org/internet-drafts/draft-mcgrew-fundamental-ecc-03.txt
>=20
>=20
> IESG discussion can be tracked via
> =
https://datatracker.ietf.org/public/pidtracker.cgi?command=3Dview_id&dTag=3D=
18855&rfc_flag=3D0
>=20
> _______________________________________________
> IETF-Announce mailing list
> IETF-Announce@ietf.org
> https://www.ietf.org/mailman/listinfo/ietf-announce


Cullen Jennings
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html




From Michael.Stuber@itron.com  Mon Jun 14 11:16:49 2010
Return-Path: <Michael.Stuber@itron.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id AC97D3A6973 for <core@core3.amsl.com>; Mon, 14 Jun 2010 11:16:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.227
X-Spam-Level: 
X-Spam-Status: No, score=-3.227 tagged_above=-999 required=5 tests=[AWL=-0.628, BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id E2GMW5CR1wTE for <core@core3.amsl.com>; Mon, 14 Jun 2010 11:16:47 -0700 (PDT)
Received: from mailer-1.itron.com (mailer-1.itron.com [198.182.8.121]) by core3.amsl.com (Postfix) with ESMTP id A96803A696C for <core@ietf.org>; Mon, 14 Jun 2010 11:16:46 -0700 (PDT)
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Mon, 14 Jun 2010 11:16:50 -0700
Message-ID: <05C6A38D732F1144A8C4016BA4416BFE02E94DD6@SPO-EXVS-02.itron.com>
In-Reply-To: <7E8D9097-1214-425E-9A45-FCE07B0B2566@cisco.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] Fwd: Last Call: draft-mcgrew-fundamental-ecc (FundamentalElliptic Curve Cryptography Algorithms) to Informational RFC
Thread-Index: AcsL7O75rADV53w3SZWbjqxFKiiUdwAAJB8w
References: <20100611152115.2B9473A6A07@core3.amsl.com> <7E8D9097-1214-425E-9A45-FCE07B0B2566@cisco.com>
From: "Stuber, Michael" <Michael.Stuber@itron.com>
To: "Cullen Jennings" <fluffy@cisco.com>, "core" <core@ietf.org>
Cc: David McGrew <mcgrew@cisco.com>
Subject: Re: [core] Fwd: Last Call: draft-mcgrew-fundamental-ecc (FundamentalElliptic Curve Cryptography Algorithms) to Informational RFC
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 14 Jun 2010 18:16:49 -0000

To clarify further, I believe a key part of Dave's draft is that it is
based on published works that predate the ECC patents. =20

-----Original Message-----
From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
Cullen Jennings
Sent: Monday, June 14, 2010 11:11 AM
To: core
Subject: [core] Fwd: Last Call: draft-mcgrew-fundamental-ecc
(FundamentalElliptic Curve Cryptography Algorithms) to Informational RFC


Just wanted to point out a draft about ECC that is of interest in this
group. My basic understanding of the draft is it helps outline a set of
ECC algorithms that are likely to be old enough that patents most places
have expired or will expire soon. It's in IETF LC now so if people have
comments, send them soon.=20

Cullen

Begin forwarded message:

> From: The IESG <iesg-secretary@ietf.org>
> Date: June 11, 2010 9:21:13 AM MDT
> To: IETF-Announce <ietf-announce@ietf.org>
> Subject: Last Call: draft-mcgrew-fundamental-ecc (Fundamental Elliptic

> Curve Cryptography Algorithms) to Informational RFC
> Reply-To: ietf@ietf.org
>=20
> The IESG has received a request from an individual submitter to=20
> consider the following document:
>=20
> - 'Fundamental Elliptic Curve Cryptography Algorithms '
>   <draft-mcgrew-fundamental-ecc-03.txt> as an Informational RFC
>=20
> The IESG plans to make a decision in the next few weeks, and solicits=20
> final comments on this action.  Please send substantive comments to=20
> the ietf@ietf.org mailing lists by 2010-07-09. Exceptionally, comments

> may be sent to iesg@ietf.org instead. In either case, please retain=20
> the beginning of the Subject line to allow automated sorting.
>=20
> The file can be obtained via
> http://www.ietf.org/internet-drafts/draft-mcgrew-fundamental-ecc-03.tx
> t
>=20
>=20
> IESG discussion can be tracked via
> =
https://datatracker.ietf.org/public/pidtracker.cgi?command=3Dview_id&dTa
> g=3D18855&rfc_flag=3D0
>=20
> _______________________________________________
> IETF-Announce mailing list
> IETF-Announce@ietf.org
> https://www.ietf.org/mailman/listinfo/ietf-announce


Cullen Jennings
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html



_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core

From vipul.x.gupta@oracle.com  Mon Jun 14 16:43:04 2010
Return-Path: <vipul.x.gupta@oracle.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 8070A3A6A0F for <core@core3.amsl.com>; Mon, 14 Jun 2010 16:43:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.998
X-Spam-Level: 
X-Spam-Status: No, score=-3.998 tagged_above=-999 required=5 tests=[BAYES_50=0.001, RCVD_IN_DNSWL_MED=-4, UNPARSEABLE_RELAY=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mnRKKq1ZC449 for <core@core3.amsl.com>; Mon, 14 Jun 2010 16:43:03 -0700 (PDT)
Received: from rcsinet10.oracle.com (rcsinet10.oracle.com [148.87.113.121]) by core3.amsl.com (Postfix) with ESMTP id 02EE828C0F2 for <core@ietf.org>; Mon, 14 Jun 2010 16:43:02 -0700 (PDT)
Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by rcsinet10.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o5ENh4Ub012807 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <core@ietf.org>; Mon, 14 Jun 2010 23:43:06 GMT
Received: from acsmt355.oracle.com (acsmt355.oracle.com [141.146.40.155]) by acsinet15.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o5EMbmxY006813 for <core@ietf.org>; Mon, 14 Jun 2010 23:43:04 GMT
Received: from abhmt006.oracle.com by acsmt354.oracle.com with ESMTP id 324582651276558977; Mon, 14 Jun 2010 16:42:57 -0700
Received: from dhcp-umpk16-75-226.sfbay.sun.com (/129.146.75.226) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 14 Jun 2010 16:42:57 -0700
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Vipul Gupta <vipul.x.gupta@oracle.com>
In-Reply-To: <mailman.53.1275678008.15064.core@ietf.org>
Date: Mon, 14 Jun 2010 16:43:00 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com>
References: <mailman.53.1275678008.15064.core@ietf.org>
To: core@ietf.org
X-Mailer: Apple Mail (2.1078)
X-Auth-Type: Internal IP
X-Source-IP: acsinet15.oracle.com [141.146.126.227]
X-CT-RefId: str=0001.0A090205.4C16BE8A.01AB:SCFMA922111,ss=1,fgs=0
Cc: Vipul Gupta <vipul.x.gupta@oracle.com>
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 14 Jun 2010 23:43:04 -0000

The three levels of security outlined here seem like a good place=20
to start although the "Shared Key" option is unlikely to scale=20
beyond small deployments.

I'm also concerned about the choice of "CBC" mode which would=20
unnecessarily extend the "in-sequence, loss-less delivery"=20
requirement that DTLS already has for the handshake messages=20
to data packets. Cipher-block chaining will preclude decryption
of packet (n+1) until packet n has been received and decrypted.=20
A counter-mode encryption algorithm might be a better fit for UDP.

vipul
--
http://labs.oracle.com/people/mybio.php?c=3D509

> Date: Fri, 4 Jun 2010 11:47:47 -0600
> From: Cullen Jennings <fluffy@cisco.com>
> Subject: [core] Security design
>=20
> I've asked several people what they thought we should do with security =
and received a wide variety of answers. I'm going to try and propose =
something  here that I think *might* be acceptable to most people. I'm =
not arguing for or against this, I'm just trying to propose a straw man =
that helps us get to a decision sooner.=20
>=20
> The proposals is that COAP define three levels of security which are:
>=20
> 0) COAP baseline. No cryptographic security. Runs over UDP without =
DTLS.=20
>=20
> 1) COAP Shared Key. The requires implementation (but not use) of DTLS =
with symmetric keys but does not require any asymmetric cryptography.=20
>=20
> 2) COAP Certificates. This requires implementation of the stuff in 1 =
plus DTLS with some defined asymmetric key cryptography and =
certificates.=20
>=20
> A given produce could choose to be compliant with one of these three =
levels. COAP would not forbid extensions that either allowed it to cary =
some sort of signed objects so it could get object security later if =
some application wanted that. COAP would explicitly allow extensions =
that bound it to a different session mode security than DTLS so, for =
example, if someone or some group wanted to make a binding to IPsec with =
or without IKEv2, that would be fine.=20
>=20
> For both "COAP Shared Key" and "COAP Certificate", we would need to =
mandate one or more mandatory to implement DTLS profiles. I would want =
to get input and exact text from the DTLS/TLS authors and WG but I'm =
imagining something like:
>=20
> COAP "Shared Key" requires implementation of DTLS with =
TLS_PSK_WITH_AES_128_CBC_SHA
>=20
> Probably the biggest issue for the certificate mode is the "never too =
old to not do again" ECC vs RSA debate. I'd really like to separate that =
out as a separate issue and get agreement around the big picture before =
we have that particular debate.=20
>=20
> COAP "Certificates" requires implementation of DTLS with X.509 =
certificates and TLS_XXX_WITH_AES_128_CBC_SHA where we decide on either =
RSA or ECDH_ECDSA as the value of XXX.=20
>=20
> I forgot to ask people about what hash they liked so I randomly used =
SHA instead of SHA256 but it would be nice to get feedback from the WG =
on which hash should be mandatory to implement. I would expect some =
significant push back from the Security area if we selected SHA1 as the =
only mandatory to implement hash for a brand new protocol.=20
>=20
> Could something like this work? Thoughts on what would need to change? =
Could people live with the idea of having three levels sort of like WiFi =
security? ALternative proposal? Fine tuning this proposal?=20
>=20
> Thanks, Cullen
>=20
>=20
>=20
> ------------------------------
>=20
> Message: 4
> Date: Fri, 4 Jun 2010 12:33:53 -0600
> From: Cullen Jennings <fluffy@cisco.com>
> Subject: [core] SUB/NOT - the sea level view
> To: core <core@ietf.org>
> Message-ID: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com>
> Content-Type: text/plain; charset=3D"us-ascii"
>=20
>=20
> Over the year I have had the pleasure of being in many conversations =
about what a stateless protocol is, what REST is, HTTP, polling, =
asynchronous notifications, web based RPC, and blowing soap bubbles.  =
Though interesting, I have a hard time concretely explaining it to =
anyone and the oxygen always seems a bit thin at the 10,000 foot view. I =
do however have a very easy time understanding a very low level view of =
the systems where there are  some boxes and arrow diagrams of  message =
flow and roughly the semantics of the data they cary. Let me try and =
draw my current understanding of how this is going to work.
>=20
> We have two nodes - I will call them Source and Sink.=20
>=20
>=20
>   Source         Sink      =20
>     |    SUB      |        =20
>     |<------------+        =20
>     |             |        =20
>     |    ACK      |        =20
>     +------------>|        =20
>     |             |        =20
>    ... Time Passes ...         =20
>     |             |        =20
>     |   NOTIF     |        =20
>     +------------>|         =20
>     |             |        =20
>     |   ACK       |        =20
>     |<------------+         =20
>     |             |        =20
>=20
>=20
> Sink starts by sending a message I will label "SUB" to the Source. The =
SUB messages says which resource the Sink would like to be informed =
about when the resource changes. The Source sends a OK or No there is a =
problem in some sort of ACK message to the SUB. Eventually the resource =
changes and Source sends an message I called "NOTIFY" to the Sink. This =
tells the Sink which resource changed and the current value of it.The =
Sink sends some sort of acknowledgment. I find the terms client and =
server very confusing when discussing SUB/NOT so I'm not using those =
terms.=20
>=20
> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, =
or plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell, pretty much everything people have been proposing fit into this =
model.  So first, I'd like to get an idea if people think I am in left =
field and there is a very different message flow to consider. Second we =
need to figure out some of the stuff I left out of the picture above =
such as=20
>=20
> a) how to cancel a subscription=20
>=20
> b) how to get the initial value of the subscription around the time =
you subscribe=20
>=20
> c) what sort of filtering is available to limit the types of resource =
changes that result in a NOTIFY=20
>=20
> d) lifespan of subscription how to refresh a subscription
>=20
> e) caching and interaction with sleeping device=20
>=20
> We have to be clear on how this maps to HTTP and possibly other =
protocols. One of the problems with HTTP is it has so many ways of doing =
asynchronous notifications that it hard to decide what to map for. I =
would be very conformable if we clearly new how to map it to HiBy and to =
direct HTTP polling. It would be nice to have  back of the cocktail =
napkin belief that it probably could be mapped to SMNP, XMPP, and the =
other HTTP approaches. My guess is that the mapping to other protocols =
is going to turn out to be easy.=20
>=20
>=20
>=20
>=20
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: =
<http://www.ietf.org/mail-archive/web/core/attachments/20100604/2481295c/a=
ttachment.htm>
>=20
> ------------------------------
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>=20
>=20
> End of core Digest, Vol 5, Issue 13
> ***********************************


From robert.cragie@gridmerge.com  Tue Jun 15 01:09:25 2010
Return-Path: <robert.cragie@gridmerge.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 509CD3A6883 for <core@core3.amsl.com>; Tue, 15 Jun 2010 01:09:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.598
X-Spam-Level: 
X-Spam-Status: No, score=-3.598 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5dgoAIJYnMG9 for <core@core3.amsl.com>; Tue, 15 Jun 2010 01:09:23 -0700 (PDT)
Received: from mail78.extendcp.co.uk (mail78.extendcp.co.uk [79.170.40.78]) by core3.amsl.com (Postfix) with ESMTP id 955DD3A687B for <core@ietf.org>; Tue, 15 Jun 2010 01:09:22 -0700 (PDT)
Received: from client-86-29-249-143.pete.adsl.virginmedia.com ([86.29.249.143] helo=[192.168.1.70]) by mail78.extendcp.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.71) id 1OORD1-00023P-LS for core@ietf.org; Tue, 15 Jun 2010 09:09:24 +0100
Message-ID: <4C173530.30209@gridmerge.com>
Date: Tue, 15 Jun 2010 09:09:20 +0100
From: Robert Cragie <robert.cragie@gridmerge.com>
Organization: Gridmerge Ltd.
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100317 Lightning/1.0b1 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <mailman.53.1275678008.15064.core@ietf.org> <8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com>
In-Reply-To: <8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms080508070305040700060209"
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: robert.cragie@gridmerge.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 15 Jun 2010 08:09:25 -0000

This is a cryptographically signed message in MIME format.

--------------ms080508070305040700060209
Content-Type: multipart/alternative;
 boundary="------------030309000505090005000100"

This is a multi-part message in MIME format.
--------------030309000505090005000100
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable

I think the three levels are right.

I don't approve of the use of AES_128_CBC as it requires both AES-128=20
block cipher encode and decode. Stream ciphers such as AES_128_CCM or=20
AES_128_GCM only require AES-128 encode operation. Due to the use of=20
AES-CCM in 802.15.4, many 802.15.4 devices have built in support for=20
AES-CCM and AES-128 block cipher encode. AES-128 decode is not widely=20
implemented in these devices.

I also think we need to use SHA256 going forward. SHA1 is generally=20
deprecated for use now.

And I have had enough of the ECC/RSA debate recently to last me a=20
lifetime :-)

Robert

Robert Cragie (Pacific Gas & Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
http://www.gridmerge.com <http://www.gridmerge.com/>


On 15/06/2010 12:43 AM, Vipul Gupta wrote:
> The three levels of security outlined here seem like a good place
> to start although the "Shared Key" option is unlikely to scale
> beyond small deployments.
>
> I'm also concerned about the choice of "CBC" mode which would
> unnecessarily extend the "in-sequence, loss-less delivery"
> requirement that DTLS already has for the handshake messages
> to data packets. Cipher-block chaining will preclude decryption
> of packet (n+1) until packet n has been received and decrypted.
> A counter-mode encryption algorithm might be a better fit for UDP.
>
> vipul
> --
> http://labs.oracle.com/people/mybio.php?c=3D509
>
>   =20
>> Date: Fri, 4 Jun 2010 11:47:47 -0600
>> From: Cullen Jennings<fluffy@cisco.com>
>> Subject: [core] Security design
>>
>> I've asked several people what they thought we should do with security=
 and received a wide variety of answers. I'm going to try and propose som=
ething  here that I think *might* be acceptable to most people. I'm not a=
rguing for or against this, I'm just trying to propose a straw man that h=
elps us get to a decision sooner.
>>
>> The proposals is that COAP define three levels of security which are:
>>
>> 0) COAP baseline. No cryptographic security. Runs over UDP without DTL=
S.
>>
>> 1) COAP Shared Key. The requires implementation (but not use) of DTLS =
with symmetric keys but does not require any asymmetric cryptography.
>>
>> 2) COAP Certificates. This requires implementation of the stuff in 1 p=
lus DTLS with some defined asymmetric key cryptography and certificates.
>>
>> A given produce could choose to be compliant with one of these three l=
evels. COAP would not forbid extensions that either allowed it to cary so=
me sort of signed objects so it could get object security later if some a=
pplication wanted that. COAP would explicitly allow extensions that bound=
 it to a different session mode security than DTLS so, for example, if so=
meone or some group wanted to make a binding to IPsec with or without IKE=
v2, that would be fine.
>>
>> For both "COAP Shared Key" and "COAP Certificate", we would need to ma=
ndate one or more mandatory to implement DTLS profiles. I would want to g=
et input and exact text from the DTLS/TLS authors and WG but I'm imaginin=
g something like:
>>
>> COAP "Shared Key" requires implementation of DTLS with TLS_PSK_WITH_AE=
S_128_CBC_SHA
>>
>> Probably the biggest issue for the certificate mode is the "never too =
old to not do again" ECC vs RSA debate. I'd really like to separate that =
out as a separate issue and get agreement around the big picture before w=
e have that particular debate.
>>
>> COAP "Certificates" requires implementation of DTLS with X.509 certifi=
cates and TLS_XXX_WITH_AES_128_CBC_SHA where we decide on either RSA or E=
CDH_ECDSA as the value of XXX.
>>
>> I forgot to ask people about what hash they liked so I randomly used S=
HA instead of SHA256 but it would be nice to get feedback from the WG on =
which hash should be mandatory to implement. I would expect some signific=
ant push back from the Security area if we selected SHA1 as the only mand=
atory to implement hash for a brand new protocol.
>>
>> Could something like this work? Thoughts on what would need to change?=
 Could people live with the idea of having three levels sort of like WiFi=
 security? ALternative proposal? Fine tuning this proposal?
>>
>> Thanks, Cullen
>>
>>
>>
>> ------------------------------
>>
>> Message: 4
>> Date: Fri, 4 Jun 2010 12:33:53 -0600
>> From: Cullen Jennings<fluffy@cisco.com>
>> Subject: [core] SUB/NOT - the sea level view
>> To: core<core@ietf.org>
>> Message-ID:<C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com>
>> Content-Type: text/plain; charset=3D"us-ascii"
>>
>>
>> Over the year I have had the pleasure of being in many conversations a=
bout what a stateless protocol is, what REST is, HTTP, polling, asynchron=
ous notifications, web based RPC, and blowing soap bubbles.  Though inter=
esting, I have a hard time concretely explaining it to anyone and the oxy=
gen always seems a bit thin at the 10,000 foot view. I do however have a =
very easy time understanding a very low level view of the systems where t=
here are  some boxes and arrow diagrams of  message flow and roughly the =
semantics of the data they cary. Let me try and draw my current understan=
ding of how this is going to work.
>>
>> We have two nodes - I will call them Source and Sink.
>>
>>
>>    Source         Sink
>>      |    SUB      |
>>      |<------------+
>>      |             |
>>      |    ACK      |
>>      +------------>|
>>      |             |
>>     ... Time Passes ...
>>      |             |
>>      |   NOTIF     |
>>      +------------>|
>>      |             |
>>      |   ACK       |
>>      |<------------+
>>      |             |
>>
>>
>> Sink starts by sending a message I will label "SUB" to the Source. The=
 SUB messages says which resource the Sink would like to be informed abou=
t when the resource changes. The Source sends a OK or No there is a probl=
em in some sort of ACK message to the SUB. Eventually the resource change=
s and Source sends an message I called "NOTIFY" to the Sink. This tells t=
he Sink which resource changed and the current value of it.The Sink sends=
 some sort of acknowledgment. I find the terms client and server very con=
fusing when discussing SUB/NOT so I'm not using those terms.
>>
>> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, o=
r plain old polling, XMPP, SMTP, just about anything. As far as I can tel=
l, pretty much everything people have been proposing fit into this model.=
  So first, I'd like to get an idea if people think I am in left field an=
d there is a very different message flow to consider. Second we need to f=
igure out some of the stuff I left out of the picture above such as
>>
>> a) how to cancel a subscription
>>
>> b) how to get the initial value of the subscription around the time yo=
u subscribe
>>
>> c) what sort of filtering is available to limit the types of resource =
changes that result in a NOTIFY
>>
>> d) lifespan of subscription how to refresh a subscription
>>
>> e) caching and interaction with sleeping device
>>
>> We have to be clear on how this maps to HTTP and possibly other protoc=
ols. One of the problems with HTTP is it has so many ways of doing asynch=
ronous notifications that it hard to decide what to map for. I would be v=
ery conformable if we clearly new how to map it to HiBy and to direct HTT=
P polling. It would be nice to have  back of the cocktail napkin belief t=
hat it probably could be mapped to SMNP, XMPP, and the other HTTP approac=
hes. My guess is that the mapping to other protocols is going to turn out=
 to be easy.
>>
>>
>>
>>
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL:<http://www.ietf.org/mail-archive/web/core/attachments/20100604/24=
81295c/attachment.htm>
>>
>> ------------------------------
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>
>>
>> End of core Digest, Vol 5, Issue 13
>> ***********************************
>>     =20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>   =20

--------------030309000505090005000100
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content=3D"text/html; charset=3DISO-8859-1"
 http-equiv=3D"Content-Type">
</head>
<body bgcolor=3D"#ffffff" text=3D"#000000">
I think the three levels are right.<br>
<br>
I don't approve of the use of AES_128_CBC as it requires both AES-128
block cipher encode and decode. Stream ciphers such as AES_128_CCM or
AES_128_GCM only require AES-128 encode operation. Due to the use of
AES-CCM in 802.15.4, many 802.15.4 devices have built in support for
AES-CCM and AES-128 block cipher encode. AES-128 decode is not widely
implemented in these devices.<br>
<br>
I also think we need to use SHA256 going forward. SHA1 is generally
deprecated for use now.<br>
<br>
And I have had enough of the ECC/RSA debate recently to last me a
lifetime :-)<br>
<br>
Robert<br>
<div class=3D"moz-signature">
<style type=3D"text/css">
p
{
font-family:Verdana,Arial,sans-serif;
font-size:8pt;
}
=2Ename
{
font-size:12pt;
}
</style>
<p class=3D"name">Robert Cragie (Pacific Gas &amp; Electric)</p>
<p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
<a href=3D"http://www.gridmerge.com/">http://www.gridmerge.com</a></p>
</div>
<br>
On 15/06/2010 12:43 AM, Vipul Gupta wrote:
<blockquote cite=3D"mid:8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com"
 type=3D"cite">
  <pre wrap=3D"">The three levels of security outlined here seem like a g=
ood place=20
to start although the "Shared Key" option is unlikely to scale=20
beyond small deployments.

I'm also concerned about the choice of "CBC" mode which would=20
unnecessarily extend the "in-sequence, loss-less delivery"=20
requirement that DTLS already has for the handshake messages=20
to data packets. Cipher-block chaining will preclude decryption
of packet (n+1) until packet n has been received and decrypted.=20
A counter-mode encryption algorithm might be a better fit for UDP.

vipul
--
<a class=3D"moz-txt-link-freetext" href=3D"http://labs.oracle.com/people/=
mybio.php?c=3D509">http://labs.oracle.com/people/mybio.php?c=3D509</a>

  </pre>
  <blockquote type=3D"cite">
    <pre wrap=3D"">Date: Fri, 4 Jun 2010 11:47:47 -0600
From: Cullen Jennings <a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:f=
luffy@cisco.com">&lt;fluffy@cisco.com&gt;</a>
Subject: [core] Security design

I've asked several people what they thought we should do with security an=
d received a wide variety of answers. I'm going to try and propose someth=
ing  here that I think *might* be acceptable to most people. I'm not argu=
ing for or against this, I'm just trying to propose a straw man that help=
s us get to a decision sooner.=20

The proposals is that COAP define three levels of security which are:

0) COAP baseline. No cryptographic security. Runs over UDP without DTLS. =


1) COAP Shared Key. The requires implementation (but not use) of DTLS wit=
h symmetric keys but does not require any asymmetric cryptography.=20

2) COAP Certificates. This requires implementation of the stuff in 1 plus=
 DTLS with some defined asymmetric key cryptography and certificates.=20

A given produce could choose to be compliant with one of these three leve=
ls. COAP would not forbid extensions that either allowed it to cary some =
sort of signed objects so it could get object security later if some appl=
ication wanted that. COAP would explicitly allow extensions that bound it=
 to a different session mode security than DTLS so, for example, if someo=
ne or some group wanted to make a binding to IPsec with or without IKEv2,=
 that would be fine.=20

For both "COAP Shared Key" and "COAP Certificate", we would need to manda=
te one or more mandatory to implement DTLS profiles. I would want to get =
input and exact text from the DTLS/TLS authors and WG but I'm imagining s=
omething like:

COAP "Shared Key" requires implementation of DTLS with TLS_PSK_WITH_AES_1=
28_CBC_SHA

Probably the biggest issue for the certificate mode is the "never too old=
 to not do again" ECC vs RSA debate. I'd really like to separate that out=
 as a separate issue and get agreement around the big picture before we h=
ave that particular debate.=20

COAP "Certificates" requires implementation of DTLS with X.509 certificat=
es and TLS_XXX_WITH_AES_128_CBC_SHA where we decide on either RSA or ECDH=
_ECDSA as the value of XXX.=20

I forgot to ask people about what hash they liked so I randomly used SHA =
instead of SHA256 but it would be nice to get feedback from the WG on whi=
ch hash should be mandatory to implement. I would expect some significant=
 push back from the Security area if we selected SHA1 as the only mandato=
ry to implement hash for a brand new protocol.=20

Could something like this work? Thoughts on what would need to change? Co=
uld people live with the idea of having three levels sort of like WiFi se=
curity? ALternative proposal? Fine tuning this proposal?=20

Thanks, Cullen



------------------------------

Message: 4
Date: Fri, 4 Jun 2010 12:33:53 -0600
From: Cullen Jennings <a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:f=
luffy@cisco.com">&lt;fluffy@cisco.com&gt;</a>
Subject: [core] SUB/NOT - the sea level view
To: core <a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:core@ietf.org"=
>&lt;core@ietf.org&gt;</a>
Message-ID: <a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:C07D3949-3C=
C2-4BB1-B8B6-6C2011675D50@cisco.com">&lt;C07D3949-3CC2-4BB1-B8B6-6C201167=
5D50@cisco.com&gt;</a>
Content-Type: text/plain; charset=3D"us-ascii"


Over the year I have had the pleasure of being in many conversations abou=
t what a stateless protocol is, what REST is, HTTP, polling, asynchronous=
 notifications, web based RPC, and blowing soap bubbles.  Though interest=
ing, I have a hard time concretely explaining it to anyone and the oxygen=
 always seems a bit thin at the 10,000 foot view. I do however have a ver=
y easy time understanding a very low level view of the systems where ther=
e are  some boxes and arrow diagrams of  message flow and roughly the sem=
antics of the data they cary. Let me try and draw my current understandin=
g of how this is going to work.

We have two nodes - I will call them Source and Sink.=20


  Source         Sink      =20
    |    SUB      |        =20
    |&lt;------------+        =20
    |             |        =20
    |    ACK      |        =20
    +------------&gt;|        =20
    |             |        =20
   ... Time Passes ...         =20
    |             |        =20
    |   NOTIF     |        =20
    +------------&gt;|         =20
    |             |        =20
    |   ACK       |        =20
    |&lt;------------+         =20
    |             |        =20


Sink starts by sending a message I will label "SUB" to the Source. The SU=
B messages says which resource the Sink would like to be informed about w=
hen the resource changes. The Source sends a OK or No there is a problem =
in some sort of ACK message to the SUB. Eventually the resource changes a=
nd Source sends an message I called "NOTIFY" to the Sink. This tells the =
Sink which resource changed and the current value of it.The Sink sends so=
me sort of acknowledgment. I find the terms client and server very confus=
ing when discussing SUB/NOT so I'm not using those terms.=20

The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, or p=
lain old polling, XMPP, SMTP, just about anything. As far as I can tell, =
pretty much everything people have been proposing fit into this model.  S=
o first, I'd like to get an idea if people think I am in left field and t=
here is a very different message flow to consider. Second we need to figu=
re out some of the stuff I left out of the picture above such as=20

a) how to cancel a subscription=20

b) how to get the initial value of the subscription around the time you s=
ubscribe=20

c) what sort of filtering is available to limit the types of resource cha=
nges that result in a NOTIFY=20

d) lifespan of subscription how to refresh a subscription

e) caching and interaction with sleeping device=20

We have to be clear on how this maps to HTTP and possibly other protocols=
=2E One of the problems with HTTP is it has so many ways of doing asynchr=
onous notifications that it hard to decide what to map for. I would be ve=
ry conformable if we clearly new how to map it to HiBy and to direct HTTP=
 polling. It would be nice to have  back of the cocktail napkin belief th=
at it probably could be mapped to SMNP, XMPP, and the other HTTP approach=
es. My guess is that the mapping to other protocols is going to turn out =
to be easy.=20




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <a class=3D"moz-txt-link-rfc2396E" href=3D"http://www.ietf.org/mail-=
archive/web/core/attachments/20100604/2481295c/attachment.htm">&lt;http:/=
/www.ietf.org/mail-archive/web/core/attachments/20100604/2481295c/attachm=
ent.htm&gt;</a>

------------------------------

_______________________________________________
core mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>


End of core Digest, Vol 5, Issue 13
***********************************
    </pre>
  </blockquote>
  <pre wrap=3D"">
_______________________________________________
core mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>

  </pre>
</blockquote>
</body>
</html>

--------------030309000505090005000100--

--------------ms080508070305040700060209
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

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
NTlaMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBM
dGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxKY8VXNV+065yplaHmjAdQRwnd/p/6Me7L3N9Vvy
Gna9fww6YfK/Uc4B1OVQCjDXAmNaLIkVcI7dyfArhVqqP3FWy688Cwfn8R+RNiQqE88r1fOC
dz0Dviv+uxg+B79AgAJk16emu59l0cUqVIUPSAR/p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCB
kTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwudGhh
d3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWlsQ0EuY3JsMAsGA1UdDwQEAwIBBjApBgNV
HREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxhYmVsMi0xMzgwDQYJKoZIhvcNAQEFBQAD
gYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/TCG4+DYfqi2fNi/A9BxQIJNwPP2t4WFi
w9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amcOY6MIE9lX5Xa9/eH1sYITq726jTlEBpb
NU1341YheILcIRk13iSx0x1G/11fZU8xggNxMIIDbQIBATB2MGIxCzAJBgNVBAYTAlpBMSUw
IwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUg
UGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQdBWGHEaYIBO/4g+d746QHzAJBgUrDgMC
GgUAoIIB0DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA2
MTUwODA5MjBaMCMGCSqGSIb3DQEJBDEWBBTxnFT2B6UP+Lwww06lSGj2XkRBFjBfBgkqhkiG
9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYI
KoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwgYUGCSsGAQQBgjcQBDF4MHYw
YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x
LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpgg
E7/iD53vjpAfMIGHBgsqhkiG9w0BCRACCzF4oHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpggE7/iD53vjpAfMA0GCSqGSIb3DQEBAQUA
BIIBAFo46TPZKrk7GXVcsyzJIf/YxtJJeRezFwPfEkAmjllZrWjfQ7WapLYRF17Q8jC5wnAZ
Y8xqJWMqmu5Cp9KlZaUHGHcQEiR/en8CEgjftZVjSpkeG0yV7mxU/A5R5EPooqBGIZxHchtk
dTnpSQCz2Tgl6RrUdgj/P3NEVSsXUwNRtkEhv5bWo1GfKVgJirsVhbyotG8iPYOqY2tD4BRG
kcd8x+R5hByOrY+w34PWR7yjdDYThWJzjwa/z31WRYC2WiEwYNQqIz/LAgZ0EwbLPMLbttNq
2md+oF63+2pJdSnZnvTN4NtZQ7jmGcjYw4/Dbnkxvz66KTRF5TU+3b5zUU4AAAAAAAA=
--------------ms080508070305040700060209--

From ynir@checkpoint.com  Tue Jun 15 01:14:24 2010
Return-Path: <ynir@checkpoint.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 916A23A679F for <core@core3.amsl.com>; Tue, 15 Jun 2010 01:14:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.665
X-Spam-Level: 
X-Spam-Status: No, score=-1.665 tagged_above=-999 required=5 tests=[AWL=0.934,  BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OyUAp1aHwIco for <core@core3.amsl.com>; Tue, 15 Jun 2010 01:14:23 -0700 (PDT)
Received: from michael.checkpoint.com (michael.checkpoint.com [194.29.34.68]) by core3.amsl.com (Postfix) with ESMTP id 13F2A3A67E3 for <core@ietf.org>; Tue, 15 Jun 2010 01:14:21 -0700 (PDT)
X-CheckPoint: {4C1743FA-0-1B221DC2-2FFFF}
Received: from il-ex01.ad.checkpoint.com (il-ex01.checkpoint.com [194.29.34.26]) by michael.checkpoint.com (8.12.10+Sun/8.12.10) with ESMTP id o5F8DrDq001447; Tue, 15 Jun 2010 11:13:54 +0300 (IDT)
Received: from il-ex01.ad.checkpoint.com ([126.0.0.2]) by il-ex01.ad.checkpoint.com ([126.0.0.2]) with mapi; Tue, 15 Jun 2010 11:14:23 +0300
From: Yoav Nir <ynir@checkpoint.com>
To: "'Stuber, Michael'" <Michael.Stuber@itron.com>, Cullen Jennings <fluffy@cisco.com>, core <core@ietf.org>
Date: Tue, 15 Jun 2010 11:14:22 +0300
Thread-Topic: [core] Fwd: Last Call: draft-mcgrew-fundamental-ecc (FundamentalElliptic Curve Cryptography Algorithms) to	Informational RFC
Thread-Index: AcsL7O75rADV53w3SZWbjqxFKiiUdwAAJB8wAB1DsSA=
Message-ID: <006FEB08D9C6444AB014105C9AEB133FB49CC759B0@il-ex01.ad.checkpoint.com>
References: <20100611152115.2B9473A6A07@core3.amsl.com> <7E8D9097-1214-425E-9A45-FCE07B0B2566@cisco.com> <05C6A38D732F1144A8C4016BA4416BFE02E94DD6@SPO-EXVS-02.itron.com>
In-Reply-To: <05C6A38D732F1144A8C4016BA4416BFE02E94DD6@SPO-EXVS-02.itron.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: David McGrew <mcgrew@cisco.com>
Subject: Re: [core] Fwd: Last Call: draft-mcgrew-fundamental-ecc	(FundamentalElliptic Curve Cryptography Algorithms) to	Informational RFC
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 15 Jun 2010 08:14:24 -0000

Actually, the key part is that it's based on published works from before 19=
94, so even if they were patented then, the patents will have expired by no=
w.

-----Original Message-----
From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of Stu=
ber, Michael
Sent: Monday, June 14, 2010 9:17 PM
To: Cullen Jennings; core
Cc: David McGrew
Subject: Re: [core] Fwd: Last Call: draft-mcgrew-fundamental-ecc (Fundament=
alElliptic Curve Cryptography Algorithms) to Informational RFC

To clarify further, I believe a key part of Dave's draft is that it is
based on published works that predate the ECC patents. =20

-----Original Message-----
From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
Cullen Jennings
Sent: Monday, June 14, 2010 11:11 AM
To: core
Subject: [core] Fwd: Last Call: draft-mcgrew-fundamental-ecc
(FundamentalElliptic Curve Cryptography Algorithms) to Informational RFC


Just wanted to point out a draft about ECC that is of interest in this
group. My basic understanding of the draft is it helps outline a set of
ECC algorithms that are likely to be old enough that patents most places
have expired or will expire soon. It's in IETF LC now so if people have
comments, send them soon.=20

Cullen

Begin forwarded message:

> From: The IESG <iesg-secretary@ietf.org>
> Date: June 11, 2010 9:21:13 AM MDT
> To: IETF-Announce <ietf-announce@ietf.org>
> Subject: Last Call: draft-mcgrew-fundamental-ecc (Fundamental Elliptic

> Curve Cryptography Algorithms) to Informational RFC
> Reply-To: ietf@ietf.org
>=20
> The IESG has received a request from an individual submitter to=20
> consider the following document:
>=20
> - 'Fundamental Elliptic Curve Cryptography Algorithms '
>   <draft-mcgrew-fundamental-ecc-03.txt> as an Informational RFC
>=20
> The IESG plans to make a decision in the next few weeks, and solicits=20
> final comments on this action.  Please send substantive comments to=20
> the ietf@ietf.org mailing lists by 2010-07-09. Exceptionally, comments

> may be sent to iesg@ietf.org instead. In either case, please retain=20
> the beginning of the Subject line to allow automated sorting.
>=20
> The file can be obtained via
> http://www.ietf.org/internet-drafts/draft-mcgrew-fundamental-ecc-03.tx
> t
>=20
>=20
> IESG discussion can be tracked via
> https://datatracker.ietf.org/public/pidtracker.cgi?command=3Dview_id&dTa
> g=3D18855&rfc_flag=3D0
>=20
> _______________________________________________
> IETF-Announce mailing list
> IETF-Announce@ietf.org
> https://www.ietf.org/mailman/listinfo/ietf-announce


Cullen Jennings
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html



_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core

Scanned by Check Point Total Security Gateway.

From ynir@checkpoint.com  Tue Jun 15 01:24:25 2010
Return-Path: <ynir@checkpoint.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E1D9A3A6A36 for <core@core3.amsl.com>; Tue, 15 Jun 2010 01:24:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.852
X-Spam-Level: 
X-Spam-Status: No, score=-1.852 tagged_above=-999 required=5 tests=[AWL=0.747,  BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q3uusWr5w3mV for <core@core3.amsl.com>; Tue, 15 Jun 2010 01:24:24 -0700 (PDT)
Received: from michael.checkpoint.com (michael.checkpoint.com [194.29.34.68]) by core3.amsl.com (Postfix) with ESMTP id 7A38B3A6A38 for <core@ietf.org>; Tue, 15 Jun 2010 01:24:23 -0700 (PDT)
X-CheckPoint: {4C174653-0-1B221DC2-2FFFF}
Received: from il-ex01.ad.checkpoint.com (il-ex01.checkpoint.com [194.29.34.26]) by michael.checkpoint.com (8.12.10+Sun/8.12.10) with ESMTP id o5F8OQDq003152; Tue, 15 Jun 2010 11:24:26 +0300 (IDT)
Received: from il-ex01.ad.checkpoint.com ([126.0.0.2]) by il-ex01.ad.checkpoint.com ([126.0.0.2]) with mapi; Tue, 15 Jun 2010 11:24:55 +0300
From: Yoav Nir <ynir@checkpoint.com>
To: "'Vipul Gupta'" <vipul.x.gupta@oracle.com>, "core@ietf.org" <core@ietf.org>
Date: Tue, 15 Jun 2010 11:24:55 +0300
Thread-Topic: [core] Security design
Thread-Index: AcsMG220nUMJ0GGaTIOQGxIXdkDaSQAR7rew
Message-ID: <006FEB08D9C6444AB014105C9AEB133FB49CC759B1@il-ex01.ad.checkpoint.com>
References: <mailman.53.1275678008.15064.core@ietf.org> <8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com>
In-Reply-To: <8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 15 Jun 2010 08:24:26 -0000

I'm not sure I understand how DTLS would work in an Internet-of-things envi=
ronment. The networks are sometimes low-bandwidth and lossy, but the (D)TLS=
 handshake takes a few roundtrips. You wouldn't want a full DTLS handshake =
every time some sensor wants to tell some controller that something has cha=
nged (say, a light switch has been toggled), especially if the controller i=
s required to perform a prompt action (say, turn on the light).=20

Are you envisioning long-lived sessions that last for days even if for most=
 of the time the device is in low-power sleep mode? If so, some thought nee=
ds to be given to session maintenance, liveness checks, failure detection?=
=20

Also, with a long lived session, how do you protect against replay attacks?=
=20

Yoav

-----Original Message-----
From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of Vip=
ul Gupta
Sent: Tuesday, June 15, 2010 2:43 AM
To: core@ietf.org
Cc: Vipul Gupta
Subject: Re: [core] Security design

The three levels of security outlined here seem like a good place=20
to start although the "Shared Key" option is unlikely to scale=20
beyond small deployments.

I'm also concerned about the choice of "CBC" mode which would=20
unnecessarily extend the "in-sequence, loss-less delivery"=20
requirement that DTLS already has for the handshake messages=20
to data packets. Cipher-block chaining will preclude decryption
of packet (n+1) until packet n has been received and decrypted.=20
A counter-mode encryption algorithm might be a better fit for UDP.

vipul
--
http://labs.oracle.com/people/mybio.php?c=3D509

> Date: Fri, 4 Jun 2010 11:47:47 -0600
> From: Cullen Jennings <fluffy@cisco.com>
> Subject: [core] Security design
>=20
> I've asked several people what they thought we should do with security an=
d received a wide variety of answers. I'm going to try and propose somethin=
g  here that I think *might* be acceptable to most people. I'm not arguing =
for or against this, I'm just trying to propose a straw man that helps us g=
et to a decision sooner.=20
>=20
> The proposals is that COAP define three levels of security which are:
>=20
> 0) COAP baseline. No cryptographic security. Runs over UDP without DTLS.=
=20
>=20
> 1) COAP Shared Key. The requires implementation (but not use) of DTLS wit=
h symmetric keys but does not require any asymmetric cryptography.=20
>=20
> 2) COAP Certificates. This requires implementation of the stuff in 1 plus=
 DTLS with some defined asymmetric key cryptography and certificates.=20
>=20
> A given produce could choose to be compliant with one of these three leve=
ls. COAP would not forbid extensions that either allowed it to cary some so=
rt of signed objects so it could get object security later if some applicat=
ion wanted that. COAP would explicitly allow extensions that bound it to a =
different session mode security than DTLS so, for example, if someone or so=
me group wanted to make a binding to IPsec with or without IKEv2, that woul=
d be fine.=20
>=20
> For both "COAP Shared Key" and "COAP Certificate", we would need to manda=
te one or more mandatory to implement DTLS profiles. I would want to get in=
put and exact text from the DTLS/TLS authors and WG but I'm imagining somet=
hing like:
>=20
> COAP "Shared Key" requires implementation of DTLS with TLS_PSK_WITH_AES_1=
28_CBC_SHA
>=20
> Probably the biggest issue for the certificate mode is the "never too old=
 to not do again" ECC vs RSA debate. I'd really like to separate that out a=
s a separate issue and get agreement around the big picture before we have =
that particular debate.=20
>=20
> COAP "Certificates" requires implementation of DTLS with X.509 certificat=
es and TLS_XXX_WITH_AES_128_CBC_SHA where we decide on either RSA or ECDH_E=
CDSA as the value of XXX.=20
>=20
> I forgot to ask people about what hash they liked so I randomly used SHA =
instead of SHA256 but it would be nice to get feedback from the WG on which=
 hash should be mandatory to implement. I would expect some significant pus=
h back from the Security area if we selected SHA1 as the only mandatory to =
implement hash for a brand new protocol.=20
>=20
> Could something like this work? Thoughts on what would need to change? Co=
uld people live with the idea of having three levels sort of like WiFi secu=
rity? ALternative proposal? Fine tuning this proposal?=20
>=20
> Thanks, Cullen
>=20
>=20
>=20
> ------------------------------
>=20
> Message: 4
> Date: Fri, 4 Jun 2010 12:33:53 -0600
> From: Cullen Jennings <fluffy@cisco.com>
> Subject: [core] SUB/NOT - the sea level view
> To: core <core@ietf.org>
> Message-ID: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com>
> Content-Type: text/plain; charset=3D"us-ascii"
>=20
>=20
> Over the year I have had the pleasure of being in many conversations abou=
t what a stateless protocol is, what REST is, HTTP, polling, asynchronous n=
otifications, web based RPC, and blowing soap bubbles.  Though interesting,=
 I have a hard time concretely explaining it to anyone and the oxygen alway=
s seems a bit thin at the 10,000 foot view. I do however have a very easy t=
ime understanding a very low level view of the systems where there are  som=
e boxes and arrow diagrams of  message flow and roughly the semantics of th=
e data they cary. Let me try and draw my current understanding of how this =
is going to work.
>=20
> We have two nodes - I will call them Source and Sink.=20
>=20
>=20
>   Source         Sink      =20
>     |    SUB      |        =20
>     |<------------+        =20
>     |             |        =20
>     |    ACK      |        =20
>     +------------>|        =20
>     |             |        =20
>    ... Time Passes ...         =20
>     |             |        =20
>     |   NOTIF     |        =20
>     +------------>|         =20
>     |             |        =20
>     |   ACK       |        =20
>     |<------------+         =20
>     |             |        =20
>=20
>=20
> Sink starts by sending a message I will label "SUB" to the Source. The SU=
B messages says which resource the Sink would like to be informed about whe=
n the resource changes. The Source sends a OK or No there is a problem in s=
ome sort of ACK message to the SUB. Eventually the resource changes and Sou=
rce sends an message I called "NOTIFY" to the Sink. This tells the Sink whi=
ch resource changed and the current value of it.The Sink sends some sort of=
 acknowledgment. I find the terms client and server very confusing when dis=
cussing SUB/NOT so I'm not using those terms.=20
>=20
> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, or p=
lain old polling, XMPP, SMTP, just about anything. As far as I can tell, pr=
etty much everything people have been proposing fit into this model.  So fi=
rst, I'd like to get an idea if people think I am in left field and there i=
s a very different message flow to consider. Second we need to figure out s=
ome of the stuff I left out of the picture above such as=20
>=20
> a) how to cancel a subscription=20
>=20
> b) how to get the initial value of the subscription around the time you s=
ubscribe=20
>=20
> c) what sort of filtering is available to limit the types of resource cha=
nges that result in a NOTIFY=20
>=20
> d) lifespan of subscription how to refresh a subscription
>=20
> e) caching and interaction with sleeping device=20
>=20
> We have to be clear on how this maps to HTTP and possibly other protocols=
. One of the problems with HTTP is it has so many ways of doing asynchronou=
s notifications that it hard to decide what to map for. I would be very con=
formable if we clearly new how to map it to HiBy and to direct HTTP polling=
. It would be nice to have  back of the cocktail napkin belief that it prob=
ably could be mapped to SMNP, XMPP, and the other HTTP approaches. My guess=
 is that the mapping to other protocols is going to turn out to be easy.=20
>=20
>=20
>=20
>=20
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://www.ietf.org/mail-archive/web/core/attachments/20100604/2481=
295c/attachment.htm>
>=20
> ------------------------------
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>=20
>=20
> End of core Digest, Vol 5, Issue 13
> ***********************************

_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core

Scanned by Check Point Total Security Gateway.

From arjunrc@gmail.com  Tue Jun 15 06:58:51 2010
Return-Path: <arjunrc@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id ED0E728C111 for <core@core3.amsl.com>; Tue, 15 Jun 2010 06:58:51 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.624
X-Spam-Level: 
X-Spam-Status: No, score=0.624 tagged_above=-999 required=5 tests=[BAYES_50=0.001, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xV2ssWRgs+Hg for <core@core3.amsl.com>; Tue, 15 Jun 2010 06:58:47 -0700 (PDT)
Received: from mail-vw0-f44.google.com (mail-vw0-f44.google.com [209.85.212.44]) by core3.amsl.com (Postfix) with ESMTP id 455D628C123 for <core@ietf.org>; Tue, 15 Jun 2010 06:58:47 -0700 (PDT)
Received: by vws9 with SMTP id 9so6778206vws.31 for <core@ietf.org>; Tue, 15 Jun 2010 06:58:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:sender:reply-to:received :in-reply-to:references:from:date:x-google-sender-auth:message-id :subject:to:cc:content-type; bh=2FiuabKOM+wGv4yvq8pPcNtHQXIk++nRHgfZcB7kYnA=; b=SH1BvRFS5R1XE+GuG/KVmLfjAdQ9URUoMjvJ+7BJk2T9TPPdr5fE+8qPjrOLbyz5Y2 H9klfY4xtwvHzU6RZWXg3wW+Mb/TPkRVg0MCL5bbPTuuYNZYgA+ppvN/6lErX48Km9bK FtH8wXDSdAvqmClD/m4KShqbXp3EOZw1P81kQ=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:reply-to:in-reply-to:references:from:date :x-google-sender-auth:message-id:subject:to:cc:content-type; b=nbTjeWl8leh7dcCRKrca1AXIpYFzHN8WAvh9H9ZWuBcbRMqVYMuCxg0t9ao2LQsH07 vpUAhuGspqC2Fa1jmNRV+Rz4OSSMEnZi8W7wfxEOji9ce5QBFu8+k4HjUyMmiENlpRSa JuBhy+T/9PrVJFJrqnJzl+zuDueNJs0Mo2CZk=
Received: by 10.224.123.3 with SMTP id n3mr3232231qar.211.1276610327404; Tue,  15 Jun 2010 06:58:47 -0700 (PDT)
MIME-Version: 1.0
Sender: arjunrc@gmail.com
Received: by 10.229.242.21 with HTTP; Tue, 15 Jun 2010 06:58:27 -0700 (PDT)
In-Reply-To: <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org>  <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org> <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu>  <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi>
From: Arjun Roychowdhury <arjun.lists@hsc.com>
Date: Tue, 15 Jun 2010 09:58:27 -0400
X-Google-Sender-Auth: mad_2oYyHPJI1Vof9p1SFE9r4k4
Message-ID: <AANLkTikuPXlERKZXfncu7F3jPFxP_DIKQJU89uaCNXBf@mail.gmail.com>
To: "zach@sensinode.com" <zach@sensinode.com>
Content-Type: multipart/alternative; boundary=00c09f8e5fb414e41d0489120109
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: arjun.lists@hsc.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 15 Jun 2010 13:58:52 -0000

--00c09f8e5fb414e41d0489120109
Content-Type: text/plain; charset=ISO-8859-1

What is the final compression goal here? One of nice things about an HTTP
url is that it is generally understandable and indicates the target resource
correctly. This entire url shortening services add complexity, single point
of failures as well as increase response latency (due to redirects, in the
case the destination server is not the one maintaining the map of short URIs
to full URIs).

regds
arjun


On Sat, Jun 12, 2010 at 3:22 PM, zach@sensinode.com <zach@sensinode.com>wrote:

> +1 - I like that Henning.
>
> In addition, a server could let clients know about its popular URLs a
> priori in its /.well-known/resources links as alt= or short=. Instead of
> thinking of this as a special integer code, we can do this exactly like a
> short URL service. The server just assigns multiple URLs to a resource, one
> happens to be /5 in addition to /sensors/temp/indoor/centigrade. Or as
> Carsten suggested, it could have a special form like /!5.
>
> But it wouldn't hurt to do 7-bit ASCII packing on URLs anyways? That is 15%
> savings by just bit shifting. I agree that more sophisticated algorithms
> probably aren't worth it.
>
> Zach
>
> On Sat, 12 Jun 2010 08:36:14 -0400, Henning Schulzrinne
> <hgs@cs.columbia.edu> wrote:
> > One possibility is to optimize for the case where the same URL is used
> > again and again, which is likely to be common for many small devices
> (since
> > they only have a small number of resources and devices in a local 6lowpan
> > network are likely to talk to each other a lot). In that case, you could
> do
> > the following:
> >
> > - Use the full URL on first use
> > - The server returns a hint ("URL /home/lights/kitchen this is my URL
> #5"),
> > as an 8 or 16-bit integer (say), in the response; popular URLs get the
> > short codes
> > - On subsequent requests, the client uses the 8 or 16-bit URL
> > - If the client forgets the binding or doesn't care to remember it, it
> uses
> > the regular URL. The usual caching mechanisms can be applied if you want
> to
> > get fancy, but that's an implementation matter.
> > - If the server forgets the table, it returns an error, and the request
> > gets repeated with the usual URL.
> >
> > I think the problem here is fundamentally different from, say, SIP header
> > compression since the community of nodes is likely to be much more
> closed,
> > i.e., with high rates of locality.
> >
> > That's probably about as efficient as you can make it while not requiring
> > generic dictionaries. Like Carsten, I'm not convinced it's worth it, but
> at
> > least it gets you more than 20-30%.
> >
> > This is vaguely similar to the bit.ly-style services that are popular in
> > Facebook and Twitter.
> >
> > Henning
> >
> > On Jun 12, 2010, at 8:02 AM, Carsten Bormann wrote:
> >
> >> On Jun 12, 2010, at 01:26, Carsten Bormann wrote:
> >>
> >>> Huffman
> >>
> >> Since a discussion about compression is useless without numbers, I did a
> >> couple little experiments.
> >> These experiments, of course, depend on the corpus of URIs that are
> >> submitted to compression.
> >> Nobody knows how CoAP url-paths are going to look like in the future, so
> >> there is no "good" corpus I could have been using.
> >> Lacking one, I just grabbed a random access.log from a web server and
> >> used the referer links.
> >> (These are relatively long URIs, and are dominated by searches, so take
> >> the following numbers with a large grain of salt -- real world CoAP
> >> numbers will be worse.)
> >>
> >> First, I determined the lower bound achievable by Huffman-compressing
> >> this corpus with a single static table *optimized for this corpus*.  In
> >> other words, any real compression ratio with a static table will be
> worse
> >> than that because of the mismatch between the corpus we use for deriving
> >> the static table and whatever turns out to be the real world.  (Also,
> the
> >> padding to full bytes further reduces efficiency for shorter URIs.)
> >>
> >> Anyway, the number:
> >>
> >> uncompressed: 66600, compressed: 46512, ratio: 0.698378378378378
> >>
> >> So the best case we can possibly hope out of using any of the base64
> >> tricks etc. (which are essentially just non-optimal Huffman schemes) is
> ~
> >> 30 % reduction.
> >>
> >> As I didn't consider bit-wise Huffman coding very realistic for
> >> constrained devices, I also did a nibble-wise (16-ary) Huffman.  Again
> >> the static table was optimized for the corpus I have.
> >>
> >> uncompressed: 66600, compressed: 50791, ratio: 0.762627627627628
> >>
> >> Not much worse, and much simpler code, as there are only sizes 4, 8, and
> >> 12.
> >> Still, I'm not thrilled.
> >>
> >> For comparison, I also did the RFC 1951 (Deflate *without a header*)
> >> case:
> >>
> >> uncompressed: 66600, compressed: 57085, ratio: 0.857132132132132
> >>
> >> (I didn't try adding a static dictionary, because I have absolutely no
> >> idea what we would put there; if you want to suggest one, I'll redo that
> >> number; I can also rerun any corpus you have.)
> >> Even with the long URIs from my unrealistic corpus, the gains are much
> >> worse than Huffman, as I expected.
> >>
> >> My verdict on the optimization opportunity "URI compression": Let's not
> >> go there; absolutely not worth it.
> >>
> >> Gruesse, Carsten
> >>
> >> _______________________________________________
> >> core mailing list
> >> core@ietf.org
> >> https://www.ietf.org/mailman/listinfo/core
> >>
> >
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>
>
>
>
>
>
> *********************************************DISCLAIMER*********************************************
> The email is subject to Disclaimer as per -
> http://www.hsc.com/tabid/91/Default.aspx#emaildisclaimer
>
>
>


-- 
Arjun Roychowdhury

--00c09f8e5fb414e41d0489120109
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

What is the final compression goal here? One of nice things about an HTTP u=
rl is that it is generally understandable and indicates the target resource=
 correctly. This entire url shortening services add complexity, single poin=
t of failures as well as increase response latency (due to redirects, in th=
e case the destination server is not the one maintaining the map of short U=
RIs to full URIs).=A0<div>

<br></div><div>regds</div><div>arjun</div><div><br><br><div class=3D"gmail_=
quote">On Sat, Jun 12, 2010 at 3:22 PM, <a href=3D"mailto:zach@sensinode.co=
m">zach@sensinode.com</a> <span dir=3D"ltr">&lt;<a href=3D"mailto:zach@sens=
inode.com">zach@sensinode.com</a>&gt;</span> wrote:<br>

<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex;">+1 - I like that Henning.<br>
<br>
In addition, a server could let clients know about its popular URLs a<br>
priori in its /.well-known/resources links as alt=3D or short=3D. Instead o=
f<br>
thinking of this as a special integer code, we can do this exactly like a<b=
r>
short URL service. The server just assigns multiple URLs to a resource, one=
<br>
happens to be /5 in addition to /sensors/temp/indoor/centigrade. Or as<br>
Carsten suggested, it could have a special form like /!5.<br>
<br>
But it wouldn&#39;t hurt to do 7-bit ASCII packing on URLs anyways? That is=
 15%<br>
savings by just bit shifting. I agree that more sophisticated algorithms<br=
>
probably aren&#39;t worth it.<br>
<font color=3D"#888888"><br>
Zach<br>
</font><div><div></div><div class=3D"h5"><br>
On Sat, 12 Jun 2010 08:36:14 -0400, Henning Schulzrinne<br>
&lt;<a href=3D"mailto:hgs@cs.columbia.edu">hgs@cs.columbia.edu</a>&gt; wrot=
e:<br>
&gt; One possibility is to optimize for the case where the same URL is used=
<br>
&gt; again and again, which is likely to be common for many small devices<b=
r>
(since<br>
&gt; they only have a small number of resources and devices in a local 6low=
pan<br>
&gt; network are likely to talk to each other a lot). In that case, you cou=
ld<br>
do<br>
&gt; the following:<br>
&gt;<br>
&gt; - Use the full URL on first use<br>
&gt; - The server returns a hint (&quot;URL /home/lights/kitchen this is my=
 URL<br>
#5&quot;),<br>
&gt; as an 8 or 16-bit integer (say), in the response; popular URLs get the=
<br>
&gt; short codes<br>
&gt; - On subsequent requests, the client uses the 8 or 16-bit URL<br>
&gt; - If the client forgets the binding or doesn&#39;t care to remember it=
, it<br>
uses<br>
&gt; the regular URL. The usual caching mechanisms can be applied if you wa=
nt<br>
to<br>
&gt; get fancy, but that&#39;s an implementation matter.<br>
&gt; - If the server forgets the table, it returns an error, and the reques=
t<br>
&gt; gets repeated with the usual URL.<br>
&gt;<br>
&gt; I think the problem here is fundamentally different from, say, SIP hea=
der<br>
&gt; compression since the community of nodes is likely to be much more<br>
closed,<br>
&gt; i.e., with high rates of locality.<br>
&gt;<br>
&gt; That&#39;s probably about as efficient as you can make it while not re=
quiring<br>
&gt; generic dictionaries. Like Carsten, I&#39;m not convinced it&#39;s wor=
th it, but<br>
at<br>
&gt; least it gets you more than 20-30%.<br>
&gt;<br>
&gt; This is vaguely similar to the bit.ly-style services that are popular =
in<br>
&gt; Facebook and Twitter.<br>
&gt;<br>
&gt; Henning<br>
&gt;<br>
&gt; On Jun 12, 2010, at 8:02 AM, Carsten Bormann wrote:<br>
&gt;<br>
&gt;&gt; On Jun 12, 2010, at 01:26, Carsten Bormann wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; Huffman<br>
&gt;&gt;<br>
&gt;&gt; Since a discussion about compression is useless without numbers, I=
 did a<br>
&gt;&gt; couple little experiments.<br>
&gt;&gt; These experiments, of course, depend on the corpus of URIs that ar=
e<br>
&gt;&gt; submitted to compression.<br>
&gt;&gt; Nobody knows how CoAP url-paths are going to look like in the futu=
re, so<br>
&gt;&gt; there is no &quot;good&quot; corpus I could have been using.<br>
&gt;&gt; Lacking one, I just grabbed a random access.log from a web server =
and<br>
&gt;&gt; used the referer links.<br>
&gt;&gt; (These are relatively long URIs, and are dominated by searches, so=
 take<br>
&gt;&gt; the following numbers with a large grain of salt -- real world CoA=
P<br>
&gt;&gt; numbers will be worse.)<br>
&gt;&gt;<br>
&gt;&gt; First, I determined the lower bound achievable by Huffman-compress=
ing<br>
&gt;&gt; this corpus with a single static table *optimized for this corpus*=
. =A0In<br>
&gt;&gt; other words, any real compression ratio with a static table will b=
e<br>
worse<br>
&gt;&gt; than that because of the mismatch between the corpus we use for de=
riving<br>
&gt;&gt; the static table and whatever turns out to be the real world. =A0(=
Also,<br>
the<br>
&gt;&gt; padding to full bytes further reduces efficiency for shorter URIs.=
)<br>
&gt;&gt;<br>
&gt;&gt; Anyway, the number:<br>
&gt;&gt;<br>
&gt;&gt; uncompressed: 66600, compressed: 46512, ratio: 0.698378378378378<b=
r>
&gt;&gt;<br>
&gt;&gt; So the best case we can possibly hope out of using any of the base=
64<br>
&gt;&gt; tricks etc. (which are essentially just non-optimal Huffman scheme=
s) is<br>
~<br>
&gt;&gt; 30 % reduction.<br>
&gt;&gt;<br>
&gt;&gt; As I didn&#39;t consider bit-wise Huffman coding very realistic fo=
r<br>
&gt;&gt; constrained devices, I also did a nibble-wise (16-ary) Huffman. =
=A0Again<br>
&gt;&gt; the static table was optimized for the corpus I have.<br>
&gt;&gt;<br>
&gt;&gt; uncompressed: 66600, compressed: 50791, ratio: 0.762627627627628<b=
r>
&gt;&gt;<br>
&gt;&gt; Not much worse, and much simpler code, as there are only sizes 4, =
8, and<br>
&gt;&gt; 12.<br>
&gt;&gt; Still, I&#39;m not thrilled.<br>
&gt;&gt;<br>
&gt;&gt; For comparison, I also did the RFC 1951 (Deflate *without a header=
*)<br>
&gt;&gt; case:<br>
&gt;&gt;<br>
&gt;&gt; uncompressed: 66600, compressed: 57085, ratio: 0.857132132132132<b=
r>
&gt;&gt;<br>
&gt;&gt; (I didn&#39;t try adding a static dictionary, because I have absol=
utely no<br>
&gt;&gt; idea what we would put there; if you want to suggest one, I&#39;ll=
 redo that<br>
&gt;&gt; number; I can also rerun any corpus you have.)<br>
&gt;&gt; Even with the long URIs from my unrealistic corpus, the gains are =
much<br>
&gt;&gt; worse than Huffman, as I expected.<br>
&gt;&gt;<br>
&gt;&gt; My verdict on the optimization opportunity &quot;URI compression&q=
uot;: Let&#39;s not<br>
&gt;&gt; go there; absolutely not worth it.<br>
&gt;&gt;<br>
&gt;&gt; Gruesse, Carsten<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; core mailing list<br>
&gt;&gt; <a href=3D"mailto:core@ietf.org">core@ietf.org</a><br>
&gt;&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/core" target=3D"_=
blank">https://www.ietf.org/mailman/listinfo/core</a><br>
&gt;&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; core mailing list<br>
&gt; <a href=3D"mailto:core@ietf.org">core@ietf.org</a><br>
&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/core" target=3D"_blan=
k">https://www.ietf.org/mailman/listinfo/core</a><br>
_______________________________________________<br>
core mailing list<br>
<a href=3D"mailto:core@ietf.org">core@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/core" target=3D"_blank">ht=
tps://www.ietf.org/mailman/listinfo/core</a><br>
<br>
<br>
<br>
<br>
<br>
<br>
*********************************************DISCLAIMER********************=
*************************<br>
The email is subject to Disclaimer as per - <a href=3D"http://www.hsc.com/t=
abid/91/Default.aspx#emaildisclaimer" target=3D"_blank">http://www.hsc.com/=
tabid/91/Default.aspx#emaildisclaimer</a><br>
<br>
<br>
</div></div></blockquote></div><br><br clear=3D"all"><br>-- <br>Arjun Roych=
owdhury<br><br>
</div>

--00c09f8e5fb414e41d0489120109--

From vipul.x.gupta@oracle.com  Tue Jun 15 12:37:45 2010
Return-Path: <vipul.x.gupta@oracle.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1A1C13A6972 for <core@core3.amsl.com>; Tue, 15 Jun 2010 12:37:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.298
X-Spam-Level: 
X-Spam-Status: No, score=-5.298 tagged_above=-999 required=5 tests=[AWL=1.300,  BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, UNPARSEABLE_RELAY=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MmgECnDCQ7-f for <core@core3.amsl.com>; Tue, 15 Jun 2010 12:37:42 -0700 (PDT)
Received: from rcsinet10.oracle.com (rcsinet10.oracle.com [148.87.113.121]) by core3.amsl.com (Postfix) with ESMTP id B09103A68DA for <core@ietf.org>; Tue, 15 Jun 2010 12:37:42 -0700 (PDT)
Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by rcsinet10.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o5FJbiMq029527 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <core@ietf.org>; Tue, 15 Jun 2010 19:37:46 GMT
Received: from acsmt355.oracle.com (acsmt355.oracle.com [141.146.40.155]) by acsinet15.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o5FItZxG025812 for <core@ietf.org>; Tue, 15 Jun 2010 19:37:42 GMT
Received: from abhmt002.oracle.com by acsmt354.oracle.com with ESMTP id 327891491276630594; Tue, 15 Jun 2010 12:36:34 -0700
Received: from dhcp-umpk16-75-99.sfbay.sun.com (/129.146.75.99) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 15 Jun 2010 12:36:33 -0700
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Vipul Gupta <vipul.x.gupta@oracle.com>
In-Reply-To: <8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com>
Date: Tue, 15 Jun 2010 12:36:34 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <86CAC587-56C5-417E-9AEE-6BCA4A94EEBA@oracle.com>
References: <mailman.53.1275678008.15064.core@ietf.org> <8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com>
To: core@ietf.org
X-Mailer: Apple Mail (2.1078)
X-Auth-Type: Internal IP
X-Source-IP: acsinet15.oracle.com [141.146.126.227]
X-CT-RefId: str=0001.0A090208.4C17D68A.0172:SCFMA922111,ss=1,fgs=0
Cc: Vipul Gupta <vipul.x.gupta@oracle.com>
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 15 Jun 2010 19:37:45 -0000

My previous comment on CBC was incorrect. I had forgotten that DTLS uses
the altered definition of GenericBlockCipher from TLS 1.1 which adds=20
explicit initialization vectors so the chaining only applies to blocks
within a single datagram and not across datagrams.

However, Robert makes a good point why counter mode might still be
preferable to CBC (e.g. CCM/GCM only require AES encode op
whereas CBC requires both encode and decode ops).

vipul
--
http://labs.oracle.com/people/mybio.php?c=3D50

On Jun 14, 2010, at 4:43 PM, Vipul Gupta wrote:

> The three levels of security outlined here seem like a good place=20
> to start although the "Shared Key" option is unlikely to scale=20
> beyond small deployments.
>=20
> I'm also concerned about the choice of "CBC" mode which would=20
> unnecessarily extend the "in-sequence, loss-less delivery"=20
> requirement that DTLS already has for the handshake messages=20
> to data packets. Cipher-block chaining will preclude decryption
> of packet (n+1) until packet n has been received and decrypted.=20
> A counter-mode encryption algorithm might be a better fit for UDP.
>=20
> vipul
> --
> http://labs.oracle.com/people/mybio.php?c=3D509
>=20
>> Date: Fri, 4 Jun 2010 11:47:47 -0600
>> From: Cullen Jennings <fluffy@cisco.com>
>> Subject: [core] Security design
>>=20
>> I've asked several people what they thought we should do with =
security and received a wide variety of answers. I'm going to try and =
propose something  here that I think *might* be acceptable to most =
people. I'm not arguing for or against this, I'm just trying to propose =
a straw man that helps us get to a decision sooner.=20
>>=20
>> The proposals is that COAP define three levels of security which are:
>>=20
>> 0) COAP baseline. No cryptographic security. Runs over UDP without =
DTLS.=20
>>=20
>> 1) COAP Shared Key. The requires implementation (but not use) of DTLS =
with symmetric keys but does not require any asymmetric cryptography.=20
>>=20
>> 2) COAP Certificates. This requires implementation of the stuff in 1 =
plus DTLS with some defined asymmetric key cryptography and =
certificates.=20
>>=20
>> A given produce could choose to be compliant with one of these three =
levels. COAP would not forbid extensions that either allowed it to cary =
some sort of signed objects so it could get object security later if =
some application wanted that. COAP would explicitly allow extensions =
that bound it to a different session mode security than DTLS so, for =
example, if someone or some group wanted to make a binding to IPsec with =
or without IKEv2, that would be fine.=20
>>=20
>> For both "COAP Shared Key" and "COAP Certificate", we would need to =
mandate one or more mandatory to implement DTLS profiles. I would want =
to get input and exact text from the DTLS/TLS authors and WG but I'm =
imagining something like:
>>=20
>> COAP "Shared Key" requires implementation of DTLS with =
TLS_PSK_WITH_AES_128_CBC_SHA
>>=20
>> Probably the biggest issue for the certificate mode is the "never too =
old to not do again" ECC vs RSA debate. I'd really like to separate that =
out as a separate issue and get agreement around the big picture before =
we have that particular debate.=20
>>=20
>> COAP "Certificates" requires implementation of DTLS with X.509 =
certificates and TLS_XXX_WITH_AES_128_CBC_SHA where we decide on either =
RSA or ECDH_ECDSA as the value of XXX.=20
>>=20
>> I forgot to ask people about what hash they liked so I randomly used =
SHA instead of SHA256 but it would be nice to get feedback from the WG =
on which hash should be mandatory to implement. I would expect some =
significant push back from the Security area if we selected SHA1 as the =
only mandatory to implement hash for a brand new protocol.=20
>>=20
>> Could something like this work? Thoughts on what would need to =
change? Could people live with the idea of having three levels sort of =
like WiFi security? ALternative proposal? Fine tuning this proposal?=20
>>=20
>> Thanks, Cullen
>>=20
>>=20
>>=20
>> ------------------------------
>>=20
>> Message: 4
>> Date: Fri, 4 Jun 2010 12:33:53 -0600
>> From: Cullen Jennings <fluffy@cisco.com>
>> Subject: [core] SUB/NOT - the sea level view
>> To: core <core@ietf.org>
>> Message-ID: <C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com>
>> Content-Type: text/plain; charset=3D"us-ascii"
>>=20
>>=20
>> Over the year I have had the pleasure of being in many conversations =
about what a stateless protocol is, what REST is, HTTP, polling, =
asynchronous notifications, web based RPC, and blowing soap bubbles.  =
Though interesting, I have a hard time concretely explaining it to =
anyone and the oxygen always seems a bit thin at the 10,000 foot view. I =
do however have a very easy time understanding a very low level view of =
the systems where there are  some boxes and arrow diagrams of  message =
flow and roughly the semantics of the data they cary. Let me try and =
draw my current understanding of how this is going to work.
>>=20
>> We have two nodes - I will call them Source and Sink.=20
>>=20
>>=20
>>  Source         Sink      =20
>>    |    SUB      |        =20
>>    |<------------+        =20
>>    |             |        =20
>>    |    ACK      |        =20
>>    +------------>|        =20
>>    |             |        =20
>>   ... Time Passes ...         =20
>>    |             |        =20
>>    |   NOTIF     |        =20
>>    +------------>|         =20
>>    |             |        =20
>>    |   ACK       |        =20
>>    |<------------+         =20
>>    |             |        =20
>>=20
>>=20
>> Sink starts by sending a message I will label "SUB" to the Source. =
The SUB messages says which resource the Sink would like to be informed =
about when the resource changes. The Source sends a OK or No there is a =
problem in some sort of ACK message to the SUB. Eventually the resource =
changes and Source sends an message I called "NOTIFY" to the Sink. This =
tells the Sink which resource changed and the current value of it.The =
Sink sends some sort of acknowledgment. I find the terms client and =
server very confusing when discussing SUB/NOT so I'm not using those =
terms.=20
>>=20
>> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, =
or plain old polling, XMPP, SMTP, just about anything. As far as I can =
tell, pretty much everything people have been proposing fit into this =
model.  So first, I'd like to get an idea if people think I am in left =
field and there is a very different message flow to consider. Second we =
need to figure out some of the stuff I left out of the picture above =
such as=20
>>=20
>> a) how to cancel a subscription=20
>>=20
>> b) how to get the initial value of the subscription around the time =
you subscribe=20
>>=20
>> c) what sort of filtering is available to limit the types of resource =
changes that result in a NOTIFY=20
>>=20
>> d) lifespan of subscription how to refresh a subscription
>>=20
>> e) caching and interaction with sleeping device=20
>>=20
>> We have to be clear on how this maps to HTTP and possibly other =
protocols. One of the problems with HTTP is it has so many ways of doing =
asynchronous notifications that it hard to decide what to map for. I =
would be very conformable if we clearly new how to map it to HiBy and to =
direct HTTP polling. It would be nice to have  back of the cocktail =
napkin belief that it probably could be mapped to SMNP, XMPP, and the =
other HTTP approaches. My guess is that the mapping to other protocols =
is going to turn out to be easy.=20
>>=20
>>=20
>>=20
>>=20
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL: =
<http://www.ietf.org/mail-archive/web/core/attachments/20100604/2481295c/a=
ttachment.htm>
>>=20
>> ------------------------------
>>=20
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>=20
>>=20
>> End of core Digest, Vol 5, Issue 13
>> ***********************************
>=20


From matthieu.vial@fr.non.schneider-electric.com  Wed Jun 16 01:12:31 2010
Return-Path: <matthieu.vial@fr.non.schneider-electric.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9BE243A6971; Wed, 16 Jun 2010 01:12:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.565
X-Spam-Level: *
X-Spam-Status: No, score=1.565 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HTML_MESSAGE=0.001, J_CHICKENPOX_42=0.6, RCVD_IN_DNSWL_LOW=-1, SARE_GIF_ATTACH=1.42, TVD_FW_GRAPHIC_NAME_MID=0.543]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ixWFCzs95sxb; Wed, 16 Jun 2010 01:12:30 -0700 (PDT)
Received: from mailX02.eud.schneider-electric.com (mailx02.eud.schneider-electric.com [205.167.7.38]) by core3.amsl.com (Postfix) with ESMTP id 8FA223A67B1; Wed, 16 Jun 2010 01:12:29 -0700 (PDT)
Received: from ATEUI01.schneider-electric.com ([10.198.14.9]) by mailX02.eud.schneider-electric.com with ESMTP id 2010061610043534-9406 ; Wed, 16 Jun 2010 10:04:35 +0200 
In-Reply-To: <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com>
To: Brian Frank <brian.tridium@gmail.com>
X-Mailer: Lotus Notes Release 6.5.6 March 06, 2007
Message-ID: <OFC1BF31BE.F6F8D30E-ONC1257744.002693E8-C1257744.002D1625@schneider-electric.com>
From: matthieu.vial@fr.non.schneider-electric.com
Date: Wed, 16 Jun 2010 10:12:27 +0200
MIME-Version: 1.0
X-MIMETrack: Serialize by Router on ATEUI01.Schneider-Electric.com/T/SVR/Schneider at 16/06/2010 10:12:32, Itemize by SMTP Server on AXEU2OUT.schneider-electric.com/X/SVR/SEIxtra at 16/06/2010 10:04:35, Serialize by Router on AXEU2OUT.schneider-electric.com/X/SVR/SEIxtra at 16/06/2010 10:04:37
Content-type: multipart/related;  Boundary="0__=4EBBFDD7DFB515788f9e8a93df938690918c4EBBFDD7DFB51578"
Cc: core issue tracker <trac@tools.ietf.org>, core-bounces@ietf.org, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 08:12:32 -0000

--0__=4EBBFDD7DFB515788f9e8a93df938690918c4EBBFDD7DFB51578
Content-type: multipart/alternative; 
	Boundary="1__=4EBBFDD7DFB515788f9e8a93df938690918c4EBBFDD7DFB51578"

--1__=4EBBFDD7DFB515788f9e8a93df938690918c4EBBFDD7DFB51578
Content-transfer-encoding: quoted-printable
Content-type: text/plain; charset=ISO-8859-1


Hi all,

>My vote is to not bother with URI compression. =A0If you want to use s=
hort
compact URIs, then just define your URI space that way. =A0There is not=
hing
to say that URIs have to be human friendly. =A0I suspect that most 6LoW=
PAN
devices have less than 2^16 addressable resources, in which case you ca=
n
use a four byte hex number to create a simple URI space for all your
resources. =A0Yes it might be nice to shrink that a byte or two, but is=
 it
worth the added complexity?

I also agree that a well defined URI space with for example 4 char
names/digits is better than a complex encoding of long paths.
Long names are only useful for humans and CoAP is supposed to be a M2M
procotol.

But what about
coap://[2001:1ba3::ff:fe:0:1]:61617/1234
or
coap://[3ffe:b80:3:1a91:224:e8ff:fe92:5dcf]/1234

The path is short but the authority is verbose.
This aboslute form is still required by a proxy and is quite complex to=

parse and to shrink.

So the questions are:
Is it possible to encode the authority part in a dedicated binary optio=
n in
CoAP ?
Could we define or reuse prefix contexts in a way ?
What are the supported parts of an URI ? Scheme, user info, host, port =
?
What is the minimum length for URIs that a CoAP device must support ?
Currently the only available value in the draft is 32768 if I'm right.

Regards,
Matthieu





                                                                       =
    
             Brian Frank                                               =
    
             <brian.tridium@gm                                         =
    
             ail.com>                                                  =
  A 
             Envoy=E9 par :              Carsten Bormann <cabo@tzi.org>=
      
             core-bounces@ietf                                         =
 cc 
             .org                      core issue tracker              =
    
                                       <trac@tools.ietf.org>, core     =
    
                                       <core@ietf.org>                 =
    
             13/06/2010 04:02                                        Ob=
jet 
                                       Re: [core] #4: URI Encoding     =
    
                                                                       =
    
                                                                       =
    
                                                                       =
    
                                                                       =
    
                                                                       =
    
                                                                       =
    




My vote is to not bother with URI compression. =A0If you want to use sh=
ort
compact URIs, then just define your URI space that way. =A0There is not=
hing
to say that URIs have to be human friendly. =A0I suspect that most 6LoW=
PAN
devices have less than 2^16 addressable resources, in which case you ca=
n
use a four byte hex number to create a simple URI space for all your
resources. =A0Yes it might be nice to shrink that a byte or two, but is=
 it
worth the added complexity?


On Sat, Jun 12, 2010 at 4:23 PM, Carsten Bormann <cabo@tzi.org> wrote:
      On Jun 12, 2010, at 21:22, zach@sensinode.com wrote:

      > That is 15% savings by just bit shifting.

      It's 12.5 % best case (if you have an exact multiple of 8
      characters).
      For /.well-known/resources, the saving is two bytes (i.e., 19 ins=
tead
      of 21 as we are eliding the initial slash), or 9.5 %.
      (The 16-ary Huffman code I've cooked up happens to save 6 bytes o=
r
      28.5 % in this case. =A0Much better, but still barely worth it.)

      Agreeing on /!r or some such would reduce the URI to a grand tota=
l of
      two bytes, or save 19 bytes =3D 90.5 % :-)
      Heck, just calling it /.well-known/rsrcs has twice the benefit of=

      7-bit crunching...

      Just to cite (and maybe learn from) some precedence: When SIP was=

      defined, some of its header fields were assigned alternative,
      single-character "compact form" names.
      Most SIP implementations send long form names, not compact forms;=

      this has led to a number of interoperability problems when some
      implementations did use the compact form and then other
      implementations didn't include full(ly debugged) support for the
      compact forms. =A0(IOW, aliasing =3D having the same feature unde=
r two
      names can cause problems.)
      I haven't seen compact forms in the wild (but then I don't spend =
much
      time debugging SIP flows), but I'm sure Henning can fill us in on=
 how
      much these are liked these days.

      Gruesse, Carsten

      _______________________________________________
      core mailing list
      core@ietf.org
      https://www.ietf.org/mailman/listinfo/core


______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
______________________________________________________________________
_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core
=

--1__=4EBBFDD7DFB515788f9e8a93df938690918c4EBBFDD7DFB51578
Content-transfer-encoding: quoted-printable
Content-type: text/html; charset=ISO-8859-1
Content-Disposition: inline

<html><body>
<p><font size=3D"4">Hi all,</font><br>
<br>
<font size=3D"4">&gt;My vote is to not bother with URI compression. =A0=
If you want to use short compact URIs, then just define your URI space =
that way. =A0There is nothing to say that URIs have to be human friendl=
y. =A0I suspect that most 6LoWPAN devices have less than 2^16 addressab=
le resources, in which case you can use a four byte hex number to creat=
e a simple URI space for all your resources. =A0Yes it might be nice to=
 shrink that a byte or two, but is it worth the added complexity?=A0</f=
ont><br>
<br>
I also agree that a well defined URI space with for example 4 char name=
s/digits is better than a complex encoding of long paths. <br>
Long names are only useful for humans and CoAP is supposed to be a M2M =
procotol.<br>
<br>
But what about<br>
coap://[2001:1ba3::ff:fe:0:1]:61617/1234<br>
or<br>
coap://[3ffe:b80:3:1a91:224:e8ff:fe92:5dcf]/1234<br>
<br>
The path is short but the authority is verbose.<br>
This aboslute form is still required by a proxy and is quite complex to=
 parse and to shrink.<br>
<br>
So the questions are:<br>
Is it possible to encode the authority part in a dedicated binary optio=
n in CoAP ?<br>
Could we define or reuse prefix contexts in a way ?<br>
What are the supported parts of an URI ? Scheme, user info, host, port =
?<br>
What is the minimum length for URIs that a CoAP device must support ? C=
urrently the only available value in the draft is 32768 if I'm right.<b=
r>
<br>
Regards,<br>
Matthieu<br>
<br>
<img width=3D"16" height=3D"16" src=3D"cid:1__=3D4EBBFDD7DFB515788@schn=
eider-electric.com" border=3D"0" alt=3D"Inactive hide details for Brian=
 Frank &lt;brian.tridium@gmail.com&gt;">Brian Frank &lt;brian.tridium@g=
mail.com&gt;<br>
<br>
<br>
<br>
<br>

<table width=3D"100%" border=3D"0" cellspacing=3D"0" cellpadding=3D"0">=

<tr valign=3D"top"><td style=3D"background-image:url(cid:2__=3D4EBBFDD7=
DFB515788@schneider-electric.com); background-repeat: no-repeat; " widt=
h=3D"40%">
<ul>
<ul>
<ul>
<ul><b><font size=3D"2">Brian Frank &lt;brian.tridium@gmail.com&gt;</fo=
nt></b><font size=3D"2"> </font><br>
<font size=3D"2">Envoy=E9 par : core-bounces@ietf.org</font>
<p><font size=3D"2">13/06/2010 04:02</font></ul>
</ul>
</ul>
</ul>
</td><td width=3D"60%">
<table width=3D"100%" border=3D"0" cellspacing=3D"0" cellpadding=3D"0">=

<tr valign=3D"top"><td width=3D"1%"><img width=3D"58" height=3D"1" src=3D=
"cid:3__=3D4EBBFDD7DFB515788@schneider-electric.com" border=3D"0" alt=3D=
""><br>
<div align=3D"right"><font size=3D"2">A</font></div></td><td width=3D"1=
00%"><img width=3D"1" height=3D"1" src=3D"cid:3__=3D4EBBFDD7DFB515788@s=
chneider-electric.com" border=3D"0" alt=3D""><br>
<font size=3D"2">Carsten Bormann &lt;cabo@tzi.org&gt;</font></td></tr>

<tr valign=3D"top"><td width=3D"1%"><img width=3D"58" height=3D"1" src=3D=
"cid:3__=3D4EBBFDD7DFB515788@schneider-electric.com" border=3D"0" alt=3D=
""><br>
<div align=3D"right"><font size=3D"2">cc</font></div></td><td width=3D"=
100%"><img width=3D"1" height=3D"1" src=3D"cid:3__=3D4EBBFDD7DFB515788@=
schneider-electric.com" border=3D"0" alt=3D""><br>
<font size=3D"2">core issue tracker &lt;trac@tools.ietf.org&gt;, core &=
lt;core@ietf.org&gt;</font></td></tr>

<tr valign=3D"top"><td width=3D"1%"><img width=3D"58" height=3D"1" src=3D=
"cid:3__=3D4EBBFDD7DFB515788@schneider-electric.com" border=3D"0" alt=3D=
""><br>
<div align=3D"right"><font size=3D"2">Objet</font></div></td><td width=3D=
"100%"><img width=3D"1" height=3D"1" src=3D"cid:3__=3D4EBBFDD7DFB515788=
@schneider-electric.com" border=3D"0" alt=3D""><br>
<font size=3D"2">Re: [core] #4: URI Encoding</font></td></tr>
</table>

<table border=3D"0" cellspacing=3D"0" cellpadding=3D"0">
<tr valign=3D"top"><td width=3D"58"><img width=3D"1" height=3D"1" src=3D=
"cid:3__=3D4EBBFDD7DFB515788@schneider-electric.com" border=3D"0" alt=3D=
""></td><td width=3D"336"><img width=3D"1" height=3D"1" src=3D"cid:3__=3D=
4EBBFDD7DFB515788@schneider-electric.com" border=3D"0" alt=3D""></td></=
tr>
</table>
</td></tr>
</table>
<br>
<font size=3D"4">My vote is to not bother with URI compression. =A0If y=
ou want to use short compact URIs, then just define your URI space that=
 way. =A0There is nothing to say that URIs have to be human friendly. =A0=
I suspect that most 6LoWPAN devices have less than 2^16 addressable res=
ources, in which case you can use a four byte hex number to create a si=
mple URI space for all your resources. =A0Yes it might be nice to shrin=
k that a byte or two, but is it worth the added complexity?=A0</font><b=
r>
<font size=3D"4"><br>
</font><br>
<font size=3D"4">On Sat, Jun 12, 2010 at 4:23 PM, Carsten Bormann &lt;<=
/font><a href=3D"mailto:cabo@tzi.org"><u><font size=3D"4" color=3D"#000=
0FF">cabo@tzi.org</font></u></a><font size=3D"4">&gt; wrote:</font>
<ul>
<ul><font size=3D"4">On Jun 12, 2010, at 21:22, </font><a href=3D"mailt=
o:zach@sensinode.com"><u><font size=3D"4" color=3D"#0000FF">zach@sensin=
ode.com</font></u></a><font size=3D"4"> wrote:<br>
<br>
&gt; That is 15% savings by just bit shifting.<br>
</font><br>
<font size=3D"4">It's 12.5 % best case (if you have an exact multiple o=
f 8 characters).<br>
For /.well-known/resources, the saving is two bytes (i.e., 19 instead o=
f 21 as we are eliding the initial slash), or 9.5 %.<br>
(The 16-ary Huffman code I've cooked up happens to save 6 bytes or 28.5=
 % in this case. =A0Much better, but still barely worth it.)<br>
<br>
Agreeing on /!r or some such would reduce the URI to a grand total of t=
wo bytes, or save 19 bytes =3D 90.5 % :-)<br>
Heck, just calling it /.well-known/rsrcs has twice the benefit of 7-bit=
 crunching...<br>
<br>
Just to cite (and maybe learn from) some precedence: When SIP was defin=
ed, some of its header fields were assigned alternative, single-charact=
er &quot;compact form&quot; names.<br>
Most SIP implementations send long form names, not compact forms; this =
has led to a number of interoperability problems when some implementati=
ons did use the compact form and then other implementations didn't incl=
ude full(ly debugged) support for the compact forms. =A0(IOW, aliasing =
=3D having the same feature under two names can cause problems.)<br>
I haven't seen compact forms in the wild (but then I don't spend much t=
ime debugging SIP flows), but I'm sure Henning can fill us in on how mu=
ch these are liked these days.</font><br>
<font size=3D"4"><br>
Gruesse, Carsten<br>
<br>
_______________________________________________<br>
core mailing list</font><u><font size=3D"4" color=3D"#0000FF"><br>
</font></u><a href=3D"mailto:core@ietf.org"><u><font size=3D"4" color=3D=
"#0000FF">core@ietf.org</font></u></a><u><font size=3D"4" color=3D"#000=
0FF"><br>
</font></u><a href=3D"https://www.ietf.org/mailman/listinfo/core" targe=
t=3D"_blank"><u><font size=3D"4" color=3D"#0000FF">https://www.ietf.org=
/mailman/listinfo/core</font></u></a></ul>
</ul>
<br>
<font size=3D"4"><br>
______________________________________________________________________<=
br>
This email has been scanned by the MessageLabs Email Security System.<b=
r>
______________________________________________________________________<=
/font><tt>_______________________________________________<br>
core mailing list<br>
core@ietf.org<br>
</tt><tt><a href=3D"https://www.ietf.org/mailman/listinfo/core">https:/=
/www.ietf.org/mailman/listinfo/core</a></tt><tt><br>
</tt><br>
</body></html>=


--1__=4EBBFDD7DFB515788f9e8a93df938690918c4EBBFDD7DFB51578--


--0__=4EBBFDD7DFB515788f9e8a93df938690918c4EBBFDD7DFB51578
Content-type: image/gif; 
	name="graycol.gif"
Content-Disposition: inline; filename="graycol.gif"
Content-ID: <1__=4EBBFDD7DFB515788@schneider-electric.com>
Content-Transfer-Encoding: base64

R0lGODlhEAAQAKECAMzMzAAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIXlI+py+0PopwxUbpu
ZRfKZ2zgSJbmSRYAIf4fT3B0aW1pemVkIGJ5IFVsZWFkIFNtYXJ0U2F2ZXIhAAA7


--0__=4EBBFDD7DFB515788f9e8a93df938690918c4EBBFDD7DFB51578
Content-type: image/gif; 
	name="pic25508.gif"
Content-Disposition: inline; filename="pic25508.gif"
Content-ID: <2__=4EBBFDD7DFB515788@schneider-electric.com>
Content-Transfer-Encoding: base64

R0lGODlhWABDALP/AAAAAK04Qf79/o+Gm7WuwlNObwoJFCsoSMDAwGFsmIuezf///wAAAAAAAAAA
AAAAACH5BAEAAAgALAAAAABYAEMAQAT/EMlJq704682770RiFMRinqggEUNSHIchG0BCfHhOjAuh
EDeUqTASLCbBhQrhG7xis2j0lssNDopE4jfIJhDaggI8YB1sZeZgLVA9YVCpnGagVjV171aRVrYR
RghXcAGFhoUETwYxcXNyADJ3GlcSKGAwLwllVC1vjIUHBWsFilKQdI8GA5IcpApeJQt8L09lmgkH
LZikoU5wjqcyAMMFrJIDPAKvCFletKSev1HBw8KrxtjZ2tvc3d5VyKtCKW3jfz4uMKmq3xu4N0nK
BVoJQmx2LGVOmrqNjjJf2hHAQo/eDwJGTKhQMcgQEEAnEjFS98+RnW3smGkZU6ncCWav/4wYOnAI
TihRL/4FEwbp28BXMMcoscQCVxlepL4IGDSCyJyVQOu0o7CjmLN50OZlqWmyFy5/6yBBuji0AxFR
M00oQAqNIstqI6qKHUsWRAEAvagsmfUEAImyxgbmUpJk3IklNUtJOUAVLoUr1+wqDGTE4zk+T6FG
uQb3SizBCwatiiUgCBN8vrz+zFjVyQ8FWkOlg4NQiZMB5QS8QO3mpOaKnL0Z2EKvNMSILEThKhCg
zMKPVxYJh23qm9KNW7pArPynMqZDiErsTMqI+LRi3QAgkFUbXpuFKhSYZALd0O5RKa2z9EYKBbpb
qxIKsjUPRgD7I2XYV6wyrOw92ykExP8NW4URhknC5dKGE4v4NENQj2jXjmfNgOZDaXb5glRmXQ33
YEWQYNcZFnrYcIQLNzyTFDQNkXIff0ExVlY4srziQk43inZgL4rwxxINMvpFFAz1KOODHiu+4aEw
NEjFl5B3JIKWKF3k6I9bfUGp5ZZcdunll5IA4cuHvQQJ5gcsoCWOOUwgltIwAKRxJgbIkJAQZEq0
2YliZnpZZ4BH3CnYOXldOUOfQoYDqF1LFHbXCrO8xmRsfoXDXJ6ChjCAH3QlhJcT6VWE6FCkfCco
CgrMFsROrIEX3o2whVjWDjoJccN3LdggSGXLCdLEgHr1lyU3O3QxhgohNKXJCWv8JQr/PDdaqd6w
2rj1inLiGeiCJoDspAoQlYE6QWLSECehcWIYxIQES6zhbn1iImTHEQyqJ4eIxJJoUBc+3CbBuwZE
V5cJPPkIjFDdeEabQbd6WgICTxiiz0f5dBKquXF6k4senwEhYGnKEFJeGrxUZy8dB8gmAXI/sPvH
ESfCwVt5hTgYiqQqtdRNHQIU1PJ33ZqmzgE90OwLaoJcnMop1WiMmgkPHQRIrwgFuNV90A3doNKT
mrKIN07AnGcI9BQjhCBN4RfA1qIZnMqorJCogKfGQnxSCDilTVIA0yl5ciTovgLuBDKFUDE9aQcw
9SA+rjSNf9/M1gxrj6VwDTS0IUSElMzBfsj0NFXR2kwsV1A5IF1grLgLL/r1R40BZEnuBWgmQEyb
jqRwSAt6bqMCOFkvKFN2GPPkUzIm/SCF8z8pVzpbjVnMsy0vOr1hw3SaSRUhpY09v0z0J1FnwzPl
fmh+xl4WtR0zGu24I4KbMQm3lnVu2oNWxI9W/lcyzA+mCKF4DBikxb/+UWtOGRiFP8qEwAayIgIA
Ow==


--0__=4EBBFDD7DFB515788f9e8a93df938690918c4EBBFDD7DFB51578
Content-type: image/gif; 
	name="ecblank.gif"
Content-Disposition: inline; filename="ecblank.gif"
Content-ID: <3__=4EBBFDD7DFB515788@schneider-electric.com>
Content-Transfer-Encoding: base64

R0lGODlhEAABAIAAAAAAAP///yH5BAEAAAEALAAAAAAQAAEAAAIEjI8ZBQA7


--0__=4EBBFDD7DFB515788f9e8a93df938690918c4EBBFDD7DFB51578--


From angelo.castellani@gmail.com  Wed Jun 16 01:36:07 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 688D53A6892; Wed, 16 Jun 2010 01:36:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.64
X-Spam-Level: 
X-Spam-Status: No, score=0.64 tagged_above=-999 required=5 tests=[AWL=-0.583,  BAYES_50=0.001, FM_FORGED_GMAIL=0.622, J_CHICKENPOX_42=0.6]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1maNxfqcI2Xs; Wed, 16 Jun 2010 01:36:06 -0700 (PDT)
Received: from mail-bw0-f44.google.com (mail-bw0-f44.google.com [209.85.214.44]) by core3.amsl.com (Postfix) with ESMTP id C904C3A6A21; Wed, 16 Jun 2010 01:36:05 -0700 (PDT)
Received: by bwz13 with SMTP id 13so3036144bwz.31 for <multiple recipients>; Wed, 16 Jun 2010 01:36:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:sender:received :in-reply-to:references:from:date:x-google-sender-auth:message-id :subject:to:cc:content-type:content-transfer-encoding; bh=VbZMN6wHsNLWnn2IIhn2zOKBNyasO7L8r3KuyUC9ias=; b=raFk0Mr3Cs6i6n8z3HZLNWyEnfTLNxvnChdO5gcbJ6XUSwNod0xF7dO8vWlP5Z0w3y X9+blMwSS5dtaH7gFU90JpdthZsuvT5r5u14Kh+v8WqG3n98V4balK8hM11S8C1y/MFR WAegG/uTZu6y+Joy58O9Wa7Se7MuQUpoMBtYw=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:from:date :x-google-sender-auth:message-id:subject:to:cc:content-type :content-transfer-encoding; b=huOyJiI0ScWgGVvpgSiu+wDVkC27JNnNYaJkATJG4RBpsK4GXlusaLpxnnVaAqPpZv 6pv/R/Q8HHZ4QPb6mc//PNvBbs8O+9k06B1eYr+vfaonprxRiGl7Zxuqo2yXXf3qSvpl 5+hdhZ/FSAxrRkXz6EgkHNTZUS8UXD/75jOVs=
Received: by 10.204.74.29 with SMTP id s29mr6341902bkj.97.1276677361194; Wed,  16 Jun 2010 01:36:01 -0700 (PDT)
MIME-Version: 1.0
Sender: angelo.castellani@gmail.com
Received: by 10.204.71.4 with HTTP; Wed, 16 Jun 2010 01:35:41 -0700 (PDT)
In-Reply-To: <OFC1BF31BE.F6F8D30E-ONC1257744.002693E8-C1257744.002D1625@schneider-electric.com>
References: <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com>  <OFC1BF31BE.F6F8D30E-ONC1257744.002693E8-C1257744.002D1625@schneider-electric.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
Date: Wed, 16 Jun 2010 10:35:41 +0200
X-Google-Sender-Auth: tXXTDsQaij6Mo6OJhAUhkJQBdQg
Message-ID: <AANLkTil9iwzTAENa8U_vZVJjaiK47sARXjcojYpYtRv4@mail.gmail.com>
To: matthieu.vial@fr.non.schneider-electric.com
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: core <core@ietf.org>, core issue tracker <trac@tools.ietf.org>, core-bounces@ietf.org
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 08:36:07 -0000

Matthieu,

a transparent proxy can make use of the 6LoWPAN compressed CoAP server
IP/port destination, removing the need to define a compressed format
of the request for a proxy.

I actually agree on compressing the resource URI in the CoAP server if
possible (take a look at
http://www.ietf.org/mail-archive/web/core/current/msg00315.html,
compression format #2), defining a short URL has the same complexity
of defining an URI compressed as proposed in #2 which however is more
efficient.

Binary-URIs can also be always represented in 7-bit ASCII with a
simple mapping, so defining a Binary-URI has the side effect of
defining a short URL too.

In my opinion defining a compression for long URIs is useful when we
want to send a request to a legacy HTTP server, which resource names
are not compressed (CoAP constrained client -> HTTP legacy server).

Best,
Angelo


On Wed, Jun 16, 2010 at 10:12,
<matthieu.vial@fr.non.schneider-electric.com> wrote:
>
> Hi all,
>
> >My vote is to not bother with URI compression. =A0If you want to use sho=
rt compact URIs, then just define your URI space that way. =A0There is noth=
ing to say that URIs have to be human friendly. =A0I suspect that most 6LoW=
PAN devices have less than 2^16 addressable resources, in which case you ca=
n use a four byte hex number to create a simple URI space for all your reso=
urces. =A0Yes it might be nice to shrink that a byte or two, but is it wort=
h the added complexity?
>
> I also agree that a well defined URI space with for example 4 char names/=
digits is better than a complex encoding of long paths.
> Long names are only useful for humans and CoAP is supposed to be a M2M pr=
ocotol.
>
> But what about
> coap://[2001:1ba3::ff:fe:0:1]:61617/1234
> or
> coap://[3ffe:b80:3:1a91:224:e8ff:fe92:5dcf]/1234
>
> The path is short but the authority is verbose.
> This aboslute form is still required by a proxy and is quite complex to p=
arse and to shrink.
>
> So the questions are:
> Is it possible to encode the authority part in a dedicated binary option =
in CoAP ?
> Could we define or reuse prefix contexts in a way ?
> What are the supported parts of an URI ? Scheme, user info, host, port ?
> What is the minimum length for URIs that a CoAP device must support ? Cur=
rently the only available value in the draft is 32768 if I'm right.
>
> Regards,
> Matthieu
>
> Brian Frank <brian.tridium@gmail.com>
>
>
>
>
> Brian Frank <brian.tridium@gmail.com>
> Envoy=E9 par : core-bounces@ietf.org
>
> 13/06/2010 04:02
>
> A
> Carsten Bormann <cabo@tzi.org>
> cc
> core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
> Objet
> Re: [core] #4: URI Encoding
> My vote is to not bother with URI compression. =A0If you want to use shor=
t compact URIs, then just define your URI space that way. =A0There is nothi=
ng to say that URIs have to be human friendly. =A0I suspect that most 6LoWP=
AN devices have less than 2^16 addressable resources, in which case you can=
 use a four byte hex number to create a simple URI space for all your resou=
rces. =A0Yes it might be nice to shrink that a byte or two, but is it worth=
 the added complexity?
>
>
> On Sat, Jun 12, 2010 at 4:23 PM, Carsten Bormann <cabo@tzi.org> wrote:
>
> On Jun 12, 2010, at 21:22, zach@sensinode.com wrote:
>
> > That is 15% savings by just bit shifting.
>
> It's 12.5 % best case (if you have an exact multiple of 8 characters).
> For /.well-known/resources, the saving is two bytes (i.e., 19 instead of =
21 as we are eliding the initial slash), or 9.5 %.
> (The 16-ary Huffman code I've cooked up happens to save 6 bytes or 28.5 %=
 in this case. =A0Much better, but still barely worth it.)
>
> Agreeing on /!r or some such would reduce the URI to a grand total of two=
 bytes, or save 19 bytes =3D 90.5 % :-)
> Heck, just calling it /.well-known/rsrcs has twice the benefit of 7-bit c=
runching...
>
> Just to cite (and maybe learn from) some precedence: When SIP was defined=
, some of its header fields were assigned alternative, single-character "co=
mpact form" names.
> Most SIP implementations send long form names, not compact forms; this ha=
s led to a number of interoperability problems when some implementations di=
d use the compact form and then other implementations didn't include full(l=
y debugged) support for the compact forms. =A0(IOW, aliasing =3D having the=
 same feature under two names can cause problems.)
> I haven't seen compact forms in the wild (but then I don't spend much tim=
e debugging SIP flows), but I'm sure Henning can fill us in on how much the=
se are liked these days.
>
> Gruesse, Carsten
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
> ______________________________________________________________________
> This email has been scanned by the MessageLabs Email Security System.
> _________________________________________________________________________=
____________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>

From trac@tools.ietf.org  Wed Jun 16 02:16:39 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 5BB4128C131 for <core@core3.amsl.com>; Wed, 16 Jun 2010 02:16:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.331
X-Spam-Level: 
X-Spam-Status: No, score=-102.331 tagged_above=-999 required=5 tests=[AWL=0.269, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id egiCOZvk8qhV for <core@core3.amsl.com>; Wed, 16 Jun 2010 02:16:37 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 77E883A6B0A for <core@ietf.org>; Wed, 16 Jun 2010 02:16:04 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1OOojA-0000k1-CE; Wed, 16 Jun 2010 02:16:08 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: hartke@tzi.org
X-Trac-Project: core
Date: Wed, 16 Jun 2010 09:16:08 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/12
Message-ID: <053.53cedf67cafe230ec9b1f976a32da3c6@tools.ietf.org>
X-Trac-Ticket-ID: 12
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: hartke@tzi.org, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core] #12: URI option: Can't distinguish absolute-URI from abs-path
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 09:16:39 -0000

#12: URI option: Can't distinguish absolute-URI from abs-path
--------------------------------+-------------------------------------------
 Reporter:  hartke@â€¦            |       Owner:            
     Type:  defect              |      Status:  new       
 Priority:  major               |   Milestone:  milestone1
Component:  coap                |     Version:  1.0       
 Severity:  Active WG Document  |    Keywords:            
--------------------------------+-------------------------------------------
 As we are omitting the leading slash from an abs-path, it is hard to
 distinguish an absolute-URI (i.e. with scheme and authority part, e.g.
 http://) from an abs-path (which might start with something that looks
 like a scheme, e.g., "foo:" as well).

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/12>
core <http://tools.ietf.org/core/>


From cabo@tzi.org  Wed Jun 16 02:19:48 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 930BE3A6806; Wed, 16 Jun 2010 02:19:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.392
X-Spam-Level: 
X-Spam-Status: No, score=-4.392 tagged_above=-999 required=5 tests=[AWL=-0.557, BAYES_40=-0.185, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id n5paFRkCZNlI; Wed, 16 Jun 2010 02:19:38 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id CAAF93A67B2; Wed, 16 Jun 2010 02:19:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5G9JLqt023661; Wed, 16 Jun 2010 11:19:21 +0200 (CEST)
Received: from [10.0.1.198] (reingewinn.informatik.uni-bremen.de [134.102.218.123]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 9D74BBDE3;  Wed, 16 Jun 2010 11:19:21 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <OFC1BF31BE.F6F8D30E-ONC1257744.002693E8-C1257744.002D1625@schneider-electric.com>
Date: Wed, 16 Jun 2010 11:19:19 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <D96B9C84-C532-4F9E-9288-AD4420ACE473@tzi.org>
References: <OFC1BF31BE.F6F8D30E-ONC1257744.002693E8-C1257744.002D1625@schneider-electric.com>
To: matthieu.vial@fr.non.schneider-electric.com
X-Mailer: Apple Mail (2.1078)
Cc: core-bounces@ietf.org, core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 09:19:48 -0000

On Jun 16, 2010, at 10:12, matthieu.vial@fr.non.schneider-electric.com =
wrote:

> Is it possible to encode the authority part in a dedicated binary =
option in CoAP ?

If we believe access to CoAP URIs via proxies by using CoAP is worth an =
optimization, we can certainly do that.
However, I'd expect CoAP proxies to gateway to other schemes as well, so =
I'm not sure how useful that optimization is.

See also issue #12; we need to do some work here anyway.

> Could we define or reuse prefix contexts in a way ?

That is more difficult, as it would presume the proxy has access to a =
compression context, and that this context is guaranteed to be the same =
as the one used by the client.  I don't know how to make sure that this =
is the case.

The right way to do this is to compress at the adaptation layer; some =
form of compression within the payloads based on prefixes may be useful. =
 (I have a blueprint for that, but no idea whether it's worth it: We =
could also simply compress based on the transport addresses used in the =
packet, which *are* accessible to both nodes.)

> What are the supported parts of an URI ? Scheme, user info, host, port =
?

I don't think we do user/password.  Wo obviously do need scheme, host, =
port.

> What is the minimum length for URIs that a CoAP device must support ? =
Currently the only available value in the draft is 32768 if I'm right.

The option encoding, as well as the maximum size of a CoAP datagram, =
limit this further.

I think the last paragraph of section 3.2.1 of RFC 2616 gives a good =
general idea for how long URIs used to be in the early Web:=20

      Note: Servers ought to be cautious about depending on URI lengths
      above 255 bytes, because some older client or proxy
      implementations might not properly support these lengths.

Gruesse, Carsten


From trac@tools.ietf.org  Wed Jun 16 02:32:14 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 28A153A6A43 for <core@core3.amsl.com>; Wed, 16 Jun 2010 02:32:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.333
X-Spam-Level: 
X-Spam-Status: No, score=-102.333 tagged_above=-999 required=5 tests=[AWL=0.267, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PXDF0WriMyjJ for <core@core3.amsl.com>; Wed, 16 Jun 2010 02:32:11 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 79A1B3A6AFC for <core@ietf.org>; Wed, 16 Jun 2010 02:32:04 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1OOoye-0001kH-Nu; Wed, 16 Jun 2010 02:32:08 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: cabo@tzi.org
X-Trac-Project: core
Date: Wed, 16 Jun 2010 09:32:08 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/13
Message-ID: <051.300804b57e25ee8938c8652131f9965e@tools.ietf.org>
X-Trac-Ticket-ID: 13
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: cabo@tzi.org, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core] #13: Need to define charset parameters for some MIME types
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 09:32:14 -0000

#13: Need to define charset parameters for some MIME types
--------------------------------+-------------------------------------------
 Reporter:  cabo@â€¦              |       Owner:            
     Type:  defect              |      Status:  new       
 Priority:  minor               |   Milestone:  milestone1
Component:  coap                |     Version:  1.0       
 Severity:  Active WG Document  |    Keywords:            
--------------------------------+-------------------------------------------
 E.g., for text/plain, it is not clear which charset is in use.
 It is probably wise to include the value in the subtype definition in
 clause 11.2. (and split the subtype up if we indeed foresee more than one
 charset for one subtype).
 (Likely charsets include ASCII and UTF-8.  We may want to use the fact
 that the latter includes the former and just settle on UTF-8.)

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/13>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Wed Jun 16 03:27:39 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 049803A67FB for <core@core3.amsl.com>; Wed, 16 Jun 2010 03:27:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.336
X-Spam-Level: 
X-Spam-Status: No, score=-102.336 tagged_above=-999 required=5 tests=[AWL=0.264, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GqrxaJO+K2Q8 for <core@core3.amsl.com>; Wed, 16 Jun 2010 03:27:38 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 290613A6880 for <core@ietf.org>; Wed, 16 Jun 2010 03:27:38 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1OOpqR-0004db-0Q; Wed, 16 Jun 2010 03:27:43 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: hartke@tzi.org
X-Trac-Project: core
Date: Wed, 16 Jun 2010 10:27:42 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/14
Message-ID: <053.fcd7f1b19ef23ac844d763b2b4f1e8df@tools.ietf.org>
X-Trac-Ticket-ID: 14
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: hartke@tzi.org, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #14: Should there be a "must understand" bit on options?
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 10:27:39 -0000

#14: Should there be a "must understand" bit on options?
--------------------------------+-------------------------------------------
 Reporter:  hartke@â€¦            |       Owner:            
     Type:  enhancement         |      Status:  new       
 Priority:  major               |   Milestone:  milestone1
Component:  coap                |     Version:  1.0       
 Severity:  Active WG Document  |    Keywords:            
--------------------------------+-------------------------------------------
 2.1.4 states "Upon reception, unknown options MUST be silently skipped."
 For some of the current options (e.g., the Uri option) this would be
 clearly wrong.
 This is not currently a problem since all CoAP implementations will "know"
 the Uri option.
 But what about future ones?  It will be hard to introduce a "must
 understand" together with an extension that needs it.

 (Note that just cutting off a bit from the option number is probably not
 wise, as there would only be 16 options in each space.)

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/14>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Wed Jun 16 03:32:59 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 58EAC3A6A33 for <core@core3.amsl.com>; Wed, 16 Jun 2010 03:32:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.339
X-Spam-Level: 
X-Spam-Status: No, score=-102.339 tagged_above=-999 required=5 tests=[AWL=0.261, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KpcYEUh+0GZx for <core@core3.amsl.com>; Wed, 16 Jun 2010 03:32:57 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 3F2313A6880 for <core@ietf.org>; Wed, 16 Jun 2010 03:32:54 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.71) (envelope-from <trac@tools.ietf.org>) id 1OOpvW-0001Mj-OX; Wed, 16 Jun 2010 03:32:58 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: hartke@tzi.org
X-Trac-Project: core
Date: Wed, 16 Jun 2010 10:32:58 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/15
Message-ID: <053.a0ff3d5e9c6477f269450091f9012627@tools.ietf.org>
X-Trac-Ticket-ID: 15
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: hartke@tzi.org, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #15: Consolidate maximum sizes (encodings, options table, maximum datagram)
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 10:32:59 -0000

#15: Consolidate maximum sizes (encodings, options table, maximum datagram)
--------------------------------+-------------------------------------------
 Reporter:  hartke@â€¦            |       Owner:            
     Type:  defect              |      Status:  new       
 Priority:  minor               |   Milestone:  milestone1
Component:  coap                |     Version:  1.0       
 Severity:  Active WG Document  |    Keywords:            
--------------------------------+-------------------------------------------
 According to the option encoding, the maximum length for an option value
 is 1023 bytes ("octets").  According to table 2, a URI can be up to 32768
 [sic] bytes.  This is not necessarily a contradiction, as clearly the
 maximum length is the minimum of the two maxima.  But then, section 4 says
 "When bound to UDP the entire message MUST fit within a single datagram of
 length 1024 octets.", which is another restriction.  The latter
 restriction also makes it impossible to send a payload of 1024 bytes even
 if enough space would be available in the 1280 byte IPv6 MTU.

 We need to agree what would be good upper bounds.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/15>
core <http://tools.ietf.org/core/>


From robert.cragie@gridmerge.com  Wed Jun 16 07:36:41 2010
Return-Path: <robert.cragie@gridmerge.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 449DE3A6A6A for <core@core3.amsl.com>; Wed, 16 Jun 2010 07:36:41 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.598
X-Spam-Level: 
X-Spam-Status: No, score=-3.598 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zFelJQ5MX3U8 for <core@core3.amsl.com>; Wed, 16 Jun 2010 07:36:38 -0700 (PDT)
Received: from mail78.extendcp.co.uk (mail78.extendcp.co.uk [79.170.40.78]) by core3.amsl.com (Postfix) with ESMTP id 275BF3A6A62 for <core@ietf.org>; Wed, 16 Jun 2010 07:36:37 -0700 (PDT)
Received: from client-86-29-249-143.pete.adsl.virginmedia.com ([86.29.249.143] helo=[192.168.1.70]) by mail78.extendcp.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.71) id 1OOtjL-0001St-Gw; Wed, 16 Jun 2010 15:36:40 +0100
Message-ID: <4C18E173.1080506@gridmerge.com>
Date: Wed, 16 Jun 2010 15:36:35 +0100
From: Robert Cragie <robert.cragie@gridmerge.com>
Organization: Gridmerge Ltd.
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.9) Gecko/20100317 Lightning/1.0b1 Thunderbird/3.0.4
MIME-Version: 1.0
To: Yoav Nir <ynir@checkpoint.com>, core <core@ietf.org>
References: <mailman.53.1275678008.15064.core@ietf.org>	<8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759B1@il-ex01.ad.checkpoint.com> <4C17D075.6000603@gridmerge.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759BE@il-ex01.ad.checkpoint.com>
In-Reply-To: <006FEB08D9C6444AB014105C9AEB133FB49CC759BE@il-ex01.ad.checkpoint.com>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1; boundary="------------ms020905000207090206000609"
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: robert.cragie@gridmerge.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 14:36:41 -0000

This is a cryptographically signed message in MIME format.

--------------ms020905000207090206000609
Content-Type: multipart/alternative;
 boundary="------------060901070402010802040709"

This is a multi-part message in MIME format.
--------------060901070402010802040709
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable

I have heard AES-CCM referred to as a stream cipher, although strictly=20
speaking it is a mode of operation of a block cipher as you say. In TLS=20
terms, it is an AEAD cipher. There should always be some sort of nonce=20
in a protected record. In the case of TLS 1.2, it depends on the cipher=20
but is effected by seq_num, IV or nonce_explicit, depending on the=20
cipher. A typical nonce used for the key stream and embedded in the=20
protected record is a monotonically increasing counter or sequence=20
number and a simple last value (or window of last values) check is used=20
at the receiver to detect replay attacks.

This brings me to the other point: DTLS should be upgraded to TLS 1.2. I =

am not sure if the work is in progress or not.

Robert

Robert Cragie (Pacific Gas & Electric)

Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
http://www.gridmerge.com <http://www.gridmerge.com/>


On 16/06/2010 9:19 AM, Yoav Nir wrote:
> I don't think any one's suggesting a stream cipher. All the algorithms =
that were mentioned were block ciphers.
>
> Also, I guess you are advocating long lived sessions.
>
> You said "if there is a nonce associated with each packet". Is there go=
ing to be such a nonce? DTLS doesn't have it, so it would have to be in t=
he underlying protocol. What are the requirements for the responder to ch=
eck this nonce?  IOW, if I capture an encrypted packet and see that this =
results in all the lights going off, what's to prevent me from retransmit=
ting the same packet?  How would the controller know to not turn off all =
the lights this time around?
>
> ________________________________________
> From: Robert Cragie [mailto:robert.cragie@gridmerge.com]
> Sent: Tuesday, June 15, 2010 10:12 PM
> To: Yoav Nir
> Subject: Re: [core] Security design
>
> You wouldn't need to do a handshake every time. You use the derived sym=
metric key for the stream cipher which persists for the duration of the s=
ession. If necessary, you can do session resumption based on the shared s=
ecret. If there is a nonce associated with each packet based on e.g. a fr=
ame counter or absolute time, I am not sure what the replay attack proble=
m is with regard to a long-lived session.
>
> Robert
> Robert Cragie (Pacific Gas&  Electric)
> Gridmerge Ltd.
> 89 Greenfield Crescent,
> Wakefield, WF4 4WA, UK
> +44 1924 910888
> +1 415 513 0064
> http://www.gridmerge.com
>
> On 15/06/2010 9:24 AM, Yoav Nir wrote:
> I'm not sure I understand how DTLS would work in an Internet-of-things =
environment. The networks are sometimes low-bandwidth and lossy, but the =
(D)TLS handshake takes a few roundtrips. You wouldn't want a full DTLS ha=
ndshake every time some sensor wants to tell some controller that somethi=
ng has changed (say, a light switch has been toggled), especially if the =
controller is required to perform a prompt action (say, turn on the light=
).
>
> Are you envisioning long-lived sessions that last for days even if for =
most of the time the device is in low-power sleep mode? If so, some thoug=
ht needs to be given to session maintenance, liveness checks, failure det=
ection?
>
> Also, with a long lived session, how do you protect against replay atta=
cks?
>
> Yoav
>
> -----Original Message-----
> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of=
 Vipul Gupta
> Sent: Tuesday, June 15, 2010 2:43 AM
> To: core@ietf.org
> Cc: Vipul Gupta
> Subject: Re: [core] Security design
>
> The three levels of security outlined here seem like a good place
> to start although the "Shared Key" option is unlikely to scale
> beyond small deployments.
>
> I'm also concerned about the choice of "CBC" mode which would
> unnecessarily extend the "in-sequence, loss-less delivery"
> requirement that DTLS already has for the handshake messages
> to data packets. Cipher-block chaining will preclude decryption
> of packet (n+1) until packet n has been received and decrypted.
> A counter-mode encryption algorithm might be a better fit for UDP.
>
> vipul
> --
> http://labs.oracle.com/people/mybio.php?c=3D509
>
>
> Date: Fri, 4 Jun 2010 11:47:47 -0600
> From: Cullen Jennings<fluffy@cisco.com>
> Subject: [core] Security design
>
> I've asked several people what they thought we should do with security =
and received a wide variety of answers. I'm going to try and propose some=
thing  here that I think *might* be acceptable to most people. I'm not ar=
guing for or against this, I'm just trying to propose a straw man that he=
lps us get to a decision sooner.
>
> The proposals is that COAP define three levels of security which are:
>
> 0) COAP baseline. No cryptographic security. Runs over UDP without DTLS=
=2E
>
> 1) COAP Shared Key. The requires implementation (but not use) of DTLS w=
ith symmetric keys but does not require any asymmetric cryptography.
>
> 2) COAP Certificates. This requires implementation of the stuff in 1 pl=
us DTLS with some defined asymmetric key cryptography and certificates.
>
> A given produce could choose to be compliant with one of these three le=
vels. COAP would not forbid extensions that either allowed it to cary som=
e sort of signed objects so it could get object security later if some ap=
plication wanted that. COAP would explicitly allow extensions that bound =
it to a different session mode security than DTLS so, for example, if som=
eone or some group wanted to make a binding to IPsec with or without IKEv=
2, that would be fine.
>
> For both "COAP Shared Key" and "COAP Certificate", we would need to man=
date one or more mandatory to implement DTLS profiles. I would want to ge=
t input and exact text from the DTLS/TLS authors and WG but I'm imagining=
 something like:
>
> COAP "Shared Key" requires implementation of DTLS with TLS_PSK_WITH_AES=
_128_CBC_SHA
>
> Probably the biggest issue for the certificate mode is the "never too o=
ld to not do again" ECC vs RSA debate. I'd really like to separate that o=
ut as a separate issue and get agreement around the big picture before we=
 have that particular debate.
>
> COAP "Certificates" requires implementation of DTLS with X.509 certific=
ates and TLS_XXX_WITH_AES_128_CBC_SHA where we decide on either RSA or EC=
DH_ECDSA as the value of XXX.
>
> I forgot to ask people about what hash they liked so I randomly used SH=
A instead of SHA256 but it would be nice to get feedback from the WG on w=
hich hash should be mandatory to implement. I would expect some significa=
nt push back from the Security area if we selected SHA1 as the only manda=
tory to implement hash for a brand new protocol.
>
> Could something like this work? Thoughts on what would need to change? =
Could people live with the idea of having three levels sort of like WiFi =
security? ALternative proposal? Fine tuning this proposal?
>
> Thanks, Cullen
>
>
>
> ------------------------------
>
> Message: 4
> Date: Fri, 4 Jun 2010 12:33:53 -0600
> From: Cullen Jennings<fluffy@cisco.com>
> Subject: [core] SUB/NOT - the sea level view
> To: core<core@ietf.org>
> Message-ID:<C07D3949-3CC2-4BB1-B8B6-6C2011675D50@cisco.com>
> Content-Type: text/plain; charset=3D"us-ascii"
>
>
> Over the year I have had the pleasure of being in many conversations ab=
out what a stateless protocol is, what REST is, HTTP, polling, asynchrono=
us notifications, web based RPC, and blowing soap bubbles.  Though intere=
sting, I have a hard time concretely explaining it to anyone and the oxyg=
en always seems a bit thin at the 10,000 foot view. I do however have a v=
ery easy time understanding a very low level view of the systems where th=
ere are  some boxes and arrow diagrams of  message flow and roughly the s=
emantics of the data they cary. Let me try and draw my current understand=
ing of how this is going to work.
>
> We have two nodes - I will call them Source and Sink.
>
>
>    Source         Sink
>      |    SUB      |
>      |<------------+
>      |             |
>      |    ACK      |
>      +------------>|
>      |             |
>     ... Time Passes ...
>      |             |
>      |   NOTIF     |
>      +------------>|
>      |             |
>      |   ACK       |
>      |<------------+
>      |             |
>
>
> Sink starts by sending a message I will label "SUB" to the Source. The =
SUB messages says which resource the Sink would like to be informed about=
 when the resource changes. The Source sends a OK or No there is a proble=
m in some sort of ACK message to the SUB. Eventually the resource changes=
 and Source sends an message I called "NOTIFY" to the Sink. This tells th=
e Sink which resource changed and the current value of it.The Sink sends =
some sort of acknowledgment. I find the terms client and server very conf=
using when discussing SUB/NOT so I'm not using those terms.
>
> The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, or=
 plain old polling, XMPP, SMTP, just about anything. As far as I can tell=
, pretty much everything people have been proposing fit into this model. =
 So first, I'd like to get an idea if people think I am in left field and=
 there is a very different message flow to consider. Second we need to fi=
gure out some of the stuff I left out of the picture above such as
>
> a) how to cancel a subscription
>
> b) how to get the initial value of the subscription around the time you=
 subscribe
>
> c) what sort of filtering is available to limit the types of resource c=
hanges that result in a NOTIFY
>
> d) lifespan of subscription how to refresh a subscription
>
> e) caching and interaction with sleeping device
>
> We have to be clear on how this maps to HTTP and possibly other protoco=
ls. One of the problems with HTTP is it has so many ways of doing asynchr=
onous notifications that it hard to decide what to map for. I would be ve=
ry conformable if we clearly new how to map it to HiBy and to direct HTTP=
 polling. It would be nice to have  back of the cocktail napkin belief th=
at it probably could be mapped to SMNP, XMPP, and the other HTTP approach=
es. My guess is that the mapping to other protocols is going to turn out =
to be easy.
>
>
>
>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:<http://www.ietf.org/mail-archive/web/core/attachments/20100604/248=
1295c/attachment.htm>
>
> ------------------------------
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>
> End of core Digest, Vol 5, Issue 13
> ***********************************
>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
> Scanned by Check Point Total Security Gateway.
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>
>
>   =20

--------------060901070402010802040709
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content=3D"text/html; charset=3DISO-8859-1"
 http-equiv=3D"Content-Type">
</head>
<body bgcolor=3D"#ffffff" text=3D"#000000">
I have heard AES-CCM referred to as a stream cipher, although strictly
speaking it is a mode of operation of a block cipher as you say. In TLS
terms, it is an AEAD cipher. There should always be some sort of nonce
in a protected record. In the case of TLS 1.2, it depends on the cipher
but is effected by seq_num, IV or nonce_explicit, depending on the
cipher. A typical nonce used for the key stream and embedded in the
protected record is a monotonically increasing counter or sequence
number and a simple last value (or window of last values) check is used
at the receiver to detect replay attacks.<br>
<br>
This brings me to the other point: DTLS should be upgraded to TLS 1.2.
I am not sure if the work is in progress or not.<br>
<br>
Robert<br>
<div class=3D"moz-signature">
<style type=3D"text/css">
p
{
font-family:Verdana,Arial,sans-serif;
font-size:8pt;
}
=2Ename
{
font-size:12pt;
}
</style>
<p class=3D"name">Robert Cragie (Pacific Gas &amp; Electric)</p>
<p>Gridmerge Ltd.<br>
89 Greenfield Crescent,<br>
Wakefield, WF4 4WA, UK<br>
+44 1924 910888<br>
+1 415 513 0064<br>
<a href=3D"http://www.gridmerge.com/">http://www.gridmerge.com</a></p>
</div>
<br>
On 16/06/2010 9:19 AM, Yoav Nir wrote:
<blockquote
 cite=3D"mid:006FEB08D9C6444AB014105C9AEB133FB49CC759BE@il-ex01.ad.checkp=
oint.com"
 type=3D"cite">
  <pre wrap=3D"">I don't think any one's suggesting a stream cipher. All =
the algorithms that were mentioned were block ciphers.

Also, I guess you are advocating long lived sessions.

You said "if there is a nonce associated with each packet". Is there goin=
g to be such a nonce? DTLS doesn't have it, so it would have to be in the=
 underlying protocol. What are the requirements for the responder to chec=
k this nonce?  IOW, if I capture an encrypted packet and see that this re=
sults in all the lights going off, what's to prevent me from retransmitti=
ng the same packet?  How would the controller know to not turn off all th=
e lights this time around?

________________________________________
From: Robert Cragie [<a class=3D"moz-txt-link-freetext" href=3D"mailto:ro=
bert.cragie@gridmerge.com">mailto:robert.cragie@gridmerge.com</a>]=20
Sent: Tuesday, June 15, 2010 10:12 PM
To: Yoav Nir
Subject: Re: [core] Security design

You wouldn't need to do a handshake every time. You use the derived symme=
tric key for the stream cipher which persists for the duration of the ses=
sion. If necessary, you can do session resumption based on the shared sec=
ret. If there is a nonce associated with each packet based on e.g. a fram=
e counter or absolute time, I am not sure what the replay attack problem =
is with regard to a long-lived session.

Robert
Robert Cragie (Pacific Gas &amp; Electric)
Gridmerge Ltd.
89 Greenfield Crescent,
Wakefield, WF4 4WA, UK
+44 1924 910888
+1 415 513 0064
<a class=3D"moz-txt-link-freetext" href=3D"http://www.gridmerge.com">http=
://www.gridmerge.com</a>

On 15/06/2010 9:24 AM, Yoav Nir wrote:=20
I'm not sure I understand how DTLS would work in an Internet-of-things en=
vironment. The networks are sometimes low-bandwidth and lossy, but the (D=
)TLS handshake takes a few roundtrips. You wouldn't want a full DTLS hand=
shake every time some sensor wants to tell some controller that something=
 has changed (say, a light switch has been toggled), especially if the co=
ntroller is required to perform a prompt action (say, turn on the light).=
=20

Are you envisioning long-lived sessions that last for days even if for mo=
st of the time the device is in low-power sleep mode? If so, some thought=
 needs to be given to session maintenance, liveness checks, failure detec=
tion?=20

Also, with a long lived session, how do you protect against replay attack=
s?=20

Yoav

-----Original Message-----
From: <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core-bounces@i=
etf.org">core-bounces@ietf.org</a> [<a class=3D"moz-txt-link-freetext" hr=
ef=3D"mailto:core-bounces@ietf.org">mailto:core-bounces@ietf.org</a>] On =
Behalf Of Vipul Gupta
Sent: Tuesday, June 15, 2010 2:43 AM
To: <a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">c=
ore@ietf.org</a>
Cc: Vipul Gupta
Subject: Re: [core] Security design

The three levels of security outlined here seem like a good place=20
to start although the "Shared Key" option is unlikely to scale=20
beyond small deployments.

I'm also concerned about the choice of "CBC" mode which would=20
unnecessarily extend the "in-sequence, loss-less delivery"=20
requirement that DTLS already has for the handshake messages=20
to data packets. Cipher-block chaining will preclude decryption
of packet (n+1) until packet n has been received and decrypted.=20
A counter-mode encryption algorithm might be a better fit for UDP.

vipul
--
<a class=3D"moz-txt-link-freetext" href=3D"http://labs.oracle.com/people/=
mybio.php?c=3D509">http://labs.oracle.com/people/mybio.php?c=3D509</a>

 =20
Date: Fri, 4 Jun 2010 11:47:47 -0600
From: Cullen Jennings <a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:f=
luffy@cisco.com">&lt;fluffy@cisco.com&gt;</a>
Subject: [core] Security design

I've asked several people what they thought we should do with security an=
d received a wide variety of answers. I'm going to try and propose someth=
ing  here that I think *might* be acceptable to most people. I'm not argu=
ing for or against this, I'm just trying to propose a straw man that help=
s us get to a decision sooner.=20

The proposals is that COAP define three levels of security which are:

0) COAP baseline. No cryptographic security. Runs over UDP without DTLS. =


1) COAP Shared Key. The requires implementation (but not use) of DTLS wit=
h symmetric keys but does not require any asymmetric cryptography.=20

2) COAP Certificates. This requires implementation of the stuff in 1 plus=
 DTLS with some defined asymmetric key cryptography and certificates.=20

A given produce could choose to be compliant with one of these three leve=
ls. COAP would not forbid extensions that either allowed it to cary some =
sort of signed objects so it could get object security later if some appl=
ication wanted that. COAP would explicitly allow extensions that bound it=
 to a different session mode security than DTLS so, for example, if someo=
ne or some group wanted to make a binding to IPsec with or without IKEv2,=
 that would be fine.=20

For both "COAP Shared Key" and "COAP Certificate", we would need to manda=
te one or more mandatory to implement DTLS profiles. I would want to get =
input and exact text from the DTLS/TLS authors and WG but I'm imagining s=
omething like:

COAP "Shared Key" requires implementation of DTLS with TLS_PSK_WITH_AES_1=
28_CBC_SHA

Probably the biggest issue for the certificate mode is the "never too old=
 to not do again" ECC vs RSA debate. I'd really like to separate that out=
 as a separate issue and get agreement around the big picture before we h=
ave that particular debate.=20

COAP "Certificates" requires implementation of DTLS with X.509 certificat=
es and TLS_XXX_WITH_AES_128_CBC_SHA where we decide on either RSA or ECDH=
_ECDSA as the value of XXX.=20

I forgot to ask people about what hash they liked so I randomly used SHA =
instead of SHA256 but it would be nice to get feedback from the WG on whi=
ch hash should be mandatory to implement. I would expect some significant=
 push back from the Security area if we selected SHA1 as the only mandato=
ry to implement hash for a brand new protocol.=20

Could something like this work? Thoughts on what would need to change? Co=
uld people live with the idea of having three levels sort of like WiFi se=
curity? ALternative proposal? Fine tuning this proposal?=20

Thanks, Cullen



------------------------------

Message: 4
Date: Fri, 4 Jun 2010 12:33:53 -0600
From: Cullen Jennings <a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:f=
luffy@cisco.com">&lt;fluffy@cisco.com&gt;</a>
Subject: [core] SUB/NOT - the sea level view
To: core <a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:core@ietf.org"=
>&lt;core@ietf.org&gt;</a>
Message-ID: <a class=3D"moz-txt-link-rfc2396E" href=3D"mailto:C07D3949-3C=
C2-4BB1-B8B6-6C2011675D50@cisco.com">&lt;C07D3949-3CC2-4BB1-B8B6-6C201167=
5D50@cisco.com&gt;</a>
Content-Type: text/plain; charset=3D"us-ascii"


Over the year I have had the pleasure of being in many conversations abou=
t what a stateless protocol is, what REST is, HTTP, polling, asynchronous=
 notifications, web based RPC, and blowing soap bubbles.  Though interest=
ing, I have a hard time concretely explaining it to anyone and the oxygen=
 always seems a bit thin at the 10,000 foot view. I do however have a ver=
y easy time understanding a very low level view of the systems where ther=
e are  some boxes and arrow diagrams of  message flow and roughly the sem=
antics of the data they cary. Let me try and draw my current understandin=
g of how this is going to work.

We have two nodes - I will call them Source and Sink.=20


  Source         Sink      =20
    |    SUB      |        =20
    |&lt;------------+        =20
    |             |        =20
    |    ACK      |        =20
    +------------&gt;|        =20
    |             |        =20
   ... Time Passes ...         =20
    |             |        =20
    |   NOTIF     |        =20
    +------------&gt;|         =20
    |             |        =20
    |   ACK       |        =20
    |&lt;------------+         =20
    |             |        =20


Sink starts by sending a message I will label "SUB" to the Source. The SU=
B messages says which resource the Sink would like to be informed about w=
hen the resource changes. The Source sends a OK or No there is a problem =
in some sort of ACK message to the SUB. Eventually the resource changes a=
nd Source sends an message I called "NOTIFY" to the Sink. This tells the =
Sink which resource changed and the current value of it.The Sink sends so=
me sort of acknowledgment. I find the terms client and server very confus=
ing when discussing SUB/NOT so I'm not using those terms.=20

The Sink could be a HTTP proxy that mapped this to COMET, WebSocket, or p=
lain old polling, XMPP, SMTP, just about anything. As far as I can tell, =
pretty much everything people have been proposing fit into this model.  S=
o first, I'd like to get an idea if people think I am in left field and t=
here is a very different message flow to consider. Second we need to figu=
re out some of the stuff I left out of the picture above such as=20

a) how to cancel a subscription=20

b) how to get the initial value of the subscription around the time you s=
ubscribe=20

c) what sort of filtering is available to limit the types of resource cha=
nges that result in a NOTIFY=20

d) lifespan of subscription how to refresh a subscription

e) caching and interaction with sleeping device=20

We have to be clear on how this maps to HTTP and possibly other protocols=
=2E One of the problems with HTTP is it has so many ways of doing asynchr=
onous notifications that it hard to decide what to map for. I would be ve=
ry conformable if we clearly new how to map it to HiBy and to direct HTTP=
 polling. It would be nice to have  back of the cocktail napkin belief th=
at it probably could be mapped to SMNP, XMPP, and the other HTTP approach=
es. My guess is that the mapping to other protocols is going to turn out =
to be easy.=20




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <a class=3D"moz-txt-link-rfc2396E" href=3D"http://www.ietf.org/mail-=
archive/web/core/attachments/20100604/2481295c/attachment.htm">&lt;http:/=
/www.ietf.org/mail-archive/web/core/attachments/20100604/2481295c/attachm=
ent.htm&gt;</a>

------------------------------

_______________________________________________
core mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>


End of core Digest, Vol 5, Issue 13
***********************************
   =20

_______________________________________________
core mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>

Scanned by Check Point Total Security Gateway.
_______________________________________________
core mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:core@ietf.org">core@=
ietf.org</a>
<a class=3D"moz-txt-link-freetext" href=3D"https://www.ietf.org/mailman/l=
istinfo/core">https://www.ietf.org/mailman/listinfo/core</a>

 =20

  </pre>
</blockquote>
</body>
</html>

--------------060901070402010802040709--

--------------ms020905000207090206000609
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

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
NTlaMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBM
dGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQTCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxKY8VXNV+065yplaHmjAdQRwnd/p/6Me7L3N9Vvy
Gna9fww6YfK/Uc4B1OVQCjDXAmNaLIkVcI7dyfArhVqqP3FWy688Cwfn8R+RNiQqE88r1fOC
dz0Dviv+uxg+B79AgAJk16emu59l0cUqVIUPSAR/p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCB
kTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwudGhh
d3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWlsQ0EuY3JsMAsGA1UdDwQEAwIBBjApBgNV
HREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxhYmVsMi0xMzgwDQYJKoZIhvcNAQEFBQAD
gYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/TCG4+DYfqi2fNi/A9BxQIJNwPP2t4WFi
w9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amcOY6MIE9lX5Xa9/eH1sYITq726jTlEBpb
NU1341YheILcIRk13iSx0x1G/11fZU8xggNxMIIDbQIBATB2MGIxCzAJBgNVBAYTAlpBMSUw
IwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUg
UGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQdBWGHEaYIBO/4g+d746QHzAJBgUrDgMC
GgUAoIIB0DAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMDA2
MTYxNDM2MzVaMCMGCSqGSIb3DQEJBDEWBBRwoM21EO2p7D7LjhOMVKZB+IvZkjBfBgkqhkiG
9w0BCQ8xUjBQMAsGCWCGSAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYI
KoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwgYUGCSsGAQQBgjcQBDF4MHYw
YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x
LDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpgg
E7/iD53vjpAfMIGHBgsqhkiG9w0BCRACCzF4oHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBAhB0FYYcRpggE7/iD53vjpAfMA0GCSqGSIb3DQEBAQUA
BIIBAG8oVlnRW9j9Yi5Zuzlgd06cjRiqDmx/8Boe2xqHLScHlN5WKEvzO2bFbQeXy1YAMCHZ
Q0qxwOHL6542oM/EbVIQMKkDCOK3PmoA74FecYp75OsvpeV4jzTlhqf8Py86iaJFfvqCjzTM
2JyTOfxJNmxdG3EmY/pINGYteWYT0dG9w0IBpD5jPqgRlIzstSoXje2kY15S/hnwiFUUs24b
/9sAf4qGyWXQm3mMEF7nvO0hllt1O441zKRwWyCtJx74Q9bBTqTCXKZ/jcyJI4zo+ldi5XVs
izTvxOCBBRxscRRbdDhLNSTBtsDHawAQr9paCiiNUK0QrGAiMFMA7Y8qBUIAAAAAAAA=
--------------ms020905000207090206000609--

From paduffy@cisco.com  Wed Jun 16 11:07:05 2010
Return-Path: <paduffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A97983A6B6F; Wed, 16 Jun 2010 11:07:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.585
X-Spam-Level: 
X-Spam-Status: No, score=-7.585 tagged_above=-999 required=5 tests=[BAYES_40=-0.185, J_CHICKENPOX_42=0.6, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6QwI5kJYaCIZ; Wed, 16 Jun 2010 11:07:04 -0700 (PDT)
Received: from rtp-iport-1.cisco.com (rtp-iport-1.cisco.com [64.102.122.148]) by core3.amsl.com (Postfix) with ESMTP id 0CC943A6821; Wed, 16 Jun 2010 11:07:03 -0700 (PDT)
Authentication-Results: rtp-iport-1.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAN+vGExAZnwM/2dsb2JhbACea3GmSYF3CwGXdYUaBA
X-IronPort-AV: E=Sophos;i="4.53,427,1272844800"; d="scan'208";a="122265484"
Received: from rtp-core-1.cisco.com ([64.102.124.12]) by rtp-iport-1.cisco.com with ESMTP; 16 Jun 2010 18:07:08 +0000
Received: from [161.44.65.101] ([161.44.65.101]) by rtp-core-1.cisco.com (8.13.8/8.14.3) with ESMTP id o5GI78Zo000336; Wed, 16 Jun 2010 18:07:08 GMT
Message-ID: <4C1912CC.8000407@cisco.com>
Date: Wed, 16 Jun 2010 14:07:08 -0400
From: Paul Duffy <paduffy@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: "Angelo P. Castellani" <angelo@castellani.net>
References: <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com> <OFC1BF31BE.F6F8D30E-ONC1257744.002693E8-C1257744.002D1625@schneider-electric.com> <AANLkTil9iwzTAENa8U_vZVJjaiK47sARXjcojYpYtRv4@mail.gmail.com>
In-Reply-To: <AANLkTil9iwzTAENa8U_vZVJjaiK47sARXjcojYpYtRv4@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Cc: core-bounces@ietf.org, core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: paduffy@cisco.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 18:07:05 -0000

What exactly do you classify as a "HTTP legacy server"?



On 6/16/2010 4:35 AM, Angelo P. Castellani wrote:
> Matthieu,
>
> a transparent proxy can make use of the 6LoWPAN compressed CoAP server
> IP/port destination, removing the need to define a compressed format
> of the request for a proxy.
>
> I actually agree on compressing the resource URI in the CoAP server if
> possible (take a look at
> http://www.ietf.org/mail-archive/web/core/current/msg00315.html,
> compression format #2), defining a short URL has the same complexity
> of defining an URI compressed as proposed in #2 which however is more
> efficient.
>
> Binary-URIs can also be always represented in 7-bit ASCII with a
> simple mapping, so defining a Binary-URI has the side effect of
> defining a short URL too.
>
> In my opinion defining a compression for long URIs is useful when we
> want to send a request to a legacy HTTP server, which resource names
> are not compressed (CoAP constrained client ->  HTTP legacy server).
>
> Best,
> Angelo
>
>
> On Wed, Jun 16, 2010 at 10:12,
> <matthieu.vial@fr.non.schneider-electric.com>  wrote:
>    
>> Hi all,
>>
>>      
>>> My vote is to not bother with URI compression.  If you want to use short compact URIs, then just define your URI space that way.  There is nothing to say that URIs have to be human friendly.  I suspect that most 6LoWPAN devices have less than 2^16 addressable resources, in which case you can use a four byte hex number to create a simple URI space for all your resources.  Yes it might be nice to shrink that a byte or two, but is it worth the added complexity?
>>>        
>> I also agree that a well defined URI space with for example 4 char names/digits is better than a complex encoding of long paths.
>> Long names are only useful for humans and CoAP is supposed to be a M2M procotol.
>>
>> But what about
>> coap://[2001:1ba3::ff:fe:0:1]:61617/1234
>> or
>> coap://[3ffe:b80:3:1a91:224:e8ff:fe92:5dcf]/1234
>>
>> The path is short but the authority is verbose.
>> This aboslute form is still required by a proxy and is quite complex to parse and to shrink.
>>
>> So the questions are:
>> Is it possible to encode the authority part in a dedicated binary option in CoAP ?
>> Could we define or reuse prefix contexts in a way ?
>> What are the supported parts of an URI ? Scheme, user info, host, port ?
>> What is the minimum length for URIs that a CoAP device must support ? Currently the only available value in the draft is 32768 if I'm right.
>>
>> Regards,
>> Matthieu
>>
>> Brian Frank<brian.tridium@gmail.com>
>>
>>
>>
>>
>> Brian Frank<brian.tridium@gmail.com>
>> Envoyé par : core-bounces@ietf.org
>>
>> 13/06/2010 04:02
>>
>> A
>> Carsten Bormann<cabo@tzi.org>
>> cc
>> core issue tracker<trac@tools.ietf.org>, core<core@ietf.org>
>> Objet
>> Re: [core] #4: URI Encoding
>> My vote is to not bother with URI compression.  If you want to use short compact URIs, then just define your URI space that way.  There is nothing to say that URIs have to be human friendly.  I suspect that most 6LoWPAN devices have less than 2^16 addressable resources, in which case you can use a four byte hex number to create a simple URI space for all your resources.  Yes it might be nice to shrink that a byte or two, but is it worth the added complexity?
>>
>>
>> On Sat, Jun 12, 2010 at 4:23 PM, Carsten Bormann<cabo@tzi.org>  wrote:
>>
>> On Jun 12, 2010, at 21:22, zach@sensinode.com wrote:
>>
>>      
>>> That is 15% savings by just bit shifting.
>>>        
>> It's 12.5 % best case (if you have an exact multiple of 8 characters).
>> For /.well-known/resources, the saving is two bytes (i.e., 19 instead of 21 as we are eliding the initial slash), or 9.5 %.
>> (The 16-ary Huffman code I've cooked up happens to save 6 bytes or 28.5 % in this case.  Much better, but still barely worth it.)
>>
>> Agreeing on /!r or some such would reduce the URI to a grand total of two bytes, or save 19 bytes = 90.5 % :-)
>> Heck, just calling it /.well-known/rsrcs has twice the benefit of 7-bit crunching...
>>
>> Just to cite (and maybe learn from) some precedence: When SIP was defined, some of its header fields were assigned alternative, single-character "compact form" names.
>> Most SIP implementations send long form names, not compact forms; this has led to a number of interoperability problems when some implementations did use the compact form and then other implementations didn't include full(ly debugged) support for the compact forms.  (IOW, aliasing = having the same feature under two names can cause problems.)
>> I haven't seen compact forms in the wild (but then I don't spend much time debugging SIP flows), but I'm sure Henning can fill us in on how much these are liked these days.
>>
>> Gruesse, Carsten
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>
>> ______________________________________________________________________
>> This email has been scanned by the MessageLabs Email Security System.
>> _____________________________________________________________________________________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>
>>      
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>    


From richard.kelsey@ember.com  Wed Jun 16 12:16:29 2010
Return-Path: <richard.kelsey@ember.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 94B1F3A6B9A for <core@core3.amsl.com>; Wed, 16 Jun 2010 12:16:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.863
X-Spam-Level: 
X-Spam-Status: No, score=-0.863 tagged_above=-999 required=5 tests=[AWL=0.247,  BAYES_05=-1.11]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id syT2wwyRK0aj for <core@core3.amsl.com>; Wed, 16 Jun 2010 12:16:28 -0700 (PDT)
Received: from EMPIRE.hq.ember.com (mail.ember.com [74.10.175.227]) by core3.amsl.com (Postfix) with ESMTP id 27C3E3A690C for <core@ietf.org>; Wed, 16 Jun 2010 12:16:28 -0700 (PDT)
Received: from kelsey-ws.hq.ember.com ([192.168.81.37]) by EMPIRE.hq.ember.com with Microsoft SMTPSVC(6.0.3790.4675);  Wed, 16 Jun 2010 15:16:32 -0400
Date: Wed, 16 Jun 2010 15:19:20 -0400
Message-Id: <87vd9ilr9j.fsf@kelsey-ws.hq.ember.com>
To: robert.cragie@gridmerge.com
In-reply-to: <4C18E173.1080506@gridmerge.com> (message from Robert Cragie on Wed, 16 Jun 2010 15:36:35 +0100)
From: Richard Kelsey <richard.kelsey@ember.com>
References: <mailman.53.1275678008.15064.core@ietf.org>	<8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759B1@il-ex01.ad.checkpoint.com> <4C17D075.6000603@gridmerge.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759BE@il-ex01.ad.checkpoint.com> <4C18E173.1080506@gridmerge.com>
X-OriginalArrivalTime: 16 Jun 2010 19:16:32.0577 (UTC) FILETIME=[6E337310:01CB0D88]
Cc: core@ietf.org
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 19:16:29 -0000

> Date: Wed, 16 Jun 2010 15:36:35 +0100
> From: Robert Cragie <robert.cragie@gridmerge.com>
>
> This brings me to the other point: DTLS should be upgraded to TLS 1.2.
> I am not sure if the work is in progress or not.

>From poking around on the IETF website,
draft-ietf-tls-rfc4347-bis-03 is DTLS 1.2.  It expired in
April.  It went to working group last call in October 2009,
with only minor changes recommended.  See
  http://www.ietf.org/mail-archive/web/tls/current/msg03867.html
I couldn't find any indication of further activity.

                                        -Richard Kelsey

From angelo.castellani@gmail.com  Wed Jun 16 12:38:39 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id B33213A699D; Wed, 16 Jun 2010 12:38:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.877
X-Spam-Level: 
X-Spam-Status: No, score=-0.877 tagged_above=-999 required=5 tests=[AWL=1.100,  BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7rGRPQNcpE6a; Wed, 16 Jun 2010 12:38:38 -0700 (PDT)
Received: from mail-fx0-f44.google.com (mail-fx0-f44.google.com [209.85.161.44]) by core3.amsl.com (Postfix) with ESMTP id BC6003A6BAE; Wed, 16 Jun 2010 12:38:37 -0700 (PDT)
Received: by fxm19 with SMTP id 19so782341fxm.31 for <multiple recipients>; Wed, 16 Jun 2010 12:38:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=8yugW6oeVVj5JcgGadPmLk5KrGPtUU9ykBG+4iFJnIQ=; b=m4vB0plTi0QHCMkGRQvsD9R7K+YsyGO/WMSG6+a2lG5oHio0Xc0jBcqvsREM1O+Hep MfdWDRigKROcgBaitCnnfEn/soWcnfW4ZvM4mxJoIC1/F8EdsDcC7O/2yOcEE+kw6gHy yT/QYIoAYdMK5mSH2pwjibkhUjd5HRFJ+f/sU=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=dZ4v2esbXVfAbl9tosmqZzGqjetOaXNLkXU7lqqd/H3ECx8ydNwGyaX6PT/GTK8dr4 hCmEotl8L4X3xLyImKrCy3GG0OGLS1OCM0SFAxd4yeokKvTwEWQhfvncQ5mp/f5os9mb FtjX4noLqjbu4SGwzzk4X40krm+IzvqNZhKlI=
MIME-Version: 1.0
Received: by 10.204.161.193 with SMTP id s1mr6949582bkx.16.1276717118912; Wed,  16 Jun 2010 12:38:38 -0700 (PDT)
Sender: angelo.castellani@gmail.com
Received: by 10.204.71.4 with HTTP; Wed, 16 Jun 2010 12:38:38 -0700 (PDT)
In-Reply-To: <4C1912CC.8000407@cisco.com>
References: <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com> <OFC1BF31BE.F6F8D30E-ONC1257744.002693E8-C1257744.002D1625@schneider-electric.com> <AANLkTil9iwzTAENa8U_vZVJjaiK47sARXjcojYpYtRv4@mail.gmail.com> <4C1912CC.8000407@cisco.com>
Date: Wed, 16 Jun 2010 21:38:38 +0200
X-Google-Sender-Auth: APwJIboSHgB7P3viy7GGFcoVFyQ
Message-ID: <AANLkTikY9zNtXNUyMLrfbiRzPBORPtS8j3_d1bPiuIwN@mail.gmail.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
To: "paduffy@cisco.com" <paduffy@cisco.com>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: "core-bounces@ietf.org" <core-bounces@ietf.org>, core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 16 Jun 2010 19:38:40 -0000

A generic HTTP server running on the Internet...

If a node needs to access resources exposed on the Internet by an HTTP
server, it can send the request using CoAP. An edge gateway can
translate the request to HTTP, relay it and when the response gets
back translate it to CoAP and relay it back to the node.

In this use case compressing long URLs can lead to a significant advantage.

In this case however we cannot expect URLs to be always short.

Regards,
Angelo

On Wednesday, June 16, 2010, Paul Duffy <paduffy@cisco.com> wrote:
> What exactly do you classify as a "HTTP legacy server"?
>
>
>
> On 6/16/2010 4:35 AM, Angelo P. Castellani wrote:
>
> Matthieu,
>
> a transparent proxy can make use of the 6LoWPAN compressed CoAP server
> IP/port destination, removing the need to define a compressed format
> of the request for a proxy.
>
> I actually agree on compressing the resource URI in the CoAP server if
> possible (take a look at
> http://www.ietf.org/mail-archive/web/core/current/msg00315.html,
> compression format #2), defining a short URL has the same complexity
> of defining an URI compressed as proposed in #2 which however is more
> efficient.
>
> Binary-URIs can also be always represented in 7-bit ASCII with a
> simple mapping, so defining a Binary-URI has the side effect of
> defining a short URL too.
>
> In my opinion defining a compression for long URIs is useful when we
> want to send a request to a legacy HTTP server, which resource names
> are not compressed (CoAP constrained client -> =A0HTTP legacy server).
>
> Best,
> Angelo
>
>
> On Wed, Jun 16, 2010 at 10:12,
> <matthieu.vial@fr.non.schneider-electric.com> =A0wrote:
>
>
> Hi all,
>
>
>
> My vote is to not bother with URI compression. =A0If you want to use shor=
t compact URIs, then just define your URI space that way. =A0There is nothi=
ng to say that URIs have to be human friendly. =A0I suspect that most 6LoWP=
AN devices have less than 2^16 addressable resources, in which case you can=
 use a four byte hex number to create a simple URI space for all your resou=
rces. =A0Yes it might be nice to shrink that a byte or two, but is it worth=
 the added complexity?
>
>
> I also agree that a well defined URI space with for example 4 char names/=
digits is better than a complex encoding of long paths.
> Long names are only useful for humans and CoAP is supposed to be a M2M pr=
ocotol.
>
> But what about
> coap://[2001:1ba3::ff:fe:0:1]:61617/1234
> or
> coap://[3ffe:b80:3:1a91:224:e8ff:fe92:5dcf]/1234
>
> The path is short but the authority is verbose.
> This aboslute form is still required by a proxy and is quite complex to p=
arse and to shrink.
>
> So the questions are:
> Is it possible to encode the authority part in a dedicated binary option =
in CoAP ?
> Could we define or reuse prefix contexts in a way ?
> What are the supported parts of an URI ? Scheme, user info, host, port ?
> What is the minimum length for URIs that a CoAP device must support ? Cur=
rently the only available value in the draft is 32768 if I'm right.
>
> Regards,
> Matthieu
>
> Brian Frank<brian.tridium@gmail.com>
>
>
>
>
> Brian Frank<brian.tridium@gmail.com>
> Envoy=E9 par : core-bounces@ietf.org
>
> 13/06/2010 04:02
>
> A
> Carsten Bormann<cabo@tzi.org>
> cc
> core issue tracker<trac@tools.ietf.org>, core<core@ietf.org>
> Objet
> Re: [core] #4: URI Encoding
> My vote is to not bother with URI compression. =A0If you want to use shor=
t compact URIs, then just define your URI space that way. =A0There is nothi=
ng to say that URIs have to be human friendly. =A0I suspect that most 6LoWP=
AN devices have less than 2^16 addressable resources, in which case you can=
 use a four byte hex number to create a simple URI space for all your resou=
rces. =A0Yes it might be nice to shrink that a byte or two, but is it worth=
 the added complexity?
>
>
> On Sat, Jun 12, 2010 at 4:23 PM, Carsten Bormann<cabo@tzi.org> =A0wrote:
>
> On Jun 12, 2010, at 21:22, zach@sensinode.com wrote:
>
>
>
> That is 15% savings by just bit shifting.
>
>
> It's 12.5 % best case (if you have an exact multiple of 8 characters).
> For /.well-known/resources, the saving is two bytes (i.e., 19 instead of =
21 as we are eliding the initial slash), or 9.5 %.
> (The 16-ary Huffman code I've cooked up happens to save 6 bytes or 28.5 %=
 in this case. =A0Much better, but still barely worth it.)
>
> Agreeing on /!r or some such would reduce the URI to a grand total of two=
 bytes, or save 19 bytes =3D 90.5 % :-)
> Heck, just calling it /.well-known/rsrcs has twice the benefit of 7-bit c=
runching...
>
> Just to cite (and maybe learn from) some precedence: When SIP was defined=
, some of its header fields were assigned alternative, single-character "co=
mpact form" names.
> Most SIP implementations send long form names, not compact forms; this ha=
s led to a number of interoperability

From cabo@tzi.org  Wed Jun 16 22:47:36 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id F383F3A6967 for <core@core3.amsl.com>; Wed, 16 Jun 2010 22:47:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.359
X-Spam-Level: 
X-Spam-Status: No, score=-5.359 tagged_above=-999 required=5 tests=[AWL=0.890,  BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 82Mf23AkzFCY for <core@core3.amsl.com>; Wed, 16 Jun 2010 22:47:04 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id CF0E73A6822 for <core@ietf.org>; Wed, 16 Jun 2010 22:47:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5H5kwRT021004 for <core@ietf.org>; Thu, 17 Jun 2010 07:46:58 +0200 (CEST)
Received: from [192.168.217.101] (p5489F9B6.dip.t-dialin.net [84.137.249.182]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 9C2B3B584;  Thu, 17 Jun 2010 07:46:58 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <87vd9ilr9j.fsf@kelsey-ws.hq.ember.com>
Date: Thu, 17 Jun 2010 07:46:56 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <41F8352F-DBCA-4B70-9AD9-DB8DDCE2469B@tzi.org>
References: <mailman.53.1275678008.15064.core@ietf.org>	<8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759B1@il-ex01.ad.checkpoint.com> <4C17D075.6000603@gridmerge.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759BE@il-ex01.ad.checkpoint.com> <4C18E173.1080506@gridmerge.com> <87vd9ilr9j.fsf@kelsey-ws.hq.ember.com>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1078)
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 17 Jun 2010 05:47:36 -0000

On Jun 16, 2010, at 21:19, Richard Kelsey wrote:

>> =46rom poking around on the IETF website,
> draft-ietf-tls-rfc4347-bis-03 is DTLS 1.2.  It expired in
> April.  It went to working group last call in October 2009,
> with only minor changes recommended.  See
>  http://www.ietf.org/mail-archive/web/tls/current/msg03867.html
> I couldn't find any indication of further activity.

Just got word from the TLS chairs that this got sidestepped for a while, =
but the updated version is planned before Maastricht.  I think we should =
use the time in Maastricht to do some cross-area discussion.
(Besides TLS, interesting security-related WGs to watch might include =
HIP.)

Gruesse, Carsten


From zach@sensinode.com  Thu Jun 17 13:02:33 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 245353A69EC; Thu, 17 Jun 2010 13:02:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.392
X-Spam-Level: 
X-Spam-Status: No, score=-2.392 tagged_above=-999 required=5 tests=[AWL=1.207,  BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xA165E53Rnv2; Thu, 17 Jun 2010 13:02:32 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id A93323A6B08; Thu, 17 Jun 2010 13:02:31 -0700 (PDT)
Received: from [192.168.1.3] (line-8195.dyn.kponet.fi [85.29.78.98]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5HK2R92007888 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Thu, 17 Jun 2010 23:02:27 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <D96B9C84-C532-4F9E-9288-AD4420ACE473@tzi.org>
Date: Thu, 17 Jun 2010 23:02:28 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <C9298E56-714B-4B55-A146-2A6745262200@sensinode.com>
References: <OFC1BF31BE.F6F8D30E-ONC1257744.002693E8-C1257744.002D1625@schneider-electric.com> <D96B9C84-C532-4F9E-9288-AD4420ACE473@tzi.org>
To: Carsten Bormann <cabo@tzi.org>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>, core issue tracker <trac@tools.ietf.org>, core-bounces@ietf.org
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 17 Jun 2010 20:02:33 -0000

On Jun 16, 2010, at 12:19 PM, Carsten Bormann wrote:

>> What is the minimum length for URIs that a CoAP device must support ? =
Currently the only available value in the draft is 32768 if I'm right.
>=20
> The option encoding, as well as the maximum size of a CoAP datagram, =
limit this further.
>=20
> I think the last paragraph of section 3.2.1 of RFC 2616 gives a good =
general idea for how long URIs used to be in the early Web:=20
>=20
>      Note: Servers ought to be cautious about depending on URI lengths
>      above 255 bytes, because some older client or proxy
>      implementations might not properly support these lengths.


I would like it if the limit would be in that range for CoAP.=20

Zach

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From zach@sensinode.com  Thu Jun 17 13:20:58 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 8EDBB3A6B08 for <core@core3.amsl.com>; Thu, 17 Jun 2010 13:20:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.766
X-Spam-Level: 
X-Spam-Status: No, score=-1.766 tagged_above=-999 required=5 tests=[AWL=-0.626, BAYES_20=-0.74, J_CHICKENPOX_42=0.6, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id exhm4vVP2OFC for <core@core3.amsl.com>; Thu, 17 Jun 2010 13:20:52 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 410843A69EC for <core@ietf.org>; Thu, 17 Jun 2010 13:20:51 -0700 (PDT)
Received: from [192.168.1.3] (line-8195.dyn.kponet.fi [85.29.78.98]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5HKKpLN008269 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Thu, 17 Jun 2010 23:20:52 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com>
Date: Thu, 17 Jun 2010 23:20:52 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <027891BF-1CA5-4700-A02D-4B385C3F16F6@sensinode.com>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org> <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org> <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu> <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi> <3DF22516-31FA-4EC9-8667-8CAB2EAD8D0E@tzi.org> <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com>
To: Brian Frank <brian.tridium@gmail.com>
X-Mailer: Apple Mail (2.1081)
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 17 Jun 2010 20:20:59 -0000

On Jun 13, 2010, at 5:02 AM, Brian Frank wrote:

> My vote is to not bother with URI compression.  If you want to use =
short compact URIs, then just define your URI space that way.  There is =
nothing to say that URIs have to be human friendly.  I suspect that most =
6LoWPAN devices have less than 2^16 addressable resources, in which case =
you can use a four byte hex number to create a simple URI space for all =
your resources.  Yes it might be nice to shrink that a byte or two, but =
is it worth the added complexity?=20

Right, it starts to be clear that we need to support short alternative =
URIs. In theory that doesn't need anything special. A resource provider =
simply assigns an alternative (short) URI of its own choosing to =
resources that have long URIs or are popular. So short URIs in CoAP =
don't require any kind of mapping server, nor much extra state.

What do we need to make that work even better? How does a requester find =
out about a short URI? This could be enough:

1. Henning threw out the idea of the provider being able to include a =
short URI for a resource in the response. So if a provider receives a =
request for the normal URI of a resource, it may include a short =
alternative URI in the response message (if any). After that the =
requestor can use the alternative URI in subsequent requests. This is =
easy to add as the response simply includes a CoAP Uri option in that =
case.=20

2. We could include an attribute "alt=3D" in the resource description =
format, which allows a requestor to discover the alternative URI of a =
resource a priori.=20

What do people think? If the WG likes the idea we can make a ticket for =
us to flesh out the details.

This is of course orthogonal to the encoding discussion.=20

Zach

>=20
>=20
> On Sat, Jun 12, 2010 at 4:23 PM, Carsten Bormann <cabo@tzi.org> wrote:
> On Jun 12, 2010, at 21:22, zach@sensinode.com wrote:
>=20
> > That is 15% savings by just bit shifting.
>=20
> It's 12.5 % best case (if you have an exact multiple of 8 characters).
> For /.well-known/resources, the saving is two bytes (i.e., 19 instead =
of 21 as we are eliding the initial slash), or 9.5 %.
> (The 16-ary Huffman code I've cooked up happens to save 6 bytes or =
28.5 % in this case.  Much better, but still barely worth it.)
>=20
> Agreeing on /!r or some such would reduce the URI to a grand total of =
two bytes, or save 19 bytes =3D 90.5 % :-)
> Heck, just calling it /.well-known/rsrcs has twice the benefit of =
7-bit crunching...
>=20
> Just to cite (and maybe learn from) some precedence: When SIP was =
defined, some of its header fields were assigned alternative, =
single-character "compact form" names.
> Most SIP implementations send long form names, not compact forms; this =
has led to a number of interoperability problems when some =
implementations did use the compact form and then other implementations =
didn't include full(ly debugged) support for the compact forms.  (IOW, =
aliasing =3D having the same feature under two names can cause =
problems.)
> I haven't seen compact forms in the wild (but then I don't spend much =
time debugging SIP flows), but I'm sure Henning can fill us in on how =
much these are liked these days.
>=20
> Gruesse, Carsten
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From sakane@tanu.org  Thu Jun 17 22:56:17 2010
Return-Path: <sakane@tanu.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9F2783A683F for <core@core3.amsl.com>; Thu, 17 Jun 2010 22:56:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.432
X-Spam-Level: 
X-Spam-Status: No, score=-1.432 tagged_above=-999 required=5 tests=[AWL=-2.568, BAYES_20=-0.74, HELO_MISMATCH_ORG=0.611, HOST_EQ_JP=1.265]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id VmsWrWFXgl2f for <core@core3.amsl.com>; Thu, 17 Jun 2010 22:56:16 -0700 (PDT)
Received: from mama.tanu.org (z189134.ppp.asahi-net.or.jp [110.4.189.134]) by core3.amsl.com (Postfix) with ESMTP id 718C53A689B for <core@ietf.org>; Thu, 17 Jun 2010 22:56:16 -0700 (PDT)
Received: from [64.104.4.53] (dhcp-64-104-shinjuku-wlan-4-53.cisco.com [64.104.4.53]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mama.tanu.org (Postfix) with ESMTPSA id 1558C16B41 for <core@ietf.org>; Fri, 18 Jun 2010 14:56:19 +0900 (JST)
Message-ID: <4C1B0A82.1020604@tanu.org>
Date: Fri, 18 Jun 2010 14:56:18 +0900
From: Shoichi Sakane <sakane@tanu.org>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100423 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <mailman.53.1275678008.15064.core@ietf.org>	<8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com>	<006FEB08D9C6444AB014105C9AEB133FB49CC759B1@il-ex01.ad.checkpoint.com>	<4C17D075.6000603@gridmerge.com>	<006FEB08D9C6444AB014105C9AEB133FB49CC759BE@il-ex01.ad.checkpoint.com>	<4C18E173.1080506@gridmerge.com>	<87vd9ilr9j.fsf@kelsey-ws.hq.ember.com> <41F8352F-DBCA-4B70-9AD9-DB8DDCE2469B@tzi.org>
In-Reply-To: <41F8352F-DBCA-4B70-9AD9-DB8DDCE2469B@tzi.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 18 Jun 2010 05:56:17 -0000

On 06/17/10 14:46, Carsten Bormann wrote:
> Besides TLS, interesting security-related WGs to watch might include HIP.

+1

HIP has some advantages from other choices.

TLS and DTLS is little different protocol, maybe 50% is same.
We need to have different stacks in a single node if we want
to use both TCP and UDP.
Further more, a node has to maintain different secure sessions.
The node has to start different negotiation with a single peer
for each session which is denoted by an IP address and a pair
of port numbers.
Thoretically, it could bind to an IP address and differnt port
numbers, but, it will break the interoperability.

We can get away from it when we select IPsec.
But, the selection of the key management protocol is the big issue.
Several existing protocols, like IKE, negosiate keys in the out-band.
So, a node has to maintain another channel for exchanging keys.
It would be a burden for a sensor node.
HIP does make it in the in-band.

Currently, I think HIP is a good candidate though how we operate
the asymmetric cipher processing in the sensor node is another big
issue.  We might be able to refer it to a third machine.

Shoichi Sakane

From heer@informatik.rwth-aachen.de  Fri Jun 18 00:26:45 2010
Return-Path: <heer@informatik.rwth-aachen.de>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2A8B23A6973 for <core@core3.amsl.com>; Fri, 18 Jun 2010 00:26:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.635
X-Spam-Level: 
X-Spam-Status: No, score=-2.635 tagged_above=-999 required=5 tests=[AWL=-0.433, BAYES_50=0.001, HELO_EQ_DE=0.35, HELO_MISMATCH_DE=1.448, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xi02cXt+P2oa for <core@core3.amsl.com>; Fri, 18 Jun 2010 00:26:43 -0700 (PDT)
Received: from mta-1.ms.rz.rwth-aachen.de (mta-1.ms.rz.RWTH-Aachen.DE [134.130.7.72]) by core3.amsl.com (Postfix) with ESMTP id BDE933A6858 for <core@ietf.org>; Fri, 18 Jun 2010 00:26:43 -0700 (PDT)
MIME-version: 1.0
Content-transfer-encoding: 7BIT
Content-type: text/plain; charset=us-ascii
Received: from ironport-out-2.rz.rwth-aachen.de ([134.130.5.41]) by mta-1.ms.rz.RWTH-Aachen.de (Sun Java(tm) System Messaging Server 6.3-7.04 (built Sep 26 2008)) with ESMTP id <0L4700H6E8ONMT80@mta-1.ms.rz.RWTH-Aachen.de> for core@ietf.org; Fri, 18 Jun 2010 09:26:47 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.53,437,1272837600";   d="scan'208";a="32847731"
Received: from relay-auth-2.ms.rz.rwth-aachen.de (HELO relay-auth-2) ([134.130.7.79]) by ironport-in-2.rz.rwth-aachen.de with ESMTP; Fri, 18 Jun 2010 09:26:47 +0200
Received: from umic-i4-137-226-45-90.nn.rwth-aachen.de ([unknown] [137.226.45.90]) by relay-auth-2.ms.rz.rwth-aachen.de (Sun Java(tm) System Messaging Server 7.0-3.01 64bit (built Dec 9 2008)) with ESMTPA id <0L4700EGG8ONAO30@relay-auth-2.ms.rz.rwth-aachen.de> for core@ietf.org; Fri, 18 Jun 2010 09:26:47 +0200 (CEST)
From: Tobias Heer <heer@cs.rwth-aachen.de>
Date: Fri, 18 Jun 2010 09:26:48 +0200
Message-id: <418C5025-4A00-4A86-93F4-682B0758D5D0@cs.rwth-aachen.de>
References: <5F6BB0D9318FCA4083FC774C9A9ECEF684539B8D49@NLCLUEXM03.connect1.local>
To: core@ietf.org
X-Mailer: Apple Mail (2.1081)
Cc: Robert Moskowitz <rgm@htt-consult.com>
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 18 Jun 2010 07:26:45 -0000

> -----Original Message-----
> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of Shoichi Sakane
> Sent: Friday 18 June 2010 7:56
> To: core@ietf.org
> Subject: Re: [core] Security design
> 
> On 06/17/10 14:46, Carsten Bormann wrote:
>> Besides TLS, interesting security-related WGs to watch might include HIP.
> 
> +1
> 
> HIP has some advantages from other choices.
> 
> TLS and DTLS is little different protocol, maybe 50% is same.
> We need to have different stacks in a single node if we want
> to use both TCP and UDP.
> Further more, a node has to maintain different secure sessions.
> The node has to start different negotiation with a single peer
> for each session which is denoted by an IP address and a pair
> of port numbers.
> Thoretically, it could bind to an IP address and differnt port
> numbers, but, it will break the interoperability.
> 
> We can get away from it when we select IPsec.
> But, the selection of the key management protocol is the big issue.
> Several existing protocols, like IKE, negosiate keys in the out-band.
> So, a node has to maintain another channel for exchanging keys.
> It would be a burden for a sensor node.
> HIP does make it in the in-band.
> 
> Currently, I think HIP is a good candidate though how we operate
> the asymmetric cipher processing in the sensor node is another big
> issue.  We might be able to refer it to a third machine.
> 

FYI. Some people in the HIP context are currently working on reducing the cost of HIP to make it applicable to resource constrained devices.
The main aspects of this work are a) reduce the computation complexity by reducing the amount of PK crypto, b) reducing the code size by reconsidering which ciphers and hashes to use, c) considering very lossy channels to make the handshake robust.

The goal of this work is to make HIP "lighter" while still maintaining the way it works.

Robert Moskowitz is the main driver of this work.

BR, 

Tobias
 

> Shoichi Sakane
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
> 
> The information contained in this message may be confidential and legally protected under applicable law. The message is intended solely for the addressee(s). If you are not the intended recipient, you are hereby notified that any use, forwarding, dissemination, or reproduction of this message is strictly prohibited and may be unlawful. If you are not the intended recipient, please contact the sender by return e-mail and destroy all copies of the original message.




-- 
Dipl.-Inform. Tobias Heer, Ph.D. Student
Distributed Systems Group 
RWTH Aachen University, Germany
tel: +49 241 80 207 76
web: http://ds.cs.rwth-aachen.de/members/heer
blog: http://dtobi.wordpress.com/
card: http://card.ly/dtobi








From gtolle@archrock.com  Fri Jun 18 10:58:32 2010
Return-Path: <gtolle@archrock.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 487543A68EB for <core@core3.amsl.com>; Fri, 18 Jun 2010 10:58:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.001
X-Spam-Level: 
X-Spam-Status: No, score=0.001 tagged_above=-999 required=5 tests=[BAYES_50=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IhnP0lG7UA7Q for <core@core3.amsl.com>; Fri, 18 Jun 2010 10:58:31 -0700 (PDT)
Received: from mail.sf.archrock.com (mail.sf.archrock.com [216.74.40.86]) by core3.amsl.com (Postfix) with ESMTP id 4B5C63A68E9 for <core@ietf.org>; Fri, 18 Jun 2010 10:58:31 -0700 (PDT)
Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.sf.archrock.com (Postfix) with ESMTP id ADDF1AFCE5 for <core@ietf.org>; Fri, 18 Jun 2010 10:56:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at 
Received: from mail.sf.archrock.com ([127.0.0.1]) by localhost (mail.sf.archrock.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5iraMwwuSGE1 for <core@ietf.org>; Fri, 18 Jun 2010 10:56:31 -0700 (PDT)
Received: from [10.0.1.200] (cpe-68-175-12-28.nyc.res.rr.com [68.175.12.28]) by mail.sf.archrock.com (Postfix) with ESMTP id B52B6AFE6D for <core@ietf.org>; Fri, 18 Jun 2010 10:56:30 -0700 (PDT)
Message-Id: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com>
From: Gilman Tolle <gtolle@archrock.com>
To: core@ietf.org
Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0 (Apple Message framework v936)
Date: Fri, 18 Jun 2010 13:58:30 -0400
X-Mailer: Apple Mail (2.936)
Subject: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 18 Jun 2010 17:58:32 -0000

As mentioned in Ticket #1 and #2, the subscribe/notify system in the  
current CoAP draft is underspecified. For example:

* Unless the client's URL structure exactly mirrors the server's, a  
client creating a subscription needs to specify a destination URL for  
delivery of the updated resource, and there's no mechanism for that in  
the draft.
* There's no description of what CoAP method is used to deliver the  
resource.
* There's no mechanism for unsubscribing, querying, or managing  
existing subscriptions.

I'd like to suggest an alternate approach to subscribe/notify that  
treats subscriptions as RESTful resources, and does not introduce any  
new HTTP methods.

Start by defining two "well-known" URI namespaces: "/.sub" and "/.subs".

When a client subscribes to a URL (e.g. "/info"), they prepend "/.sub"  
to that URL, and then POST a message to the new URL (e.g. "/.sub/info").

The MIME type of the client's POST body is application/x-www-form- 
urlencoded, and the client specifies the subscription parameters as  
key-value pairs.

The most important key-value pair is "cb", short for "callback". So,  
the POST body would contain "cb=coap://client_addr/my/info/receiver".  
Because application/x-www-form-urlencoded is extensible, we can define  
additional parameters now or in the future. For example, we can define  
parameters for "suggested subscription lifetime", "maximum send  
interval", "authentication to use on delivery", etc.

If the "cb" parameter is omitted, we can fall back to the method in  
the draft -- the server assumes that the delivery URL is the source  
address, the default CoAP port (because the source port is ephemeral),  
and a path that mirrors the path being subscribed to.

The response to a successful subscription POST should be "201  
Created", with a Location header that includes a new URL on the server  
within the "/.subs" well-known URI namespace. For example, the server  
could send a Location of "/.subs/2", if the server is assigning  
integer IDs to new subscriptions. If the server does not support  
subscription on that resource, it can return one of the HTTP error  
codes instead.

 From then on, the server begins to POST new entity bodies to the  
callback URL as appropriate.

The returned subscription URI ("/.subs/2"), can now be stored by the  
client and used to:

* query its subscription status with a GET on that URI, with the body  
defined as application/x-www-form-urlencoded and containing  
information about the subscription (callback URL, remaining lifetime,  
etc)
* refresh its subscription or change its subscription parameters with  
a PUT to that URI using the application/x-www-form-urlencoded  
parameter set described above
* cancel its subscription with a DELETE on that URI

In addition, if the server chooses to support it (modulo security and  
discoverability choices), the server can provide browsing of  
subscriptions by supporting a GET on "/.subs".

What do you think?

Gil


From paduffy@cisco.com  Fri Jun 18 15:38:11 2010
Return-Path: <paduffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 73F5F3A6A3A for <core@core3.amsl.com>; Fri, 18 Jun 2010 15:38:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.348
X-Spam-Level: 
X-Spam-Status: No, score=-8.348 tagged_above=-999 required=5 tests=[AWL=0.762,  BAYES_05=-1.11, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Vry-fjK5jykC for <core@core3.amsl.com>; Fri, 18 Jun 2010 15:38:10 -0700 (PDT)
Received: from rtp-iport-1.cisco.com (rtp-iport-1.cisco.com [64.102.122.148]) by core3.amsl.com (Postfix) with ESMTP id 521293A69C2 for <core@ietf.org>; Fri, 18 Jun 2010 15:38:10 -0700 (PDT)
Authentication-Results: rtp-iport-1.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEACaSG0xAZnwM/2dsb2JhbACfFXGoLoF4CwGYSoUbBA
X-IronPort-AV: E=Sophos;i="4.53,441,1272844800"; d="scan'208";a="123160368"
Received: from rtp-core-1.cisco.com ([64.102.124.12]) by rtp-iport-1.cisco.com with ESMTP; 18 Jun 2010 22:38:15 +0000
Received: from [161.44.65.101] ([161.44.65.101]) by rtp-core-1.cisco.com (8.13.8/8.14.3) with ESMTP id o5IMcFhU018049; Fri, 18 Jun 2010 22:38:15 GMT
Message-ID: <4C1BF557.2010200@cisco.com>
Date: Fri, 18 Jun 2010 18:38:15 -0400
From: Paul Duffy <paduffy@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: Gilman Tolle <gtolle@archrock.com>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com>
In-Reply-To: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Cc: core@ietf.org
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: paduffy@cisco.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 18 Jun 2010 22:38:11 -0000

On 6/18/2010 1:58 PM, Gilman Tolle wrote:
> As mentioned in Ticket #1 and #2, the subscribe/notify system in the 
> current CoAP draft is underspecified. For example:
>
> * Unless the client's URL structure exactly mirrors the server's, a 
> client creating a subscription needs to specify a destination URL for 
> delivery of the updated resource, and there's no mechanism for that in 
> the draft.
> * There's no description of what CoAP method is used to deliver the 
> resource.
> * There's no mechanism for unsubscribing, querying, or managing 
> existing subscriptions.
>
> I'd like to suggest an alternate approach to subscribe/notify that 
> treats subscriptions as RESTful resources, and does not introduce any 
> new HTTP methods.

+++1

>
> Start by defining two "well-known" URI namespaces: "/.sub" and "/.subs".
>
> When a client subscribes to a URL (e.g. "/info"), they prepend "/.sub" 
> to that URL, and then POST a message to the new URL (e.g. "/.sub/info").
>
> The MIME type of the client's POST body is 
> application/x-www-form-urlencoded, and the client specifies the 
> subscription parameters as key-value pairs.
>
> The most important key-value pair is "cb", short for "callback". So, 
> the POST body would contain "cb=coap://client_addr/my/info/receiver". 
> Because application/x-www-form-urlencoded is extensible, we can define 
> additional parameters now or in the future. For example, we can define 
> parameters for "suggested subscription lifetime", "maximum send 
> interval", "authentication to use on delivery", etc.
>
> If the "cb" parameter is omitted, we can fall back to the method in 
> the draft -- the server assumes that the delivery URL is the source 
> address, the default CoAP port (because the source port is ephemeral), 
> and a path that mirrors the path being subscribed to.
>
> The response to a successful subscription POST should be "201 
> Created", with a Location header that includes a new URL on the server 
> within the "/.subs" well-known URI namespace. For example, the server 
> could send a Location of "/.subs/2", if the server is assigning 
> integer IDs to new subscriptions. If the server does not support 
> subscription on that resource, it can return one of the HTTP error 
> codes instead.
>
> From then on, the server begins to POST new entity bodies to the 
> callback URL as appropriate.
>
> The returned subscription URI ("/.subs/2"), can now be stored by the 
> client and used to:
>
> * query its subscription status with a GET on that URI, with the body 
> defined as application/x-www-form-urlencoded and containing 
> information about the subscription (callback URL, remaining lifetime, 
> etc)
> * refresh its subscription or change its subscription parameters with 
> a PUT to that URI using the application/x-www-form-urlencoded 
> parameter set described above
> * cancel its subscription with a DELETE on that URI
>
> In addition, if the server chooses to support it (modulo security and 
> discoverability choices), the server can provide browsing of 
> subscriptions by supporting a GET on "/.subs".
>
> What do you think?
>
> Gil
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>


From hgs@cs.columbia.edu  Sat Jun 19 01:42:50 2010
Return-Path: <hgs@cs.columbia.edu>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 643CF3A689B for <core@core3.amsl.com>; Sat, 19 Jun 2010 01:42:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.185
X-Spam-Level: 
X-Spam-Status: No, score=-4.185 tagged_above=-999 required=5 tests=[BAYES_40=-0.185, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yZanCy0sq5ol for <core@core3.amsl.com>; Sat, 19 Jun 2010 01:42:49 -0700 (PDT)
Received: from serrano.cc.columbia.edu (serrano.cc.columbia.edu [128.59.29.6]) by core3.amsl.com (Postfix) with ESMTP id 009943A6851 for <core@ietf.org>; Sat, 19 Jun 2010 01:42:48 -0700 (PDT)
Received: from [172.31.13.6] ([210.72.28.251]) (user=hgs10 mech=PLAIN bits=0) by serrano.cc.columbia.edu (8.14.4/8.14.3) with ESMTP id o5J8gohw008982 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Sat, 19 Jun 2010 04:42:52 -0400 (EDT)
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com>
In-Reply-To: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com>
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
Message-Id: <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu>
Content-Transfer-Encoding: quoted-printable
From: Henning Schulzrinne <hgs@cs.columbia.edu>
Date: Sat, 19 Jun 2010 04:42:49 -0400
To: Gilman Tolle <gtolle@archrock.com>
X-Mailer: Apple Mail (2.1078)
X-No-Spam-Score: Local
X-Scanned-By: MIMEDefang 2.68 on 128.59.29.6
Cc: core@ietf.org
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 19 Jun 2010 08:42:50 -0000

In my opinion, a good example how religious adherence to REST leads to =
obscure and naming-based mechanisms that hide what's really happening =
behind arbitrary namespace conventions.=20

Henning

On Jun 18, 2010, at 1:58 PM, Gilman Tolle wrote:

> As mentioned in Ticket #1 and #2, the subscribe/notify system in the =
current CoAP draft is underspecified. For example:
>=20
> * Unless the client's URL structure exactly mirrors the server's, a =
client creating a subscription needs to specify a destination URL for =
delivery of the updated resource, and there's no mechanism for that in =
the draft.
> * There's no description of what CoAP method is used to deliver the =
resource.
> * There's no mechanism for unsubscribing, querying, or managing =
existing subscriptions.
>=20
> I'd like to suggest an alternate approach to subscribe/notify that =
treats subscriptions as RESTful resources, and does not introduce any =
new HTTP methods.
>=20
> Start by defining two "well-known" URI namespaces: "/.sub" and =
"/.subs".
>=20
> When a client subscribes to a URL (e.g. "/info"), they prepend "/.sub" =
to that URL, and then POST a message to the new URL (e.g. "/.sub/info").
>=20
> The MIME type of the client's POST body is =
application/x-www-form-urlencoded, and the client specifies the =
subscription parameters as key-value pairs.
>=20
> The most important key-value pair is "cb", short for "callback". So, =
the POST body would contain "cb=3Dcoap://client_addr/my/info/receiver". =
Because application/x-www-form-urlencoded is extensible, we can define =
additional parameters now or in the future. For example, we can define =
parameters for "suggested subscription lifetime", "maximum send =
interval", "authentication to use on delivery", etc.
>=20
> If the "cb" parameter is omitted, we can fall back to the method in =
the draft -- the server assumes that the delivery URL is the source =
address, the default CoAP port (because the source port is ephemeral), =
and a path that mirrors the path being subscribed to.
>=20
> The response to a successful subscription POST should be "201 =
Created", with a Location header that includes a new URL on the server =
within the "/.subs" well-known URI namespace. For example, the server =
could send a Location of "/.subs/2", if the server is assigning integer =
IDs to new subscriptions. If the server does not support subscription on =
that resource, it can return one of the HTTP error codes instead.
>=20
> =46rom then on, the server begins to POST new entity bodies to the =
callback URL as appropriate.
>=20
> The returned subscription URI ("/.subs/2"), can now be stored by the =
client and used to:
>=20
> * query its subscription status with a GET on that URI, with the body =
defined as application/x-www-form-urlencoded and containing information =
about the subscription (callback URL, remaining lifetime, etc)
> * refresh its subscription or change its subscription parameters with =
a PUT to that URI using the application/x-www-form-urlencoded parameter =
set described above
> * cancel its subscription with a DELETE on that URI
>=20
> In addition, if the server chooses to support it (modulo security and =
discoverability choices), the server can provide browsing of =
subscriptions by supporting a GET on "/.subs".
>=20
> What do you think?
>=20
> Gil
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>=20


From fluffy@cisco.com  Sat Jun 19 11:08:01 2010
Return-Path: <fluffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 18D783A68C4 for <core@core3.amsl.com>; Sat, 19 Jun 2010 11:08:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -110.064
X-Spam-Level: 
X-Spam-Status: No, score=-110.064 tagged_above=-999 required=5 tests=[AWL=0.535, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FYHjyisgf-d0 for <core@core3.amsl.com>; Sat, 19 Jun 2010 11:08:00 -0700 (PDT)
Received: from sj-iport-2.cisco.com (sj-iport-2.cisco.com [171.71.176.71]) by core3.amsl.com (Postfix) with ESMTP id 5CA033A684E for <core@ietf.org>; Sat, 19 Jun 2010 11:08:00 -0700 (PDT)
Authentication-Results: sj-iport-2.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAF6kHEyrR7Ht/2dsb2JhbACfGnGnB5lQhRsEg1Q
X-IronPort-AV: E=Sophos;i="4.53,445,1272844800"; d="scan'208";a="262720194"
Received: from sj-core-1.cisco.com ([171.71.177.237]) by sj-iport-2.cisco.com with ESMTP; 19 Jun 2010 18:08:06 +0000
Received: from [192.168.4.177] (rcdn-fluffy-8711.cisco.com [10.99.9.18]) by sj-core-1.cisco.com (8.13.8/8.14.3) with ESMTP id o5JI85tx004453; Sat, 19 Jun 2010 18:08:06 GMT
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
Impp: xmpp:cullenfluffyjennings@jabber.org
From: Cullen Jennings <fluffy@cisco.com>
In-Reply-To: <4C1B0A82.1020604@tanu.org>
Date: Sat, 19 Jun 2010 12:08:04 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <DA99B30D-28FE-40C7-B2BB-DD669CF856ED@cisco.com>
References: <mailman.53.1275678008.15064.core@ietf.org>	<8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com>	<006FEB08D9C6444AB014105C9AEB133FB49CC759B1@il-ex01.ad.checkpoint.com>	<4C17D075.6000603@gridmerge.com>	<006FEB08D9C6444AB014105C9AEB133FB49CC759BE@il-ex01.ad.checkpoint.com>	<4C18E173.1080506@gridmerge.com>	<87vd9ilr9j.fsf@kelsey-ws.hq.ember.com> <41F8352F-DBCA-4B70-9AD9-DB8DDCE2469B@tzi.org> <4C1B0A82.1020604@tanu.org>
To: Shoichi Sakane <sakane@tanu.org>
X-Mailer: Apple Mail (2.1078)
Cc: core@ietf.org
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 19 Jun 2010 18:08:01 -0000

On Jun 17, 2010, at 11:56 PM, Shoichi Sakane wrote:

> TLS and DTLS is little different protocol, maybe 50% is same.

Just two minor points .... I was looking at the the code for DTLS in =
openssl and it it looked like it nearly all the code for TLS and DTLS =
were the same.=20

I'll remind people that HIP does not actually provide confidentiality or =
integrity of traffic - that is provided by running HIP over IPSEC.=20



From zach@sensinode.com  Sun Jun 20 01:36:17 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id D7F783A686C for <core@core3.amsl.com>; Sun, 20 Jun 2010 01:36:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.487
X-Spam-Level: 
X-Spam-Status: No, score=-1.487 tagged_above=-999 required=5 tests=[AWL=-0.488, BAYES_50=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wq40UWi3HC3m for <core@core3.amsl.com>; Sun, 20 Jun 2010 01:36:12 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id C53343A6889 for <core@ietf.org>; Sun, 20 Jun 2010 01:36:09 -0700 (PDT)
Received: from [192.168.1.2] (line-5034.dyn.kponet.fi [85.29.65.252]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5K8a2TO016242 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Sun, 20 Jun 2010 11:36:03 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com>
Date: Sun, 20 Jun 2010 11:36:04 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <BAFD82AB-87A3-4F73-AC62-0BE56E47B29F@sensinode.com>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com>
To: Gilman Tolle <gtolle@archrock.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 20 Jun 2010 08:36:18 -0000

Hey, Ticket #2 was off limits before Ticket #1 is closed ;-)=20

No really - it is super hard to talk about methods and solutions before =
we know what the architecture and requirements are. I don't think =
finding a solution will be very hard once we nail that down. But right =
now everyone with a solution has a different set of requirements ;-(=20

Cullen, I think the input to your Ticket #1 thread on what is SUB/NOT =
was pretty good already. And then Carsten added some more. Could you =
guys please write a 2-page I-D on this so that we can converge and move =
on to Ticket #2. We would need that next week in order to get a new =
SUB/NOT mechanism into -01 of the draft before the cutoff.=20

How does that sound as a way forward?

Zach

On Jun 18, 2010, at 8:58 PM, Gilman Tolle wrote:

> As mentioned in Ticket #1 and #2, the subscribe/notify system in the =
current CoAP draft is underspecified. For example:
>=20
> * Unless the client's URL structure exactly mirrors the server's, a =
client creating a subscription needs to specify a destination URL for =
delivery of the updated resource, and there's no mechanism for that in =
the draft.
> * There's no description of what CoAP method is used to deliver the =
resource.
> * There's no mechanism for unsubscribing, querying, or managing =
existing subscriptions.
>=20
> I'd like to suggest an alternate approach to subscribe/notify that =
treats subscriptions as RESTful resources, and does not introduce any =
new HTTP methods.
>=20
> Start by defining two "well-known" URI namespaces: "/.sub" and =
"/.subs".
>=20
> When a client subscribes to a URL (e.g. "/info"), they prepend "/.sub" =
to that URL, and then POST a message to the new URL (e.g. "/.sub/info").
>=20
> The MIME type of the client's POST body is =
application/x-www-form-urlencoded, and the client specifies the =
subscription parameters as key-value pairs.
>=20
> The most important key-value pair is "cb", short for "callback". So, =
the POST body would contain "cb=3Dcoap://client_addr/my/info/receiver". =
Because application/x-www-form-urlencoded is extensible, we can define =
additional parameters now or in the future. For example, we can define =
parameters for "suggested subscription lifetime", "maximum send =
interval", "authentication to use on delivery", etc.
>=20
> If the "cb" parameter is omitted, we can fall back to the method in =
the draft -- the server assumes that the delivery URL is the source =
address, the default CoAP port (because the source port is ephemeral), =
and a path that mirrors the path being subscribed to.
>=20
> The response to a successful subscription POST should be "201 =
Created", with a Location header that includes a new URL on the server =
within the "/.subs" well-known URI namespace. For example, the server =
could send a Location of "/.subs/2", if the server is assigning integer =
IDs to new subscriptions. If the server does not support subscription on =
that resource, it can return one of the HTTP error codes instead.
>=20
> =46rom then on, the server begins to POST new entity bodies to the =
callback URL as appropriate.
>=20
> The returned subscription URI ("/.subs/2"), can now be stored by the =
client and used to:
>=20
> * query its subscription status with a GET on that URI, with the body =
defined as application/x-www-form-urlencoded and containing information =
about the subscription (callback URL, remaining lifetime, etc)
> * refresh its subscription or change its subscription parameters with =
a PUT to that URI using the application/x-www-form-urlencoded parameter =
set described above
> * cancel its subscription with a DELETE on that URI
>=20
> In addition, if the server chooses to support it (modulo security and =
discoverability choices), the server can provide browsing of =
subscriptions by supporting a GET on "/.subs".
>=20
> What do you think?
>=20
> Gil
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From cabo@tzi.org  Sun Jun 20 01:57:01 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A60BE3A685A for <core@core3.amsl.com>; Sun, 20 Jun 2010 01:57:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.47
X-Spam-Level: 
X-Spam-Status: No, score=-5.47 tagged_above=-999 required=5 tests=[AWL=0.779,  BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Z95sV-dVogrL for <core@core3.amsl.com>; Sun, 20 Jun 2010 01:57:01 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 92C8D3A6833 for <core@ietf.org>; Sun, 20 Jun 2010 01:56:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5K8uqE8003420; Sun, 20 Jun 2010 10:56:52 +0200 (CEST)
Received: from [192.168.217.101] (p5489F1D3.dip.t-dialin.net [84.137.241.211]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id EB54FBFD9;  Sun, 20 Jun 2010 10:56:51 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <BAFD82AB-87A3-4F73-AC62-0BE56E47B29F@sensinode.com>
Date: Sun, 20 Jun 2010 10:56:50 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <E7F400F6-0EF0-425D-A761-5E83EDC1146A@tzi.org>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com> <BAFD82AB-87A3-4F73-AC62-0BE56E47B29F@sensinode.com>
To: Zach Shelby <zach@sensinode.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 20 Jun 2010 08:57:01 -0000

On Jun 20, 2010, at 10:36, Zach Shelby wrote:

> 2-page I-D=20

Working on it.  Will be more than two pages, though.

(There will also be another I-D on misc stuff that is missing for CoAP =
completion.)

Gruesse, Carsten


From heer@informatik.rwth-aachen.de  Sun Jun 20 02:26:11 2010
Return-Path: <heer@informatik.rwth-aachen.de>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E778E3A689B for <core@core3.amsl.com>; Sun, 20 Jun 2010 02:26:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.201
X-Spam-Level: 
X-Spam-Status: No, score=-2.201 tagged_above=-999 required=5 tests=[BAYES_50=0.001, HELO_EQ_DE=0.35, HELO_MISMATCH_DE=1.448, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1qRfxTgRPeGF for <core@core3.amsl.com>; Sun, 20 Jun 2010 02:26:10 -0700 (PDT)
Received: from mta-1.ms.rz.rwth-aachen.de (mta-1.ms.rz.RWTH-Aachen.DE [134.130.7.72]) by core3.amsl.com (Postfix) with ESMTP id 974B23A6873 for <core@ietf.org>; Sun, 20 Jun 2010 02:26:10 -0700 (PDT)
MIME-version: 1.0
Content-transfer-encoding: 7BIT
Content-type: text/plain; charset=us-ascii
Received: from ironport-out-1.rz.rwth-aachen.de ([134.130.5.40]) by mta-1.ms.rz.RWTH-Aachen.de (Sun Java(tm) System Messaging Server 6.3-7.04 (built Sep 26 2008)) with ESMTP id <0L4B00EM13JRIND0@mta-1.ms.rz.RWTH-Aachen.de> for core@ietf.org; Sun, 20 Jun 2010 11:26:15 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.53,447,1272837600";   d="scan'208";a="62090034"
Received: from relay-auth-2.ms.rz.rwth-aachen.de (HELO relay-auth-2) ([134.130.7.79]) by ironport-in-1.rz.rwth-aachen.de with ESMTP; Sun, 20 Jun 2010 11:26:15 +0200
Received: from coyote.lan ([unknown] [91.179.145.124]) by relay-auth-2.ms.rz.rwth-aachen.de (Sun Java(tm) System Messaging Server 7.0-3.01 64bit (built Dec 9 2008)) with ESMTPA id <0L4B006DD3JQ9T20@relay-auth-2.ms.rz.rwth-aachen.de> for core@ietf.org; Sun, 20 Jun 2010 11:26:15 +0200 (CEST)
From: Tobias Heer <heer@cs.rwth-aachen.de>
In-reply-to: <DA99B30D-28FE-40C7-B2BB-DD669CF856ED@cisco.com>
Date: Sun, 20 Jun 2010 13:26:14 +0200
Message-id: <F5473C90-01E9-499F-B7C5-9BB58C6087CA@cs.rwth-aachen.de>
References: <mailman.53.1275678008.15064.core@ietf.org> <8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759B1@il-ex01.ad.checkpoint.com> <4C17D075.6000603@gridmerge.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759BE@il-ex01.ad.checkpoint.com> <4C18E173.1080506@gridmerge.com> <87vd9ilr9j.fsf@kelsey-ws.hq.ember.com> <41F8352F-DBCA-4B70-9AD9-DB8DDCE2469B@tzi.org> <4C1B0A82.1020604@tanu.org> <DA99B30D-28FE-40C7-B2BB-DD669CF856ED@cisco.com>
To: core@ietf.org
X-Mailer: Apple Mail (2.1081)
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 20 Jun 2010 09:26:12 -0000

Hi, 
Am 19.06.2010 um 20:08 schrieb Cullen Jennings:

> 
> On Jun 17, 2010, at 11:56 PM, Shoichi Sakane wrote:
> 
>> TLS and DTLS is little different protocol, maybe 50% is same.
> 
> Just two minor points .... I was looking at the the code for DTLS in openssl and it it looked like it nearly all the code for TLS and DTLS were the same. 
> 
> I'll remind people that HIP does not actually provide confidentiality or integrity of traffic - that is provided by running HIP over IPSEC.
Yes, you are right. HIP does not have its own mechanisms for handling the actual payload but relies on IPsec. Therefore, HIP requires at least one IPsec mode (preferably BEET).

Just a tiny clarification to avoid confusion. HIP doesn't actually run over IPsec but sets up IPsec security associations for the playload. Hence, HIP runs directly on IP while all payload is handled by IPsec. However, the IPsec security associations use the symmetric keys that were exchanged during the HIP handshake.

Tobias

> 
> 
> 
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core




-- 
Dipl.-Inform. Tobias Heer, Ph.D. Student
Distributed Systems Group 
RWTH Aachen University, Germany
tel: +49 241 80 207 76
web: http://ds.cs.rwth-aachen.de/members/heer
blog: http://dtobi.wordpress.com/
card: http://card.ly/dtobi








From paduffy@cisco.com  Sun Jun 20 06:49:25 2010
Return-Path: <paduffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2C38E3A692E for <core@core3.amsl.com>; Sun, 20 Jun 2010 06:49:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.083
X-Spam-Level: 
X-Spam-Status: No, score=-10.083 tagged_above=-999 required=5 tests=[AWL=0.516, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1ECuyITKkiaS for <core@core3.amsl.com>; Sun, 20 Jun 2010 06:49:23 -0700 (PDT)
Received: from rtp-iport-2.cisco.com (rtp-iport-2.cisco.com [64.102.122.149]) by core3.amsl.com (Postfix) with ESMTP id 0628A3A6880 for <core@ietf.org>; Sun, 20 Jun 2010 06:49:22 -0700 (PDT)
Authentication-Results: rtp-iport-2.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAKO5HUxAZnwM/2dsb2JhbACfCnGmP4F4CwGXKoUbBJA7
X-IronPort-AV: E=Sophos;i="4.53,447,1272844800"; d="scan'208";a="123615496"
Received: from rtp-core-1.cisco.com ([64.102.124.12]) by rtp-iport-2.cisco.com with ESMTP; 20 Jun 2010 13:49:29 +0000
Received: from [10.86.246.52] ([10.86.246.52]) by rtp-core-1.cisco.com (8.13.8/8.14.3) with ESMTP id o5KDnS59021270; Sun, 20 Jun 2010 13:49:28 GMT
Message-ID: <4C1E1C68.2070609@cisco.com>
Date: Sun, 20 Jun 2010 09:49:28 -0400
From: Paul Duffy <paduffy@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: Henning Schulzrinne <hgs@cs.columbia.edu>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com> <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu>
In-Reply-To: <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Cc: core@ietf.org
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: paduffy@cisco.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 20 Jun 2010 13:49:25 -0000

I am not understanding why subscription resources need to be special 
cased with dedicated COAP methods.  Subscriptions are resources. they 
are created, have a lifetime, are deleted, can be modified, can be 
enumerated.  It makes no sense to me to add a special case method for 
creation (SUBSCRIBE), yet still be using the other methods to manage the 
subscriptions (GET, DELETE, etc.)

Yes, URI structure and payload definitions will be required for 
subscriptions.  Why is this a problem?

My main concern is that each incremental step COAP takes away from HTTP 
messaging semantics will result in difficult interoperability with the 
rest of the Web.


On 6/19/2010 4:42 AM, Henning Schulzrinne wrote:
> In my opinion, a good example how religious adherence to REST leads to obscure and naming-based mechanisms that hide what's really happening behind arbitrary namespace conventions.
>
> Henning
>
> On Jun 18, 2010, at 1:58 PM, Gilman Tolle wrote:
>
>    
>> As mentioned in Ticket #1 and #2, the subscribe/notify system in the current CoAP draft is underspecified. For example:
>>
>> * Unless the client's URL structure exactly mirrors the server's, a client creating a subscription needs to specify a destination URL for delivery of the updated resource, and there's no mechanism for that in the draft.
>> * There's no description of what CoAP method is used to deliver the resource.
>> * There's no mechanism for unsubscribing, querying, or managing existing subscriptions.
>>
>> I'd like to suggest an alternate approach to subscribe/notify that treats subscriptions as RESTful resources, and does not introduce any new HTTP methods.
>>
>> Start by defining two "well-known" URI namespaces: "/.sub" and "/.subs".
>>
>> When a client subscribes to a URL (e.g. "/info"), they prepend "/.sub" to that URL, and then POST a message to the new URL (e.g. "/.sub/info").
>>
>> The MIME type of the client's POST body is application/x-www-form-urlencoded, and the client specifies the subscription parameters as key-value pairs.
>>
>> The most important key-value pair is "cb", short for "callback". So, the POST body would contain "cb=coap://client_addr/my/info/receiver". Because application/x-www-form-urlencoded is extensible, we can define additional parameters now or in the future. For example, we can define parameters for "suggested subscription lifetime", "maximum send interval", "authentication to use on delivery", etc.
>>
>> If the "cb" parameter is omitted, we can fall back to the method in the draft -- the server assumes that the delivery URL is the source address, the default CoAP port (because the source port is ephemeral), and a path that mirrors the path being subscribed to.
>>
>> The response to a successful subscription POST should be "201 Created", with a Location header that includes a new URL on the server within the "/.subs" well-known URI namespace. For example, the server could send a Location of "/.subs/2", if the server is assigning integer IDs to new subscriptions. If the server does not support subscription on that resource, it can return one of the HTTP error codes instead.
>>
>>  From then on, the server begins to POST new entity bodies to the callback URL as appropriate.
>>
>> The returned subscription URI ("/.subs/2"), can now be stored by the client and used to:
>>
>> * query its subscription status with a GET on that URI, with the body defined as application/x-www-form-urlencoded and containing information about the subscription (callback URL, remaining lifetime, etc)
>> * refresh its subscription or change its subscription parameters with a PUT to that URI using the application/x-www-form-urlencoded parameter set described above
>> * cancel its subscription with a DELETE on that URI
>>
>> In addition, if the server chooses to support it (modulo security and discoverability choices), the server can provide browsing of subscriptions by supporting a GET on "/.subs".
>>
>> What do you think?
>>
>> Gil
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>
>>      
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>    


From cabo@tzi.org  Sun Jun 20 07:15:38 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 692903A68B2 for <core@core3.amsl.com>; Sun, 20 Jun 2010 07:15:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.627
X-Spam-Level: 
X-Spam-Status: No, score=-4.627 tagged_above=-999 required=5 tests=[AWL=-0.237, BAYES_20=-0.74, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5XX9rrYfh-h5 for <core@core3.amsl.com>; Sun, 20 Jun 2010 07:15:37 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 23D303A681D for <core@ietf.org>; Sun, 20 Jun 2010 07:15:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5KEFUeW006669; Sun, 20 Jun 2010 16:15:30 +0200 (CEST)
Received: from [192.168.217.101] (p5489E14C.dip.t-dialin.net [84.137.225.76]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id B5AE1B40D;  Sun, 20 Jun 2010 16:15:30 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <4C1E1C68.2070609@cisco.com>
Date: Sun, 20 Jun 2010 16:15:29 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com> <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu> <4C1E1C68.2070609@cisco.com>
To: paduffy@cisco.com
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 20 Jun 2010 14:15:38 -0000

On Jun 20, 2010, at 15:49, Paul Duffy wrote:

> Subscriptions are resources. they are created, have a lifetime, are =
deleted, can be modified, can be enumerated. =20

Why do you think that is the right design?

The main job of what you are calling a subscription is to manage =
conversation state, things like transport addresses, as opposed to =
application state.
Why is the resource level the right way to manage that state?

I'm sure that this design can be made to work; I'm just wondering what =
its advantages and disadvantages are.

Let me illustrate this point with a couple of slight modifications of =
your statement:

> Connections are resources. they are created, have a lifetime, are =
deleted, can be modified, can be enumerated. =20
> Cached representations are resources. they are created, have a =
lifetime, are deleted, can be modified, can be enumerated. =20

I'm pretty sure that in both cases this approach would lead to a =
contorted design; there is a reason why this state stays below the level =
of resources and their representation.

So what is it that makes the desire of one connector to remain informed =
about a resource, itself a resource?
(I'm not saying it is not, I just want to hear good arguments why that =
makes sense.  Or why it does not make sense.)

Gruesse, Carsten


From paduffy@cisco.com  Sun Jun 20 08:16:39 2010
Return-Path: <paduffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 67FCD3A69D9 for <core@core3.amsl.com>; Sun, 20 Jun 2010 08:16:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.511
X-Spam-Level: 
X-Spam-Status: No, score=-9.511 tagged_above=-999 required=5 tests=[AWL=-0.401, BAYES_05=-1.11, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id O4ZoXg0cmfd6 for <core@core3.amsl.com>; Sun, 20 Jun 2010 08:16:38 -0700 (PDT)
Received: from rtp-iport-2.cisco.com (rtp-iport-2.cisco.com [64.102.122.149]) by core3.amsl.com (Postfix) with ESMTP id 46FE83A686A for <core@ietf.org>; Sun, 20 Jun 2010 08:16:38 -0700 (PDT)
Authentication-Results: rtp-iport-2.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAI/NHUxAZnwM/2dsb2JhbACfB3GmN4F4CwGXJoUbBA
X-IronPort-AV: E=Sophos;i="4.53,448,1272844800"; d="scan'208";a="123624353"
Received: from rtp-core-1.cisco.com ([64.102.124.12]) by rtp-iport-2.cisco.com with ESMTP; 20 Jun 2010 15:16:44 +0000
Received: from [10.86.246.52] ([10.86.246.52]) by rtp-core-1.cisco.com (8.13.8/8.14.3) with ESMTP id o5KFGlYq009100; Sun, 20 Jun 2010 15:16:47 GMT
Message-ID: <4C1E30DB.2010305@cisco.com>
Date: Sun, 20 Jun 2010 11:16:43 -0400
From: Paul Duffy <paduffy@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9) Gecko/20100317 Thunderbird/3.0.4
MIME-Version: 1.0
To: Carsten Bormann <cabo@tzi.org>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com> <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu> <4C1E1C68.2070609@cisco.com> <88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org>
In-Reply-To: <88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: paduffy@cisco.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 20 Jun 2010 15:16:39 -0000

On 6/20/2010 10:15 AM, Carsten Bormann wrote:
> On Jun 20, 2010, at 15:49, Paul Duffy wrote:
>
>    
>> Subscriptions are resources. they are created, have a lifetime, are deleted, can be modified, can be enumerated.
>>      
> Why do you think that is the right design?
>    

Two choices...

- a subscription URI as child to the subscribed parent URI.   
protocol://{address}/somepath/subscription.  You subscribe directly to 
the resource.  Very OO

- a single subscription URI for the endpoint  
protocol:.//{address}/subscription.  All subscriptions managed @ a 
single URI.

Payloads defined appropriately

> The main job of what you are calling a subscription is to manage conversation state, things like transport addresses, as opposed to application state.
>    

Disagree.  The main job of a subscription is to monitor changes to 
application state, and alert interested parties to those changes in 
application state.

> Why is the resource level the right way to manage that state?
>
> I'm sure that this design can be made to work; I'm just wondering what its advantages and disadvantages are.
>
> Let me illustrate this point with a couple of slight modifications of your statement:
>
>    
>> Connections are resources. they are created, have a lifetime, are deleted, can be modified, can be enumerated.
>> Cached representations are resources. they are created, have a lifetime, are deleted, can be modified, can be enumerated.
>>      
> I'm pretty sure that in both cases this approach would lead to a contorted design; there is a reason why this state stays below the level of resources and their representation.
>
> So what is it that makes the desire of one connector to remain informed about a resource, itself a resource?
> (I'm not saying it is not, I just want to hear good arguments why that makes sense.  Or why it does not make sense.)
>
> Gruesse, Carsten
>
>
>    


From cabo@tzi.org  Sun Jun 20 08:51:46 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id F30B33A69EC for <core@core3.amsl.com>; Sun, 20 Jun 2010 08:51:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.533
X-Spam-Level: 
X-Spam-Status: No, score=-5.533 tagged_above=-999 required=5 tests=[AWL=0.716,  BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Eqv3zFa51z4U for <core@core3.amsl.com>; Sun, 20 Jun 2010 08:51:44 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 0EBCF3A67F8 for <core@ietf.org>; Sun, 20 Jun 2010 08:51:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5KFpZ7l018215; Sun, 20 Jun 2010 17:51:35 +0200 (CEST)
Received: from [192.168.217.101] (p5489E14C.dip.t-dialin.net [84.137.225.76]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 1DFAAB43C;  Sun, 20 Jun 2010 17:51:35 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <4C1E30DB.2010305@cisco.com>
Date: Sun, 20 Jun 2010 17:51:34 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com> <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu> <4C1E1C68.2070609@cisco.com> <88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org> <4C1E30DB.2010305@cisco.com>
To: paduffy@cisco.com
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 20 Jun 2010 15:51:46 -0000

On Jun 20, 2010, at 17:16, Paul Duffy wrote:

> Disagree.  The main job of a subscription is to monitor changes to =
application state, and alert interested parties to those changes in =
application state.

If you really believe that, then it's the job of the application to fill =
in the subscription.
Problem solved, nothing to do at the CoAP level.

I think this is a bit more subtle.  What is it that we expect the =
protocol to do?
Maybe nothing, and we *are* indeed done.

I'd love to see your payloads, BTW.

Gruesse, Carsten

PS.: Trying to support a position with "Very OO" is not going to win =
over any REST proponents :-)


From shidan@gmail.com  Sun Jun 20 09:37:43 2010
Return-Path: <shidan@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id AF6753A6885 for <core@core3.amsl.com>; Sun, 20 Jun 2010 09:37:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.11
X-Spam-Level: 
X-Spam-Status: No, score=-1.11 tagged_above=-999 required=5 tests=[BAYES_05=-1.11]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ViLrLfZ0B+PC for <core@core3.amsl.com>; Sun, 20 Jun 2010 09:37:42 -0700 (PDT)
Received: from mail-ww0-f44.google.com (mail-ww0-f44.google.com [74.125.82.44]) by core3.amsl.com (Postfix) with ESMTP id 5E5223A67D1 for <core@ietf.org>; Sun, 20 Jun 2010 09:37:42 -0700 (PDT)
Received: by wwi18 with SMTP id 18so415529wwi.31 for <core@ietf.org>; Sun, 20 Jun 2010 09:37:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=mhkBUY8q2jYzdQyENCfbmns/vlkZ4ueZkQbura2B0f8=; b=FlQhRko0xJU43jRJFn8Isw8bLxfx73TjTA39xa8sr1J3UbteLYvjf19v05Y0FsUJN7 eAZkzDeA8wNzTgwuR1SMt4lfQM8xPCw9VMnsy17VNpe6l0Gy0UL+oi9Qgc/IM7NyK+rg 5l5FH/NzA8RWboAg8EjP2hPz/EBfuroxkmdrI=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=kJbcp9bPkwhpzOpyB1qXvWbZ2qkPCYe2LSiiJ1/F6anNVVuR4Q9G88ohEA44zLzDzL NGtKptyWXp9g25d+9IkMyQmUtou5jWM+no2j/lXarytFti58I7tVECYInKrAVga4ecks di8mY4kTZx8yENfd26EcVpm9/O3Oroa1lnmIw=
MIME-Version: 1.0
Received: by 10.216.185.71 with SMTP id t49mr1931868wem.62.1277051865469; Sun,  20 Jun 2010 09:37:45 -0700 (PDT)
Received: by 10.216.29.210 with HTTP; Sun, 20 Jun 2010 09:37:45 -0700 (PDT)
In-Reply-To: <A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com> <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu> <4C1E1C68.2070609@cisco.com> <88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org> <4C1E30DB.2010305@cisco.com> <A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org>
Date: Sun, 20 Jun 2010 12:37:45 -0400
Message-ID: <AANLkTilFUgkAxmaDJdbd00rglQvJVS_aLjmniirVz4co@mail.gmail.com>
From: Shidan <shidan@gmail.com>
To: Carsten Bormann <cabo@tzi.org>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 20 Jun 2010 16:37:43 -0000

I think Paul is absolutely right that the important subscriptions are
those of application state. I fully agree with him that gatewaying
with standard HTTP will be simpler if we consider subscriptions as
resources.

But the question is will it make sensor networks more complicated than
they need be?  CoAp is not the web, its for real-time P2P sensor
networks, where at the application level, there its realistic to
consider cases with more or as many sources as sinks and nodes as both
(at the application level). Some sort of intrinsic event bus with
event filtering in the network makes sense.

I think at the end of the day, do we want something that interfaces
with HTTP as nice as possible or something that's a nicer fit for
sensor networks.

Sent from my phone


On Sun, Jun 20, 2010 at 11:51 AM, Carsten Bormann <cabo@tzi.org> wrote:
> On Jun 20, 2010, at 17:16, Paul Duffy wrote:
>
>> Disagree. =A0The main job of a subscription is to monitor changes to app=
lication state, and alert interested parties to those changes in applicatio=
n state.
>
> If you really believe that, then it's the job of the application to fill =
in the subscription.
> Problem solved, nothing to do at the CoAP level.
>
> I think this is a bit more subtle. =A0What is it that we expect the proto=
col to do?
> Maybe nothing, and we *are* indeed done.
>
> I'd love to see your payloads, BTW.
>
> Gruesse, Carsten
>
> PS.: Trying to support a position with "Very OO" is not going to win over=
 any REST proponents :-)
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>

From zach@sensinode.com  Sun Jun 20 10:19:47 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7A8F13A68D8 for <core@core3.amsl.com>; Sun, 20 Jun 2010 10:19:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.15
X-Spam-Level: 
X-Spam-Status: No, score=-0.15 tagged_above=-999 required=5 tests=[BAYES_05=-1.11, RCVD_IN_BL_SPAMCOP_NET=1.96, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Jrl9InYYRXAY for <core@core3.amsl.com>; Sun, 20 Jun 2010 10:19:46 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id F37DA3A68D7 for <core@ietf.org>; Sun, 20 Jun 2010 10:19:45 -0700 (PDT)
Received: from [10.10.2.81] ([84.239.254.28]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5KHJjd6024224 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Sun, 20 Jun 2010 20:19:46 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <AANLkTilFUgkAxmaDJdbd00rglQvJVS_aLjmniirVz4co@mail.gmail.com>
Date: Sun, 20 Jun 2010 20:19:49 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <45EA9EB6-CEF0-4417-B09C-E41AC4C31F31@sensinode.com>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com> <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu> <4C1E1C68.2070609@cisco.com> <88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org> <4C1E30DB.2010305@cisco.com> <A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org> <AANLkTilFUgkAxmaDJdbd00rglQvJVS_aLjmniirVz4co@mail.gmail.com>
To: Shidan <shidan@gmail.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 20 Jun 2010 17:19:47 -0000

On Jun 20, 2010, at 7:37 PM, Shidan wrote:

> I think at the end of the day, do we want something that interfaces
> with HTTP as nice as possible or something that's a nicer fit for
> sensor networks.


This is a critical point to solve for Ticket #1 - SUB/NOT architecture =
and requirements.=20

I would say our first priority is to make a RESTful application protocol =
for embedded M2M application requirements (energy, building automation =
etc.). RESTful !=3D HTTP, thus that does not mean we must do everything =
as well (or as badly) as HTTP. The secondary priority is to define an =
HTTP mapping, which obviously should be as simple as possible.=20

Regarding proxying SUB/NOT - let's keep in mind the kinds of cases in =
which CoAP-HTTP proxying will actually be used, then that helps quite a =
bit in understanding how to optimize the HTTP mapping. For example, =
everyone seems to be assuming that subscriptions will be end-to-end =
across an CoAP-HTTP proxy. In practice what I have been seeing so far is =
a split approach as you want to cache and aggregate subscriptions in a =
proxy anyways. There are also security relationships that lean towards a =
split approach. Therefore I would say our main priority is a split =
SUB/NOT architecture WRT HTTP mapping.

As caching is an important feature of such a proxy, that brings us one =
more requirement. Notifications MUST be very easily identified with the =
resource they represent  so that the same cache used for responses to =
GETs can be leveraged. This keeps the caching feature of a CoAP-HTTP =
proxy simple. In practice this means the notification must include the =
URL of the  resource.=20

Zach

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From Michael.Stuber@itron.com  Sun Jun 20 12:34:30 2010
Return-Path: <Michael.Stuber@itron.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 6C5163A68D5 for <core@core3.amsl.com>; Sun, 20 Jun 2010 12:34:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.718
X-Spam-Level: 
X-Spam-Status: No, score=-1.718 tagged_above=-999 required=5 tests=[AWL=-1.718, BAYES_50=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bnJpUNmmNEJq for <core@core3.amsl.com>; Sun, 20 Jun 2010 12:34:29 -0700 (PDT)
Received: from mailer-1.itron.com (mailer-1.itron.com [198.182.8.121]) by core3.amsl.com (Postfix) with ESMTP id 641F83A68D0 for <core@ietf.org>; Sun, 20 Jun 2010 12:34:29 -0700 (PDT)
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Sun, 20 Jun 2010 12:34:38 -0700
Message-ID: <05C6A38D732F1144A8C4016BA4416BFE02EEE55D@SPO-EXVS-02.itron.com>
In-Reply-To: <45EA9EB6-CEF0-4417-B09C-E41AC4C31F31@sensinode.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] Proposal for a new subscription mechanism in CoAP
Thread-Index: AcsQnNMOKICYqOvtS6em61T0uiJOcAAEUu8w
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com><1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu><4C1E1C68.2070609@cisco.com><88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org><4C1E30DB.2010305@cisco.com><A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org><AANLkTilFUgkAxmaDJdbd00rglQvJVS_aLjmniirVz4co@mail.gmail.com> <45EA9EB6-CEF0-4417-B09C-E41AC4C31F31@sensinode.com>
From: "Stuber, Michael" <Michael.Stuber@itron.com>
To: "core" <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 20 Jun 2010 19:34:30 -0000

> -----Original Message-----
> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf
Of
> Zach Shelby
>=20
> I would say our first priority is to make a RESTful application
protocol
> for embedded M2M application requirements (energy, building automation
> etc.). RESTful !=3D HTTP, thus that does not mean we must do =
everything
as
> well (or as badly) as HTTP. The secondary priority is to define an
HTTP
> mapping, which obviously should be as simple as possible.

+1
=20
> Regarding proxying SUB/NOT - let's keep in mind the kinds of cases in
> which CoAP-HTTP proxying will actually be used, then that helps quite
a
> bit in understanding how to optimize the HTTP mapping. For example,
> everyone seems to be assuming that subscriptions will be end-to-end
> across an CoAP-HTTP proxy. In practice what I have been seeing so far
is
> a split approach as you want to cache and aggregate subscriptions in a
> proxy anyways. There are also security relationships that lean towards
a
> split approach. Therefore I would say our main priority is a split
> SUB/NOT architecture WRT HTTP mapping.

I think Zach raises a good point w/r/t security.  While this depends on
the as yet to be determined security design, assuming that the security
design follows TLS/DTLS or some similar security session oriented
design, the security conversation will end at the proxy.  If this holds
true, implementations will likely follow one of two major design
paradigms:  Smart proxy that offers a variety of translation
capabilities --or -- CoAp end-to-end. =20

I don't think that HTTP mapping (or not) should form the basis of this
decision.  I think the basis of this decision should be what the impact
is to the embedded devices.  In this regard, I have a request (and feel
free to direct me to a previous email if I missed it):

Zach, and proponents of native sub/not, can you explain the advantages
of having a native sub/notify command? =20

Paul, and proponents of sub/not being managed as a resource, can you
explain the advantages of doing so?

(I can come up with arguments for both but I'd like to hear your
reasoning, specifically with respect to M2M communications in the
embedded space.  I'd really like to set the mapping question aside for
the moment, and just look at the merits of it in M2M context if
possible.)

From sakane@tanu.org  Sun Jun 20 17:55:01 2010
Return-Path: <sakane@tanu.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id DB8123A6971 for <core@core3.amsl.com>; Sun, 20 Jun 2010 17:55:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.148
X-Spam-Level: 
X-Spam-Status: No, score=-0.148 tagged_above=-999 required=5 tests=[AWL=-1.284, BAYES_20=-0.74, HELO_MISMATCH_ORG=0.611, HOST_EQ_JP=1.265]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZfTfXtnrEoyu for <core@core3.amsl.com>; Sun, 20 Jun 2010 17:55:01 -0700 (PDT)
Received: from mama.tanu.org (z189134.ppp.asahi-net.or.jp [110.4.189.134]) by core3.amsl.com (Postfix) with ESMTP id F3EBD3A6968 for <core@ietf.org>; Sun, 20 Jun 2010 17:55:00 -0700 (PDT)
Received: from [64.104.4.53] (dhcp-64-104-shinjuku-wlan-4-53.cisco.com [64.104.4.53]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mama.tanu.org (Postfix) with ESMTPSA id D9EA116B4A for <core@ietf.org>; Mon, 21 Jun 2010 09:55:06 +0900 (JST)
Message-ID: <4C1EB86B.8020402@tanu.org>
Date: Mon, 21 Jun 2010 09:55:07 +0900
From: Shoichi Sakane <sakane@tanu.org>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100423 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
References: <mailman.53.1275678008.15064.core@ietf.org>	<8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com>	<006FEB08D9C6444AB014105C9AEB133FB49CC759B1@il-ex01.ad.checkpoint.com>	<4C17D075.6000603@gridmerge.com>	<006FEB08D9C6444AB014105C9AEB133FB49CC759BE@il-ex01.ad.checkpoint.com>	<4C18E173.1080506@gridmerge.com>	<87vd9ilr9j.fsf@kelsey-ws.hq.ember.com>	<41F8352F-DBCA-4B70-9AD9-DB8DDCE2469B@tzi.org>	<4C1B0A82.1020604@tanu.org>	<DA99B30D-28FE-40C7-B2BB-DD669CF856ED@cisco.com> <F5473C90-01E9-499F-B7C5-9BB58C6087CA@cs.rwth-aachen.de>
In-Reply-To: <F5473C90-01E9-499F-B7C5-9BB58C6087CA@cs.rwth-aachen.de>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Jun 2010 00:55:01 -0000

Hi,

> Am 19.06.2010 um 20:08 schrieb Cullen Jennings:
>> On Jun 17, 2010, at 11:56 PM, Shoichi Sakane wrote:
>>
>>> TLS and DTLS is little different protocol, maybe 50% is same.
>>
>> Just two minor points .... I was looking at the the code for DTLS in openssl and it it looked like it nearly all the code for TLS and DTLS were the same.
>>
>> I'll remind people that HIP does not actually provide confidentiality or integrity of traffic - that is provided by running HIP over IPSEC.
> Yes, you are right. HIP does not have its own mechanisms for handling the actual payload but relies on IPsec. Therefore, HIP requires at least one IPsec mode (preferably BEET).
>
> Just a tiny clarification to avoid confusion. HIP doesn't actually run over IPsec but sets up IPsec security associations for the playload. Hence, HIP runs directly on IP while all payload is handled by IPsec. However, the IPsec security associations use the symmetric keys that were exchanged during the HIP handshake.

Tobias,

Thanks for the clarification.  Yes, I intended to run HIP with IPsec.

Cullen,

I don't say that IPsec is the best.  I just say current my impression.
If we could need only UDP, and one or two session would run on a sensor,
DTLS would be nice.  But, my impression from the discussion on the WG that
we can't assume an simple environment.  So, my impression was shifted into
the lower layer.

I also looked the code of OpenSSL openssl-0.9.8.  The representation of
percentage was not suitable to show difference.  That was my fault.
Actually, 14 files, 8242 lines and 227387 bytes in total are added for
DTLS.  The evaluations are different by each person.

Shoichi Sakane

From cabo@tzi.org  Mon Jun 21 04:19:35 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id D09313A68C2 for <core@core3.amsl.com>; Mon, 21 Jun 2010 04:19:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.598
X-Spam-Level: 
X-Spam-Status: No, score=-5.598 tagged_above=-999 required=5 tests=[AWL=0.651,  BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yYdPYhhz7Bqe for <core@core3.amsl.com>; Mon, 21 Jun 2010 04:19:32 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 02BEE3A684C for <core@ietf.org>; Mon, 21 Jun 2010 04:19:31 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5LBJSor014787 for <core@ietf.org>; Mon, 21 Jun 2010 13:19:28 +0200 (CEST)
Received: from [192.168.217.101] (p5489E888.dip.t-dialin.net [84.137.232.136]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 8E534B791;  Mon, 21 Jun 2010 13:19:26 +0200 (CEST)
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Apple Message framework v1081)
From: Carsten Bormann <cabo@tzi.org>
Date: Mon, 21 Jun 2010 13:19:25 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <4238BAFF-775A-4586-86B0-BBDB55EE9333@tzi.org>
References: <20100621110905.1C1EF3A689A@core3.amsl.com>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1081)
Subject: [core] Fwd: New Version Notification for draft-bormann-coap-misc-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Jun 2010 11:19:35 -0000

I wrote up a couple of things that were discussed in various hallways in =
Anaheim and back at home.

	https://datatracker.ietf.org/doc/draft-bormann-coap-misc/

This is an individual submission that I wrote up in I-D form so we can =
have an informed discussion whether we want to have these changes in =
CoAP or not.

Now back to the discussion of notifications...

Gruesse, Carsten

Begin forwarded message:

> From: IETF I-D Submission Tool <idsubmission@ietf.org>
> Date: June 21, 2010 13:09:05 +0200
> To: cabo@tzi.org
> Subject: New Version Notification for draft-bormann-coap-misc-00=20
>=20
>=20
> A new version of I-D, draft-bormann-coap-misc-00.txt has been =
successfully submitted by Carsten Bormann and posted to the IETF =
repository.
>=20
> Filename:	 draft-bormann-coap-misc
> Revision:	 00
> Title:		 Miscellaneous additions to CoAP
> Creation_date:	 2010-06-21
> WG ID:		 Independent Submission
> Number_of_pages: 17
>=20
> Abstract:
> This short I-D makes a number of interrelated proposals how to solve
> certain problems in the CoRE WG's main protocol, CoAP.
>=20
>=20
>=20
> The IETF Secretariat.
>=20


From fluffy@cisco.com  Mon Jun 21 09:45:53 2010
Return-Path: <fluffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E993A3A68AB for <core@core3.amsl.com>; Mon, 21 Jun 2010 09:45:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -108.486
X-Spam-Level: 
X-Spam-Status: No, score=-108.486 tagged_above=-999 required=5 tests=[AWL=-1.087, BAYES_50=0.001, J_CHICKENPOX_42=0.6, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jI2HZgY4ZUls for <core@core3.amsl.com>; Mon, 21 Jun 2010 09:45:51 -0700 (PDT)
Received: from sj-iport-5.cisco.com (sj-iport-5.cisco.com [171.68.10.87]) by core3.amsl.com (Postfix) with ESMTP id DACED3A67D3 for <core@ietf.org>; Mon, 21 Jun 2010 09:45:50 -0700 (PDT)
Authentication-Results: sj-iport-5.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAGM0H0yrR7Hu/2dsb2JhbACfBnGpT5ouhRsEg1Q
X-IronPort-AV: E=Sophos;i="4.53,454,1272844800"; d="scan'208";a="215476180"
Received: from sj-core-5.cisco.com ([171.71.177.238]) by sj-iport-5.cisco.com with ESMTP; 21 Jun 2010 16:45:42 +0000
Received: from [192.168.4.177] (rcdn-fluffy-8711.cisco.com [10.99.9.18]) by sj-core-5.cisco.com (8.13.8/8.14.3) with ESMTP id o5LGjdZj006319; Mon, 21 Jun 2010 16:45:39 GMT
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
Impp: xmpp:cullenfluffyjennings@jabber.org
From: Cullen Jennings <fluffy@cisco.com>
In-Reply-To: <027891BF-1CA5-4700-A02D-4B385C3F16F6@sensinode.com>
Date: Mon, 21 Jun 2010 10:45:39 -0600
Content-Transfer-Encoding: quoted-printable
Message-Id: <EDD8B83D-F490-4323-9C24-1E1F77C9B112@cisco.com>
References: <a10401cb09b5$c2788f00$0c09a8c0@itron.com> <3586434B-74CC-4B29-900D-244BD6460E39@tzi.org> <D482D083-DE55-4816-BAF5-F69EE76C0B53@tzi.org> <5EFC820A-E8E1-4FE4-8F79-1FB8E7A46CDC@cs.columbia.edu> <a44235c0ea773ba925f7e124bdc070fb@mailserver13.nebula.fi> <3DF22516-31FA-4EC9-8667-8CAB2EAD8D0E@tzi.org> <AANLkTinjPNKKoWY2ktNIVvt_lQnl_E46Ro_tHbQjZGwa@mail.gmail.com> <027891BF-1CA5-4700-A02D-4B385C3F16F6@sensinode.com>
To: Zach Shelby <zach@sensinode.com>
X-Mailer: Apple Mail (2.1078)
Cc: core <core@ietf.org>
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Jun 2010 16:45:54 -0000

Hennings suggestion seemed well worth fleshing out and seeing what it =
looks like - look appealing.=20

I'd like to add a variant to it of also allowing  a IANA FCFS registry =
to assign the numbers to URI. Perhaps a variably length encoded 15 or 23 =
bit number. It gets to the point that these URI  are for M2M =
communications and human readability is less important.=20

Cullen ... Comments as an individual contributor ...

On Jun 17, 2010, at 2:20 PM, Zach Shelby wrote:

> On Jun 13, 2010, at 5:02 AM, Brian Frank wrote:
>=20
>> My vote is to not bother with URI compression.  If you want to use =
short compact URIs, then just define your URI space that way.  There is =
nothing to say that URIs have to be human friendly.  I suspect that most =
6LoWPAN devices have less than 2^16 addressable resources, in which case =
you can use a four byte hex number to create a simple URI space for all =
your resources.  Yes it might be nice to shrink that a byte or two, but =
is it worth the added complexity?=20
>=20
> Right, it starts to be clear that we need to support short alternative =
URIs. In theory that doesn't need anything special. A resource provider =
simply assigns an alternative (short) URI of its own choosing to =
resources that have long URIs or are popular. So short URIs in CoAP =
don't require any kind of mapping server, nor much extra state.
>=20
> What do we need to make that work even better? How does a requester =
find out about a short URI? This could be enough:
>=20
> 1. Henning threw out the idea of the provider being able to include a =
short URI for a resource in the response. So if a provider receives a =
request for the normal URI of a resource, it may include a short =
alternative URI in the response message (if any). After that the =
requestor can use the alternative URI in subsequent requests. This is =
easy to add as the response simply includes a CoAP Uri option in that =
case.=20
>=20
> 2. We could include an attribute "alt=3D" in the resource description =
format, which allows a requestor to discover the alternative URI of a =
resource a priori.=20
>=20
> What do people think? If the WG likes the idea we can make a ticket =
for us to flesh out the details.
>=20
> This is of course orthogonal to the encoding discussion.=20
>=20
> Zach
>=20
>>=20
>>=20
>> On Sat, Jun 12, 2010 at 4:23 PM, Carsten Bormann <cabo@tzi.org> =
wrote:
>> On Jun 12, 2010, at 21:22, zach@sensinode.com wrote:
>>=20
>>> That is 15% savings by just bit shifting.
>>=20
>> It's 12.5 % best case (if you have an exact multiple of 8 =
characters).
>> For /.well-known/resources, the saving is two bytes (i.e., 19 instead =
of 21 as we are eliding the initial slash), or 9.5 %.
>> (The 16-ary Huffman code I've cooked up happens to save 6 bytes or =
28.5 % in this case.  Much better, but still barely worth it.)
>>=20
>> Agreeing on /!r or some such would reduce the URI to a grand total of =
two bytes, or save 19 bytes =3D 90.5 % :-)
>> Heck, just calling it /.well-known/rsrcs has twice the benefit of =
7-bit crunching...
>>=20
>> Just to cite (and maybe learn from) some precedence: When SIP was =
defined, some of its header fields were assigned alternative, =
single-character "compact form" names.
>> Most SIP implementations send long form names, not compact forms; =
this has led to a number of interoperability problems when some =
implementations did use the compact form and then other implementations =
didn't include full(ly debugged) support for the compact forms.  (IOW, =
aliasing =3D having the same feature under two names can cause =
problems.)
>> I haven't seen compact forms in the wild (but then I don't spend much =
time debugging SIP flows), but I'm sure Henning can fill us in on how =
much these are liked these days.
>>=20
>> Gruesse, Carsten
>>=20
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>=20
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>=20
> --=20
> Zach Shelby, Chief Nerd, Sensinode Ltd.
> http://zachshelby.org  - My blog "On the Internet of Things"
> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
> Mobile: +358 40 7796297
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core


Cullen Jennings
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html




From therbst@silverspringnet.com  Mon Jun 21 09:50:15 2010
Return-Path: <therbst@silverspringnet.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id DE4603A69D5 for <core@core3.amsl.com>; Mon, 21 Jun 2010 09:50:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.185
X-Spam-Level: 
X-Spam-Status: No, score=-0.185 tagged_above=-999 required=5 tests=[BAYES_40=-0.185]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JDkToIzhf-Eb for <core@core3.amsl.com>; Mon, 21 Jun 2010 09:50:11 -0700 (PDT)
Received: from it-ipcorp-01.silverspringnet.com (it-ipcorp-01.silverspringnet.com [74.121.22.25]) by core3.amsl.com (Postfix) with ESMTP id 0CDF23A6882 for <core@ietf.org>; Mon, 21 Jun 2010 09:50:10 -0700 (PDT)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApsEAGM0H0wKyAE+/2dsb2JhbACfd8N9hRsEg1Q
X-IronPort-AV: E=Sophos;i="4.53,454,1272870000";  d="scan'208";a="104067"
Received: from unknown (HELO IT-EXCA-02.silverspringnet.com) ([10.200.1.62]) by it-ipcorp-01.silverspringnet.com with ESMTP; 21 Jun 2010 09:50:03 -0700
Received: from IT-EXMB-01.silverspringnet.com ([fe80::b81e:2d5b:d263:6c44]) by IT-EXCA-02.silverspringnet.com ([::1]) with mapi; Mon, 21 Jun 2010 09:50:05 -0700
From: Thomas Herbst <therbst@silverspringnet.com>
To: Zach Shelby <zach@sensinode.com>, Shidan <shidan@gmail.com>
Date: Mon, 21 Jun 2010 09:50:04 -0700
Thread-Topic: [core] Proposal for a new subscription mechanism in CoAP
Thread-Index: AcsQnNL3kvRZ9LA8TkanQRmZvpeA6wAwzhLg
Message-ID: <485AF6ECE8D1954D996771CC49E996FDC17C5D7E@IT-EXMB-01.silverspringnet.com>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com> <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu> <4C1E1C68.2070609@cisco.com>	<88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org> <4C1E30DB.2010305@cisco.com>	<A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org> <AANLkTilFUgkAxmaDJdbd00rglQvJVS_aLjmniirVz4co@mail.gmail.com> <45EA9EB6-CEF0-4417-B09C-E41AC4C31F31@sensinode.com>
In-Reply-To: <45EA9EB6-CEF0-4417-B09C-E41AC4C31F31@sensinode.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
acceptlanguage: en-US
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Jun 2010 16:50:15 -0000

RESTful !=3D HTTP  is  true, but CoAP < HTTP should be true - we should be =
defining the minimal=20
Subset of HTTP to make binary on a reliable UDP base. =20

Sensor networks need to be able to interface with the rest of the world to =
be useful.  Defining elements that do not cleanly map to HTTP makes these s=
trange little devices.  Why bother doing IP at that point?=20

Pub/Sub should be defined as a BCP that can use CoAP.

Zach - could you elaborate on the proxying paragraph? I'd think a gateway w=
ould be a dumb device, not an intelligent proxy certainly not breaking end-=
to-end security.=20

tom


-----Original Message-----
From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of Zac=
h Shelby
Sent: Sunday, June 20, 2010 10:20 AM
To: Shidan
Cc: core
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP

On Jun 20, 2010, at 7:37 PM, Shidan wrote:

> I think at the end of the day, do we want something that interfaces
> with HTTP as nice as possible or something that's a nicer fit for
> sensor networks.


This is a critical point to solve for Ticket #1 - SUB/NOT architecture and =
requirements.=20

I would say our first priority is to make a RESTful application protocol fo=
r embedded M2M application requirements (energy, building automation etc.).=
 RESTful !=3D HTTP, thus that does not mean we must do everything as well (=
or as badly) as HTTP. The secondary priority is to define an HTTP mapping, =
which obviously should be as simple as possible.=20

Regarding proxying SUB/NOT - let's keep in mind the kinds of cases in which=
 CoAP-HTTP proxying will actually be used, then that helps quite a bit in u=
nderstanding how to optimize the HTTP mapping. For example, everyone seems =
to be assuming that subscriptions will be end-to-end across an CoAP-HTTP pr=
oxy. In practice what I have been seeing so far is a split approach as you =
want to cache and aggregate subscriptions in a proxy anyways. There are als=
o security relationships that lean towards a split approach. Therefore I wo=
uld say our main priority is a split SUB/NOT architecture WRT HTTP mapping.

As caching is an important feature of such a proxy, that brings us one more=
 requirement. Notifications MUST be very easily identified with the resourc=
e they represent  so that the same cache used for responses to GETs can be =
leveraged. This keeps the caching feature of a CoAP-HTTP proxy simple. In p=
ractice this means the notification must include the URL of the  resource.=
=20

Zach

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297

_______________________________________________
core mailing list
core@ietf.org
https://www.ietf.org/mailman/listinfo/core

From d.sturek@att.net  Mon Jun 21 09:54:29 2010
Return-Path: <d.sturek@att.net>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1F9853A6AA0 for <core@core3.amsl.com>; Mon, 21 Jun 2010 09:54:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.796
X-Spam-Level: *
X-Spam-Status: No, score=1.796 tagged_above=-999 required=5 tests=[BAYES_50=0.001, MIME_BASE64_BLANKS=0.041, MIME_BASE64_TEXT=1.753, UNPARSEABLE_RELAY=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id veL9N0CR88Es for <core@core3.amsl.com>; Mon, 21 Jun 2010 09:54:28 -0700 (PDT)
Received: from smtp113-mob.biz.mail.ne1.yahoo.com (smtp113-mob.biz.mail.ne1.yahoo.com [98.138.88.250]) by core3.amsl.com (Postfix) with SMTP id 21F183A67EF for <core@ietf.org>; Mon, 21 Jun 2010 09:54:28 -0700 (PDT)
Received: (qmail 26141 invoked from network); 21 Jun 2010 16:54:32 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=att.net; s=s1024; t=1277139272; bh=ws4xKTEQAVxLLVrDdkhgss3Lm3F+ZyUcKr2e3V5Uw+c=; h=Received:X-Yahoo-SMTP:X-YMail-OSG:X-Yahoo-Newman-Property:X-rim-org-msg-ref-id:Message-ID:Content-Transfer-Encoding:Reply-To:X-Priority:References:In-Reply-To:Sensitivity:Importance:To:Cc:Subject:From:Date:Content-Type:MIME-Version; b=dp8/uwF/JDA+5TVjzoSJGA7z3VSTDz7wlaOb+F52tVjCdrnVeH/3vDI5D51KuCwzIdxOXrn6ZMrS/04ZDngHiNjQ7cXPMJOurFxKxXj8GRk1ldglEsX/Rgm5VgQb3S+4Yhnc4H1EVgcRlRUx7QuKlx+Ycwd9XTC6NqssDzMS+eU=
Received: from bda056.bisx.prod.on.blackberry (d.sturek@67.223.67.109 with xymcookie) by smtp113-mob.biz.mail.ne1.yahoo.com with SMTP; 21 Jun 2010 09:54:31 -0700 PDT
X-Yahoo-SMTP: fvjol_aswBAraSJvMLe2r1XTzhBhbFxY8q8c3jo-
X-YMail-OSG: N2T9XLgVM1kDbrE5EeesECKf.TpZ7hGj4y78lysMTtKaLAS mV0uDUao7F5ivrmzAxy5fxs3TrLT2zdlK0JbR4tRStySlXjxIAUHvSoZtysy PX6pg1YlcHE1pEc5p1feioGlV6mv2kYmj.RGMx85W.unYFsiFLjv6PvL5rSW RvhHJs2Vk6eXTEJsBzptq.qwDX8McDmGjdPDbAAqME1diUaCMesqwWPcu6u3 u2lvZHwMAMvk_15q.WITLIULVC9AFmBz2CJP0.W3vmcpS2pd1OjvCXvd.h8A bKRJqK5UfUsI6NFgHrEs-
X-Yahoo-Newman-Property: ymail-3
X-rim-org-msg-ref-id: 420897058
Message-ID: <420897058-1277139268-cardhu_decombobulator_blackberry.rim.net-1392627849-@bda053.bisx.prod.on.blackberry>
Content-Transfer-Encoding: base64
X-Priority: Normal
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com><1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu><4C1E1C68.2070609@cisco.com>	<88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org><4C1E30DB.2010305@cisco.com>	<A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org><AANLkTilFUgkAxmaDJdbd00rglQvJVS_aLjmniirVz4co@mail.gmail.com><45EA9EB6-CEF0-4417-B09C-E41AC4C31F31@sensinode.com><485AF6ECE8D1954D996771CC49E996FDC17C5D7E@IT-EXMB-01.silverspringnet.com>
In-Reply-To: <485AF6ECE8D1954D996771CC49E996FDC17C5D7E@IT-EXMB-01.silverspringnet.com>
Sensitivity: Normal
Importance: Normal
To: "Thomas Herbst" <therbst@silverspringnet.com>, core-bounces@ietf.org, "Zach Shelby" <zach@sensinode.com>, "Shidan" <shidan@gmail.com>
From: d.sturek@att.net
Date: Mon, 21 Jun 2010 16:58:45 +0000
Content-Type: text/plain
MIME-Version: 1.0
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: d.sturek@att.net
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Jun 2010 16:54:29 -0000

SSBhbSB3cml0aW5nIHRoZSBodHRwIHByb3h5IGZvciB0aGUgY29hcCBkcmFmdCBhc3N1bWluZyBp
dCBpcyBzaW1wbGUgYW5kIG5vdCBhcHBsaWNhdGlvbiBnYXRld2F5Lg0KDQpEb24NClNlbnQgdmlh
IEJsYWNrQmVycnkgZnJvbSBULU1vYmlsZQ0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K
RnJvbTogVGhvbWFzIEhlcmJzdCA8dGhlcmJzdEBzaWx2ZXJzcHJpbmduZXQuY29tPg0KU2VuZGVy
OiBjb3JlLWJvdW5jZXNAaWV0Zi5vcmcNCkRhdGU6IE1vbiwgMjEgSnVuIDIwMTAgMDk6NTA6MDQg
DQpUbzogWmFjaCBTaGVsYnk8emFjaEBzZW5zaW5vZGUuY29tPjsgU2hpZGFuPHNoaWRhbkBnbWFp
bC5jb20+DQpDYzogY29yZTxjb3JlQGlldGYub3JnPg0KU3ViamVjdDogUmU6IFtjb3JlXSBQcm9w
b3NhbCBmb3IgYSBuZXcgc3Vic2NyaXB0aW9uIG1lY2hhbmlzbSBpbiBDb0FQDQoNClJFU1RmdWwg
IT0gSFRUUCAgaXMgIHRydWUsIGJ1dCBDb0FQIDwgSFRUUCBzaG91bGQgYmUgdHJ1ZSAtIHdlIHNo
b3VsZCBiZSBkZWZpbmluZyB0aGUgbWluaW1hbCANClN1YnNldCBvZiBIVFRQIHRvIG1ha2UgYmlu
YXJ5IG9uIGEgcmVsaWFibGUgVURQIGJhc2UuICANCg0KU2Vuc29yIG5ldHdvcmtzIG5lZWQgdG8g
YmUgYWJsZSB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgcmVzdCBvZiB0aGUgd29ybGQgdG8gYmUgdXNl
ZnVsLiAgRGVmaW5pbmcgZWxlbWVudHMgdGhhdCBkbyBub3QgY2xlYW5seSBtYXAgdG8gSFRUUCBt
YWtlcyB0aGVzZSBzdHJhbmdlIGxpdHRsZSBkZXZpY2VzLiAgV2h5IGJvdGhlciBkb2luZyBJUCBh
dCB0aGF0IHBvaW50PyANCg0KUHViL1N1YiBzaG91bGQgYmUgZGVmaW5lZCBhcyBhIEJDUCB0aGF0
IGNhbiB1c2UgQ29BUC4NCg0KWmFjaCAtIGNvdWxkIHlvdSBlbGFib3JhdGUgb24gdGhlIHByb3h5
aW5nIHBhcmFncmFwaD8gSSdkIHRoaW5rIGEgZ2F0ZXdheSB3b3VsZCBiZSBhIGR1bWIgZGV2aWNl
LCBub3QgYW4gaW50ZWxsaWdlbnQgcHJveHkgY2VydGFpbmx5IG5vdCBicmVha2luZyBlbmQtdG8t
ZW5kIHNlY3VyaXR5LiANCg0KdG9tDQoNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZy
b206IGNvcmUtYm91bmNlc0BpZXRmLm9yZyBbbWFpbHRvOmNvcmUtYm91bmNlc0BpZXRmLm9yZ10g
T24gQmVoYWxmIE9mIFphY2ggU2hlbGJ5DQpTZW50OiBTdW5kYXksIEp1bmUgMjAsIDIwMTAgMTA6
MjAgQU0NClRvOiBTaGlkYW4NCkNjOiBjb3JlDQpTdWJqZWN0OiBSZTogW2NvcmVdIFByb3Bvc2Fs
IGZvciBhIG5ldyBzdWJzY3JpcHRpb24gbWVjaGFuaXNtIGluIENvQVANCg0KT24gSnVuIDIwLCAy
MDEwLCBhdCA3OjM3IFBNLCBTaGlkYW4gd3JvdGU6DQoNCj4gSSB0aGluayBhdCB0aGUgZW5kIG9m
IHRoZSBkYXksIGRvIHdlIHdhbnQgc29tZXRoaW5nIHRoYXQgaW50ZXJmYWNlcw0KPiB3aXRoIEhU
VFAgYXMgbmljZSBhcyBwb3NzaWJsZSBvciBzb21ldGhpbmcgdGhhdCdzIGEgbmljZXIgZml0IGZv
cg0KPiBzZW5zb3IgbmV0d29ya3MuDQoNCg0KVGhpcyBpcyBhIGNyaXRpY2FsIHBvaW50IHRvIHNv
bHZlIGZvciBUaWNrZXQgIzEgLSBTVUIvTk9UIGFyY2hpdGVjdHVyZSBhbmQgcmVxdWlyZW1lbnRz
LiANCg0KSSB3b3VsZCBzYXkgb3VyIGZpcnN0IHByaW9yaXR5IGlzIHRvIG1ha2UgYSBSRVNUZnVs
IGFwcGxpY2F0aW9uIHByb3RvY29sIGZvciBlbWJlZGRlZCBNMk0gYXBwbGljYXRpb24gcmVxdWly
ZW1lbnRzIChlbmVyZ3ksIGJ1aWxkaW5nIGF1dG9tYXRpb24gZXRjLikuIFJFU1RmdWwgIT0gSFRU
UCwgdGh1cyB0aGF0IGRvZXMgbm90IG1lYW4gd2UgbXVzdCBkbyBldmVyeXRoaW5nIGFzIHdlbGwg
KG9yIGFzIGJhZGx5KSBhcyBIVFRQLiBUaGUgc2Vjb25kYXJ5IHByaW9yaXR5IGlzIHRvIGRlZmlu
ZSBhbiBIVFRQIG1hcHBpbmcsIHdoaWNoIG9idmlvdXNseSBzaG91bGQgYmUgYXMgc2ltcGxlIGFz
IHBvc3NpYmxlLiANCg0KUmVnYXJkaW5nIHByb3h5aW5nIFNVQi9OT1QgLSBsZXQncyBrZWVwIGlu
IG1pbmQgdGhlIGtpbmRzIG9mIGNhc2VzIGluIHdoaWNoIENvQVAtSFRUUCBwcm94eWluZyB3aWxs
IGFjdHVhbGx5IGJlIHVzZWQsIHRoZW4gdGhhdCBoZWxwcyBxdWl0ZSBhIGJpdCBpbiB1bmRlcnN0
YW5kaW5nIGhvdyB0byBvcHRpbWl6ZSB0aGUgSFRUUCBtYXBwaW5nLiBGb3IgZXhhbXBsZSwgZXZl
cnlvbmUgc2VlbXMgdG8gYmUgYXNzdW1pbmcgdGhhdCBzdWJzY3JpcHRpb25zIHdpbGwgYmUgZW5k
LXRvLWVuZCBhY3Jvc3MgYW4gQ29BUC1IVFRQIHByb3h5LiBJbiBwcmFjdGljZSB3aGF0IEkgaGF2
ZSBiZWVuIHNlZWluZyBzbyBmYXIgaXMgYSBzcGxpdCBhcHByb2FjaCBhcyB5b3Ugd2FudCB0byBj
YWNoZSBhbmQgYWdncmVnYXRlIHN1YnNjcmlwdGlvbnMgaW4gYSBwcm94eSBhbnl3YXlzLiBUaGVy
ZSBhcmUgYWxzbyBzZWN1cml0eSByZWxhdGlvbnNoaXBzIHRoYXQgbGVhbiB0b3dhcmRzIGEgc3Bs
aXQgYXBwcm9hY2guIFRoZXJlZm9yZSBJIHdvdWxkIHNheSBvdXIgbWFpbiBwcmlvcml0eSBpcyBh
IHNwbGl0IFNVQi9OT1QgYXJjaGl0ZWN0dXJlIFdSVCBIVFRQIG1hcHBpbmcuDQoNCkFzIGNhY2hp
bmcgaXMgYW4gaW1wb3J0YW50IGZlYXR1cmUgb2Ygc3VjaCBhIHByb3h5LCB0aGF0IGJyaW5ncyB1
cyBvbmUgbW9yZSByZXF1aXJlbWVudC4gTm90aWZpY2F0aW9ucyBNVVNUIGJlIHZlcnkgZWFzaWx5
IGlkZW50aWZpZWQgd2l0aCB0aGUgcmVzb3VyY2UgdGhleSByZXByZXNlbnQgIHNvIHRoYXQgdGhl
IHNhbWUgY2FjaGUgdXNlZCBmb3IgcmVzcG9uc2VzIHRvIEdFVHMgY2FuIGJlIGxldmVyYWdlZC4g
VGhpcyBrZWVwcyB0aGUgY2FjaGluZyBmZWF0dXJlIG9mIGEgQ29BUC1IVFRQIHByb3h5IHNpbXBs
ZS4gSW4gcHJhY3RpY2UgdGhpcyBtZWFucyB0aGUgbm90aWZpY2F0aW9uIG11c3QgaW5jbHVkZSB0
aGUgVVJMIG9mIHRoZSAgcmVzb3VyY2UuIA0KDQpaYWNoDQoNCi0tIA0KWmFjaCBTaGVsYnksIENo
aWVmIE5lcmQsIFNlbnNpbm9kZSBMdGQuDQpodHRwOi8vemFjaHNoZWxieS5vcmcgIC0gTXkgYmxv
ZyAiT24gdGhlIEludGVybmV0IG9mIFRoaW5ncyINCmh0dHA6Ly82bG93cGFuLm5ldCAtIE15IGJv
b2sgIjZMb1dQQU46IFRoZSBXaXJlbGVzcyBFbWJlZGRlZCBJbnRlcm5ldCINCk1vYmlsZTogKzM1
OCA0MCA3Nzk2Mjk3DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fDQpjb3JlIG1haWxpbmcgbGlzdA0KY29yZUBpZXRmLm9yZw0KaHR0cHM6Ly93d3cuaWV0
Zi5vcmcvbWFpbG1hbi9saXN0aW5mby9jb3JlDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXw0KY29yZSBtYWlsaW5nIGxpc3QNCmNvcmVAaWV0Zi5vcmcNCmh0
dHBzOi8vd3d3LmlldGYub3JnL21haWxtYW4vbGlzdGluZm8vY29yZQ0K



From shidan@gmail.com  Mon Jun 21 10:25:17 2010
Return-Path: <shidan@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 65E4428C11B for <core@core3.amsl.com>; Mon, 21 Jun 2010 10:25:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.11
X-Spam-Level: 
X-Spam-Status: No, score=-1.11 tagged_above=-999 required=5 tests=[BAYES_05=-1.11]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6rJGAhKuV7LE for <core@core3.amsl.com>; Mon, 21 Jun 2010 10:25:16 -0700 (PDT)
Received: from mail-ww0-f44.google.com (mail-ww0-f44.google.com [74.125.82.44]) by core3.amsl.com (Postfix) with ESMTP id B92973A68C1 for <core@ietf.org>; Mon, 21 Jun 2010 10:25:15 -0700 (PDT)
Received: by wwi18 with SMTP id 18so1218706wwi.31 for <core@ietf.org>; Mon, 21 Jun 2010 10:25:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=nG/377PT7JkYvbtSo2Z+kfIWFaJXU8RVyHWHgGGLGlQ=; b=Ou0OBcfyjdHq23A578i2tahPNIfLNLCisz1P2f9Q2FSuWKqeyAuR1af5lxmcINDQT5 qFZxzGM/IN0TGUjN3/v9G1fx73DwUzgHNxVpH4OAlD4HKEaHJj8Xfi92Lw/18Bf+wiOD VaHHqe1g+5PnvagJGXYUA6TKcdX4hD2Ceg3+c=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=N/uq3bFL2YHQy/yRVMYf2Y8tSL4HiqhU2foZzUU+BYrJc9/Mx3Xurg3hXZwxZZ/zgO NbJ+Sq/dHI26dg2J3nBNwG974XC52pxDAXG7/Ivop8EBqZ4447JH5hDUrPl0kUFiuksM KIzf5Q03pf6T6LHFBWAguj6DtohAOjsyuc16s=
MIME-Version: 1.0
Received: by 10.227.145.193 with SMTP id e1mr4942950wbv.207.1277141118317;  Mon, 21 Jun 2010 10:25:18 -0700 (PDT)
Received: by 10.216.29.210 with HTTP; Mon, 21 Jun 2010 10:25:18 -0700 (PDT)
In-Reply-To: <485AF6ECE8D1954D996771CC49E996FDC17C5D7E@IT-EXMB-01.silverspringnet.com>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com> <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu> <4C1E1C68.2070609@cisco.com> <88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org> <4C1E30DB.2010305@cisco.com> <A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org> <AANLkTilFUgkAxmaDJdbd00rglQvJVS_aLjmniirVz4co@mail.gmail.com> <45EA9EB6-CEF0-4417-B09C-E41AC4C31F31@sensinode.com> <485AF6ECE8D1954D996771CC49E996FDC17C5D7E@IT-EXMB-01.silverspringnet.com>
Date: Mon, 21 Jun 2010 13:25:18 -0400
Message-ID: <AANLkTinjBgqsl2-nN05MtBCl7Yllc7yi-WOJLejGI-Hl@mail.gmail.com>
From: Shidan <shidan@gmail.com>
To: Thomas Herbst <therbst@silverspringnet.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Jun 2010 17:25:17 -0000

On Mon, Jun 21, 2010 at 12:50 PM, Thomas Herbst
<therbst@silverspringnet.com> wrote:
> RESTful !=3D HTTP =C2=A0is =C2=A0true, but CoAP < HTTP should be true - w=
e should be defining the minimal
> Subset of HTTP to make binary on a reliable UDP base.
>

Not sure about this I think at this point all we can say is that we
should get CoAP =E2=89=88 HTTP, this might amount to CoAP < HTTP but I thin=
k
Zach is right that this needs much more thought.

> Sensor networks need to be able to interface with the rest of the world t=
o be useful. =C2=A0Defining elements that do not cleanly map to HTTP makes =
these strange little devices. =C2=A0Why bother doing IP at that point?

I'm not sure I agree with your statement in this context. The internet
is filled with much much more dirtier mappings than CoAP with pubsub
to standard HTTP. XMPP, IAX, H323, etc, SIP server, Email to HTTP, and
I can spend years writing a list on systems that are far more
complicated than our current discussion permeating the net.

I haven't personally decided either way, but I believe we have to
study this as Michael mentioned, what both arguments offer and to do
that, I would personally like to understand the use cases of the proxy
more myself. Will systems need an intelligent proxy that can do things
like cache, aggregate  and broker events or will most be dumb proxies?

> Zach - could you elaborate on the proxying paragraph? I'd think a gateway=
 would be a dumb device, not an intelligent proxy certainly not breaking en=
d-to-end security.
>
> tom
>
>
> -----Original Message-----
> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of Z=
ach Shelby
> Sent: Sunday, June 20, 2010 10:20 AM
> To: Shidan
> Cc: core
> Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
>
> On Jun 20, 2010, at 7:37 PM, Shidan wrote:
>
>> I think at the end of the day, do we want something that interfaces
>> with HTTP as nice as possible or something that's a nicer fit for
>> sensor networks.
>
>
> This is a critical point to solve for Ticket #1 - SUB/NOT architecture an=
d requirements.
>
> I would say our first priority is to make a RESTful application protocol =
for embedded M2M application requirements (energy, building automation etc.=
). RESTful !=3D HTTP, thus that does not mean we must do everything as well=
 (or as badly) as HTTP. The secondary priority is to define an HTTP mapping=
, which obviously should be as simple as possible.
>
> Regarding proxying SUB/NOT - let's keep in mind the kinds of cases in whi=
ch CoAP-HTTP proxying will actually be used, then that helps quite a bit in=
 understanding how to optimize the HTTP mapping. For example, everyone seem=
s to be assuming that subscriptions will be end-to-end across an CoAP-HTTP =
proxy. In practice what I have been seeing so far is a split approach as yo=
u want to cache and aggregate subscriptions in a proxy anyways. There are a=
lso security relationships that lean towards a split approach. Therefore I =
would say our main priority is a split SUB/NOT architecture WRT HTTP mappin=
g.
>
> As caching is an important feature of such a proxy, that brings us one mo=
re requirement. Notifications MUST be very easily identified with the resou=
rce they represent =C2=A0so that the same cache used for responses to GETs =
can be leveraged. This keeps the caching feature of a CoAP-HTTP proxy simpl=
e. In practice this means the notification must include the URL of the =C2=
=A0resource.
>
> Zach
>
> --
> Zach Shelby, Chief Nerd, Sensinode Ltd.
> http://zachshelby.org =C2=A0- My blog "On the Internet of Things"
> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
> Mobile: +358 40 7796297
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>

From shidan@gmail.com  Mon Jun 21 10:27:07 2010
Return-Path: <shidan@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id AD5AE3A6AA8 for <core@core3.amsl.com>; Mon, 21 Jun 2010 10:27:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.855
X-Spam-Level: 
X-Spam-Status: No, score=-1.855 tagged_above=-999 required=5 tests=[AWL=0.745,  BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EazinR0tcnc1 for <core@core3.amsl.com>; Mon, 21 Jun 2010 10:27:06 -0700 (PDT)
Received: from mail-wy0-f172.google.com (mail-wy0-f172.google.com [74.125.82.172]) by core3.amsl.com (Postfix) with ESMTP id 3E6023A696A for <core@ietf.org>; Mon, 21 Jun 2010 10:27:06 -0700 (PDT)
Received: by wya21 with SMTP id 21so2841408wya.31 for <core@ietf.org>; Mon, 21 Jun 2010 10:27:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=ltI0bOKrNtDLRzGxWuPKmmgy66f3vQYGFw7qGdxxS3s=; b=dChQ5oZYQRejpXJLmAEk0vPhn8w1DQDoEXkCfg0k62/DjhZgi6N/qU7H5VMJF4dauL W250RPWEfpPia9nsZ7ENMl0oVb+rhzkExcvbLHGhda/Cie9wlJn7UeMx8p0xNn9GapS8 GchIlsaXDL5M4uKsTSvIrWeEvESgYn/Kn6Fe4=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=k/OKfKkMAvUJCbNOQiwlMulyRii0HENIY3mGx6ywPJGMEbHlPmT2U/KxcdgSWvLVC6 PbKxtPVaOYYm+UQDfzPDBEpSR38geSN/aT/HuG2vykHqjkxNKVOnYMs/i9IcxAhC+5jl TEEXQobC83NS6Z8Ggb0nVDTN9ejVlyRuVtdkE=
MIME-Version: 1.0
Received: by 10.216.160.145 with SMTP id u17mr506419wek.18.1277141228416; Mon,  21 Jun 2010 10:27:08 -0700 (PDT)
Received: by 10.216.29.210 with HTTP; Mon, 21 Jun 2010 10:27:08 -0700 (PDT)
In-Reply-To: <AANLkTinjBgqsl2-nN05MtBCl7Yllc7yi-WOJLejGI-Hl@mail.gmail.com>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com> <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu> <4C1E1C68.2070609@cisco.com> <88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org> <4C1E30DB.2010305@cisco.com> <A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org> <AANLkTilFUgkAxmaDJdbd00rglQvJVS_aLjmniirVz4co@mail.gmail.com> <45EA9EB6-CEF0-4417-B09C-E41AC4C31F31@sensinode.com> <485AF6ECE8D1954D996771CC49E996FDC17C5D7E@IT-EXMB-01.silverspringnet.com> <AANLkTinjBgqsl2-nN05MtBCl7Yllc7yi-WOJLejGI-Hl@mail.gmail.com>
Date: Mon, 21 Jun 2010 13:27:08 -0400
Message-ID: <AANLkTimCy5u9KBjLzuda-SlTtFMVpzrIrXANpTsQAj38@mail.gmail.com>
From: Shidan <shidan@gmail.com>
To: Thomas Herbst <therbst@silverspringnet.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Jun 2010 17:27:07 -0000

Again, as my general sentiment, I think we should be considering this
for the near future  use cases as well as the present.

On Mon, Jun 21, 2010 at 1:25 PM, Shidan <shidan@gmail.com> wrote:
> On Mon, Jun 21, 2010 at 12:50 PM, Thomas Herbst
> <therbst@silverspringnet.com> wrote:
>> RESTful !=3D HTTP =C2=A0is =C2=A0true, but CoAP < HTTP should be true - =
we should be defining the minimal
>> Subset of HTTP to make binary on a reliable UDP base.
>>
>
> Not sure about this I think at this point all we can say is that we
> should get CoAP =E2=89=88 HTTP, this might amount to CoAP < HTTP but I th=
ink
> Zach is right that this needs much more thought.
>
>> Sensor networks need to be able to interface with the rest of the world =
to be useful. =C2=A0Defining elements that do not cleanly map to HTTP makes=
 these strange little devices. =C2=A0Why bother doing IP at that point?
>
> I'm not sure I agree with your statement in this context. The internet
> is filled with much much more dirtier mappings than CoAP with pubsub
> to standard HTTP. XMPP, IAX, H323, etc, SIP server, Email to HTTP, and
> I can spend years writing a list on systems that are far more
> complicated than our current discussion permeating the net.
>
> I haven't personally decided either way, but I believe we have to
> study this as Michael mentioned, what both arguments offer and to do
> that, I would personally like to understand the use cases of the proxy
> more myself. Will systems need an intelligent proxy that can do things
> like cache, aggregate =C2=A0and broker events or will most be dumb proxie=
s?
>
>> Zach - could you elaborate on the proxying paragraph? I'd think a gatewa=
y would be a dumb device, not an intelligent proxy certainly not breaking e=
nd-to-end security.
>>
>> tom
>>
>>
>> -----Original Message-----
>> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of =
Zach Shelby
>> Sent: Sunday, June 20, 2010 10:20 AM
>> To: Shidan
>> Cc: core
>> Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
>>
>> On Jun 20, 2010, at 7:37 PM, Shidan wrote:
>>
>>> I think at the end of the day, do we want something that interfaces
>>> with HTTP as nice as possible or something that's a nicer fit for
>>> sensor networks.
>>
>>
>> This is a critical point to solve for Ticket #1 - SUB/NOT architecture a=
nd requirements.
>>
>> I would say our first priority is to make a RESTful application protocol=
 for embedded M2M application requirements (energy, building automation etc=
.). RESTful !=3D HTTP, thus that does not mean we must do everything as wel=
l (or as badly) as HTTP. The secondary priority is to define an HTTP mappin=
g, which obviously should be as simple as possible.
>>
>> Regarding proxying SUB/NOT - let's keep in mind the kinds of cases in wh=
ich CoAP-HTTP proxying will actually be used, then that helps quite a bit i=
n understanding how to optimize the HTTP mapping. For example, everyone see=
ms to be assuming that subscriptions will be end-to-end across an CoAP-HTTP=
 proxy. In practice what I have been seeing so far is a split approach as y=
ou want to cache and aggregate subscriptions in a proxy anyways. There are =
also security relationships that lean towards a split approach. Therefore I=
 would say our main priority is a split SUB/NOT architecture WRT HTTP mappi=
ng.
>>
>> As caching is an important feature of such a proxy, that brings us one m=
ore requirement. Notifications MUST be very easily identified with the reso=
urce they represent =C2=A0so that the same cache used for responses to GETs=
 can be leveraged. This keeps the caching feature of a CoAP-HTTP proxy simp=
le. In practice this means the notification must include the URL of the =C2=
=A0resource.
>>
>> Zach
>>
>> --
>> Zach Shelby, Chief Nerd, Sensinode Ltd.
>> http://zachshelby.org =C2=A0- My blog "On the Internet of Things"
>> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
>> Mobile: +358 40 7796297
>>
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>
>

From rgm@labs.htt-consult.com  Mon Jun 21 11:17:50 2010
Return-Path: <rgm@labs.htt-consult.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 42FCB3A6ABA for <core@core3.amsl.com>; Mon, 21 Jun 2010 11:17:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.001
X-Spam-Level: 
X-Spam-Status: No, score=0.001 tagged_above=-999 required=5 tests=[BAYES_50=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tsUjmzTc5GgM for <core@core3.amsl.com>; Mon, 21 Jun 2010 11:17:49 -0700 (PDT)
Received: from klovia.htt-consult.com (klovia.htt-consult.com [208.83.67.149]) by core3.amsl.com (Postfix) with ESMTP id 113A93A6AAC for <core@ietf.org>; Mon, 21 Jun 2010 11:17:49 -0700 (PDT)
Received: from localhost (unknown [127.0.0.1]) by klovia.htt-consult.com (Postfix) with ESMTP id 1D25F68B20 for <core@ietf.org>; Mon, 21 Jun 2010 18:10:12 +0000 (UTC)
Received: from klovia.htt-consult.com ([127.0.0.1]) by localhost (klovia.htt-consult.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id MTKyzcVuyGKu for <core@ietf.org>; Mon, 21 Jun 2010 14:10:02 -0400 (EDT)
Received: from nc2400.htt-consult.com (h155.home.htt [208.83.67.155]) (Authenticated sender: rgm@labs.htt-consult.com) by klovia.htt-consult.com (Postfix) with ESMTPSA id 8A65068BA1 for <core@ietf.org>; Mon, 21 Jun 2010 14:09:55 -0400 (EDT)
Message-ID: <4C1FACC2.7060201@labs.htt-consult.com>
Date: Mon, 21 Jun 2010 14:17:38 -0400
From: Robert Moskowitz <rgm@labs.htt-consult.com>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100430 Fedora/3.0.4-2.fc12 Thunderbird/3.0.4
MIME-Version: 1.0
To: core@ietf.org
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Jun 2010 18:17:50 -0000

I have NOT been following CORE.  Tobias Heer recently focused my 
attention this way by forwarding his post here from yesterday.

First a few words about HIP, then some crypto observations, then where 
HIP is going.

HIP in brief:

HIP is a KMS, like IKE and IEEE 802.11i's 4-Way Handshake.  It 
establishes a Security Association between two parties.  This Security 
Association (SA) provides keying information for a per-datagram 
protection envelope.  Currently HIP Base EXchange (BEX, RFC5201) 
provides keys for ESP in a variant of ESP transport mode (RFC 5202).  
HIP is a VERY lightweight 4 packet KMS; BEX follows the SigMa model like 
IKEv2.

Crypto notes:

One of the challenges we have in our work is that there is need for 
datagram protection at different layers.  And each layer has its one 
risks and vulnerablities.  Sometimes one protection at one layer 
mitigates risks at another, sometimes not.  But our current model is a 
KMS per layer.  Thus we have TLS, IKE, and the 4-Way Handshake.  Becuase 
HIP is actually independent of IP, its can be used as a KMS for layers 
besides layer 3.  I have been proposing HIP for direct use on layer 2 
keying.

15 years ago there was a very limited understanding of KMS, and the 
attack models were simple.  Now the attack models are rich, and the 
solutions are fully vetted with every piece of crypto we can put in them 
because code and processing is no longer a challenge, right?  Over the 
past few months I have been pulling off the crypto layers asking a lot 
of WHY questions.  I have created a taxonomy of sorts of what we have 
built and why it is there.  So first I will ask you do you need 
transactional digital signatures?  If so, I will work with you to 
understand how BEX can fit in to your work.  If not see below.

HIP Directions

HIP -bis

We are working on recharting the HIP workgroup and rev all the 
documents, addressing a series of issues and moving to Standards Track.  
The big item is 'crytpo agility' that HIP is lacking.  Along the way we 
will be adding ECC PKs.  We do not see the work as long or hard, most of 
the spec changes will be done for July.  Of course debate can slow 
things.  This new version of BEX with the addition of ECC may well be 
suited to your needs, if you need transactional digitial signatures.

HIP Diet EXchage (HIP DEX)

I am writing an Internet Draft for DEX that will make the July 5th 
deadline.  There is also a presentation for IEEE 802 the week of Jul 12th.

DEX uses only THREE crypto algorithms:  AES-CCM, CMAC, ECC encryption.  
I tossed hashing and that threw out Diffie-Hellman and ECDSA.  Without 
PK signing I loose SigMa; I believe I have met the design goals of SigMa 
even so.  Without DH I loose PFS; DEX has a limited model where both 
party's keys must be compromised to expose the session key.

HIP DEX is 4 packets,  It also has an aggressive exchange model to deal 
with lossful networks.  There is no new crypto in DEX to evaluate.  No 
existing crypto is used in different manners to assess the risks.  Only 
how does this new exchange stand up to the current network attack 
models.  (or at least that is my Not So Humble Opinion on what I am 
writing up!).



From behcetsarikaya@yahoo.com  Mon Jun 21 12:09:05 2010
Return-Path: <behcetsarikaya@yahoo.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2062A3A6ADA for <core@core3.amsl.com>; Mon, 21 Jun 2010 12:09:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.358
X-Spam-Level: 
X-Spam-Status: No, score=-0.358 tagged_above=-999 required=5 tests=[AWL=-0.507, BAYES_40=-0.185, IP_NOT_FRIENDLY=0.334]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7E1sKfy1W+Ow for <core@core3.amsl.com>; Mon, 21 Jun 2010 12:09:04 -0700 (PDT)
Received: from web111407.mail.gq1.yahoo.com (web111407.mail.gq1.yahoo.com [67.195.15.168]) by core3.amsl.com (Postfix) with SMTP id 335AA3A6AE8 for <core@ietf.org>; Mon, 21 Jun 2010 12:09:04 -0700 (PDT)
Received: (qmail 71529 invoked by uid 60001); 21 Jun 2010 19:09:08 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1277147348; bh=Z1sXfawNvSXhIn0b0xjwLhhOT7nVflw6bE76hRjxBYo=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=vJ72zzooZgj2Vz3trz5d9e+DUB6ueY2cEwcnlmUW2FIdg5aN7rcAhlF+UxUOoiGVzOczprFZt5DUBBaNeQUwCQQkm2d5HVI0q+6aeNP3YnOxD8onq1DyQsJEdl60/PFhpZp8+35EXyvGJagWRCs73Kx0XgIHZSYzk1rj16n5/Pg=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=fErzN/uCcQEVmp6SFLpfQB1n4vGTMFi0OMa3WiPUL30Jdk01oJQ4KhaxFgAV9Hjj2IPBv/vyIDivE80jhu0x5Mx/hCTleOOOa6YWddiESuSiF1HlRpMWMgvBYWOwOBUuywNCoNAAvDxmE7r3VLS5hTh+nL12jOVMZpKI0NjghA8=;
Message-ID: <540565.71049.qm@web111407.mail.gq1.yahoo.com>
X-YMail-OSG: IrEqtfcVM1koUYEhom.HEuFdnnYuTTg01KCKIPAYzWJI0pw atn7v6cBOxVEMhgCXWPw4aPIYMzOJG1NkVzA4w.1emwBI2.oAUvii5njg_Qb iRgWDUl7EOBvLNnCGLopqpmWeGGDhgdq4sEvfhdIeFyBbCLnumH6M70QsMrl IYKp3.2ktm_3QHqm2fXmm9FFjd4LrOklu89XTijpjYiMrYJ1hQ.DnQuJSF4A 489.tQzUI5LmG28nNsOX_WzcMwgV6VxsVKDARWRthHjR40KaoigNMRf7spd7 vQM6yP5r506SyD3zEx243uFoKBaebhWAgoqFAU3WfNLagenaaWdyxT8fr0i2 6rA27B2pqr9i.
Received: from [206.16.17.212] by web111407.mail.gq1.yahoo.com via HTTP; Mon, 21 Jun 2010 12:09:08 PDT
X-Mailer: YahooMailRC/397.8 YahooMailWebService/0.8.104.274457
References: <mailman.53.1275678008.15064.core@ietf.org> <8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759B1@il-ex01.ad.checkpoint.com> <4C17D075.6000603@gridmerge.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759BE@il-ex01.ad.checkpoint.com> <4C18E173.1080506@gridmerge.com> <87vd9ilr9j.fsf@kelsey-ws.hq.ember.com> <41F8352F-DBCA-4B70-9AD9-DB8DDCE2469B@tzi.org>
Date: Mon, 21 Jun 2010 12:09:08 -0700 (PDT)
From: Behcet Sarikaya <behcetsarikaya@yahoo.com>
To: Carsten Bormann <cabo@tzi.org>, core <core@ietf.org>
In-Reply-To: <41F8352F-DBCA-4B70-9AD9-DB8DDCE2469B@tzi.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: Colin Oflynn <Colin.OFlynn@atmel.com>
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: Behcet Sarikaya <sarikaya@ieee.org>
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Jun 2010 19:09:05 -0000

Hi Carsten,=0A=A0Yes, we should continue to watch these things but currentl=
y we do have a draft:=0Ahttp://tools.ietf.org/id/draft-oflynn-core-bootstra=
pping-00.txt=0Athat Colin and I have submitted for the charter item on Cons=
trained security bootstrapping specification. =0A=0AIf comments could be di=
rected to this draft, the authors would be in a better position to revise i=
t.=0A=0ARegards,=0A=0ABehcet=0A=0A=0A=0A----- Original Message ----=0A> Fro=
m: Carsten Bormann <cabo@tzi.org>=0A> To: core <core@ietf.org>=0A> Sent: Th=
u, June 17, 2010 12:46:56 AM=0A> Subject: Re: [core] Security design=0A> =
=0A> On Jun 16, 2010, at 21:19, Richard Kelsey wrote:=0A=0A>> From poking =
=0A> around on the IETF website,=0A> draft-ietf-tls-rfc4347-bis-03 is DTLS =
=0A> 1.2.=A0 It expired in=0A> April.=A0 It went to working group last call=
 =0A> in October 2009,=0A> with only minor changes recommended.=A0 =0A> See=
=0A>=A0 =0A> http://www.ietf.org/mail-archive/web/tls/current/msg03867.html=
=0A> I =0A> couldn't find any indication of further activity.=0A=0AJust got=
 word from the =0A> TLS chairs that this got sidestepped for a while, but t=
he updated version is =0A> planned before Maastricht.=A0 I think we should =
use the time in Maastricht to =0A> do some cross-area discussion.=0A(Beside=
s TLS, interesting security-related WGs =0A> to watch might include HIP.)=
=0A=0AGruesse, =0A> Carsten=0A=0A__________________________________________=
_____=0Acore mailing =0A> list=0A> href=3D"mailto:core@ietf.org">core@ietf.=
org=0A> href=3D"https://www.ietf.org/mailman/listinfo/core" target=3D_blank=
 =0A> >https://www.ietf.org/mailman/listinfo/core=0A=0A=0A      

From behcetsarikaya@yahoo.com  Mon Jun 21 12:09:06 2010
Return-Path: <behcetsarikaya@yahoo.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 350D73A6AEA for <core@core3.amsl.com>; Mon, 21 Jun 2010 12:09:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.358
X-Spam-Level: 
X-Spam-Status: No, score=-0.358 tagged_above=-999 required=5 tests=[AWL=-0.507, BAYES_40=-0.185, IP_NOT_FRIENDLY=0.334]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oghgZIookX6c for <core@core3.amsl.com>; Mon, 21 Jun 2010 12:09:06 -0700 (PDT)
Received: from web111416.mail.gq1.yahoo.com (web111416.mail.gq1.yahoo.com [67.195.15.222]) by core3.amsl.com (Postfix) with SMTP id D9FE63A6AE4 for <core@ietf.org>; Mon, 21 Jun 2010 12:09:05 -0700 (PDT)
Received: (qmail 1238 invoked by uid 60001); 21 Jun 2010 19:09:13 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1277147353; bh=Z1sXfawNvSXhIn0b0xjwLhhOT7nVflw6bE76hRjxBYo=; h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=HFWHEYbFXiaWgXAwq8Fi0rIBvn33kY86EnhI6YZuicolcfAJAcSNnEFzvFGqgwXXSrVqi5s2qeSqA363ZGJ6a8V72UN6vitbU/okCe4Rgduao0gFtmacPDjvy9IxFwXCPVmGjNd2H9sDjs/maBac+zK+0JW/qXK+nBnywF0X99o=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:X-YMail-OSG:Received:X-Mailer:References:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=gFMgZW8JzYFu44BkLEG5dWqRNCatfl6PE9q86wwBGOMW/LiVvgMumlhG+iKP6tdf3jzEWlDp+dq+32rlWZ6No0w16e1bHAYs5yipMm8deKas+GQYRHvWOC0XTSYHffby45LFYg9Re9XjZ7kMfhh27X/K5eL4i6c3UTwZR5YHNEo=;
Message-ID: <99740.96486.qm@web111416.mail.gq1.yahoo.com>
X-YMail-OSG: oTaU5CYVM1m2OQm70U191WKurXLqrCSVH.zApHAtqou4i3e HH_7hJp_mfHjmlPGvPK.NIAnLVLTnLt.nc40DvJJZomBEPIBHECGKCtSVQm. 8aNc6mZ.0McDFmi.7.t8sg.J5LiUe7F0RgkUVLT.ddZARRHtxp4PDdWBGLXX cNmcDvI9B6ypclWFR_Z_qSLaqxq2IKuWl1Fhhl8X0mnVT2RyZgi.9Ea..1zx 1OXIg2jy28WxgzSqXQOjlrs69CVm9AEPOEhFc2ibDkBEtG4wty6e0jrNb.bk dQy5MoxeybNjAbMaMCJ5BByQjM6big2nXGApWPgW5nZqtlqxdBNeEUwyxkIZ dU5XnE6HlwcyC
Received: from [206.16.17.212] by web111416.mail.gq1.yahoo.com via HTTP; Mon, 21 Jun 2010 12:09:13 PDT
X-Mailer: YahooMailRC/397.8 YahooMailWebService/0.8.104.274457
References: <mailman.53.1275678008.15064.core@ietf.org> <8B75C336-60B6-4F04-9F48-F3015C8B3576@oracle.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759B1@il-ex01.ad.checkpoint.com> <4C17D075.6000603@gridmerge.com> <006FEB08D9C6444AB014105C9AEB133FB49CC759BE@il-ex01.ad.checkpoint.com> <4C18E173.1080506@gridmerge.com> <87vd9ilr9j.fsf@kelsey-ws.hq.ember.com> <41F8352F-DBCA-4B70-9AD9-DB8DDCE2469B@tzi.org>
Date: Mon, 21 Jun 2010 12:09:13 -0700 (PDT)
From: Behcet Sarikaya <behcetsarikaya@yahoo.com>
To: Carsten Bormann <cabo@tzi.org>, core <core@ietf.org>
In-Reply-To: <41F8352F-DBCA-4B70-9AD9-DB8DDCE2469B@tzi.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: Colin Oflynn <Colin.OFlynn@atmel.com>
Subject: Re: [core] Security design
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: Behcet Sarikaya <sarikaya@ieee.org>
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 21 Jun 2010 19:09:06 -0000

Hi Carsten,=0A=A0Yes, we should continue to watch these things but currentl=
y we do have a draft:=0Ahttp://tools.ietf.org/id/draft-oflynn-core-bootstra=
pping-00.txt=0Athat Colin and I have submitted for the charter item on Cons=
trained security bootstrapping specification. =0A=0AIf comments could be di=
rected to this draft, the authors would be in a better position to revise i=
t.=0A=0ARegards,=0A=0ABehcet=0A=0A=0A=0A----- Original Message ----=0A> Fro=
m: Carsten Bormann <cabo@tzi.org>=0A> To: core <core@ietf.org>=0A> Sent: Th=
u, June 17, 2010 12:46:56 AM=0A> Subject: Re: [core] Security design=0A> =
=0A> On Jun 16, 2010, at 21:19, Richard Kelsey wrote:=0A=0A>> From poking =
=0A> around on the IETF website,=0A> draft-ietf-tls-rfc4347-bis-03 is DTLS =
=0A> 1.2.=A0 It expired in=0A> April.=A0 It went to working group last call=
 =0A> in October 2009,=0A> with only minor changes recommended.=A0 =0A> See=
=0A>=A0 =0A> http://www.ietf.org/mail-archive/web/tls/current/msg03867.html=
=0A> I =0A> couldn't find any indication of further activity.=0A=0AJust got=
 word from the =0A> TLS chairs that this got sidestepped for a while, but t=
he updated version is =0A> planned before Maastricht.=A0 I think we should =
use the time in Maastricht to =0A> do some cross-area discussion.=0A(Beside=
s TLS, interesting security-related WGs =0A> to watch might include HIP.)=
=0A=0AGruesse, =0A> Carsten=0A=0A__________________________________________=
_____=0Acore mailing =0A> list=0A> href=3D"mailto:core@ietf.org">core@ietf.=
org=0A> href=3D"https://www.ietf.org/mailman/listinfo/core" target=3D_blank=
 =0A> >https://www.ietf.org/mailman/listinfo/core=0A=0A=0A      

From vipul.x.gupta@oracle.com  Tue Jun 22 11:18:59 2010
Return-Path: <vipul.x.gupta@oracle.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 4949F3A694C for <core@core3.amsl.com>; Tue, 22 Jun 2010 11:18:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.648
X-Spam-Level: 
X-Spam-Status: No, score=-4.648 tagged_above=-999 required=5 tests=[AWL=-0.650, BAYES_50=0.001, RCVD_IN_DNSWL_MED=-4, UNPARSEABLE_RELAY=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id LpMpW782i8Cu for <core@core3.amsl.com>; Tue, 22 Jun 2010 11:18:57 -0700 (PDT)
Received: from rcsinet10.oracle.com (rcsinet10.oracle.com [148.87.113.121]) by core3.amsl.com (Postfix) with ESMTP id ACD443A68F1 for <core@ietf.org>; Tue, 22 Jun 2010 11:18:54 -0700 (PDT)
Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by rcsinet10.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id o5MIIufC011218 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <core@ietf.org>; Tue, 22 Jun 2010 18:18:58 GMT
Received: from acsmt354.oracle.com (acsmt354.oracle.com [141.146.40.154]) by acsinet15.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o5MHVxJR003168 for <core@ietf.org>; Tue, 22 Jun 2010 18:18:53 GMT
Received: from abhmt009.oracle.com by acsmt354.oracle.com with ESMTP id 347787541277230699; Tue, 22 Jun 2010 11:18:19 -0700
Received: from dhcp-umpk16-74-203.sfbay.sun.com (/129.146.74.203) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 22 Jun 2010 11:18:17 -0700
Mime-Version: 1.0 (Apple Message framework v1078)
Content-Type: text/plain; charset=us-ascii
From: Vipul Gupta <vipul.x.gupta@oracle.com>
In-Reply-To: <mailman.2231.1277049106.4839.core@ietf.org>
Date: Tue, 22 Jun 2010 11:18:15 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <A8E74AD7-E8C3-4278-94C8-43D36638A8A6@oracle.com>
References: <mailman.2231.1277049106.4839.core@ietf.org>
To: core@ietf.org
X-Mailer: Apple Mail (2.1078)
X-Auth-Type: Internal IP
X-Source-IP: acsinet15.oracle.com [141.146.126.227]
X-CT-RefId: str=0001.0A090207.4C20FE94.01D7:SCFMA922111,ss=1,fgs=0
Cc: Vipul Gupta <vipul.x.gupta@oracle.com>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 22 Jun 2010 18:18:59 -0000

On Jun 20, 2010, at 8:51 AM, core-request@ietf.org wrote:

> Date: Sun, 20 Jun 2010 11:16:43 -0400
> From: Paul Duffy <paduffy@cisco.com>
> Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
>=20
> On 6/20/2010 10:15 AM, Carsten Bormann wrote:
>> On Jun 20, 2010, at 15:49, Paul Duffy wrote:
>>=20
>>=20
>>> Subscriptions are resources. they are created, have a lifetime, are =
deleted, can be modified, can be enumerated.
>>>=20
>> Why do you think that is the right design?
>>=20
>=20
> Two choices...
>=20
> - a subscription URI as child to the subscribed parent URI.  =20
> protocol://{address}/somepath/subscription.  You subscribe directly to=20=

> the resource.  Very OO

This choice is also a great fit for situations where the implementation
of the subscription/notification mechanism is resource-specific.
In our experience with a REST-based service for collecting/analyzing/
subscribing to sensor data (http://sensor.network.com/), this is =
frequently
the case (illustrative example below).

If one thinks of resources on a device implemented as tiny applications
hosted inside a "nano" appserver (and this is actually how we are=20
implementing things for Sun SPOTs, http://www.sunspotworld.com/) then=20
each application gets to manage a part of the URI space including both
the resource and its subscriptions.

protocol://{address}/path_to_resource   (for resource)
protocol://{address}/path_to_resource/subscriptions (for resource =
subscriptions)
protocol://{address}/path_to_resource/subscriptions/id (specific =
subscription)

Note that the subscriptions subspace need not be labelled =
"subscriptions" because
it can be discovered using the mechanism described at=20
http://webhooks.pbworks.com/RESTful-WebHooks under Discovery (based on =
"Web Linking"
http://tools.ietf.org/html/draft-nottingham-http-link-header-10).

Example: consider a tri-color LED and a light sensor both modeled as
resources (e.g. http://..../led4 and http://..../sensor1/light). An=20
application might want to be notified when led4's color setting is
changed or when the light level falls below a certain threshold. In the =
case of
the LED, all state changes occur by explicit PUTs to the resource URI.
In the case of the light sensor, however, changes in the light readings =
occur
independent of any interaction with the resource URI. Hence the
mechanism for implementing notifications are resource specific -- the
former only requires monitoring of PUTs but the latter requires periodic=20=

sampling.

vipul
---
http://labs.oracle.com/people/mybio.php?c=3D509

> - a single subscription URI for the endpoint =20
> protocol:.//{address}/subscription.  All subscriptions managed @ a=20
> single URI.
>=20
> Payloads defined appropriately
>=20
>> The main job of what you are calling a subscription is to manage =
conversation state, things like transport addresses, as opposed to =
application state.
>>=20
>=20
> Disagree.  The main job of a subscription is to monitor changes to=20
> application state, and alert interested parties to those changes in=20
> application state.
>=20
>> Why is the resource level the right way to manage that state?
>>=20
>> I'm sure that this design can be made to work; I'm just wondering =
what its advantages and disadvantages are.
>>=20
>> Let me illustrate this point with a couple of slight modifications of =
your statement:
>>=20
>>=20
>>> Connections are resources. they are created, have a lifetime, are =
deleted, can be modified, can be enumerated.
>>> Cached representations are resources. they are created, have a =
lifetime, are deleted, can be modified, can be enumerated.
>>>=20
>> I'm pretty sure that in both cases this approach would lead to a =
contorted design; there is a reason why this state stays below the level =
of resources and their representation.
>>=20
>> So what is it that makes the desire of one connector to remain =
informed about a resource, itself a resource?
>> (I'm not saying it is not, I just want to hear good arguments why =
that makes sense.  Or why it does not make sense.)
>>=20
>> Gruesse, Carsten
>>=20
>=20


From cabo@tzi.org  Tue Jun 22 13:49:22 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 067AC3A69DF for <core@core3.amsl.com>; Tue, 22 Jun 2010 13:49:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.484
X-Spam-Level: 
X-Spam-Status: No, score=-4.484 tagged_above=-999 required=5 tests=[AWL=-0.094, BAYES_20=-0.74, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1ygNBiVvovdD for <core@core3.amsl.com>; Tue, 22 Jun 2010 13:49:21 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 4FAE33A68D5 for <core@ietf.org>; Tue, 22 Jun 2010 13:49:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5MKnChe023101 for <core@ietf.org>; Tue, 22 Jun 2010 22:49:12 +0200 (CEST)
Received: from [10.0.1.198] (reingewinn.informatik.uni-bremen.de [134.102.218.123]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id BCE88B482;  Tue, 22 Jun 2010 22:49:12 +0200 (CEST)
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Apple Message framework v1081)
From: Carsten Bormann <cabo@tzi.org>
Date: Tue, 22 Jun 2010 22:49:12 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org>
References: <20100622203528.0519A28C0D0@core3.amsl.com>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1081)
Subject: [core] Fwd: New Version Notification for draft-hartke-coap-observe-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 22 Jun 2010 20:49:22 -0000

Klaus Hartke and I have just submitted a draft on issue #1/#2.

http://datatracker.ietf.org/doc/draft-hartke-coap-observe/

We believe it is not meaningful to discuss requirements without an
idea to what kind of design they might lead, so we provided a design
as well.  In effect, we tried to liberate ourselves from the
publish/subscribe/notify terminology and went back to the actual base
requirement behind charter objective 2: being able to observe a =
resource.

We tried to stick to the REST model as much as possible, but we extend
the existing HTTP methods by a method for explicitly *observing* a
resource.  This does not necessarily require the resource to implement
new methods, only the server offering its representations has to.
There is some new state, but it is not much different from the
conversation state that we already have in HTTP.

Enjoy!

Gruesse, Klaus and Carsten


Begin forwarded message:

> From: IETF I-D Submission Tool <idsubmission@ietf.org>
> Date: June 22, 2010 22:35:27 +0200
> To: cabo@tzi.org
> Cc: hartke@tzi.org
> Subject: New Version Notification for draft-hartke-coap-observe-00=20
>=20
>=20
> A new version of I-D, draft-hartke-coap-observe-00.txt has been =
successfully submitted by Carsten Bormann and posted to the IETF =
repository.
>=20
> Filename:	 draft-hartke-coap-observe
> Revision:	 00
> Title:		 Observing Resources in CoAP
> Creation_date:	 2010-06-21
> WG ID:		 Independent Submission
> Number_of_pages: 23
>=20
> Abstract:
> The state of a resource can change over time.  We want to give
> clients of the CoRE WG CoAP protocol the ability to observe this
> change.  This short I-D provides an example design for such an
> addition to CoAP, in order to be able to discuss the design
> alternatives in specific terms.
>=20
>=20
>=20
> The IETF Secretariat.
>=20


From trac@tools.ietf.org  Wed Jun 23 04:55:13 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 483743A67E9 for <core@core3.amsl.com>; Wed, 23 Jun 2010 04:55:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.445
X-Spam-Level: 
X-Spam-Status: No, score=-102.445 tagged_above=-999 required=5 tests=[AWL=0.155, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id u0KFJxv9geqs for <core@core3.amsl.com>; Wed, 23 Jun 2010 04:55:12 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id A50A73A67B6 for <core@ietf.org>; Wed, 23 Jun 2010 04:55:12 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.72) (envelope-from <trac@tools.ietf.org>) id 1OROY2-0006RW-S8; Wed, 23 Jun 2010 04:55:18 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: cabo@tzi.org
X-Trac-Project: core
Date: Wed, 23 Jun 2010 11:55:18 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/16
Message-ID: <051.e651a5fa9ebfe6fa6b1271bd2a8d69e2@tools.ietf.org>
X-Trac-Ticket-ID: 16
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: cabo@tzi.org, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core] #16: Link Format (section 6.1) needs media type (mime-type)
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 Jun 2010 11:55:13 -0000

#16: Link Format (section 6.1) needs media type (mime-type)
--------------------------------+-------------------------------------------
 Reporter:  cabo@â€¦              |       Owner:            
     Type:  defect              |      Status:  new       
 Priority:  minor               |   Milestone:  milestone1
Component:  coap                |     Version:  1.0       
 Severity:  Active WG Document  |    Keywords:            
--------------------------------+-------------------------------------------
 We need to define (and register) the media types (mime types) of any new
 resource representation format we create for CoAP.  This includes the
 format defined in 6.1.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/16>
core <http://tools.ietf.org/core/>


From zach@sensinode.com  Wed Jun 23 09:37:38 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id AA19728C13A for <core@core3.amsl.com>; Wed, 23 Jun 2010 09:37:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.665
X-Spam-Level: 
X-Spam-Status: No, score=-2.665 tagged_above=-999 required=5 tests=[AWL=0.934,  BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id VyafEVanhvsR for <core@core3.amsl.com>; Wed, 23 Jun 2010 09:37:36 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id C041A28C12E for <core@ietf.org>; Wed, 23 Jun 2010 09:37:35 -0700 (PDT)
Received: from [192.168.1.3] (line-8354.dyn.kponet.fi [85.29.79.2]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5NGb0JD026097 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 23 Jun 2010 19:37:37 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=windows-1252
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <051.e651a5fa9ebfe6fa6b1271bd2a8d69e2@tools.ietf.org>
Date: Wed, 23 Jun 2010 18:00:54 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <2DC04F68-0DEA-4016-945E-1773DDC50014@sensinode.com>
References: <051.e651a5fa9ebfe6fa6b1271bd2a8d69e2@tools.ietf.org>
To: core issue tracker <trac@tools.ietf.org>
X-Mailer: Apple Mail (2.1081)
Cc: core@ietf.org
Subject: Re: [core] #16: Link Format (section 6.1) needs media type (mime-type)
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 Jun 2010 16:37:38 -0000

The intention of Section 6.1 was not to create a "new" resource format, =
but to re-use the format defined in draft-nottingham-http-link-header. =
That document (if I remember right) doesn't however define a MIME type =
for the format as it is usually carried in an HTTP option. I was =
thinking we just carry this as text/plain, but I guess it doesn't hurt =
to request a proper type for it. So I support this ticket - but hope we =
are not defining any new resource representation formats here ;-)

Zach

On Jun 23, 2010, at 2:55 PM, core issue tracker wrote:

> #16: Link Format (section 6.1) needs media type (mime-type)
> =
--------------------------------+-----------------------------------------=
--
> Reporter:  cabo@=85              |       Owner:           =20
>     Type:  defect              |      Status:  new      =20
> Priority:  minor               |   Milestone:  milestone1
> Component:  coap                |     Version:  1.0      =20
> Severity:  Active WG Document  |    Keywords:           =20
> =
--------------------------------+-----------------------------------------=
--
> We need to define (and register) the media types (mime types) of any =
new
> resource representation format we create for CoAP.  This includes the
> format defined in 6.1.
>=20
> --=20
> Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/16>
> core <http://tools.ietf.org/core/>
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From zach@sensinode.com  Wed Jun 23 09:37:39 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 033F73A6887 for <core@core3.amsl.com>; Wed, 23 Jun 2010 09:37:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.252
X-Spam-Level: 
X-Spam-Status: No, score=-1.252 tagged_above=-999 required=5 tests=[AWL=-0.853, BAYES_50=0.001, J_CHICKENPOX_55=0.6, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id f-x454dbgEdd for <core@core3.amsl.com>; Wed, 23 Jun 2010 09:37:36 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id C04E928C13D for <core@ietf.org>; Wed, 23 Jun 2010 09:37:35 -0700 (PDT)
Received: from [192.168.1.3] (line-8354.dyn.kponet.fi [85.29.79.2]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5NGb0JE026097 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 23 Jun 2010 19:37:38 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org>
Date: Wed, 23 Jun 2010 18:24:11 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com>
References: <20100622203528.0519A28C0D0@core3.amsl.com> <A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org>
To: Carsten Bormann <cabo@tzi.org>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification for draft-hartke-coap-observe-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 Jun 2010 16:37:39 -0000

Klaus, Carsten,

Wow guys, you really put a huge amount of work into analyzing this. =
Thanks!=20

At the abstract level, I think you have captured the requirements and =
general concept of what we want to achieve very well. I think it is an =
important point in your draft that CoAP is a RESTful transfer protocol, =
not an application protocol. Therefore, support of resource observation =
is at the transfer protocol level, and is transparent to the =
application.=20

Here are some initial comments:

- The requirements are good, however we should not require an end-point =
to support observation for its resources. It is up to the server if a =
resources is "observable" or not, and thus very simple end-points may =
leave that feature out to minimize code size.

- Are we sure we need all the requirements here, or are some =
nice-to-have? For example: "A subscribing client must be able to =
influence the representation format in which the server supplies the =
resource state" I would hope this doesn't end up resulting in a bunch of =
Accept: style headers? Couldn't that be left to the application to offer =
URLs with different representation formats? I am not convinced this =
should be a transfer protocol requirement for CoAP.

- At first glance this looks overly complicated, but I think it is =
because you are modeling this as a format design pattern and are =
exploring this is detail. I am hoping that realizing this would be a =
whole lot simpler?=20

- SUBSCRIBE, UNSUBSCRIBE, YIELD, BREAK, THROW are abstract concepts at =
this point, I would think these could be combined quite a bit in =
realization? What kind of realization do you guys have in mind (just for =
a sneak preview to see if this is nuts or not).

- The notification messages seem to be sometimes representations and =
sometimes error codes. Is this suggesting that an (abstract) =
notification message would need to carry both a representation and a =
CoAP code. BREAK and THROW are also shows as being piggybacked on =
replies, so they basically are CoAP codes. So YEILD =3D representation, =
and BREAK+THROW =3D CoAP codes?

- I am not sure about the implications of allowing a delayed GET and PUT =
response on implementations. Currently in coap-00 if an end-point =
doesn't make use of subscribe/notify it doesn't have to implement code =
to wait for asynchronous notifications. For example it might simply make =
a request, open a temporary UDP socket waiting for the response, and =
then close that and go to sleep. Well, I guess if it gets an =
intermediate response code it would know to stay awake waiting for the =
response. Is this an efficient way of using energy in a constrained =
network though? What if a client doesn't want a delayed response?

- Regarding Section 6, I prefer "way 1", seems much cleaner to me, has =
less state and is useful in a proxy.  =20

Zach

On Jun 22, 2010, at 11:49 PM, Carsten Bormann wrote:

> Klaus Hartke and I have just submitted a draft on issue #1/#2.
>=20
> http://datatracker.ietf.org/doc/draft-hartke-coap-observe/
>=20
> We believe it is not meaningful to discuss requirements without an
> idea to what kind of design they might lead, so we provided a design
> as well.  In effect, we tried to liberate ourselves from the
> publish/subscribe/notify terminology and went back to the actual base
> requirement behind charter objective 2: being able to observe a =
resource.
>=20
> We tried to stick to the REST model as much as possible, but we extend
> the existing HTTP methods by a method for explicitly *observing* a
> resource.  This does not necessarily require the resource to implement
> new methods, only the server offering its representations has to.
> There is some new state, but it is not much different from the
> conversation state that we already have in HTTP.
>=20
> Enjoy!
>=20
> Gruesse, Klaus and Carsten
>=20
>=20
> Begin forwarded message:
>=20
>> From: IETF I-D Submission Tool <idsubmission@ietf.org>
>> Date: June 22, 2010 22:35:27 +0200
>> To: cabo@tzi.org
>> Cc: hartke@tzi.org
>> Subject: New Version Notification for draft-hartke-coap-observe-00=20
>>=20
>>=20
>> A new version of I-D, draft-hartke-coap-observe-00.txt has been =
successfully submitted by Carsten Bormann and posted to the IETF =
repository.
>>=20
>> Filename:	 draft-hartke-coap-observe
>> Revision:	 00
>> Title:		 Observing Resources in CoAP
>> Creation_date:	 2010-06-21
>> WG ID:		 Independent Submission
>> Number_of_pages: 23
>>=20
>> Abstract:
>> The state of a resource can change over time.  We want to give
>> clients of the CoRE WG CoAP protocol the ability to observe this
>> change.  This short I-D provides an example design for such an
>> addition to CoAP, in order to be able to discuss the design
>> alternatives in specific terms.
>>=20
>>=20
>>=20
>> The IETF Secretariat.
>>=20
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From zach@sensinode.com  Wed Jun 23 09:55:08 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 53BE428C11D for <core@core3.amsl.com>; Wed, 23 Jun 2010 09:55:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.41
X-Spam-Level: 
X-Spam-Status: No, score=-1.41 tagged_above=-999 required=5 tests=[AWL=-0.411,  BAYES_50=0.001, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7rrsHZXL25Up for <core@core3.amsl.com>; Wed, 23 Jun 2010 09:55:07 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 992B928C0E4 for <core@ietf.org>; Wed, 23 Jun 2010 09:55:06 -0700 (PDT)
Received: from [192.168.1.3] (line-8354.dyn.kponet.fi [85.29.79.2]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5NGb0JG026097 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 23 Jun 2010 19:37:40 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <05C6A38D732F1144A8C4016BA4416BFE02EEE55D@SPO-EXVS-02.itron.com>
Date: Wed, 23 Jun 2010 18:49:35 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <7FCCCB31-051C-4016-9C40-00587AD32E6F@sensinode.com>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com><1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu><4C1E1C68.2070609@cisco.com><88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org><4C1E30DB.2010305@cisco.com><A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org><AANLkTilFUgkAxmaDJdbd00rglQvJVS_aLjmniirVz4co@mail.gmail.com> <45EA9EB6-CEF0-4417-B09C-E41AC4C31F31@sensinode.com> <05C6A38D732F1144A8C4016BA4416BFE02EEE55D@SPO-EXVS-02.itron.com>
To: "Stuber, Michael" <Michael.Stuber@itron.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 Jun 2010 16:55:08 -0000

On Jun 20, 2010, at 10:34 PM, Stuber, Michael wrote:

>  In this regard, I have a request (and feel
> free to direct me to a previous email if I missed it):
>=20
> Zach, and proponents of native sub/not, can you explain the advantages
> of having a native sub/notify command? =20

I am not arguing that SUB/NOT must be realized using only native =
methods/messages. As an engineer, my first priority is that we all =
understand the goal and requirements, and then design for that. The =
design currently in coap-00 was a straw-man we put together just to see =
what such a think would look like based on the known requirements. I am =
not stuck on that specific solution really.=20

Firstly, I do see that our main goal according to the charter is to =
optimize this for M2M application needs. We are not chartered to blindly =
do HTTP compression here.

Secondly, this working group is defining a RESTful transfer protocol, =
*not* an application design pattern. Therefore CoAP should only define a =
low-level conversational mechanism for making it possible to =
asynchronously observe a resource. The designers of HTTP didn't have =
subscribe/notify as a design requirement, but we do.=20

Regarding how to make a subscription, I can see ways of doing it both as =
meta-data about a subscription, or subscriptions as well-known =
resources. Pretty neutral on which way to go, although meta-data =
probably fits a transfer protocol better.

Regarding how to make notifications, here it is so far clear to me that =
overloading POST or PUT is wrong. Firstly, the target URI referenced in =
the request is handled by the application protocol, not the transfer =
protocol. Secondly, the target URI does not make it easy for a proxy to =
match what resource this representation is about in a cache.=20

> Paul, and proponents of sub/not being managed as a resource, can you
> explain the advantages of doing so?


Resources are application constructions, if we want to deal with =
subscription/notify purely at the application then we are done. No need =
to specify it in CoAP at all, just leave it to any of the 10 different =
design patterns as with HTTP today.

Zach

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From cabo@tzi.org  Wed Jun 23 09:56:00 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 57BB83A6AAC for <core@core3.amsl.com>; Wed, 23 Jun 2010 09:56:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.711
X-Spam-Level: 
X-Spam-Status: No, score=-4.711 tagged_above=-999 required=5 tests=[AWL=-0.321, BAYES_20=-0.74, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Nl3DE7O1HK8i for <core@core3.amsl.com>; Wed, 23 Jun 2010 09:55:59 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id F27713A6AA5 for <core@ietf.org>; Wed, 23 Jun 2010 09:55:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5NGtufN019032; Wed, 23 Jun 2010 18:55:56 +0200 (CEST)
Received: from [192.168.217.101] (p5489A34E.dip.t-dialin.net [84.137.163.78]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 71DAAB9D7;  Wed, 23 Jun 2010 18:55:56 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com>
Date: Wed, 23 Jun 2010 18:55:54 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <08C9302C-72D4-496B-A7B3-3F37DD1CA759@tzi.org>
References: <20100622203528.0519A28C0D0@core3.amsl.com> <A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org> <3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com>
To: Zach Shelby <zach@sensinode.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: [core] Can all responses be instant? (Re: Fwd: New Version Notification for draft-hartke-coap-observe-00)
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 Jun 2010 16:56:00 -0000

Zach,

that are a number of very good questions.

Let's start discussing this one:

> - I am not sure about the implications of allowing a delayed GET and =
PUT response on implementations. Currently in coap-00 if an end-point =
doesn't make use of subscribe/notify it doesn't have to implement code =
to wait for asynchronous notifications. For example it might simply make =
a request, open a temporary UDP socket waiting for the response, and =
then close that and go to sleep. Well, I guess if it gets an =
intermediate response code it would know to stay awake waiting for the =
response. Is this an efficient way of using energy in a constrained =
network though? What if a client doesn't want a delayed response?

Right now, CoAP is silent on how much time a server has to answer a =
request.

Certainly, that time will never be zero.

Can we live with limiting this time to < RESPONSE_TIMEOUT hard?

If yes, everything gets simpler.
If not, there is always the alternative not to do an inversion of =
control; in that case, the server would reply with a "please wait and =
try again", maybe including a duration that gives the estimated time =
until an answer, and the client would simply repeat asking at its =
convenience.
(Of course, the server could simply remain silent, prompting =
retransmissions, but this means that we limit the time to =
RESPONSE_TIMEOUT * MAX_RETRANSMIT, assuming no errors, and we increase =
the likelihood of a transfer failing just because of lost packets.)

On the other hand, if we do have a "notify" style packet, there is very =
little stopping us from implementing an "I'll give it to you later" =
reply (the "ACK" packet in Figure 1 of coap-observe).  A client that =
doesn't want to wait can simply treat that as a failure.

As usual, we should probably err on the side of simplicity, but only =
after having discussed whether we are hitting Einstein's "but no =
simpler".

Gruesse, Carsten


From zach@sensinode.com  Wed Jun 23 13:03:49 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id BF2DA28C0E5; Wed, 23 Jun 2010 13:03:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.651
X-Spam-Level: 
X-Spam-Status: No, score=-2.651 tagged_above=-999 required=5 tests=[AWL=0.948,  BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GiYRzmJk89E7; Wed, 23 Jun 2010 13:03:48 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 044923A69B7; Wed, 23 Jun 2010 13:03:47 -0700 (PDT)
Received: from [192.168.1.3] (line-8354.dyn.kponet.fi [85.29.79.2]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5NK3ij4016058 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 23 Jun 2010 23:03:44 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
X-Priority: Normal
In-Reply-To: <420897058-1277139268-cardhu_decombobulator_blackberry.rim.net-1392627849-@bda053.bisx.prod.on.blackberry>
Date: Wed, 23 Jun 2010 23:03:45 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <8CC28E92-148F-4C68-B9D9-40C8D1BD6181@sensinode.com>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com><1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu><4C1E1C68.2070609@cisco.com>	<88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org><4C1E30DB.2010305@cisco.com>	<A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org><AANLkTilFUgkAxmaDJdbd00rglQvJVS_aLjmniirVz4co@mail.gmail.com><45EA9EB6-CEF0-4417-B09C-E41AC4C31F31@sensinode.com><485AF6ECE8D1954D996771CC49E996FDC17C5D7E@IT-EXMB-01.silverspringnet.com> <420897058-1277139268-cardhu_decombobulator_blackberry.rim.net-1392627849-@bda053.bisx.prod.on.blackberry>
To: d.sturek@att.net
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>, core-bounces@ietf.org
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 Jun 2010 20:03:49 -0000

On Jun 21, 2010, at 7:58 PM, d.sturek@att.net wrote:

> I am writing the http proxy for the coap draft assuming it is simple =
and not application gateway.

Yep, this is exactly what we should describe in the draft. However we of =
course need to mention that caching may after be performed along with =
mapping, pointing to the caching section of the draft.

Implementation details and advanced features of proxies are out of scope =
of the document, I agree. We also don't want to start describing how to =
map Sub/Notify to the many ways of doing that in HTTP. So probably we =
end up not specifying how to map Sub/Notify at all, but rather leave =
that to proxy implementors to support the techniques they want (HTTP =
polling, HTTP webhooks, SIP, XMPP etc.)?

Zach=20

>=20
> Don
> Sent via BlackBerry from T-Mobile
>=20
> -----Original Message-----
> From: Thomas Herbst <therbst@silverspringnet.com>
> Sender: core-bounces@ietf.org
> Date: Mon, 21 Jun 2010 09:50:04=20
> To: Zach Shelby<zach@sensinode.com>; Shidan<shidan@gmail.com>
> Cc: core<core@ietf.org>
> Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
>=20
> RESTful !=3D HTTP  is  true, but CoAP < HTTP should be true - we =
should be defining the minimal=20
> Subset of HTTP to make binary on a reliable UDP base. =20
>=20
> Sensor networks need to be able to interface with the rest of the =
world to be useful.  Defining elements that do not cleanly map to HTTP =
makes these strange little devices.  Why bother doing IP at that point?=20=

>=20
> Pub/Sub should be defined as a BCP that can use CoAP.
>=20
> Zach - could you elaborate on the proxying paragraph? I'd think a =
gateway would be a dumb device, not an intelligent proxy certainly not =
breaking end-to-end security.=20
>=20
> tom
>=20
>=20
> -----Original Message-----
> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf =
Of Zach Shelby
> Sent: Sunday, June 20, 2010 10:20 AM
> To: Shidan
> Cc: core
> Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
>=20
> On Jun 20, 2010, at 7:37 PM, Shidan wrote:
>=20
>> I think at the end of the day, do we want something that interfaces
>> with HTTP as nice as possible or something that's a nicer fit for
>> sensor networks.
>=20
>=20
> This is a critical point to solve for Ticket #1 - SUB/NOT architecture =
and requirements.=20
>=20
> I would say our first priority is to make a RESTful application =
protocol for embedded M2M application requirements (energy, building =
automation etc.). RESTful !=3D HTTP, thus that does not mean we must do =
everything as well (or as badly) as HTTP. The secondary priority is to =
define an HTTP mapping, which obviously should be as simple as possible.=20=

>=20
> Regarding proxying SUB/NOT - let's keep in mind the kinds of cases in =
which CoAP-HTTP proxying will actually be used, then that helps quite a =
bit in understanding how to optimize the HTTP mapping. For example, =
everyone seems to be assuming that subscriptions will be end-to-end =
across an CoAP-HTTP proxy. In practice what I have been seeing so far is =
a split approach as you want to cache and aggregate subscriptions in a =
proxy anyways. There are also security relationships that lean towards a =
split approach. Therefore I would say our main priority is a split =
SUB/NOT architecture WRT HTTP mapping.
>=20
> As caching is an important feature of such a proxy, that brings us one =
more requirement. Notifications MUST be very easily identified with the =
resource they represent  so that the same cache used for responses to =
GETs can be leveraged. This keeps the caching feature of a CoAP-HTTP =
proxy simple. In practice this means the notification must include the =
URL of the  resource.=20
>=20
> Zach
>=20
> --=20
> Zach Shelby, Chief Nerd, Sensinode Ltd.
> http://zachshelby.org  - My blog "On the Internet of Things"
> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
> Mobile: +358 40 7796297
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From zach@sensinode.com  Wed Jun 23 13:44:53 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 76C8A28C14A for <core@core3.amsl.com>; Wed, 23 Jun 2010 13:44:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.769
X-Spam-Level: 
X-Spam-Status: No, score=-2.769 tagged_above=-999 required=5 tests=[AWL=0.830,  BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1vfHjVAdnT-9 for <core@core3.amsl.com>; Wed, 23 Jun 2010 13:44:52 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id BB41928C103 for <core@ietf.org>; Wed, 23 Jun 2010 13:44:51 -0700 (PDT)
Received: from [192.168.1.3] (line-8354.dyn.kponet.fi [85.29.79.2]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5NKiqDi019825 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 23 Jun 2010 23:44:54 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <485AF6ECE8D1954D996771CC49E996FDC17C5D7E@IT-EXMB-01.silverspringnet.com>
Date: Wed, 23 Jun 2010 23:44:54 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <404829F0-9122-446D-8927-62BD8D43F18C@sensinode.com>
References: <41BCD849-9293-48EF-8D22-DC98858561D0@archrock.com> <1D46D1A0-5EB7-4A01-9F4C-40ED5BC73730@cs.columbia.edu> <4C1E1C68.2070609@cisco.com>	<88FCDA29-1880-4CD4-887E-055AAF1E2470@tzi.org> <4C1E30DB.2010305@cisco.com>	<A3CA9AE1-E25A-4CFE-97B6-FC28317CD08C@tzi.org> <AANLkTilFUgkAxmaDJdbd00rglQvJVS_aLjmniirVz4co@mail.gmail.com> <45EA9EB6-CEF0-4417-B09C-E41AC4C31F31@sensinode.com> <485AF6ECE8D1954D996771CC49E996FDC17C5D7E@IT-EXMB-01.silverspringnet.com>
To: Thomas Herbst <therbst@silverspringnet.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 Jun 2010 20:44:53 -0000

On Jun 21, 2010, at 7:50 PM, Thomas Herbst wrote:

> RESTful !=3D HTTP  is  true, but CoAP < HTTP should be true - we =
should be defining the minimal=20
> Subset of HTTP to make binary on a reliable UDP base. =20

We are defining a RESTful protocol for constrained M2M applications. =
Yes, that should be simpler than HTTP, but I don't see a reason to be =
limited to a strict subset of HTTP as our requirements are pretty =
different.=20

> Sensor networks need to be able to interface with the rest of the =
world to be useful.  Defining elements that do not cleanly map to HTTP =
makes these strange little devices.  Why bother doing IP at that point?=20=


In many M2M applications you will see CoAP be used end-to-end, or =
between peer devices. Sure in some cases you want to access CoAP =
resources via HTTP using a proxy but that is not the main use case. =
Mappings to other protocols will also be common. More commonly there =
will be middleware, databases and web GUIs in between mortal HTTP =
browsers and low-level CoAP resources. IP doesn't mean end-to-end at the =
applications layer.=20

> Pub/Sub should be defined as a BCP that can use CoAP.

You mean as a separate draft?=20

> Zach - could you elaborate on the proxying paragraph? I'd think a =
gateway would be a dumb device, not an intelligent proxy certainly not =
breaking end-to-end security.=20

Proxies are by no means very dumb when you start really implementing a =
production one useful for something.  Sure, you could make a simple =
mapping function which doesn't perform caching, aggregation or anything =
but I find that of limited use. But that is out of scope for CoRE.=20

My understanding: Intelligence is not what splits security in a proxy. =
IPsec obviously stops at L3. At L4 we are dealing with UDP (DTLS) on one =
side, TCP (TLS) on the other and likely different trust models. I don't =
see how your security could be end-to-end unless it is object security? =
In a CoAP-CoAP proxy we could tunnel DTLS through I guess?

Zach

>=20
> tom
>=20
>=20
> -----Original Message-----
> From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf =
Of Zach Shelby
> Sent: Sunday, June 20, 2010 10:20 AM
> To: Shidan
> Cc: core
> Subject: Re: [core] Proposal for a new subscription mechanism in CoAP
>=20
> On Jun 20, 2010, at 7:37 PM, Shidan wrote:
>=20
>> I think at the end of the day, do we want something that interfaces
>> with HTTP as nice as possible or something that's a nicer fit for
>> sensor networks.
>=20
>=20
> This is a critical point to solve for Ticket #1 - SUB/NOT architecture =
and requirements.=20
>=20
> I would say our first priority is to make a RESTful application =
protocol for embedded M2M application requirements (energy, building =
automation etc.). RESTful !=3D HTTP, thus that does not mean we must do =
everything as well (or as badly) as HTTP. The secondary priority is to =
define an HTTP mapping, which obviously should be as simple as possible.=20=

>=20
> Regarding proxying SUB/NOT - let's keep in mind the kinds of cases in =
which CoAP-HTTP proxying will actually be used, then that helps quite a =
bit in understanding how to optimize the HTTP mapping. For example, =
everyone seems to be assuming that subscriptions will be end-to-end =
across an CoAP-HTTP proxy. In practice what I have been seeing so far is =
a split approach as you want to cache and aggregate subscriptions in a =
proxy anyways. There are also security relationships that lean towards a =
split approach. Therefore I would say our main priority is a split =
SUB/NOT architecture WRT HTTP mapping.
>=20
> As caching is an important feature of such a proxy, that brings us one =
more requirement. Notifications MUST be very easily identified with the =
resource they represent  so that the same cache used for responses to =
GETs can be leveraged. This keeps the caching feature of a CoAP-HTTP =
proxy simple. In practice this means the notification must include the =
URL of the  resource.=20
>=20
> Zach
>=20
> --=20
> Zach Shelby, Chief Nerd, Sensinode Ltd.
> http://zachshelby.org  - My blog "On the Internet of Things"
> http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
> Mobile: +358 40 7796297
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From lars.eggert@nokia.com  Thu Jun 24 01:23:03 2010
Return-Path: <lars.eggert@nokia.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 4947D3A6A1C for <core@core3.amsl.com>; Thu, 24 Jun 2010 01:23:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.347
X-Spam-Level: 
X-Spam-Status: No, score=-6.347 tagged_above=-999 required=5 tests=[AWL=0.252,  BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wyOiu2Zr5HLH for <core@core3.amsl.com>; Thu, 24 Jun 2010 01:23:01 -0700 (PDT)
Received: from mgw-mx06.nokia.com (smtp.nokia.com [192.100.122.233]) by core3.amsl.com (Postfix) with ESMTP id C9BFA3A695F for <core@ietf.org>; Thu, 24 Jun 2010 01:23:00 -0700 (PDT)
Received: from vaebh105.NOE.Nokia.com (vaebh105.europe.nokia.com [10.160.244.31]) by mgw-mx06.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o5O8MvKG024218 for <core@ietf.org>; Thu, 24 Jun 2010 11:23:06 +0300
Received: from vaebh104.NOE.Nokia.com ([10.160.244.30]) by vaebh105.NOE.Nokia.com with Microsoft SMTPSVC(6.0.3790.4675);  Thu, 24 Jun 2010 11:22:56 +0300
Received: from mgw-sa01.ext.nokia.com ([147.243.1.47]) by vaebh104.NOE.Nokia.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Thu, 24 Jun 2010 11:22:53 +0300
Received: from mail.fit.nokia.com (esdhcp030222.research.nokia.com [172.21.30.222]) by mgw-sa01.ext.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o5O8Mqbs011532 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <core@ietf.org>; Thu, 24 Jun 2010 11:22:53 +0300
From: Lars Eggert <lars.eggert@nokia.com>
X-Virus-Status: Clean
X-Virus-Scanned: clamav-milter 0.96.1 at fit.nokia.com
Content-Type: multipart/signed; boundary=Apple-Mail-34-560330543; protocol="application/pkcs7-signature"; micalg=sha1
Date: Thu, 24 Jun 2010 11:22:37 +0300
Message-Id: <19A357D2-48CA-44A3-8112-9C6263E7E123@nokia.com>
To: core <core@ietf.org>
Mime-Version: 1.0 (Apple Message framework v1081)
X-Mailer: Apple Mail (2.1081)
X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.5 (mail.fit.nokia.com); Thu, 24 Jun 2010 11:22:43 +0300 (EEST)
X-OriginalArrivalTime: 24 Jun 2010 08:22:53.0431 (UTC) FILETIME=[7112B070:01CB1376]
X-Nokia-AV: Clean
Subject: [core] Fwd: I-D Action:draft-eggert-core-congestion-control-00.txt
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 24 Jun 2010 08:23:03 -0000

--Apple-Mail-34-560330543
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

FYI. I'd be interested in discussing the ideas in this draft with the =
WG.

> A New Internet-Draft is available from the on-line Internet-Drafts =
directories.=20
> =20
> Title : Congestion Control for the Constrained Application Protocol =
(CoAP)=20
> Author(s) : L. Eggert=20
> Filename : draft-eggert-core-congestion-control-00.txt=20
> Pages : 9=20
> Date : 2010-06-23=20
> =20
> The Constrained Application Protocol (CoAP) is a simple, low-=20
> overhead, UDP-based protocol for use with resource-constrained IP=20
> networks and nodes. CoAP defines a simple technique to individually=20
> retransmit lost messages, but has no other congestion control=20
> mechanisms. This document motivates the need for additional=20
> congestion control mechanisms, and defines some simple strawman=20
> proposals. The goal is to encourage experimentation with these and=20
> other proposals, in order to determine which mechanisms are feasible=20=

> to implement on resource-constrained nodes and are effective real=20
> deployments.=20
> =20
> A URL for this Internet-Draft is:=20
> =
http://www.ietf.org/internet-drafts/draft-eggert-core-congestion-control-0=
0.txt=20

--Apple-Mail-34-560330543
Content-Disposition: attachment;
	filename=smime.p7s
Content-Type: application/pkcs7-signature;
	name=smime.p7s
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIKHjCCBMww
ggQ1oAMCAQICEByunWua9OYvIoqj2nRhbB4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA1MTAyODAwMDAwMFoXDTE1MTAyNzIzNTk1OVow
gd0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp
Z24gVHJ1c3QgTmV0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZl
cmlzaWduLmNvbS9ycGEgKGMpMDUxHjAcBgNVBAsTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDE3MDUG
A1UEAxMuVmVyaVNpZ24gQ2xhc3MgMSBJbmRpdmlkdWFsIFN1YnNjcmliZXIgQ0EgLSBHMjCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMnfrOfq+PgDFMQAktXBfjbCPO98chXLwKuMPRyV
zm8eECw/AO2XJua2x+atQx0/pIdHR0w+VPhs+Mf8sZ69MHC8l7EDBeqV8a1AxUR6SwWi8mD81zpl
Yu//EHuiVrvFTnAt1qIfPO2wQuhejVchrKaZ2RHp0hoHwHRHQgv8xTTq/ea6JNEdCBU3otdzzwFB
L2OyOj++pRpu9MlKWz2VphW7NQIZ+dTvvI8OcXZZu0u2Ptb8Whb01g6J8kn+bAztFenZiHWcec5g
J925rXXOL3OVekA6hXVJsLjfaLyrzROChRFQo+A8C67AClPN1zBvhTJGG+RJEMJs4q8fef/btLUC
AwEAAaOCAYQwggGAMBIGA1UdEwEB/wQIMAYBAf8CAQAwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcX
ATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMAsGA1UdDwQEAwIB
BjARBglghkgBhvhCAQEEBAMCAQYwLgYDVR0RBCcwJaQjMCExHzAdBgNVBAMTFlByaXZhdGVMYWJl
bDMtMjA0OC0xNTUwHQYDVR0OBBYEFBF9Xhl9PATfamzWoooaPzHYO5RSMDEGA1UdHwQqMCgwJqAk
oCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTEuY3JsMIGBBgNVHSMEejB4oWOkYTBfMQsw
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDEgUHVi
bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHmCEQDNun9W8N/kvFT+IqyzcqpVMA0G
CSqGSIb3DQEBBQUAA4GBALEv2ZbhkqLugWDlyCog++FnLNYAmFOjAhvpkEv4GESfD0b3+qD+0x0Y
o9K/HOzWGZ9KTUP4yru+E4BJBd0hczNXwkJavvoAk7LmBDGRTl088HMFN2Prv4NZmP1m3umGMpqS
KTw6rlTaphJRsY/IytNHeObbpR6HBuPRFMDCIfa6MIIFSjCCBDKgAwIBAgIQM/3DDmRp5mxHvrbX
tRvSsDANBgkqhkiG9w0BAQUFADCB3TELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJ
bmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1
c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNTEeMBwGA1UECxMVUGVyc29u
YSBOb3QgVmFsaWRhdGVkMTcwNQYDVQQDEy5WZXJpU2lnbiBDbGFzcyAxIEluZGl2aWR1YWwgU3Vi
c2NyaWJlciBDQSAtIEcyMB4XDTA5MTAxNDAwMDAwMFoXDTEwMTAxNDIzNTk1OVowggETMRcwFQYD
VQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazFGMEQG
A1UECxM9d3d3LnZlcmlzaWduLmNvbS9yZXBvc2l0b3J5L1JQQSBJbmNvcnAuIGJ5IFJlZi4sTElB
Qi5MVEQoYyk5ODEeMBwGA1UECxMVUGVyc29uYSBOb3QgVmFsaWRhdGVkMTMwMQYDVQQLEypEaWdp
dGFsIElEIENsYXNzIDEgLSBOZXRzY2FwZSBGdWxsIFNlcnZpY2UxFDASBgNVBAMUC0xhcnMgRWdn
ZXJ0MSQwIgYJKoZIhvcNAQkBFhVsYXJzLmVnZ2VydEBub2tpYS5jb20wggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCrTp9sa04QO3gKan1sQGFAZ91BKjFdECaw29ZXHYOZSFW7JC/oyuAO
x7pucJp9qDLYlv60I8zLJ1eocDn3bsjBWwAS65GGVT9NLiblzCd5DeWTkn9UD7OMvLL+Z1Z17sE0
jlmluQSCLjv0P7d6ZCpwVD2hWvuZu37fIQresIEYQLbZHXogwoCMhqwo8k8/WuwDbNcB9RiLq3JW
FRjZILMmf5qFdExz1AZyG3OdFXe1F0vcxfHhbrGU5cVklV9XI3TfxVZciFNqnTuWsaHFxU0ZrwI0
njVtpLko1TW1vC5qS2ZIpWq7iDkIke+XL4IYTHlOdH7sM502qEE8JqadXjuTAgMBAAGjgcwwgckw
CQYDVR0TBAIwADBEBgNVHSAEPTA7MDkGC2CGSAGG+EUBBxcBMCowKAYIKwYBBQUHAgEWHGh0dHBz
Oi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwCwYDVR0PBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwME
BggrBgEFBQcDAjBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vSW5kQzFEaWdpdGFsSUQtY3JsLnZl
cmlzaWduLmNvbS9JbmRDMURpZ2l0YWxJRC5jcmwwDQYJKoZIhvcNAQEFBQADggEBAJraU8e1Ss8a
Uj33lweT8ibOcmNLTNn2pnSi7p5BwNCFtrLNp9AdhcGYJfEQMOlanxc7dpQ7OWUbpub4jAYKyP47
hPQayKMJ73KcKmiN4Czj9g/uCTRwW3kiyhTo22Yl2MWGTM7WI39xTEQo4DOGs9EK6Ldb9zZU4oRl
ZbaD1G/Lo33LYmuI8MfCLzTBtmT5MybyEnK17457+8bMLXoSFJfFGk5LPCn38SWdiAG/YH2A4had
3wvpd9Mpx38fxw/RZqlifRSTT8zlOwkq/u/+il9D4o2ruwMEMC1ZwPN3/w/u+QCw4o78wm24BOwU
KyA6H4H1r9BoUZ1To1zXxwvuI+sxggSLMIIEhwIBATCB8jCB3TELMAkGA1UEBhMCVVMxFzAVBgNV
BAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYD
VQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNTEe
MBwGA1UECxMVUGVyc29uYSBOb3QgVmFsaWRhdGVkMTcwNQYDVQQDEy5WZXJpU2lnbiBDbGFzcyAx
IEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQSAtIEcyAhAz/cMOZGnmbEe+tte1G9KwMAkGBSsOAwIa
BQCgggJtMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEwMDYyNDA4
MjIzN1owIwYJKoZIhvcNAQkEMRYEFM/PP9ikmNHoSjkQbUUK+Lhiv30DMIIBAwYJKwYBBAGCNxAE
MYH1MIHyMIHdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsT
FlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov
L3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTA1MR4wHAYDVQQLExVQZXJzb25hIE5vdCBWYWxpZGF0
ZWQxNzA1BgNVBAMTLlZlcmlTaWduIENsYXNzIDEgSW5kaXZpZHVhbCBTdWJzY3JpYmVyIENBIC0g
RzICEDP9ww5kaeZsR76217Ub0rAwggEFBgsqhkiG9w0BCRACCzGB9aCB8jCB3TELMAkGA1UEBhMC
VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3Jw
YSAoYykwNTEeMBwGA1UECxMVUGVyc29uYSBOb3QgVmFsaWRhdGVkMTcwNQYDVQQDEy5WZXJpU2ln
biBDbGFzcyAxIEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQSAtIEcyAhAz/cMOZGnmbEe+tte1G9Kw
MA0GCSqGSIb3DQEBAQUABIIBAH2eMMio2HZ7eLqIf6J0r3grjjiWfA+RzXCAb7/4kZIlIqly6JEk
5bM63SYZ9XEHP/3EOnAWS84PZ6tIyS55DH8rENS5Yb46qYIIfbdBTE6aNiwlgiEXWv+p8QkH0G4c
hbb4kNwX6BbeQFgd69qZT2BFXmK0Kcksb8478yOz9hJcDVMPuINDmkhQkz8HExehOtZvHVF2jO5g
xWLlwrbru2d013RIgSINUZ438G6/BbEBU3gTHr7fNviVtJCMn4YxN8+vibEntTFwk/7mmTeMIgih
5QHij+Jca6o3nY7+hHjlVoJg1ID0PTuvxOtNukGjxL8u2zYISCeb4M21/9gwD5gAAAAAAAA=

--Apple-Mail-34-560330543--

From angelo.castellani@gmail.com  Thu Jun 24 01:46:48 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id AA1183A6979 for <core@core3.amsl.com>; Thu, 24 Jun 2010 01:46:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.193
X-Spam-Level: 
X-Spam-Status: No, score=0.193 tagged_above=-999 required=5 tests=[AWL=-0.244,  BAYES_40=-0.185, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id o+ll0gP0UNQ1 for <core@core3.amsl.com>; Thu, 24 Jun 2010 01:46:45 -0700 (PDT)
Received: from mail-fx0-f44.google.com (mail-fx0-f44.google.com [209.85.161.44]) by core3.amsl.com (Postfix) with ESMTP id A9B9B3A6864 for <core@ietf.org>; Thu, 24 Jun 2010 01:46:42 -0700 (PDT)
Received: by fxm20 with SMTP id 20so1011280fxm.31 for <core@ietf.org>; Thu, 24 Jun 2010 01:46:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:sender:received :in-reply-to:references:from:date:x-google-sender-auth:message-id :subject:to:cc:content-type:content-transfer-encoding; bh=hvWLQ+izGjb5k2oISBh78tSgH5qwy88436uNjcD7H2w=; b=LMs4tEwZG3jwBEmfZLx2d1xKImYMcJhJZUv6s5L/V8TcxAdyHOVIjlPtliqghC3wT/ waNCl1mQT42vN2ouSts9MWG+GiJmJSE2VG0Gka9v3ervoQSivuvSFKNY3f1iFWEZm1sN lA3FOxGq5Kckg3aKHJkY2aYeLXrvf+hAf7u7c=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:from:date :x-google-sender-auth:message-id:subject:to:cc:content-type :content-transfer-encoding; b=djMhanhcPXwBhAYqvNU7RZLXaS7B1K0N2zJRzzwZx70uKLhXHv47viBDu0pWVGkBJE /uMxtg+ZatJ8EfTXe6oQQ2pEGuiJ54ZHERJ1zDRjKWpD/FGb98FxQDj9jEWnAJ0ns0j5 Gnw0AJ28UTGzm82hf6Y854AlVkLg9kLjgE9wc=
Received: by 10.204.47.17 with SMTP id l17mr6369710bkf.82.1277369204819; Thu,  24 Jun 2010 01:46:44 -0700 (PDT)
MIME-Version: 1.0
Sender: angelo.castellani@gmail.com
Received: by 10.204.71.4 with HTTP; Thu, 24 Jun 2010 01:46:24 -0700 (PDT)
In-Reply-To: <08C9302C-72D4-496B-A7B3-3F37DD1CA759@tzi.org>
References: <20100622203528.0519A28C0D0@core3.amsl.com> <A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org>  <3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com> <08C9302C-72D4-496B-A7B3-3F37DD1CA759@tzi.org>
From: "Angelo P. Castellani" <angelo@castellani.net>
Date: Thu, 24 Jun 2010 10:46:24 +0200
X-Google-Sender-Auth: I8osleBV066slZtN2g_v0RszCHI
Message-ID: <AANLkTik2CmPfdiTcfh2ulbd5LIzrcnj-T3GoRZQeUqyq@mail.gmail.com>
To: Carsten Bormann <cabo@tzi.org>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Cc: core <core@ietf.org>
Subject: Re: [core] Can all responses be instant? (Re: Fwd: New Version Notification for draft-hartke-coap-observe-00)
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 24 Jun 2010 08:46:48 -0000

Possible solution: CoAP server, if the final response will be
available after RESPONSE_TIMEOUT, must send a response with code 100
Continue (HTTP).

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.1.1

However in this discussion application level and transport level
issues are handled at the same time... Is it convenient?

Angelo

On Wed, Jun 23, 2010 at 18:55, Carsten Bormann <cabo@tzi.org> wrote:
> Zach,
>
> that are a number of very good questions.
>
> Let's start discussing this one:
>
>> - I am not sure about the implications of allowing a delayed GET and PUT=
 response on implementations. Currently in coap-00 if an end-point doesn't =
make use of subscribe/notify it doesn't have to implement code to wait for =
asynchronous notifications. For example it might simply make a request, ope=
n a temporary UDP socket waiting for the response, and then close that and =
go to sleep. Well, I guess if it gets an intermediate response code it woul=
d know to stay awake waiting for the response. Is this an efficient way of =
using energy in a constrained network though? What if a client doesn't want=
 a delayed response?
>
> Right now, CoAP is silent on how much time a server has to answer a reque=
st.
>
> Certainly, that time will never be zero.
>
> Can we live with limiting this time to < RESPONSE_TIMEOUT hard?
>
> If yes, everything gets simpler.
> If not, there is always the alternative not to do an inversion of control=
; in that case, the server would reply with a "please wait and try again", =
maybe including a duration that gives the estimated time until an answer, a=
nd the client would simply repeat asking at its convenience.
> (Of course, the server could simply remain silent, prompting retransmissi=
ons, but this means that we limit the time to RESPONSE_TIMEOUT * MAX_RETRAN=
SMIT, assuming no errors, and we increase the likelihood of a transfer fail=
ing just because of lost packets.)
>
> On the other hand, if we do have a "notify" style packet, there is very l=
ittle stopping us from implementing an "I'll give it to you later" reply (t=
he "ACK" packet in Figure 1 of coap-observe). =A0A client that doesn't want=
 to wait can simply treat that as a failure.
>
> As usual, we should probably err on the side of simplicity, but only afte=
r having discussed whether we are hitting Einstein's "but no simpler".
>
> Gruesse, Carsten
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>

From angelo.castellani@gmail.com  Thu Jun 24 03:00:25 2010
Return-Path: <angelo.castellani@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 6428C3A680F for <core@core3.amsl.com>; Thu, 24 Jun 2010 03:00:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.987
X-Spam-Level: 
X-Spam-Status: No, score=-0.987 tagged_above=-999 required=5 tests=[AWL=0.990,  BAYES_00=-2.599, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IHGl5LQ-rN5Y for <core@core3.amsl.com>; Thu, 24 Jun 2010 03:00:24 -0700 (PDT)
Received: from mail-fx0-f44.google.com (mail-fx0-f44.google.com [209.85.161.44]) by core3.amsl.com (Postfix) with ESMTP id 4EC813A67A4 for <core@ietf.org>; Thu, 24 Jun 2010 03:00:24 -0700 (PDT)
Received: by fxm20 with SMTP id 20so1077719fxm.31 for <core@ietf.org>; Thu, 24 Jun 2010 03:00:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:sender:received :in-reply-to:references:from:date:x-google-sender-auth:message-id :subject:to:cc:content-type; bh=SpyripuUJF7NANT1XGbyR3hxaEg4MCEpI6JwrbFNU30=; b=EJkInH0/SW//tusHgrVrIlini2PbiBMAy15yKKHpQdJ7yLiXZUUHACoz/Yglq9WJQ+ tEWuucHeZrmPzF2nh8nMc6ytjBoFEJupRmAjAQ05BOuJqTEGnc9bRmy+vXTs8Ejrx9qj OrEc3rq6vvPrKaxr8kTQ9YDiIW4vBPM6clglg=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:from:date :x-google-sender-auth:message-id:subject:to:cc:content-type; b=skF2aoNnZ/jpftpdqTHsiDd4pENSA61YuPvUPEEdkC/npqSBa/6lVJbZaUC8y9T4Vj 01URepWfLxjG0PH2O3X3y9jAy+jXtPyDHOITMR9eu4j3oTdY9pqoGVVdD1OTNme/Xaw/ rRHNXQOwoXCShputHhyLfenWMyjB7ugukGXFo=
Received: by 10.204.136.87 with SMTP id q23mr6385412bkt.161.1277373629222;  Thu, 24 Jun 2010 03:00:29 -0700 (PDT)
MIME-Version: 1.0
Sender: angelo.castellani@gmail.com
Received: by 10.204.71.4 with HTTP; Thu, 24 Jun 2010 03:00:09 -0700 (PDT)
In-Reply-To: <19A357D2-48CA-44A3-8112-9C6263E7E123@nokia.com>
References: <19A357D2-48CA-44A3-8112-9C6263E7E123@nokia.com>
From: "Angelo P. Castellani" <angelo@castellani.net>
Date: Thu, 24 Jun 2010 12:00:09 +0200
X-Google-Sender-Auth: 1NMlpKznN8Vu7amwtPB-peqobzs
Message-ID: <AANLkTikKbcw47AFXqYjhCLD4qGAaPq47LqNnk3Ei7XCn@mail.gmail.com>
To: Lars Eggert <lars.eggert@nokia.com>
Content-Type: text/plain; charset=ISO-8859-1
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: I-D Action:draft-eggert-core-congestion-control-00.txt
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 24 Jun 2010 10:00:25 -0000

I like a lot your contribution on congestion control (totally missing).

Transmission credits and RTT estimation are two important improvements
to CoAP in my opinion...

Just a note, you define in your document that there is an aggregate
limit on the outstanding number of transactions that a node can
produce.. I was wondering if this congestion control technique is
leaving two problems open:

a) A CoAP server provides 1/many "popular" resources. Many clients may
send concurrent requests to the server, and the server concurrent
responses.

The responses should be concurring to the "tx credit"? (in my opinion yes)

The server cannot directly know whether the sent response has been
received, how can responses partecipate to the Reno-like AIMD scheme
depicted in the document? (in my opinion a response can be considered
to be "correctly received" if the server doesn't receive in the
subsequent time window of X seconds a retransmission of the served
request)

b) "big-I" Internet <-> Constrained nodes island intercommunication is
*probably* a congestion bottleneck that is harder to handle. Is this
scheme sufficient to handle congestion on a highly congested path that
may be formed by very constrained relays?

I suspect that handling these problems may lead to very specific
discussion on transport that is probably out-of-scope in this WG.

Regards,
Angelo

On Thu, Jun 24, 2010 at 10:22, Lars Eggert <lars.eggert@nokia.com> wrote:
> FYI. I'd be interested in discussing the ideas in this draft with the WG.
>
>> A New Internet-Draft is available from the on-line Internet-Drafts directories.
>>
>> Title : Congestion Control for the Constrained Application Protocol (CoAP)
>> Author(s) : L. Eggert
>> Filename : draft-eggert-core-congestion-control-00.txt
>> Pages : 9
>> Date : 2010-06-23
>>
>> The Constrained Application Protocol (CoAP) is a simple, low-
>> overhead, UDP-based protocol for use with resource-constrained IP
>> networks and nodes. CoAP defines a simple technique to individually
>> retransmit lost messages, but has no other congestion control
>> mechanisms. This document motivates the need for additional
>> congestion control mechanisms, and defines some simple strawman
>> proposals. The goal is to encourage experimentation with these and
>> other proposals, in order to determine which mechanisms are feasible
>> to implement on resource-constrained nodes and are effective real
>> deployments.
>>
>> A URL for this Internet-Draft is:
>> http://www.ietf.org/internet-drafts/draft-eggert-core-congestion-control-00.txt
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>
>

From cabo@tzi.org  Thu Jun 24 03:39:07 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id CA2F83A690F for <core@core3.amsl.com>; Thu, 24 Jun 2010 03:39:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.09
X-Spam-Level: 
X-Spam-Status: No, score=-4.09 tagged_above=-999 required=5 tests=[AWL=-0.441,  BAYES_50=0.001, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id R6VQkA0DsxWx for <core@core3.amsl.com>; Thu, 24 Jun 2010 03:39:06 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id C60193A697A for <core@ietf.org>; Thu, 24 Jun 2010 03:39:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5OAcx2f021657; Thu, 24 Jun 2010 12:38:59 +0200 (CEST)
Received: from [10.0.1.2] (reingewinn.informatik.uni-bremen.de [134.102.218.123]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 2D1C5BCA9;  Thu, 24 Jun 2010 12:38:59 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <19A357D2-48CA-44A3-8112-9C6263E7E123@nokia.com>
Date: Thu, 24 Jun 2010 12:38:58 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <C9F1B122-3524-4191-8914-CE70F87B4051@tzi.org>
References: <19A357D2-48CA-44A3-8112-9C6263E7E123@nokia.com>
To: Lars Eggert <lars.eggert@nokia.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: I-D Action:draft-eggert-core-congestion-control-00.txt
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 24 Jun 2010 10:39:07 -0000

On Jun 24, 2010, at 10:22, Lars Eggert wrote:

> =
http://www.ietf.org/internet-drafts/draft-eggert-core-congestion-control-0=
0.txt=20

Hi Lars,

this is very useful early input (and might help us prevent late =
surprises at the IESG stage).  Thanks!

One thing we need to be vary careful about is the burden we place on =
implementers/implementations.
After all, these are constrained nodes, and both code and table (data) =
sizes are constrained.

What could happen is that we mandate something wonderful that then =
nobody implements.

Keeping RTT information about other nodes creates a table that other =
protocols such as ND or RPL take great pains to avoid.
There should always be a mode of operation (not necessarily optimal) =
that avoids creating tables such as this.
More power [sic!] to nodes that can implement them, they will have =
better performance.

I do like the credit proposal.
If we could phrase this in a way that helps a very constrained node to =
keep tabs on its battery usage as well, this might be a winner.

Most importantly though, we need a lot of time to answer these questions =
well (there is a reason transport development takes time).
If we can find minimal requirements that can be put into the document =
and leave open the way to plug in better algorithms, we can have =
fruitful evolution.

With some danger of creating a controversial strawman for this: We could =
say "at a minimum use a fixed initial RTO of 3 s and exponential backoff =
and don't run more than a couple parallel requests, or keep RTT and =
credit information and do something better".

Gruesse, Carsten


From lars.eggert@nokia.com  Thu Jun 24 03:49:55 2010
Return-Path: <lars.eggert@nokia.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 796163A685A for <core@core3.amsl.com>; Thu, 24 Jun 2010 03:49:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.436
X-Spam-Level: 
X-Spam-Status: No, score=-5.436 tagged_above=-999 required=5 tests=[AWL=-0.696, BAYES_20=-0.74, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FDIx662Ft8Gb for <core@core3.amsl.com>; Thu, 24 Jun 2010 03:49:54 -0700 (PDT)
Received: from mgw-mx09.nokia.com (smtp.nokia.com [192.100.105.134]) by core3.amsl.com (Postfix) with ESMTP id 6F1383A681B for <core@ietf.org>; Thu, 24 Jun 2010 03:49:54 -0700 (PDT)
Received: from vaebh106.NOE.Nokia.com (vaebh106.europe.nokia.com [10.160.244.32]) by mgw-mx09.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o5OAmurA025684; Thu, 24 Jun 2010 05:50:00 -0500
Received: from esebh102.NOE.Nokia.com ([172.21.138.183]) by vaebh106.NOE.Nokia.com with Microsoft SMTPSVC(6.0.3790.4675);  Thu, 24 Jun 2010 13:49:53 +0300
Received: from mgw-sa01.ext.nokia.com ([147.243.1.47]) by esebh102.NOE.Nokia.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Thu, 24 Jun 2010 13:49:53 +0300
Received: from mail.fit.nokia.com (esdhcp030222.research.nokia.com [172.21.30.222]) by mgw-sa01.ext.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id o5OAnrMW026939 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 24 Jun 2010 13:49:53 +0300
X-Virus-Status: Clean
X-Virus-Scanned: clamav-milter 0.96.1 at fit.nokia.com
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: multipart/signed; boundary=Apple-Mail-40-569157740; protocol="application/pkcs7-signature"; micalg=sha1
From: Lars Eggert <lars.eggert@nokia.com>
In-Reply-To: <C9F1B122-3524-4191-8914-CE70F87B4051@tzi.org>
Date: Thu, 24 Jun 2010 13:49:44 +0300
Message-Id: <4FBDAD7F-9373-43A8-9BF0-7D77D4BCE0B7@nokia.com>
References: <19A357D2-48CA-44A3-8112-9C6263E7E123@nokia.com> <C9F1B122-3524-4191-8914-CE70F87B4051@tzi.org>
To: Carsten Bormann <cabo@tzi.org>
X-Mailer: Apple Mail (2.1081)
X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.5 (mail.fit.nokia.com); Thu, 24 Jun 2010 13:49:45 +0300 (EEST)
X-OriginalArrivalTime: 24 Jun 2010 10:49:53.0668 (UTC) FILETIME=[FA580C40:01CB138A]
X-Nokia-AV: Clean
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: I-D Action:draft-eggert-core-congestion-control-00.txt
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 24 Jun 2010 10:49:55 -0000

--Apple-Mail-40-569157740
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi,

On 2010-6-24, at 13:38, Carsten Bormann wrote:
> One thing we need to be vary careful about is the burden we place on =
implementers/implementations.
> After all, these are constrained nodes, and both code and table (data) =
sizes are constrained.
>=20
> What could happen is that we mandate something wonderful that then =
nobody implements.

fully understood. Implementation feasibility is definitely something =
that we need to learn about, based on experimenting with these and other =
techniques.

> Keeping RTT information about other nodes creates a table that other =
protocols such as ND or RPL take great pains to avoid.
> There should always be a mode of operation (not necessarily optimal) =
that avoids creating tables such as this.
> More power [sic!] to nodes that can implement them, they will have =
better performance.

Also agreed. I believe in the end, we'll have a toolbox of techniques, =
from coarse but simple (for very constrained devices) to techniques that =
are a bit more complex.

> I do like the credit proposal.
> If we could phrase this in a way that helps a very constrained node to =
keep tabs on its battery usage as well, this might be a winner.
>=20
> Most importantly though, we need a lot of time to answer these =
questions well (there is a reason transport development takes time).
> If we can find minimal requirements that can be put into the document =
and leave open the way to plug in better algorithms, we can have =
fruitful evolution.

Agreed. I earlier commented to Zach (off list) that the base protocol =
specification can move forward without needing to wait for the =
development of these congestion control techniques. We may at this time =
simply want to include a pointer to the document as an attention grabber =
so that implementors know that some additional functions may come down =
the pipe in the future.

> With some danger of creating a controversial strawman for this: We =
could say "at a minimum use a fixed initial RTO of 3 s and exponential =
backoff and don't run more than a couple parallel requests, or keep RTT =
and credit information and do something better".

Sounds much what I had in mind.

Oh, and we do need to actually experiment with these techniques :-)

Lars



--Apple-Mail-40-569157740
Content-Disposition: attachment;
	filename=smime.p7s
Content-Type: application/pkcs7-signature;
	name=smime.p7s
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIKHjCCBMww
ggQ1oAMCAQICEByunWua9OYvIoqj2nRhbB4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA1MTAyODAwMDAwMFoXDTE1MTAyNzIzNTk1OVow
gd0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp
Z24gVHJ1c3QgTmV0d29yazE7MDkGA1UECxMyVGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnZl
cmlzaWduLmNvbS9ycGEgKGMpMDUxHjAcBgNVBAsTFVBlcnNvbmEgTm90IFZhbGlkYXRlZDE3MDUG
A1UEAxMuVmVyaVNpZ24gQ2xhc3MgMSBJbmRpdmlkdWFsIFN1YnNjcmliZXIgQ0EgLSBHMjCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMnfrOfq+PgDFMQAktXBfjbCPO98chXLwKuMPRyV
zm8eECw/AO2XJua2x+atQx0/pIdHR0w+VPhs+Mf8sZ69MHC8l7EDBeqV8a1AxUR6SwWi8mD81zpl
Yu//EHuiVrvFTnAt1qIfPO2wQuhejVchrKaZ2RHp0hoHwHRHQgv8xTTq/ea6JNEdCBU3otdzzwFB
L2OyOj++pRpu9MlKWz2VphW7NQIZ+dTvvI8OcXZZu0u2Ptb8Whb01g6J8kn+bAztFenZiHWcec5g
J925rXXOL3OVekA6hXVJsLjfaLyrzROChRFQo+A8C67AClPN1zBvhTJGG+RJEMJs4q8fef/btLUC
AwEAAaOCAYQwggGAMBIGA1UdEwEB/wQIMAYBAf8CAQAwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcX
ATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMAsGA1UdDwQEAwIB
BjARBglghkgBhvhCAQEEBAMCAQYwLgYDVR0RBCcwJaQjMCExHzAdBgNVBAMTFlByaXZhdGVMYWJl
bDMtMjA0OC0xNTUwHQYDVR0OBBYEFBF9Xhl9PATfamzWoooaPzHYO5RSMDEGA1UdHwQqMCgwJqAk
oCKGIGh0dHA6Ly9jcmwudmVyaXNpZ24uY29tL3BjYTEuY3JsMIGBBgNVHSMEejB4oWOkYTBfMQsw
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDEgUHVi
bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHmCEQDNun9W8N/kvFT+IqyzcqpVMA0G
CSqGSIb3DQEBBQUAA4GBALEv2ZbhkqLugWDlyCog++FnLNYAmFOjAhvpkEv4GESfD0b3+qD+0x0Y
o9K/HOzWGZ9KTUP4yru+E4BJBd0hczNXwkJavvoAk7LmBDGRTl088HMFN2Prv4NZmP1m3umGMpqS
KTw6rlTaphJRsY/IytNHeObbpR6HBuPRFMDCIfa6MIIFSjCCBDKgAwIBAgIQM/3DDmRp5mxHvrbX
tRvSsDANBgkqhkiG9w0BAQUFADCB3TELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJ
bmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1
c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNTEeMBwGA1UECxMVUGVyc29u
YSBOb3QgVmFsaWRhdGVkMTcwNQYDVQQDEy5WZXJpU2lnbiBDbGFzcyAxIEluZGl2aWR1YWwgU3Vi
c2NyaWJlciBDQSAtIEcyMB4XDTA5MTAxNDAwMDAwMFoXDTEwMTAxNDIzNTk1OVowggETMRcwFQYD
VQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazFGMEQG
A1UECxM9d3d3LnZlcmlzaWduLmNvbS9yZXBvc2l0b3J5L1JQQSBJbmNvcnAuIGJ5IFJlZi4sTElB
Qi5MVEQoYyk5ODEeMBwGA1UECxMVUGVyc29uYSBOb3QgVmFsaWRhdGVkMTMwMQYDVQQLEypEaWdp
dGFsIElEIENsYXNzIDEgLSBOZXRzY2FwZSBGdWxsIFNlcnZpY2UxFDASBgNVBAMUC0xhcnMgRWdn
ZXJ0MSQwIgYJKoZIhvcNAQkBFhVsYXJzLmVnZ2VydEBub2tpYS5jb20wggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCrTp9sa04QO3gKan1sQGFAZ91BKjFdECaw29ZXHYOZSFW7JC/oyuAO
x7pucJp9qDLYlv60I8zLJ1eocDn3bsjBWwAS65GGVT9NLiblzCd5DeWTkn9UD7OMvLL+Z1Z17sE0
jlmluQSCLjv0P7d6ZCpwVD2hWvuZu37fIQresIEYQLbZHXogwoCMhqwo8k8/WuwDbNcB9RiLq3JW
FRjZILMmf5qFdExz1AZyG3OdFXe1F0vcxfHhbrGU5cVklV9XI3TfxVZciFNqnTuWsaHFxU0ZrwI0
njVtpLko1TW1vC5qS2ZIpWq7iDkIke+XL4IYTHlOdH7sM502qEE8JqadXjuTAgMBAAGjgcwwgckw
CQYDVR0TBAIwADBEBgNVHSAEPTA7MDkGC2CGSAGG+EUBBxcBMCowKAYIKwYBBQUHAgEWHGh0dHBz
Oi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwCwYDVR0PBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwME
BggrBgEFBQcDAjBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vSW5kQzFEaWdpdGFsSUQtY3JsLnZl
cmlzaWduLmNvbS9JbmRDMURpZ2l0YWxJRC5jcmwwDQYJKoZIhvcNAQEFBQADggEBAJraU8e1Ss8a
Uj33lweT8ibOcmNLTNn2pnSi7p5BwNCFtrLNp9AdhcGYJfEQMOlanxc7dpQ7OWUbpub4jAYKyP47
hPQayKMJ73KcKmiN4Czj9g/uCTRwW3kiyhTo22Yl2MWGTM7WI39xTEQo4DOGs9EK6Ldb9zZU4oRl
ZbaD1G/Lo33LYmuI8MfCLzTBtmT5MybyEnK17457+8bMLXoSFJfFGk5LPCn38SWdiAG/YH2A4had
3wvpd9Mpx38fxw/RZqlifRSTT8zlOwkq/u/+il9D4o2ruwMEMC1ZwPN3/w/u+QCw4o78wm24BOwU
KyA6H4H1r9BoUZ1To1zXxwvuI+sxggSLMIIEhwIBATCB8jCB3TELMAkGA1UEBhMCVVMxFzAVBgNV
BAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYD
VQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykwNTEe
MBwGA1UECxMVUGVyc29uYSBOb3QgVmFsaWRhdGVkMTcwNQYDVQQDEy5WZXJpU2lnbiBDbGFzcyAx
IEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQSAtIEcyAhAz/cMOZGnmbEe+tte1G9KwMAkGBSsOAwIa
BQCgggJtMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEwMDYyNDEw
NDk0NVowIwYJKoZIhvcNAQkEMRYEFG/Z61mhPaTTcuLLlesUElklwdHMMIIBAwYJKwYBBAGCNxAE
MYH1MIHyMIHdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsT
FlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov
L3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTA1MR4wHAYDVQQLExVQZXJzb25hIE5vdCBWYWxpZGF0
ZWQxNzA1BgNVBAMTLlZlcmlTaWduIENsYXNzIDEgSW5kaXZpZHVhbCBTdWJzY3JpYmVyIENBIC0g
RzICEDP9ww5kaeZsR76217Ub0rAwggEFBgsqhkiG9w0BCRACCzGB9aCB8jCB3TELMAkGA1UEBhMC
VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3Jw
YSAoYykwNTEeMBwGA1UECxMVUGVyc29uYSBOb3QgVmFsaWRhdGVkMTcwNQYDVQQDEy5WZXJpU2ln
biBDbGFzcyAxIEluZGl2aWR1YWwgU3Vic2NyaWJlciBDQSAtIEcyAhAz/cMOZGnmbEe+tte1G9Kw
MA0GCSqGSIb3DQEBAQUABIIBAGHzajS3mpZ7+318Hoe86GTOM4pHzm/cvrn7OwnCsLTwVyw41Xel
mIWJHElRlMIMB2h/wRgQ2ZaxO/FGcEk/hbGSf6KbTcqAcTtqCma5kMwg567Se3bES4wdGXxbOp23
/AgEr3LvohrkmcdFdFBqwXizedKVxUMyrVa+HumDBUgXtJj07qgrxmVCY6/2GfyEiq48c5y+sEDv
pdg0nEL/60Hjfsjgih2CgF3Xvz1ZWz5sGha0jKhaMau6FIAQaks4+HXIBk4a3mJ2Nsq4LkFRKiCU
A4WHm0Iv5qHfUPSpwilNlJwjFePfNxWA7cME2tbWmSZEeqV6+ZJr733XWiD4/0MAAAAAAAA=

--Apple-Mail-40-569157740--

From klaus.hartke@googlemail.com  Thu Jun 24 10:52:55 2010
Return-Path: <klaus.hartke@googlemail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id CB1113A682E for <core@core3.amsl.com>; Thu, 24 Jun 2010 10:52:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.223
X-Spam-Level: *
X-Spam-Status: No, score=1.223 tagged_above=-999 required=5 tests=[BAYES_50=0.001, FM_FORGED_GMAIL=0.622, J_CHICKENPOX_55=0.6]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uQLT1Ec5pR0F for <core@core3.amsl.com>; Thu, 24 Jun 2010 10:52:54 -0700 (PDT)
Received: from mail-bw0-f44.google.com (mail-bw0-f44.google.com [209.85.214.44]) by core3.amsl.com (Postfix) with ESMTP id 1B1CB3A68DB for <core@ietf.org>; Thu, 24 Jun 2010 10:52:53 -0700 (PDT)
Received: by bwz12 with SMTP id 12so345535bwz.31 for <core@ietf.org>; Thu, 24 Jun 2010 10:52:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=Rvw63XDkNA0h9+FRGsEM9E+BE+9TI4kDIHn2YZQBQHI=; b=JCJuauoRC/wC3bmUMR9BqvaC7vxmQsjlMKItyhWbg8k8T5tfWk3eKsYLRoHUoNP+r7 9RYwSDuxYnU79F7D5y3ys22zq635ulpNJN5wcCNfgtF5lxeuPFL2obX1ZLHXJTe03Nfr B1bPuR2jO22Nwrm6RMwXXBHRm4/vIFsp7AtGc=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=Bd2ZDEykMkywhDVi4ze4UxAoFpHPlE7BB8ZZTEqFpOIV1OXuIOG+6fcth3TYE6PXLI dOuKPmImuMITT8X6dL5sMzMC2EDeWePwaEFYCNUy4nvqshiEdBB9ogZ4fmavzIvn2SH9 jUD91GysAwobCHJsgEaK5hFQV0QUC5J3g68fM=
MIME-Version: 1.0
Received: by 10.204.163.142 with SMTP id a14mr6686774bky.4.1277401976769; Thu,  24 Jun 2010 10:52:56 -0700 (PDT)
Received: by 10.204.65.84 with HTTP; Thu, 24 Jun 2010 10:52:56 -0700 (PDT)
In-Reply-To: <3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com>
References: <20100622203528.0519A28C0D0@core3.amsl.com> <A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org> <3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com>
Date: Thu, 24 Jun 2010 19:52:56 +0200
Message-ID: <AANLkTimLt_VK2dAEbvbqq3x0yjEZEofZF-ekNV5UkdPY@mail.gmail.com>
From: Klaus Hartke <klaus.hartke@googlemail.com>
To: core <core@ietf.org>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Subject: Re: [core] Fwd: New Version Notification for draft-hartke-coap-observe-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 24 Jun 2010 17:52:55 -0000

On 23 June 2010 17:24, Zach Shelby <zach@sensinode.com> wrote:
> - The requirements are good, however we should not require an end-point t=
o support observation for its resources. It is up to the server if a resour=
ces is "observable" or not, and thus very simple end-points may leave that =
feature out to minimize code size.

Of course. If SUBSCRIBE has no meaning for a resource, it's not
required to offer that method ("405 Method Not Allowed"). If you
restrict a server to have no resources that allow SUBSCRIBE, such code
minimization is possible.

> - Are we sure we need all the requirements here, or are some nice-to-have=
?

I believe that all requirements are needed to implement the
architecture. Whether all elements of the architecture are needed,
should be discussed.

> For example: "A subscribing client must be able to influence the represen=
tation format in which the server supplies the resource state" I would hope=
 this doesn't end up resulting in a bunch of Accept: style headers? Couldn'=
t that be left to the application to offer URLs with different representati=
on formats? I am not convinced this should be a transfer protocol requireme=
nt for CoAP.

I think both options (/sensors/temperature.xml or Accept:
application/xml) are valid ways to satisfy this requirement. If we go
with the Accept header, we need to add a new option to CoAP. I'm in
favour of .xml in the URL.

There is another requirement related to the representation format,
which is probably more important: "The representation format used
during the lifetime of a subscription must not change." I think this
is a requirement that should be stated somewhere.

> - At first glance this looks overly complicated, but I think it is becaus=
e you are modeling this as a format design pattern and are exploring this i=
s detail. I am hoping that realizing this would be a whole lot simpler?

The list of requirements aims to be exhaustive, but many requirements
can be satisfied by introducing very simple protocol elements (such as
confirmable requests). I think the message exchanges in
coap-observe-00 (section 4) are already quite pleasing to the eye.

> - SUBSCRIBE, UNSUBSCRIBE, YIELD, BREAK, THROW are abstract concepts at th=
is point, I would think these could be combined quite a bit in realization?=
 What kind of realization do you guys have in mind (just for a sneak previe=
w to see if this is nuts or not).

Carsten and I are working on concrete message types. The result will
probably not be that different from what we have in coap-00 currently.

> - The notification messages seem to be sometimes representations and some=
times error codes. Is this suggesting that an (abstract) notification messa=
ge would need to carry both a representation and a CoAP code. BREAK and THR=
OW are also shows as being piggybacked on replies, so they basically are Co=
AP codes. So YEILD =3D representation, and BREAK+THROW =3D CoAP codes?

Yes. YIELD mainly carries a representation, but it may also just
indicate that the resource changed to one of the states cached by the
client ("304 Not Modified"). THROW mainly carries an error code (e.g.,
404, 401 or 500), but I think it might also be useful to be able to
include diagnostic information in the payload for debugging purposes.

> - Regarding Section 6, I prefer "way 1", seems much cleaner to me, has le=
ss state and is useful in a proxy.

I'm currently experimenting with an implementation that does way 2.
The implementation so far is very elegant and clean, requires less
state, and uses smaller messages. But I haven't made up my mind yet.

Klaus

From fluffy@cisco.com  Thu Jun 24 21:46:38 2010
Return-Path: <fluffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9F0F43A691E for <core@core3.amsl.com>; Thu, 24 Jun 2010 21:46:38 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -110.098
X-Spam-Level: 
X-Spam-Status: No, score=-110.098 tagged_above=-999 required=5 tests=[AWL=0.501, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cKztz36T7j0r for <core@core3.amsl.com>; Thu, 24 Jun 2010 21:46:37 -0700 (PDT)
Received: from sj-iport-4.cisco.com (sj-iport-4.cisco.com [171.68.10.86]) by core3.amsl.com (Postfix) with ESMTP id 9C8F73A6923 for <core@ietf.org>; Thu, 24 Jun 2010 21:46:32 -0700 (PDT)
Authentication-Results: sj-iport-4.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAKLRI0yrR7H+/2dsb2JhbACfOXGnS5pNhSEEg14
X-IronPort-AV: E=Sophos;i="4.53,478,1272844800"; d="scan'208";a="149587929"
Received: from sj-core-2.cisco.com ([171.71.177.254]) by sj-iport-4.cisco.com with ESMTP; 25 Jun 2010 04:46:40 +0000
Received: from [192.168.4.177] (rcdn-fluffy-8711.cisco.com [10.99.9.18]) by sj-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o5P4ke5m000536 for <core@ietf.org>; Fri, 25 Jun 2010 04:46:40 GMT
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Apple Message framework v1078)
Impp: xmpp:cullenfluffyjennings@jabber.org
From: Cullen Jennings <fluffy@cisco.com>
Date: Thu, 24 Jun 2010 22:46:39 -0600
Content-Transfer-Encoding: 7bit
Message-Id: <71786315-FE63-45FA-8613-33710C887B98@cisco.com>
References: <20100624212608.45B9A3A69D0@core3.amsl.com>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1078)
Subject: [core] Tentative time for CORE  at IETF 78
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 25 Jun 2010 04:46:39 -0000

This might change  ....

Begin forwarded message:

> 
> CORE Session 1 (2 hours)
> Wednesday, Morning Session I 0900-1015



From cabo@tzi.org  Thu Jun 24 22:17:49 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C7C4D3A6834; Thu, 24 Jun 2010 22:17:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.952
X-Spam-Level: 
X-Spam-Status: No, score=-4.952 tagged_above=-999 required=5 tests=[AWL=-0.192, BAYES_05=-1.11, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3yVSF2BvS15o; Thu, 24 Jun 2010 22:17:33 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 530AF3A6804; Thu, 24 Jun 2010 22:17:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5P5HW9Y024859; Fri, 25 Jun 2010 07:17:32 +0200 (CEST)
Received: from [192.168.217.101] (p5489FFC7.dip.t-dialin.net [84.137.255.199]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 43039B486;  Fri, 25 Jun 2010 07:17:32 +0200 (CEST)
From: Carsten Bormann <cabo@tzi.org>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Date: Fri, 25 Jun 2010 07:17:31 +0200
To: 6lowpan 6lowpan <6lowpan@ietf.org>, core <core@ietf.org>, ROLL WG <roll@ietf.org>
Message-Id: <44FB23BF-538A-4E4F-BF0B-B5807F7C79DD@tzi.org>
Mime-Version: 1.0 (Apple Message framework v1081)
X-Mailer: Apple Mail (2.1081)
Subject: [core] IETF78: constrained node/network cluster
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 25 Jun 2010 05:17:50 -0000

The IETF *draft* agenda is out, and the constrained node/network agenda
excerpt is:


MONDAY, July 26, 2010
0900-1130 Morning Session I
London	INT	6lowpan	 IPv6 over Low power WPAN WG

WEDNESDAY, July 28, 2010
0900-1015 Morning Session I
Colorado	APP	core	 Constrained RESTful Environments WG

THURSDAY, July 29, 2010
1300-1500 Afternoon Session I
Auditorium 2	RTG	roll	 Routing Over Low power and Lossy networks WG


Those interested in new developments in security protocols might also
want to look at:

TUESDAY, July 27, 2010
0900-1130 Morning Session I
London	IRTF	hiprg	 Host Identity Protocol


All these dates/times are subject to change, of course:
Don't book non-refundable flights based on this early information.

Full Agenda:
https://datatracker.ietf.org/meeting/78/agenda.html

> The following groups are currently not showing on the agenda but are
> scheduled:
> pim - Tuesday 1710-1810
> 6man - Tuesday 1710-1810 and Wednesday 1030-1130
> iri - Wednesday 1300-1530
> hokey - Thursday 1510-1610

Gruesse, Carsten



From robby.simpson@ge.com  Fri Jun 25 07:22:56 2010
Return-Path: <robby.simpson@ge.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id D42853A69C0 for <core@core3.amsl.com>; Fri, 25 Jun 2010 07:22:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.999
X-Spam-Level: 
X-Spam-Status: No, score=-3.999 tagged_above=-999 required=5 tests=[BAYES_50=0.001, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id XNsa6WQMYOw5 for <core@core3.amsl.com>; Fri, 25 Jun 2010 07:22:55 -0700 (PDT)
Received: from exprod5og103.obsmtp.com (exprod5og103.obsmtp.com [64.18.0.145]) by core3.amsl.com (Postfix) with ESMTP id 05A3B3A69AC for <core@ietf.org>; Fri, 25 Jun 2010 07:22:54 -0700 (PDT)
Received: from source ([4.78.218.129]) (using TLSv1) by exprod5ob103.postini.com ([64.18.4.12]) with SMTP ID DSNKTCS7x6SbdmdNFVONnVRzbCPN/+f2Vspa@postini.com; Fri, 25 Jun 2010 07:23:04 PDT
Received: from unknown (HELO ALPMLEF02.e2k.ad.ge.com) ([3.159.18.11]) by Cinmlip08.e2k.ad.ge.com with ESMTP; 25 Jun 2010 10:23:02 -0400
Received: from ALPMLVEM04.e2k.ad.ge.com ([3.159.17.50]) by ALPMLEF02.e2k.ad.ge.com with Microsoft SMTPSVC(6.0.3790.4675);  Fri, 25 Jun 2010 10:23:01 -0400
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Fri, 25 Jun 2010 10:23:01 -0400
Message-ID: <A61BB3A241E6E64D86C58237F6DC1A1802F0D1AA@ALPMLVEM04.e2k.ad.ge.com>
In-Reply-To: <AANLkTimLt_VK2dAEbvbqq3x0yjEZEofZF-ekNV5UkdPY@mail.gmail.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] Fwd: New Version Notification fordraft-hartke-coap-observe-00
Thread-Index: AcsTxhrIYAIK7mRATpacMTryw4HQkAAqt5yg
References: <20100622203528.0519A28C0D0@core3.amsl.com><A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org><3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com> <AANLkTimLt_VK2dAEbvbqq3x0yjEZEofZF-ekNV5UkdPY@mail.gmail.com>
From: "Simpson, Robby (GE Energy Services)" <robby.simpson@ge.com>
To: "core" <core@ietf.org>
X-OriginalArrivalTime: 25 Jun 2010 14:23:01.0916 (UTC) FILETIME=[EB2595C0:01CB1471]
Subject: Re: [core] Fwd: New Version Notification fordraft-hartke-coap-observe-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 25 Jun 2010 14:22:57 -0000

>> For example: "A subscribing client must be able to influence the
representation format in which the server supplies the resource state" I
would hope this doesn't end up resulting in a bunch of Accept: style
headers? Couldn't that be left to the application to offer URLs with
different representation formats? I am not convinced this should be a
transfer protocol requirement for CoAP.
>=20
> I think both options (/sensors/temperature.xml or Accept:
> application/xml) are valid ways to satisfy this requirement. If we go
> with the Accept header, we need to add a new option to CoAP. I'm in
> favour of .xml in the URL.

Wouldn't relying on URI file extensions to determine format be more
complicated and potentially result in more transactions?

What I'm thinking here is that file extensions are not always as
standardized as one may hope and multiple extensions may exist for a
single format (HTML comes to mind, with .htm and .html).

Why the opposition 'Accept: style headers' (provided done in a compact
binary way)?

From cabo@tzi.org  Fri Jun 25 07:58:48 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A957E28C0F4 for <core@core3.amsl.com>; Fri, 25 Jun 2010 07:58:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.645
X-Spam-Level: 
X-Spam-Status: No, score=-5.645 tagged_above=-999 required=5 tests=[AWL=0.604,  BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Q5Eoqa8ZaVY0 for <core@core3.amsl.com>; Fri, 25 Jun 2010 07:58:47 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 4DA3228C0EA for <core@ietf.org>; Fri, 25 Jun 2010 07:58:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5PEwgnd028034; Fri, 25 Jun 2010 16:58:42 +0200 (CEST)
Received: from [192.168.217.101] (p5489F297.dip.t-dialin.net [84.137.242.151]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 4B64BB7EF;  Fri, 25 Jun 2010 16:58:42 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <A61BB3A241E6E64D86C58237F6DC1A1802F0D1AA@ALPMLVEM04.e2k.ad.ge.com>
Date: Fri, 25 Jun 2010 16:58:41 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <4AE99497-362C-4FB8-B866-5A44C762E184@tzi.org>
References: <20100622203528.0519A28C0D0@core3.amsl.com><A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org><3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com> <AANLkTimLt_VK2dAEbvbqq3x0yjEZEofZF-ekNV5UkdPY@mail.gmail.com> <A61BB3A241E6E64D86C58237F6DC1A1802F0D1AA@ALPMLVEM04.e2k.ad.ge.com>
To: "Simpson, Robby (GE Energy Services)" <robby.simpson@ge.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification fordraft-hartke-coap-observe-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 25 Jun 2010 14:58:48 -0000

On Jun 25, 2010, at 16:23, Simpson, Robby (GE Energy Services) wrote:

> Why the opposition 'Accept: style headers' (provided done in a compact
> binary way)?

Probably because they are ugly in the Web (too many choices for a =
typical UA) and we learned to hate them.

They needn't be ugly in the M2M Web.
And I'm also not a big fan of filetypes (even though they do have the =
advantage of bundling the representation request information in the URI, =
this is also a disadvantage).

I just added a proposed Accept option to my misc draft and uploaded the =
new version as draft-bormann-coap-misc-01, if you want to see one =
possible design.

Gruesse, Carsten


From kerlyn2001@gmail.com  Fri Jun 25 09:04:50 2010
Return-Path: <kerlyn2001@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 0C0E93A6825 for <core@core3.amsl.com>; Fri, 25 Jun 2010 09:04:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.464
X-Spam-Level: 
X-Spam-Status: No, score=-2.464 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, SARE_SUB_OBFU_OTHER=0.135]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id waeFCmg6NzZn for <core@core3.amsl.com>; Fri, 25 Jun 2010 09:04:49 -0700 (PDT)
Received: from mail-gy0-f172.google.com (mail-gy0-f172.google.com [209.85.160.172]) by core3.amsl.com (Postfix) with ESMTP id 1FA323A6802 for <core@ietf.org>; Fri, 25 Jun 2010 09:04:49 -0700 (PDT)
Received: by gyh4 with SMTP id 4so5431442gyh.31 for <core@ietf.org>; Fri, 25 Jun 2010 09:04:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=wysuY5gmP88jtbKbR8MfLNE5Td3q7vhCpNCO9gd6SWY=; b=Nw9r3wOEF+sEgxj95LjePF4D6Npa2TK2e67k6pKUjNdR7Tat+EIyzHz4C4KQU014Lm cW5EvXKPGn4WosU46eTYShseHJ09ZD3KRuh6RaClei4Q64AtBm20F7jIzIqZ/V36psgM If18fBNKj6Hj7lYCa7+R4XXhnxgdFsM4XhFTk=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=aWP5GWG43SLyoaE8NOC4oYdJyiNrNdZMZH22BM999/Az7kHyPKPhImAxyYpw/3etpr N+OVEAaLrpRrc2CA/M1Wyd6oWhjCGp832c23BHEDqh+ldXSusqyRjRVemBf3S8ndghRt 8Aho8ONYhXDPcaP9InA0IXmTC/O5ADSDOOT3A=
MIME-Version: 1.0
Received: by 10.100.25.39 with SMTP id 39mr1267983any.15.1277481894520; Fri,  25 Jun 2010 09:04:54 -0700 (PDT)
Received: by 10.100.3.12 with HTTP; Fri, 25 Jun 2010 09:04:53 -0700 (PDT)
Date: Fri, 25 Jun 2010 12:04:53 -0400
Message-ID: <AANLkTinP7u-BZGLePgntvhwK0aQcHAUZwIsPja8Ranzr@mail.gmail.com>
From: Kerry Lynn <kerlyn2001@gmail.com>
To: core@ietf.org
Content-Type: text/plain; charset=ISO-8859-1
Subject: [core] Is there a list of draft-XXX-6lowapp-YYY IDs somewhere?
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 25 Jun 2010 16:04:50 -0000

Some of them provided important context and it would be
a shame to lose that information.  Perhaps some of them
might be re-submitted by their authors, or we could add
an archive section to the current CoRE pages?

Thanks, -K-

From klaus.hartke@googlemail.com  Fri Jun 25 09:34:25 2010
Return-Path: <klaus.hartke@googlemail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 0EABF3A6962 for <core@core3.amsl.com>; Fri, 25 Jun 2010 09:34:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.367
X-Spam-Level: 
X-Spam-Status: No, score=0.367 tagged_above=-999 required=5 tests=[AWL=0.856,  BAYES_05=-1.11, FM_FORGED_GMAIL=0.622]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jgE7hmknHhWA for <core@core3.amsl.com>; Fri, 25 Jun 2010 09:34:23 -0700 (PDT)
Received: from mail-bw0-f44.google.com (mail-bw0-f44.google.com [209.85.214.44]) by core3.amsl.com (Postfix) with ESMTP id 0217A3A693F for <core@ietf.org>; Fri, 25 Jun 2010 09:34:21 -0700 (PDT)
Received: by bwz12 with SMTP id 12so885125bwz.31 for <core@ietf.org>; Fri, 25 Jun 2010 09:34:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type; bh=hQbIZLSOnNV2N5jfRSM+4N77mjILKJK+N4CF3lvg+s8=; b=ALeH2O7Gs1rcf3F3Ucw92hpDaqrhI2CADCw//Eqzctoyta35UjlZWolzoBgYV5bptL qz8ueyiTr2glSCH9xDjiMqqLb8jQ8hil3C+9m3sAdBIKrSF4X583tb1fUCJX2T6UNJhp wl1qi9HCnCCg5UQlgTabIdbp+qlp/1SYeZ8FQ=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=OPAVPCG4mJZ6UDYPR9prAU3q8D7HlKPOMr8ad7/XXoGJkxuN1TN4u80zZvw8fBxkr8 thUMFe/8h8rzvbRvs/FQvQVVwMYqoTyIawooCxyn75MaJpm7k+CfywxjLB/VtWLgSX8P 5gGQAJMuVQuKKB52HVBP7Abh0Mqw/VYN3n5JI=
MIME-Version: 1.0
Received: by 10.204.81.2 with SMTP id v2mr649910bkk.94.1277483665972; Fri, 25  Jun 2010 09:34:25 -0700 (PDT)
Received: by 10.204.65.84 with HTTP; Fri, 25 Jun 2010 09:34:25 -0700 (PDT)
In-Reply-To: <A61BB3A241E6E64D86C58237F6DC1A1802F0D1AA@ALPMLVEM04.e2k.ad.ge.com>
References: <20100622203528.0519A28C0D0@core3.amsl.com> <A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org> <3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com> <AANLkTimLt_VK2dAEbvbqq3x0yjEZEofZF-ekNV5UkdPY@mail.gmail.com> <A61BB3A241E6E64D86C58237F6DC1A1802F0D1AA@ALPMLVEM04.e2k.ad.ge.com>
Date: Fri, 25 Jun 2010 18:34:25 +0200
Message-ID: <AANLkTimB2COvpDVbVfnf-n8LRpCZrQhBaVLVWcn9rk9c@mail.gmail.com>
From: Klaus Hartke <klaus.hartke@googlemail.com>
To: core <core@ietf.org>
Content-Type: text/plain; charset=ISO-8859-1
Subject: Re: [core] Fwd: New Version Notification fordraft-hartke-coap-observe-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 25 Jun 2010 16:34:25 -0000

On 25 June 2010 16:23, Simpson, Robby (GE Energy Services)
<robby.simpson@ge.com> wrote:
> Wouldn't relying on URI file extensions to determine format be more
> complicated and potentially result in more transactions?
>
> What I'm thinking here is that file extensions are not always as
> standardized as one may hope and multiple extensions may exist for a
> single format (HTML comes to mind, with .htm and .html).

I didn't mean to attach meaning to file extensions.

If a server is able to offer a resource in multiple representation
formats, it could (for example) recognize the following URLs:

</sensor/temp>; type=application/x-temperature;
</sensor/temp.xml>; type=text/xml;
</sensor/temp.json>; type=application/json;
</sensor/temp.txt>; type=text/plain;

A client can then simply request a specific representation by choosing
the corresponding URL.

With an Accept: header, "/.well-known/resources" would probably look like this:

</sensor/temp>; type=application/x-temperature, text/xml,
application/json, text/plain;

and a client can request a specific representation by including one of
the values in the Accept option.

Klaus

From fluffy@cisco.com  Sat Jun 26 09:06:00 2010
Return-Path: <fluffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 20C6A3A693B for <core@core3.amsl.com>; Sat, 26 Jun 2010 09:06:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -110.037
X-Spam-Level: 
X-Spam-Status: No, score=-110.037 tagged_above=-999 required=5 tests=[AWL=0.427, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8, SARE_SUB_OBFU_OTHER=0.135, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FxIyXHHUEfc6 for <core@core3.amsl.com>; Sat, 26 Jun 2010 09:05:59 -0700 (PDT)
Received: from sj-iport-5.cisco.com (sj-iport-5.cisco.com [171.68.10.87]) by core3.amsl.com (Postfix) with ESMTP id 5003D3A6910 for <core@ietf.org>; Sat, 26 Jun 2010 09:05:59 -0700 (PDT)
Authentication-Results: sj-iport-5.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvsEAMDCJUyrR7Hu/2dsb2JhbACfK3GmTpoChSQEg2Y
X-IronPort-AV: E=Sophos;i="4.53,487,1272844800"; d="scan'208";a="218040054"
Received: from sj-core-5.cisco.com ([171.71.177.238]) by sj-iport-5.cisco.com with ESMTP; 26 Jun 2010 16:06:08 +0000
Received: from sjc-vpn4-1439.cisco.com (sjc-vpn4-1439.cisco.com [10.21.85.158]) by sj-core-5.cisco.com (8.13.8/8.14.3) with ESMTP id o5QG67uY014456; Sat, 26 Jun 2010 16:06:07 GMT
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Cullen Jennings <fluffy@cisco.com>
In-Reply-To: <AANLkTinP7u-BZGLePgntvhwK0aQcHAUZwIsPja8Ranzr@mail.gmail.com>
Date: Sat, 26 Jun 2010 09:06:07 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <2C2C2DF5-4DF2-4CCA-9EE2-C7C244FA9EB9@cisco.com>
References: <AANLkTinP7u-BZGLePgntvhwK0aQcHAUZwIsPja8Ranzr@mail.gmail.com>
To: Kerry Lynn <kerlyn2001@gmail.com>
X-Mailer: Apple Mail (2.1081)
Cc: core@ietf.org
Subject: Re: [core] Is there a list of draft-XXX-6lowapp-YYY IDs somewhere?
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 26 Jun 2010 16:06:00 -0000

anything with 6lowapp, core, or coap on in the filename *should* show up =
on the WG web page at

http://tools.ietf.org/wg/core/


On Jun 25, 2010, at 9:04 , Kerry Lynn wrote:

> Some of them provided important context and it would be
> a shame to lose that information.  Perhaps some of them
> might be re-submitted by their authors, or we could add
> an archive section to the current CoRE pages?
>=20
> Thanks, -K-
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core


Cullen Jennings
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/index.html



From izuzak@gmail.com  Sat Jun 26 11:33:36 2010
Return-Path: <izuzak@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 714373A692C for <core@core3.amsl.com>; Sat, 26 Jun 2010 11:33:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.164
X-Spam-Level: 
X-Spam-Status: No, score=-2.164 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, MIME_8BIT_HEADER=0.3, SARE_SUB_OBFU_OTHER=0.135]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6aBHPDcJXBcz for <core@core3.amsl.com>; Sat, 26 Jun 2010 11:33:35 -0700 (PDT)
Received: from mail-fx0-f44.google.com (mail-fx0-f44.google.com [209.85.161.44]) by core3.amsl.com (Postfix) with ESMTP id 5EB8C3A681D for <core@ietf.org>; Sat, 26 Jun 2010 11:33:35 -0700 (PDT)
Received: by fxm16 with SMTP id 16so644797fxm.31 for <core@ietf.org>; Sat, 26 Jun 2010 11:33:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:received:in-reply-to :references:from:date:message-id:subject:to:cc:content-type :content-transfer-encoding; bh=EVgHt5/9F5/iqBLM5+29JRDRu9qqjaBlw7XHypWH+IE=; b=Xvjv+xfgpe0wf74QFKF8c9iGbskN1fh5BIDAsvTXG4nkSstiSSaKzlMwrbturJObDg 9012nmhLb/PqCN+Hi/8+nQky/kezbyDL8KHBGH15Ojbq1BGgOZiEDQ+XECF/IkrM3aXE X5VhVjiEOB5O0xjZLr8gHzExgMAxYO5Thn2ck=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; b=akmy8p7kSgMRlD1+6SegZoIkkkN+XNqQKUKYWFrY9J+gAyO/jU/u27VYrb+A84ffWR Vaiubk8us9IoLg3kN7keCbwoTNuwT3H1iuVwB5zcUUu7sueMvvL/2m6/EoSw28S/V3Ur s97ry4Jgw8YdXiixpMX0Pa0HMt56mxsZBDztw=
Received: by 10.223.45.83 with SMTP id d19mr1936772faf.65.1277577221148; Sat,  26 Jun 2010 11:33:41 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.223.119.66 with HTTP; Sat, 26 Jun 2010 11:33:11 -0700 (PDT)
In-Reply-To: <AANLkTinP7u-BZGLePgntvhwK0aQcHAUZwIsPja8Ranzr@mail.gmail.com>
References: <AANLkTinP7u-BZGLePgntvhwK0aQcHAUZwIsPja8Ranzr@mail.gmail.com>
From: =?UTF-8?B?SXZhbiDFvXXFvmFr?= <izuzak@gmail.com>
Date: Sat, 26 Jun 2010 20:33:11 +0200
Message-ID: <AANLkTilLx2i4uHy1Ermfwl0slS2wSZnysLIsPkL25VDr@mail.gmail.com>
To: Kerry Lynn <kerlyn2001@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Cc: core@ietf.org
Subject: Re: [core] Is there a list of draft-XXX-6lowapp-YYY IDs somewhere?
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 26 Jun 2010 18:33:36 -0000

There's a really cool IETF draft search tool that can help:

http://tools.ietf.org/id/.*6lowapp.*

HTH,
Ivan

On Fri, Jun 25, 2010 at 18:04, Kerry Lynn <kerlyn2001@gmail.com> wrote:
> Some of them provided important context and it would be
> a shame to lose that information. =C2=A0Perhaps some of them
> might be re-submitted by their authors, or we could add
> an archive section to the current CoRE pages?
>
> Thanks, -K-
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>

From cabo@tzi.org  Sun Jun 27 12:22:06 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A03913A69C8 for <core@core3.amsl.com>; Sun, 27 Jun 2010 12:22:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.376
X-Spam-Level: 
X-Spam-Status: No, score=-4.376 tagged_above=-999 required=5 tests=[AWL=-0.728, BAYES_50=0.001, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4, WEIRD_PORT=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YkFRjxypdVF5 for <core@core3.amsl.com>; Sun, 27 Jun 2010 12:22:05 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 78CCF3A697D for <core@ietf.org>; Sun, 27 Jun 2010 12:22:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5RJM473018791 for <core@ietf.org>; Sun, 27 Jun 2010 21:22:04 +0200 (CEST)
Received: from [192.168.217.101] (p5489FA3D.dip.t-dialin.net [84.137.250.61]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 42478BAAE;  Sun, 27 Jun 2010 21:22:04 +0200 (CEST)
From: Carsten Bormann <cabo@tzi.org>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Date: Sun, 27 Jun 2010 21:22:03 +0200
To: core <core@ietf.org>
Message-Id: <111F2A5C-7760-4F89-8821-36AF73346B71@tzi.org>
Mime-Version: 1.0 (Apple Message framework v1081)
X-Mailer: Apple Mail (2.1081)
Subject: [core] CoAP plugfest
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 27 Jun 2010 19:22:06 -0000

Heads-Up:
As we said, we plan to run a plugfest at IETF78 on Sunday, 2010-07-25. =20=


Those of you planning to attend:

We are looking for a timeslot from 10-16.
Please plan your travel accordingly.
And please tell me if you want to attend -- I need an approximate number =
of participants.

And whether you are attending the plugfest or not:

You may want to try=20
	coap://ns.tzi.org:61616/
(This is IPv6, as well as IPv4, in case you prefer the latter.)

This is a very primitive spike of parts of coap-00 and coap-misc (block =
protocol), just to see how ugly it gets.
The source code of this little hack is right there for you to look at, =
as well (but you have to implement CoAP first to get there :-)

I'd love to hear about bugs.

Gruesse, Carsten


From zach@sensinode.com  Mon Jun 28 12:26:15 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 8C5923A6958 for <core@core3.amsl.com>; Mon, 28 Jun 2010 12:26:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.862
X-Spam-Level: 
X-Spam-Status: No, score=-2.862 tagged_above=-999 required=5 tests=[AWL=0.737,  BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3avzUABp80RR for <core@core3.amsl.com>; Mon, 28 Jun 2010 12:26:14 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id B98D93A692C for <core@ietf.org>; Mon, 28 Jun 2010 12:26:12 -0700 (PDT)
Received: from [192.168.1.3] (line-4648.dyn.kponet.fi [85.29.64.121]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5SJQG2G001960 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 28 Jun 2010 22:26:17 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <C9F1B122-3524-4191-8914-CE70F87B4051@tzi.org>
Date: Mon, 28 Jun 2010 22:26:19 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <DAEBF008-8E1A-4D58-9229-AEF5695B3B88@sensinode.com>
References: <19A357D2-48CA-44A3-8112-9C6263E7E123@nokia.com> <C9F1B122-3524-4191-8914-CE70F87B4051@tzi.org>
To: Carsten Bormann <cabo@tzi.org>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: I-D Action:draft-eggert-core-congestion-control-00.txt
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 28 Jun 2010 19:26:15 -0000

On Jun 24, 2010, at 1:38 PM, Carsten Bormann wrote:

> With some danger of creating a controversial strawman for this: We =
could say "at a minimum use a fixed initial RTO of 3 s and exponential =
backoff and don't run more than a couple parallel requests, or keep RTT =
and credit information and do something better".

I like that, but let's wait and add something like that after coap-01 =
when we have some more implementation experience.

Zach

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From zach@sensinode.com  Mon Jun 28 12:36:00 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id AB41B3A696C for <core@core3.amsl.com>; Mon, 28 Jun 2010 12:36:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.935
X-Spam-Level: 
X-Spam-Status: No, score=-2.935 tagged_above=-999 required=5 tests=[AWL=0.664,  BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SZQ52nyz1FIX for <core@core3.amsl.com>; Mon, 28 Jun 2010 12:35:59 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id DFE613A691D for <core@ietf.org>; Mon, 28 Jun 2010 12:35:58 -0700 (PDT)
Received: from [192.168.1.3] (line-4648.dyn.kponet.fi [85.29.64.121]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5SJa35h002186 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 28 Jun 2010 22:36:03 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <AANLkTimLt_VK2dAEbvbqq3x0yjEZEofZF-ekNV5UkdPY@mail.gmail.com>
Date: Mon, 28 Jun 2010 22:36:05 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <2396D578-7E93-4108-9207-28D22B0A951A@sensinode.com>
References: <20100622203528.0519A28C0D0@core3.amsl.com> <A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org> <3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com> <AANLkTimLt_VK2dAEbvbqq3x0yjEZEofZF-ekNV5UkdPY@mail.gmail.com>
To: Klaus Hartke <klaus.hartke@googlemail.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification for draft-hartke-coap-observe-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 28 Jun 2010 19:36:00 -0000

Klaus,

A few agreements in-line.

On Jun 24, 2010, at 8:52 PM, Klaus Hartke wrote:

> On 23 June 2010 17:24, Zach Shelby <zach@sensinode.com> wrote:

>> - Are we sure we need all the requirements here, or are some =
nice-to-have?
>=20
> I believe that all requirements are needed to implement the
> architecture. Whether all elements of the architecture are needed,
> should be discussed.

Good point.=20

>=20
>> For example: "A subscribing client must be able to influence the =
representation format in which the server supplies the resource state" I =
would hope this doesn't end up resulting in a bunch of Accept: style =
headers? Couldn't that be left to the application to offer URLs with =
different representation formats? I am not convinced this should be a =
transfer protocol requirement for CoAP.
>=20
> I think both options (/sensors/temperature.xml or Accept:
> application/xml) are valid ways to satisfy this requirement. If we go
> with the Accept header, we need to add a new option to CoAP. I'm in
> favour of .xml in the URL.

+1

>=20
> There is another requirement related to the representation format,
> which is probably more important: "The representation format used
> during the lifetime of a subscription must not change." I think this
> is a requirement that should be stated somewhere.

+1

>=20
>> - SUBSCRIBE, UNSUBSCRIBE, YIELD, BREAK, THROW are abstract concepts =
at this point, I would think these could be combined quite a bit in =
realization? What kind of realization do you guys have in mind (just for =
a sneak preview to see if this is nuts or not).
>=20
> Carsten and I are working on concrete message types. The result will
> probably not be that different from what we have in coap-00 currently.

Yep, this is what I thought.=20

Zach

>=20
> Klaus
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From zach@sensinode.com  Mon Jun 28 12:39:08 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 0FCC33A696D for <core@core3.amsl.com>; Mon, 28 Jun 2010 12:39:08 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.996
X-Spam-Level: 
X-Spam-Status: No, score=-2.996 tagged_above=-999 required=5 tests=[AWL=0.603,  BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mB94SzMehNZH for <core@core3.amsl.com>; Mon, 28 Jun 2010 12:39:06 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 7B7C93A697A for <core@ietf.org>; Mon, 28 Jun 2010 12:39:06 -0700 (PDT)
Received: from [192.168.1.3] (line-4648.dyn.kponet.fi [85.29.64.121]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5SJd7Ax002271 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 28 Jun 2010 22:39:07 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <A61BB3A241E6E64D86C58237F6DC1A1802F0D1AA@ALPMLVEM04.e2k.ad.ge.com>
Date: Mon, 28 Jun 2010 22:39:09 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <B135E87E-B55B-4431-87C0-E91B9A392ED2@sensinode.com>
References: <20100622203528.0519A28C0D0@core3.amsl.com><A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org><3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com> <AANLkTimLt_VK2dAEbvbqq3x0yjEZEofZF-ekNV5UkdPY@mail.gmail.com> <A61BB3A241E6E64D86C58237F6DC1A1802F0D1AA@ALPMLVEM04.e2k.ad.ge.com>
To: "Simpson, Robby (GE Energy Services)" <robby.simpson@ge.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification fordraft-hartke-coap-observe-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 28 Jun 2010 19:39:08 -0000

Hi Robby,

On Jun 25, 2010, at 5:23 PM, Simpson, Robby (GE Energy Services) wrote:

>>> For example: "A subscribing client must be able to influence the
> representation format in which the server supplies the resource state" =
I
> would hope this doesn't end up resulting in a bunch of Accept: style
> headers? Couldn't that be left to the application to offer URLs with
> different representation formats? I am not convinced this should be a
> transfer protocol requirement for CoAP.
>>=20
>> I think both options (/sensors/temperature.xml or Accept:
>> application/xml) are valid ways to satisfy this requirement. If we go
>> with the Accept header, we need to add a new option to CoAP. I'm in
>> favour of .xml in the URL.
>=20
> Wouldn't relying on URI file extensions to determine format be more
> complicated and potentially result in more transactions?
>=20
> What I'm thinking here is that file extensions are not always as
> standardized as one may hope and multiple extensions may exist for a
> single format (HTML comes to mind, with .htm and .html).
>=20
> Why the opposition 'Accept: style headers' (provided done in a compact
> binary way)?


This could be a backup. But we might not need that, as the resource =
discovery includes a description of the content-type for a resource. =
Using that you know what representation will be returned a priori. I =
don't expect that constrained resources will be offered in many formats =
at the same time though? What do you think?

Zach

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From robby.simpson@ge.com  Mon Jun 28 12:49:51 2010
Return-Path: <robby.simpson@ge.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 6BD713A6856 for <core@core3.amsl.com>; Mon, 28 Jun 2010 12:49:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.999
X-Spam-Level: 
X-Spam-Status: No, score=-3.999 tagged_above=-999 required=5 tests=[BAYES_50=0.001, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id SHULVnwACdtr for <core@core3.amsl.com>; Mon, 28 Jun 2010 12:49:46 -0700 (PDT)
Received: from exprod5og101.obsmtp.com (exprod5og101.obsmtp.com [64.18.0.141]) by core3.amsl.com (Postfix) with ESMTP id C7FFA3A6986 for <core@ietf.org>; Mon, 28 Jun 2010 12:49:44 -0700 (PDT)
Received: from source ([4.78.218.129]) (using TLSv1) by exprod5ob101.postini.com ([64.18.4.12]) with SMTP ID DSNKTCj83QgY3wOpUHz3n8qOxxHWh65zDSCT@postini.com; Mon, 28 Jun 2010 12:49:55 PDT
Received: from unknown (HELO alpmlef08.e2k.ad.ge.com) ([3.159.18.17]) by Cinmlip06.e2k.ad.ge.com with ESMTP; 28 Jun 2010 15:49:24 -0400
Received: from ALPMLVEM04.e2k.ad.ge.com ([3.159.17.50]) by alpmlef08.e2k.ad.ge.com with Microsoft SMTPSVC(6.0.3790.4675);  Mon, 28 Jun 2010 15:49:24 -0400
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Mon, 28 Jun 2010 15:49:23 -0400
Message-ID: <A61BB3A241E6E64D86C58237F6DC1A1802F9EF87@ALPMLVEM04.e2k.ad.ge.com>
In-Reply-To: <B135E87E-B55B-4431-87C0-E91B9A392ED2@sensinode.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] Fwd: New Version Notification fordraft-hartke-coap-observe-00
Thread-Index: AcsW+ZeicPc//zW0TIe6+YJbvJhJqAAAIIiQ
References: <20100622203528.0519A28C0D0@core3.amsl.com><A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org><3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com> <AANLkTimLt_VK2dAEbvbqq3x0yjEZEofZF-ekNV5UkdPY@mail.gmail.com> <A61BB3A241E6E64D86C58237F6DC1A1802F0D1AA@ALPMLVEM04.e2k.ad.ge.com> <B135E87E-B55B-4431-87C0-E91B9A392ED2@sensinode.com>
From: "Simpson, Robby (GE Energy Services)" <robby.simpson@ge.com>
To: "Zach Shelby" <zach@sensinode.com>
X-OriginalArrivalTime: 28 Jun 2010 19:49:24.0041 (UTC) FILETIME=[023DFB90:01CB16FB]
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification fordraft-hartke-coap-observe-00
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 28 Jun 2010 19:49:51 -0000

I think depending on resource discovery to give content-type could prove
problematic.

First, this introduces tighter coupling between resource discovery and
application transport.  Now devices must maintain more state between the
two -- in other words, a device must remember the resources that are
exposed in the appropriate format, though this could allow a device to
only remember resources which in formats it prefers.

Second, this requires that resource discovery be granular all the way to
each addressable resource.  For example, I could envision resource
discovery that only points a device in the direction of a set or
hierarchy of resources.  However, if content-type is (only) clearly
specified during resource discovery, then a device would need to learn
of each resource via resource discovery.

I agree that constrained devices may not offer many formats
simultaneously, though I hate to make the assumption.

- Robby


-----Original Message-----
From: Zach Shelby [mailto:zach@sensinode.com]=20
Sent: Monday, June 28, 2010 3:39 PM
To: Simpson, Robby (GE Energy Services)
Cc: core
Subject: Re: [core] Fwd: New Version Notification
fordraft-hartke-coap-observe-00

Hi Robby,

On Jun 25, 2010, at 5:23 PM, Simpson, Robby (GE Energy Services) wrote:

>>> For example: "A subscribing client must be able to influence the
> representation format in which the server supplies the resource state"
I
> would hope this doesn't end up resulting in a bunch of Accept: style
> headers? Couldn't that be left to the application to offer URLs with
> different representation formats? I am not convinced this should be a
> transfer protocol requirement for CoAP.
>>=20
>> I think both options (/sensors/temperature.xml or Accept:
>> application/xml) are valid ways to satisfy this requirement. If we go
>> with the Accept header, we need to add a new option to CoAP. I'm in
>> favour of .xml in the URL.
>=20
> Wouldn't relying on URI file extensions to determine format be more
> complicated and potentially result in more transactions?
>=20
> What I'm thinking here is that file extensions are not always as
> standardized as one may hope and multiple extensions may exist for a
> single format (HTML comes to mind, with .htm and .html).
>=20
> Why the opposition 'Accept: style headers' (provided done in a compact
> binary way)?


This could be a backup. But we might not need that, as the resource
discovery includes a description of the content-type for a resource.
Using that you know what representation will be returned a priori. I
don't expect that constrained resources will be offered in many formats
at the same time though? What do you think?

Zach

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From trac@tools.ietf.org  Mon Jun 28 12:58:52 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id ADA7B28C13A for <core@core3.amsl.com>; Mon, 28 Jun 2010 12:58:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -103.451
X-Spam-Level: 
X-Spam-Status: No, score=-103.451 tagged_above=-999 required=5 tests=[AWL=1.149, BAYES_00=-2.599, GB_I_LETTER=-2, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oOHiasAdEKX2 for <core@core3.amsl.com>; Mon, 28 Jun 2010 12:58:51 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 4DDD43A69C2 for <core@ietf.org>; Mon, 28 Jun 2010 12:58:51 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.72) (envelope-from <trac@tools.ietf.org>) id 1OTKTt-0000B0-0H; Mon, 28 Jun 2010 12:59:01 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: zach@sensinode.com
X-Trac-Project: core
Date: Mon, 28 Jun 2010 19:59:00 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/9#comment:1
Message-ID: <066.037fb07a88826226e50338c384a42f3b@tools.ietf.org>
References: <057.991b4b209b798e7fdfa5e0f4fd31a63a@tools.ietf.org>
X-Trac-Ticket-ID: 9
In-Reply-To: <057.991b4b209b798e7fdfa5e0f4fd31a63a@tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: Re: [core] #9: Section 6 "Resource Discovery" improvements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 28 Jun 2010 19:58:52 -0000

#9: Section 6 "Resource Discovery" improvements
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  zach@â€¦            
     Type:  enhancement         |      Status:  new               
 Priority:  minor               |   Milestone:                    
Component:  coap                |     Version:                    
 Severity:  -                   |    Keywords:                    
--------------------------------+-------------------------------------------

Comment(by zach@â€¦):

 Further improvements to Section 6 in order to optimize multicast resource
 discovery:

 - Add URL query string support for resource description variables. If a
 query string exists in the /.well-known/resources URL then a response is
 sent only if/with exact match of those variables. For example /.well-
 known/resources?name=Temperature would only return resources with
 name=Temperature.

 - Reduce the overhead of the attribute names in the format. Use maximum 2
 letter attributes such as nm (Name), ct (Content-type), sh (short URL)
 etc.

 - Rules for answering multicast requests to ensure that error messages are
 not returned. This should be done for all multicast requests, not only
 discovery ones.

 - Assign a short URL for /.well-known/resources such as /r (matching the
 short URL scheme in coap-01, whatever it is). The short URL scheme itself
 may also need an attribute.

 - Improve the description of each attribute in the text.

 - Include message exchange examples and different use cases.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/9#comment:1>
core <http://tools.ietf.org/core/>


From zach@sensinode.com  Mon Jun 28 13:04:00 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 5D41F3A67E7 for <core@core3.amsl.com>; Mon, 28 Jun 2010 13:04:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.746
X-Spam-Level: 
X-Spam-Status: No, score=-3.746 tagged_above=-999 required=5 tests=[AWL=1.253,  BAYES_00=-2.599, GB_I_LETTER=-2, J_CHICKENPOX_72=0.6, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4oyO5RILxVVZ for <core@core3.amsl.com>; Mon, 28 Jun 2010 13:03:49 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id EA8F428C149 for <core@ietf.org>; Mon, 28 Jun 2010 13:03:48 -0700 (PDT)
Received: from [192.168.1.3] (line-4648.dyn.kponet.fi [85.29.64.121]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5SK3rfo003006 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO) for <core@ietf.org>; Mon, 28 Jun 2010 23:03:53 +0300
Content-Type: text/plain; charset=windows-1252
Mime-Version: 1.0 (Apple Message framework v1081)
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <066.037fb07a88826226e50338c384a42f3b@tools.ietf.org>
Date: Mon, 28 Jun 2010 23:03:55 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <8CE248CC-1B6B-4FED-A4E9-FF94B1397BC1@sensinode.com>
References: <057.991b4b209b798e7fdfa5e0f4fd31a63a@tools.ietf.org> <066.037fb07a88826226e50338c384a42f3b@tools.ietf.org>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1081)
Subject: Re: [core] #9: Section 6 "Resource Discovery" improvements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 28 Jun 2010 20:04:00 -0000

Over at ZigBee IP we have been discussing how to make the CoAP discovery =
section more complete for real use. I identified the major things still =
needed in Section 6 which we should aim at including in coap-01 and =
added them to Ticket #9. Any comments/ideas on features needed for CoAP =
resource discovery would be welcome. We should aim for this feature to =
be 100% complete in -01 so we can do testing during the plugfest on it.=20=


We should also mention in the section that CoAP can be used to multicast =
discover HTTP web resources as well using Section 6. The fact that they =
are HTTP resources could be indicated in the URL or the name.=20

Zach

On Jun 28, 2010, at 10:59 PM, core issue tracker wrote:

> #9: Section 6 "Resource Discovery" improvements
> =
--------------------------------+-----------------------------------------=
--
> Reporter:  zach@=85              |       Owner:  zach@=85           =20=

>     Type:  enhancement         |      Status:  new              =20
> Priority:  minor               |   Milestone:                   =20
> Component:  coap                |     Version:                   =20
> Severity:  -                   |    Keywords:                   =20
> =
--------------------------------+-----------------------------------------=
--
>=20
> Comment(by zach@=85):
>=20
> Further improvements to Section 6 in order to optimize multicast =
resource
> discovery:
>=20
> - Add URL query string support for resource description variables. If =
a
> query string exists in the /.well-known/resources URL then a response =
is
> sent only if/with exact match of those variables. For example /.well-
> known/resources?name=3DTemperature would only return resources with
> name=3DTemperature.
>=20
> - Reduce the overhead of the attribute names in the format. Use =
maximum 2
> letter attributes such as nm (Name), ct (Content-type), sh (short URL)
> etc.
>=20
> - Rules for answering multicast requests to ensure that error messages =
are
> not returned. This should be done for all multicast requests, not only
> discovery ones.
>=20
> - Assign a short URL for /.well-known/resources such as /r (matching =
the
> short URL scheme in coap-01, whatever it is). The short URL scheme =
itself
> may also need an attribute.
>=20
> - Improve the description of each attribute in the text.
>=20
> - Include message exchange examples and different use cases.
>=20
> --=20
> Ticket URL: =
<http://trac.tools.ietf.org/wg/core/trac/ticket/9#comment:1>
> core <http://tools.ietf.org/core/>
>=20

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From zach@sensinode.com  Mon Jun 28 14:06:01 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7D53D3A6A79 for <core@core3.amsl.com>; Mon, 28 Jun 2010 14:06:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.935
X-Spam-Level: 
X-Spam-Status: No, score=-1.935 tagged_above=-999 required=5 tests=[AWL=-0.750, BAYES_40=-0.185, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bhCZSkwBVso3 for <core@core3.amsl.com>; Mon, 28 Jun 2010 14:06:00 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id A0F293A69EA for <core@ietf.org>; Mon, 28 Jun 2010 14:05:55 -0700 (PDT)
Received: from [192.168.1.3] (line-4648.dyn.kponet.fi [85.29.64.121]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5SL61DE004539 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Tue, 29 Jun 2010 00:06:01 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <08C9302C-72D4-496B-A7B3-3F37DD1CA759@tzi.org>
Date: Tue, 29 Jun 2010 00:06:03 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <E4BAC433-1DAB-440B-95EF-5EEB7BFCE36C@sensinode.com>
References: <20100622203528.0519A28C0D0@core3.amsl.com> <A9654C45-840C-4682-AA1A-9EAF44D81138@tzi.org> <3A0432F2-457D-47B4-A826-9678E8F5DB57@sensinode.com> <08C9302C-72D4-496B-A7B3-3F37DD1CA759@tzi.org>
To: Carsten Bormann <cabo@tzi.org>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Can all responses be instant? (Re: Fwd: New Version Notification for draft-hartke-coap-observe-00)
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 28 Jun 2010 21:06:01 -0000

Bingo, I have been thinking about this more and to me it seems like =
dealing with asynchronous responses to delayed normal requests (not =
subscriptions) is actually the key piece we have been missing. We need =
this kind of asynchronous response (notification) for this purpose. So =
what if we build this observation thing like:

1. Integrate this asynchronous response message into the core protocol =
for the purpose of normal requests. This might be similar to the current =
notify message, or a different kind of response. I think this is what =
Robert Cragie was getting to before, asynchronous interactions are key =
here.

2. We consider the observation feature as just another way to invoke =
asynchronous responses. If we consider that GET can be answered later =
asynchronously. Then adding a subscription is simply a GET with some =
more specific meta-data (subscription/observation option). That also =
makes the HTTP mapping more like what some were hoping for?

Both 1 and 2 are part of the transfer protocol interaction model, and =
can be done transparently to the REST methods. I start to see a way we =
could achieve both the observation and notification without requiring =
new methods and making it possible for a more "transparent" HTTP mapping =
even for observation.

On Jun 23, 2010, at 7:55 PM, Carsten Bormann wrote:

> Zach,
>=20
> that are a number of very good questions.
>=20
> Let's start discussing this one:
>=20
>> - I am not sure about the implications of allowing a delayed GET and =
PUT response on implementations. Currently in coap-00 if an end-point =
doesn't make use of subscribe/notify it doesn't have to implement code =
to wait for asynchronous notifications. For example it might simply make =
a request, open a temporary UDP socket waiting for the response, and =
then close that and go to sleep. Well, I guess if it gets an =
intermediate response code it would know to stay awake waiting for the =
response. Is this an efficient way of using energy in a constrained =
network though? What if a client doesn't want a delayed response?
>=20
> Right now, CoAP is silent on how much time a server has to answer a =
request.
>=20
> Certainly, that time will never be zero.
>=20
> Can we live with limiting this time to < RESPONSE_TIMEOUT hard?

Nope, I think you are right that we need asynchronous responses. =20

>=20
> If yes, everything gets simpler.
> If not, there is always the alternative not to do an inversion of =
control; in that case, the server would reply with a "please wait and =
try again", maybe including a duration that gives the estimated time =
until an answer, and the client would simply repeat asking at its =
convenience.
> (Of course, the server could simply remain silent, prompting =
retransmissions, but this means that we limit the time to =
RESPONSE_TIMEOUT * MAX_RETRANSMIT, assuming no errors, and we increase =
the likelihood of a transfer failing just because of lost packets.)
>=20
> On the other hand, if we do have a "notify" style packet, there is =
very little stopping us from implementing an "I'll give it to you later" =
reply (the "ACK" packet in Figure 1 of coap-observe).  A client that =
doesn't want to wait can simply treat that as a failure.


Zach

>=20
> As usual, we should probably err on the side of simplicity, but only =
after having discussed whether we are hitting Einstein's "but no =
simpler".
>=20
> Gruesse, Carsten
>=20

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From trac@tools.ietf.org  Tue Jun 29 00:31:44 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 547EF3A67AE for <core@core3.amsl.com>; Tue, 29 Jun 2010 00:31:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.456
X-Spam-Level: 
X-Spam-Status: No, score=-102.456 tagged_above=-999 required=5 tests=[AWL=0.144, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mVmJuzCSTnzZ for <core@core3.amsl.com>; Tue, 29 Jun 2010 00:31:43 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 2D93D3A63EC for <core@ietf.org>; Tue, 29 Jun 2010 00:31:42 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.72) (envelope-from <trac@tools.ietf.org>) id 1OTVIM-0007Zi-LE; Tue, 29 Jun 2010 00:31:50 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: fluffy@cisco.com, zach@sensinode.com
X-Trac-Project: core
Date: Tue, 29 Jun 2010 07:31:50 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/1#comment:1
Message-ID: <066.c9f96210b261445003240f95359bcefe@tools.ietf.org>
References: <057.8d37fc1963a953ac6712dad4000b6b92@tools.ietf.org>
X-Trac-Ticket-ID: 1
In-Reply-To: <057.8d37fc1963a953ac6712dad4000b6b92@tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: fluffy@cisco.com, zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: Re: [core] #1: Agree on Sub/Not model and requirements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 29 Jun 2010 07:31:44 -0000

#1: Agree on Sub/Not model and requirements
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |        Owner:  Cullen Jennings <fluffy@â€¦>        
     Type:  task                |       Status:  closed                            
 Priority:  critical            |    Milestone:                                    
Component:  coap                |      Version:                                    
 Severity:  -                   |   Resolution:  fixed                             
 Keywords:                      |  
--------------------------------+-------------------------------------------
Changes (by zach@â€¦):

  * status:  new => closed
  * resolution:  => fixed


Comment:

 draft-hartke-coap-observe-00 captures the overall architecture and
 requirements for asynchronous CoAP interactions. This satisfies the goal
 of this ticket well.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/1#comment:1>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Tue Jun 29 00:35:42 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1C6023A67C2 for <core@core3.amsl.com>; Tue, 29 Jun 2010 00:35:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.456
X-Spam-Level: 
X-Spam-Status: No, score=-102.456 tagged_above=-999 required=5 tests=[AWL=0.144, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xY-Tzo91n2A7 for <core@core3.amsl.com>; Tue, 29 Jun 2010 00:35:41 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 6A1553A65A5 for <core@ietf.org>; Tue, 29 Jun 2010 00:35:41 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.72) (envelope-from <trac@tools.ietf.org>) id 1OTVMG-0007nx-6t; Tue, 29 Jun 2010 00:35:52 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: zach@sensinode.com
X-Trac-Project: core
Date: Tue, 29 Jun 2010 07:35:52 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/4#comment:1
Message-ID: <066.9cb5ff77fefae1702bbcdd4464b5a4c6@tools.ietf.org>
References: <057.dc1f73d93c692bd4317583193bbbd467@tools.ietf.org>
X-Trac-Ticket-ID: 4
In-Reply-To: <057.dc1f73d93c692bd4317583193bbbd467@tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: Re: [core] #4: URI Encoding
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 29 Jun 2010 07:35:42 -0000

#4: URI Encoding
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |        Owner:  zach@â€¦            
     Type:  enhancement         |       Status:  closed            
 Priority:  major               |    Milestone:                    
Component:  coap                |      Version:                    
 Severity:  -                   |   Resolution:  fixed             
 Keywords:                      |  
--------------------------------+-------------------------------------------
Changes (by zach@â€¦):

  * status:  new => closed
  * resolution:  => fixed


Comment:

 After discussion and contributions on the mailing list, this ticket can be
 closed for now like this for coap-01:

 - No special URI encoding as recommended in draft-bormann-coap-misc-01

 - Servers can already assign static short URIs for their resources. This
 doesn't require anything new to the coap-00 mechanisms. However the
 resource description should include a field (sh=) to indicate such an
 alternative static URI exists.

 - The concept of TeRIs proposed in draft-bormann-coap-misc-01 should be
 experimented with first before considering integration with the base
 document.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/4#comment:1>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Tue Jun 29 00:40:58 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 5F45B3A67F1 for <core@core3.amsl.com>; Tue, 29 Jun 2010 00:40:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.457
X-Spam-Level: 
X-Spam-Status: No, score=-102.457 tagged_above=-999 required=5 tests=[AWL=0.143, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JKFS0l61JidM for <core@core3.amsl.com>; Tue, 29 Jun 2010 00:40:57 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id A6B893A67AE for <core@ietf.org>; Tue, 29 Jun 2010 00:40:57 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.72) (envelope-from <trac@tools.ietf.org>) id 1OTVRM-00084l-2r; Tue, 29 Jun 2010 00:41:08 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: zach@sensinode.com
X-Trac-Project: core
Date: Tue, 29 Jun 2010 07:41:08 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/17
Message-ID: <057.9774b631869c90d1e431ac016b476d16@tools.ietf.org>
X-Trac-Ticket-ID: 17
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: [core]  #17: Pseudo Floating-point Representation
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 29 Jun 2010 07:40:58 -0000

#17: Pseudo Floating-point Representation
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:            
     Type:  enhancement         |      Status:  new       
 Priority:  minor               |   Milestone:  milestone1
Component:  coap                |     Version:            
 Severity:  -                   |    Keywords:            
--------------------------------+-------------------------------------------
 draft-bormann-coap-misc-01 recommends an 8-bit pseudo floating-point
 representation for use with durations. This ticket is to integrate this
 solution into coap-01 for all durations (Max-age). This simplifies such
 options by making them fixed length and saves bytes.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/17>
core <http://tools.ietf.org/core/>


From paduffy@cisco.com  Tue Jun 29 06:59:50 2010
Return-Path: <paduffy@cisco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 7E5043A69CD for <core@core3.amsl.com>; Tue, 29 Jun 2010 06:59:50 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.155
X-Spam-Level: 
X-Spam-Status: No, score=-10.155 tagged_above=-999 required=5 tests=[AWL=0.444, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JGaDIMUeuRUj for <core@core3.amsl.com>; Tue, 29 Jun 2010 06:59:49 -0700 (PDT)
Received: from rtp-iport-1.cisco.com (rtp-iport-1.cisco.com [64.102.122.148]) by core3.amsl.com (Postfix) with ESMTP id 3A8BF3A6A1D for <core@ietf.org>; Tue, 29 Jun 2010 06:59:49 -0700 (PDT)
Authentication-Results: rtp-iport-1.cisco.com; dkim=neutral (message not signed) header.i=none
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: Av0EAAKZKUxAZnwN/2dsb2JhbACDHJwfcaRtgXoLAYcikR+BKYMJcgQ
X-IronPort-AV: E=Sophos;i="4.53,505,1272844800"; d="scan'208";a="126777067"
Received: from rtp-core-2.cisco.com ([64.102.124.13]) by rtp-iport-1.cisco.com with ESMTP; 29 Jun 2010 13:59:59 +0000
Received: from [10.86.253.61] ([10.86.253.61]) by rtp-core-2.cisco.com (8.13.8/8.14.3) with ESMTP id o5TDxx2N014150; Tue, 29 Jun 2010 13:59:59 GMT
Message-ID: <4C29FC5E.7020006@cisco.com>
Date: Tue, 29 Jun 2010 09:59:58 -0400
From: Paul Duffy <paduffy@cisco.com>
Organization: Cisco Systems
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.10) Gecko/20100512 Thunderbird/3.0.5
MIME-Version: 1.0
To: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
References: <057.8d37fc1963a953ac6712dad4000b6b92@tools.ietf.org> <066.c9f96210b261445003240f95359bcefe@tools.ietf.org>
In-Reply-To: <066.c9f96210b261445003240f95359bcefe@tools.ietf.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Subject: Re: [core] #1: Agree on Sub/Not model and requirements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: paduffy@cisco.com
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 29 Jun 2010 13:59:50 -0000

What exactly does this mean, that the "model and requirements" for 
sub/not are settled?


On 6/29/2010 3:31 AM, core issue tracker wrote:
> #1: Agree on Sub/Not model and requirements
> --------------------------------+-------------------------------------------
>   Reporter:  zach@â€¦              |        Owner:  Cullen Jennings<fluffy@â€¦>
>       Type:  task                |       Status:  closed
>   Priority:  critical            |    Milestone:
> Component:  coap                |      Version:
>   Severity:  -                   |   Resolution:  fixed
>   Keywords:                      |
> --------------------------------+-------------------------------------------
> Changes (by zach@â€¦):
>
>    * status:  new =>  closed
>    * resolution:  =>  fixed
>
>
> Comment:
>
>   draft-hartke-coap-observe-00 captures the overall architecture and
>   requirements for asynchronous CoAP interactions. This satisfies the goal
>   of this ticket well.
>
>    


From zach@sensinode.com  Tue Jun 29 07:08:57 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 9B04C3A6A3B for <core@core3.amsl.com>; Tue, 29 Jun 2010 07:08:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.633
X-Spam-Level: 
X-Spam-Status: No, score=-2.633 tagged_above=-999 required=5 tests=[AWL=0.966,  BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6LS+Zcz0hFbQ for <core@core3.amsl.com>; Tue, 29 Jun 2010 07:08:56 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 22AC93A6A1D for <core@ietf.org>; Tue, 29 Jun 2010 07:08:51 -0700 (PDT)
Received: from [62.145.172.52] ([62.145.172.52]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5TE8sqa012309 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Tue, 29 Jun 2010 17:08:54 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=windows-1252
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <4C29FC5E.7020006@cisco.com>
Date: Tue, 29 Jun 2010 17:08:56 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <2A96C4E7-1646-4F40-A6AF-77345D1B949F@sensinode.com>
References: <057.8d37fc1963a953ac6712dad4000b6b92@tools.ietf.org> <066.c9f96210b261445003240f95359bcefe@tools.ietf.org> <4C29FC5E.7020006@cisco.com>
To: paduffy@cisco.com
X-Mailer: Apple Mail (2.1081)
Cc: core issue tracker <trac@tools.ietf.org>, core <core@ietf.org>
Subject: Re: [core] #1: Agree on Sub/Not model and requirements
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 29 Jun 2010 14:08:57 -0000

The goal of this ticket was to document what the actual architecture and =
requirements for the interaction model are. This draft did a good job of =
that part.=20

The solution we need to look at separately in Ticket #2. Carsten will an =
idea for a way forward for a solution later today. Although we do now =
think it will be possible to do this in a way that makes this possible =
without adding new REST methods thanks to some improvements to the =
asynchronous interaction we're working on for coap-01. The key was to =
better separate the transaction from the REST transfer (see the mail I =
sent yesterday on the list regarding that).

Zach

On Jun 29, 2010, at 4:59 PM, Paul Duffy wrote:

> What exactly does this mean, that the "model and requirements" for =
sub/not are settled?
>=20
>=20
> On 6/29/2010 3:31 AM, core issue tracker wrote:
>> #1: Agree on Sub/Not model and requirements
>> =
--------------------------------+-----------------------------------------=
--
>>  Reporter:  zach@=85              |        Owner:  Cullen =
Jennings<fluffy@=85>
>>      Type:  task                |       Status:  closed
>>  Priority:  critical            |    Milestone:
>> Component:  coap                |      Version:
>>  Severity:  -                   |   Resolution:  fixed
>>  Keywords:                      |
>> =
--------------------------------+-----------------------------------------=
--
>> Changes (by zach@=85):
>>=20
>>   * status:  new =3D>  closed
>>   * resolution:  =3D>  fixed
>>=20
>>=20
>> Comment:
>>=20
>>  draft-hartke-coap-observe-00 captures the overall architecture and
>>  requirements for asynchronous CoAP interactions. This satisfies the =
goal
>>  of this ticket well.
>>=20
>>  =20
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From Akbar.Rahman@InterDigital.com  Tue Jun 29 10:41:47 2010
Return-Path: <Akbar.Rahman@InterDigital.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id BCC403A67F5 for <core@core3.amsl.com>; Tue, 29 Jun 2010 10:41:47 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.949
X-Spam-Level: 
X-Spam-Status: No, score=-1.949 tagged_above=-999 required=5 tests=[AWL=0.650,  BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 24jE4YK596EO for <core@core3.amsl.com>; Tue, 29 Jun 2010 10:41:46 -0700 (PDT)
Received: from idcout.InterDigital.com (idcexmail.interdigital.com [12.32.197.135]) by core3.amsl.com (Postfix) with ESMTP id AD7043A6915 for <core@ietf.org>; Tue, 29 Jun 2010 10:41:46 -0700 (PDT)
Received: from interdigital.com ([10.0.128.11]) by idcout.InterDigital.com with Microsoft SMTPSVC(6.0.3790.3959);  Tue, 29 Jun 2010 13:41:56 -0400
Received: from SAM.InterDigital.com ([10.30.2.12]) by interdigital.com with Microsoft SMTPSVC(6.0.3790.3959); Tue, 29 Jun 2010 13:41:56 -0400
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Tue, 29 Jun 2010 13:41:56 -0400
Message-ID: <D60519DB022FFA48974A25955FFEC08C031F983F@SAM.InterDigital.com>
In-Reply-To: <20100629160002.BB9FD3A6B98@core3.amsl.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: Fwd: I-D Action:draft-rahman-core-sleeping-00.txt 
Thread-Index: AcsXpDkJjB+pnCQpTZunRVcm+hJypgADZAdA
References: <20100629160002.BB9FD3A6B98@core3.amsl.com>
From: "Rahman, Akbar" <Akbar.Rahman@InterDigital.com>
To: <core@ietf.org>
X-OriginalArrivalTime: 29 Jun 2010 17:41:56.0699 (UTC) FILETIME=[5E7BF2B0:01CB17B2]
Subject: [core] Fwd: I-D Action:draft-rahman-core-sleeping-00.txt
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 29 Jun 2010 17:41:48 -0000

Hi,


We have submitted a draft (see below) related to "sleeping nodes" and
"multicast".  We look forward to any feedback from the group.


Akbar/Juan-Carlos/Guang


-----Original Message-----
From: i-d-announce-bounces@ietf.org
[mailto:i-d-announce-bounces@ietf.org] On Behalf Of
Internet-Drafts@ietf.org
Sent: Tuesday, June 29, 2010 12:00 PM
To: i-d-announce@ietf.org
Subject: I-D Action:draft-rahman-core-sleeping-00.txt=20

A New Internet-Draft is available from the on-line Internet-Drafts
directories.

	Title           : Sleeping and Multicast Considerations for CoAP
	Author(s)       : A. Rahman, et al.
	Filename        : draft-rahman-core-sleeping-00.txt
	Pages           : 15
	Date            : 2010-06-29

This document further analyzes the COAP requirements related to
"sleeping nodes" and "multicast" through the use of examples and use
cases. The goal of this document is to trigger discussions in the CoRE
working group so that all relevant considerations are taken into account
when designing CoAP.

A URL for this Internet-Draft is:
http://www.ietf.org/internet-drafts/draft-rahman-core-sleeping-00.txt

Internet-Drafts are also available by anonymous FTP at:
ftp://ftp.ietf.org/internet-drafts/

Below is the data which will enable a MIME compliant mail reader
implementation to automatically retrieve the ASCII version of the
Internet-Draft.

From trac@tools.ietf.org  Wed Jun 30 01:00:44 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 129773A67F9 for <core@core3.amsl.com>; Wed, 30 Jun 2010 01:00:44 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.463
X-Spam-Level: 
X-Spam-Status: No, score=-102.463 tagged_above=-999 required=5 tests=[AWL=0.137, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vM74pEWcTEmc for <core@core3.amsl.com>; Wed, 30 Jun 2010 01:00:43 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 708E83A683A for <core@ietf.org>; Wed, 30 Jun 2010 01:00:43 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.72) (envelope-from <trac@tools.ietf.org>) id 1OTsE1-0001zg-Ob; Wed, 30 Jun 2010 01:00:53 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: zach@sensinode.com
X-Trac-Project: core
Date: Wed, 30 Jun 2010 08:00:53 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/7#comment:1
Message-ID: <066.16f34c365d3d1300ca2e8c8231e06e48@tools.ietf.org>
References: <057.f3a3ec72477d421e9dab4a988579cc09@tools.ietf.org>
X-Trac-Ticket-ID: 7
In-Reply-To: <057.f3a3ec72477d421e9dab4a988579cc09@tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: Re: [core] #7: CoAP ports
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 08:00:44 -0000

#7: CoAP ports
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |        Owner:  zach@â€¦            
     Type:  defect              |       Status:  closed            
 Priority:  minor               |    Milestone:                    
Component:  coap                |      Version:                    
 Severity:  -                   |   Resolution:  fixed             
 Keywords:                      |  
--------------------------------+-------------------------------------------
Changes (by zach@â€¦):

  * status:  new => closed
  * resolution:  => fixed


Comment:

 Fixed in coap-01 with the following text:

 {{{

 4.2.  Default Port

    The CoAP default port number [TBD1] MUST be supported by a server for
    resource discovery (see Section 6) and SHOULD be supported for
    providing access to other resources.  In addition other end-points
    may be hosted in the dynamic port space.

    When a CoAP server is hosted by a 6LoWPAN node, it SHOULD support a
    port in the 61616-61632 compressed UDP port space defined in
    [RFC4944].

 }}}

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/7#comment:1>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Wed Jun 30 01:46:41 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id B84F93A67F7 for <core@core3.amsl.com>; Wed, 30 Jun 2010 01:46:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.463
X-Spam-Level: 
X-Spam-Status: No, score=-102.463 tagged_above=-999 required=5 tests=[AWL=0.137, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wMMJ6aPWaqWh for <core@core3.amsl.com>; Wed, 30 Jun 2010 01:46:39 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id 15CDE3A694C for <core@ietf.org>; Wed, 30 Jun 2010 01:46:39 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.72) (envelope-from <trac@tools.ietf.org>) id 1OTswS-0007Gf-RJ; Wed, 30 Jun 2010 01:46:48 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: fluffy@cisco.com, zach@sensinode.com
X-Trac-Project: core
Date: Wed, 30 Jun 2010 08:46:48 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/6#comment:1
Message-ID: <066.b7025225d8e17c1a85e060f68a8588f5@tools.ietf.org>
References: <057.da78d33bccd664276d29b01bb2121dd2@tools.ietf.org>
X-Trac-Ticket-ID: 6
In-Reply-To: <057.da78d33bccd664276d29b01bb2121dd2@tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: fluffy@cisco.com, zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: Re: [core] #6: Date option text needs update
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 08:46:41 -0000

#6: Date option text needs update
--------------------------------+-------------------------------------------
 Reporter:  zach@â€¦              |       Owner:  Cullen Jennings <fluffy@â€¦>        
     Type:  defect              |      Status:  new                               
 Priority:  trivial             |   Milestone:  coap-01                           
Component:  coap                |     Version:                                    
 Severity:  -                   |    Keywords:                                    
--------------------------------+-------------------------------------------
Changes (by zach@â€¦):

  * milestone:  => coap-01


Comment:

 - The current text is a bit too complex and has three different lengths.
 Current text below, how can we make this a single length? Could someone
 spin some text? Here is the current text:


 {{{

 3.2.5.  Date Option

    The Date Option indicates the creation time and date of a given
    resource representation.  It MAY be used in response and notify
    messages.  The integer value is the number of seconds, after midnight
    UTC, January 1, 1970.  This time format cannot represent time values
    prior to January 1, 1970.  The latest UTC time value that can be
    represented by a 31 bit integer value is 03:14:07 on January 19,
    2038.  Time values beyond 03:14:07 on January 19, 2038, are
    represented by 39 bit integer values which is sufficient to represent
    dates that should be enough for anyone.  For applications requiring
    more accuracy, a 48-bit integer MAY be included representing this
    value in milliseconds instead of seconds.

 }}}


 - And a more extreme question, do we really need a Date Option at all in
 CoAP? Most constrained devices do not keep absolute time.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/6#comment:1>
core <http://tools.ietf.org/core/>


From cabo@tzi.org  Wed Jun 30 03:15:35 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id A871E3A69CF for <core@core3.amsl.com>; Wed, 30 Jun 2010 03:15:35 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.958
X-Spam-Level: 
X-Spam-Status: No, score=-3.958 tagged_above=-999 required=5 tests=[AWL=-0.309, BAYES_50=0.001, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CpuVILXIMl2K for <core@core3.amsl.com>; Wed, 30 Jun 2010 03:15:34 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id E20323A67D0 for <core@ietf.org>; Wed, 30 Jun 2010 03:15:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5UAFbEn007948 for <core@ietf.org>; Wed, 30 Jun 2010 12:15:37 +0200 (CEST)
Received: from [10.0.1.2] (reingewinn.informatik.uni-bremen.de [134.102.218.123]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id ADEAABCC7;  Wed, 30 Jun 2010 12:15:37 +0200 (CEST)
From: Carsten Bormann <cabo@tzi.org>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Date: Wed, 30 Jun 2010 12:15:36 +0200
To: core <core@ietf.org>
Message-Id: <0F171401-6D1F-4E68-862F-E932CA4CDD87@tzi.org>
Mime-Version: 1.0 (Apple Message framework v1081)
X-Mailer: Apple Mail (2.1081)
Subject: [core] The way to coap-01
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 10:15:35 -0000

The Internet-Drafts deadline for Maastricht is getting closer 
(2010-07-12 for updates to existing drafts).
Authors of the various coap drafts (wg draft coap-00, coap-misc,
coap-observe) had a conversation yesterday, and we would like to proceed
the following way:

coap-01 will capture the stable parts where we have some
implementation experience, re-juggling the header to both simplify it
a bit and to enable further evolution.  coap-01 will have a complete
spec for the discovery support.  The remaining work on coap-01 will
progress along the tickets in the issue tracker.

coap-misc will stay around as a home for the more experimental parts,
such as TeRIs and the block option.  The intention here is to
frequently re-spin it to capture important new ideas and refine the
experimental sub-specifications.

coap-observe will be our answer to ticket #1.  We will obtain balanced
help from various communities (Apps/HTTP people; SE2.0; the WG itself,
of course) and will further develop the subscribe functionality into a
sub-specification that plugs into -01 the same way -misc does.

At the plugfest, the priority should be on coap-01, but we do want to
test the other drafts to help us decide which parts of them should go
into coap-02.  My personal take is that coap-02 will not change much
with respect to coap-01, but will integrate those parts of the
sub-specifications that are stable and desirable.  But we'll learn
more in Maastricht...

Comments are welcome.

Gruesse, Carsten


From trac@tools.ietf.org  Wed Jun 30 03:28:46 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id F36663A6814 for <core@core3.amsl.com>; Wed, 30 Jun 2010 03:28:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.464
X-Spam-Level: 
X-Spam-Status: No, score=-102.464 tagged_above=-999 required=5 tests=[AWL=0.136, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dN63dYXW6ji5 for <core@core3.amsl.com>; Wed, 30 Jun 2010 03:28:44 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id A60FC3A6A9A for <core@ietf.org>; Wed, 30 Jun 2010 03:28:44 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.72) (envelope-from <trac@tools.ietf.org>) id 1OTuXD-0000jd-Vx; Wed, 30 Jun 2010 03:28:52 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: cabo@tzi.org, zach@sensinode.com
X-Trac-Project: core
Date: Wed, 30 Jun 2010 10:28:51 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/13#comment:2
Message-ID: <060.81dd1c5d245077a2748e7c05e2b47e11@tools.ietf.org>
References: <051.300804b57e25ee8938c8652131f9965e@tools.ietf.org>
X-Trac-Ticket-ID: 13
In-Reply-To: <051.300804b57e25ee8938c8652131f9965e@tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: cabo@tzi.org, zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: Re: [core] #13: Need to define charset parameters for some MIME types
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 10:28:46 -0000

#13: Need to define charset parameters for some MIME types
--------------------------------+-------------------------------------------
 Reporter:  cabo@â€¦              |        Owner:        
     Type:  defect              |       Status:  closed
 Priority:  minor               |    Milestone:        
Component:  coap                |      Version:  1.0   
 Severity:  Active WG Document  |   Resolution:  fixed 
 Keywords:                      |  
--------------------------------+-------------------------------------------
Changes (by zach@â€¦):

  * status:  new => closed
  * resolution:  => fixed


Comment:

 - Added UTF-8 clarification for MIME types in the text/ class.

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/13#comment:2>
core <http://tools.ietf.org/core/>


From trac@tools.ietf.org  Wed Jun 30 03:39:11 2010
Return-Path: <trac@tools.ietf.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 091B93A6A7A for <core@core3.amsl.com>; Wed, 30 Jun 2010 03:39:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.464
X-Spam-Level: 
X-Spam-Status: No, score=-102.464 tagged_above=-999 required=5 tests=[AWL=0.136, BAYES_00=-2.599, NO_RELAYS=-0.001, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JohpfA50jF1W for <core@core3.amsl.com>; Wed, 30 Jun 2010 03:39:06 -0700 (PDT)
Received: from zinfandel.tools.ietf.org (unknown [IPv6:2001:1890:1112:1::2a]) by core3.amsl.com (Postfix) with ESMTP id D01103A68AD for <core@ietf.org>; Wed, 30 Jun 2010 03:38:55 -0700 (PDT)
Received: from localhost ([::1] helo=zinfandel.tools.ietf.org) by zinfandel.tools.ietf.org with esmtp (Exim 4.72) (envelope-from <trac@tools.ietf.org>) id 1OTuh6-0001B6-Ln; Wed, 30 Jun 2010 03:39:04 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: "core issue tracker" <trac@tools.ietf.org>
X-Trac-Version: 0.11.7
Precedence: bulk
Auto-Submitted: auto-generated
X-Mailer: Trac 0.11.7, by Edgewall Software
To: cabo@tzi.org, zach@sensinode.com
X-Trac-Project: core
Date: Wed, 30 Jun 2010 10:39:04 -0000
X-URL: http://tools.ietf.org/core/
X-Trac-Ticket-URL: http://trac.tools.ietf.org/wg/core/trac/ticket/15#comment:2
Message-ID: <062.9e94455b9b92598d26a57d43623ace79@tools.ietf.org>
References: <053.a0ff3d5e9c6477f269450091f9012627@tools.ietf.org>
X-Trac-Ticket-ID: 15
In-Reply-To: <053.a0ff3d5e9c6477f269450091f9012627@tools.ietf.org>
X-SA-Exim-Connect-IP: ::1
X-SA-Exim-Rcpt-To: cabo@tzi.org, zach@sensinode.com, core@ietf.org
X-SA-Exim-Mail-From: trac@tools.ietf.org
X-SA-Exim-Scanned: No (on zinfandel.tools.ietf.org); SAEximRunCond expanded to false
Cc: core@ietf.org
Subject: Re: [core] #15: Consolidate maximum sizes (encodings, options table, maximum datagram)
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 10:39:12 -0000

#15: Consolidate maximum sizes (encodings, options table, maximum datagram)
--------------------------------+-------------------------------------------
 Reporter:  hartke@â€¦            |       Owner:     
     Type:  defect              |      Status:  new
 Priority:  minor               |   Milestone:     
Component:  coap                |     Version:  1.0
 Severity:  Active WG Document  |    Keywords:     
--------------------------------+-------------------------------------------

Comment(by zach@â€¦):

 - The URI and option length discrepency is being fixed already.

 - Regarding the maximum message size, I propose text like this which is
 similar to that used by other UDP based protocols such as m-DNS:

 "The resulting datagram carrying a CoAP message MUST fit within a single
 MTU of that phsical interface, which is typically 1500 bytes for an
 Ethernet interface and 1280 bytes for a 6LoWPAN interface."

-- 
Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/15#comment:2>
core <http://tools.ietf.org/core/>


From kerlyn2001@gmail.com  Wed Jun 30 05:04:20 2010
Return-Path: <kerlyn2001@gmail.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1B4D23A6A9D for <core@core3.amsl.com>; Wed, 30 Jun 2010 05:04:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.532
X-Spam-Level: 
X-Spam-Status: No, score=-2.532 tagged_above=-999 required=5 tests=[AWL=0.068,  BAYES_00=-2.599]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mvcpeC8sMlo3 for <core@core3.amsl.com>; Wed, 30 Jun 2010 05:04:18 -0700 (PDT)
Received: from mail-gy0-f172.google.com (mail-gy0-f172.google.com [209.85.160.172]) by core3.amsl.com (Postfix) with ESMTP id 46E0E3A6A61 for <core@ietf.org>; Wed, 30 Jun 2010 05:04:18 -0700 (PDT)
Received: by gyh3 with SMTP id 3so344926gyh.31 for <core@ietf.org>; Wed, 30 Jun 2010 05:04:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=6NF+39Tw84Nx/TEvqedOz+3NHXgmn7WvlkZjwA/kGXA=; b=FEI8XbC58dU7O4B9vB5OPnLqGffjtVeSfG6UQVtqH24CtooFbsLmEjPKglw3vWTq/E QZx4sYZWjgh6H5jrIJ1zjk5p+hcS52zxzTmEvM+HzVo9T3c3xeTGeU+eRdBKnhSDPQC3 TR/nOONSrUFCZ51jpp+87CoBG+nrUmuNq7hzY=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=oeNY/aDms6M5pUdRBBw44n4U9jrS/7UbSk2hvGGd4upKpJWiqwdVkB/K8DQ6A9ZoOT dOFxk8E0Jzhrh4MkrkaE1Kw0XnML2UM1Bab7CrnI5YknDN8nfUrALdnvEnjquiY0ZfqN 8dC5Q4cuhoyPH/oWdNndpKGkTyikV5BeEeD5g=
MIME-Version: 1.0
Received: by 10.91.4.38 with SMTP id g38mr6342306agi.23.1277899466236; Wed, 30  Jun 2010 05:04:26 -0700 (PDT)
Received: by 10.90.117.6 with HTTP; Wed, 30 Jun 2010 05:04:26 -0700 (PDT)
In-Reply-To: <066.16f34c365d3d1300ca2e8c8231e06e48@tools.ietf.org>
References: <057.f3a3ec72477d421e9dab4a988579cc09@tools.ietf.org> <066.16f34c365d3d1300ca2e8c8231e06e48@tools.ietf.org>
Date: Wed, 30 Jun 2010 08:04:26 -0400
Message-ID: <AANLkTim6mShsIMLhAnAnG3l1TjSeF5f9BemZHT9DJUsV@mail.gmail.com>
From: Kerry Lynn <kerlyn2001@gmail.com>
To: core issue tracker <trac@tools.ietf.org>
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable
Cc: core@ietf.org
Subject: Re: [core] #7: CoAP ports
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 12:04:20 -0000

How is a 6LoWPAN's CoAP dynamic port discovered?  Doesn't
this imply a service discovery (e.g. mDNS) function?

-K-

On Wed, Jun 30, 2010 at 4:00 AM, core issue tracker <trac@tools.ietf.org> w=
rote:
> #7: CoAP ports
> --------------------------------+----------------------------------------=
---
> =A0Reporter: =A0zach@=85 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A0 =A0 =A0Owne=
r: =A0zach@=85
> =A0 =A0 Type: =A0defect =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A0 =A0 Status: =
=A0closed
> =A0Priority: =A0minor =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 =A0Milestone:
> Component: =A0coap =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A0 =A0Version:
> =A0Severity: =A0- =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 Resolution: =
=A0fixed
> =A0Keywords: =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0|
> --------------------------------+----------------------------------------=
---
> Changes (by zach@=85):
>
> =A0* status: =A0new =3D> closed
> =A0* resolution: =A0=3D> fixed
>
>
> Comment:
>
> =A0Fixed in coap-01 with the following text:
>
> =A0{{{
>
> =A04.2. =A0Default Port
>
> =A0 =A0The CoAP default port number [TBD1] MUST be supported by a server =
for
> =A0 =A0resource discovery (see Section 6) and SHOULD be supported for
> =A0 =A0providing access to other resources. =A0In addition other end-poin=
ts
> =A0 =A0may be hosted in the dynamic port space.
>
> =A0 =A0When a CoAP server is hosted by a 6LoWPAN node, it SHOULD support =
a
> =A0 =A0port in the 61616-61632 compressed UDP port space defined in
> =A0 =A0[RFC4944].
>
> =A0}}}
>
> --
> Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/7#comment:1>
> core <http://tools.ietf.org/core/>
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>

From zach@sensinode.com  Wed Jun 30 05:23:14 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id D9E0228C0D7 for <core@core3.amsl.com>; Wed, 30 Jun 2010 05:23:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.763
X-Spam-Level: 
X-Spam-Status: No, score=-2.763 tagged_above=-999 required=5 tests=[AWL=0.836,  BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HV-q3MQ7jUBA for <core@core3.amsl.com>; Wed, 30 Jun 2010 05:23:13 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 0EB723A69E4 for <core@ietf.org>; Wed, 30 Jun 2010 05:23:12 -0700 (PDT)
Received: from [62.145.172.52] ([62.145.172.52]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5UCNHdo021139 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 30 Jun 2010 15:23:18 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=windows-1252
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <AANLkTim6mShsIMLhAnAnG3l1TjSeF5f9BemZHT9DJUsV@mail.gmail.com>
Date: Wed, 30 Jun 2010 15:23:19 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <870B999E-1F42-43BF-910A-8CE0DEB1E172@sensinode.com>
References: <057.f3a3ec72477d421e9dab4a988579cc09@tools.ietf.org> <066.16f34c365d3d1300ca2e8c8231e06e48@tools.ietf.org> <AANLkTim6mShsIMLhAnAnG3l1TjSeF5f9BemZHT9DJUsV@mail.gmail.com>
To: Kerry Lynn <kerlyn2001@gmail.com>
X-Mailer: Apple Mail (2.1081)
Cc: core issue tracker <trac@tools.ietf.org>, core@ietf.org
Subject: Re: [core] #7: CoAP ports
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 12:23:14 -0000

Hi,

On Jun 30, 2010, at 3:04 PM, Kerry Lynn wrote:

> How is a 6LoWPAN's CoAP dynamic port discovered?  Doesn't
> this imply a service discovery (e.g. mDNS) function?

You can use CoAP resource discovery (Section 6) to find resources on =
other ports, which is required to be running on the default port, or you =
can use something like DNS-SD if you have no idea where to start looking =
by trying to resolve _coap._udp.local for example.=20

That reminds me, Section 6 needs to include text on how to include the =
port in the link-value in case it is not the default port.=20

Zach

>=20
> -K-
>=20
> On Wed, Jun 30, 2010 at 4:00 AM, core issue tracker =
<trac@tools.ietf.org> wrote:
>> #7: CoAP ports
>> =
--------------------------------+-----------------------------------------=
--
>>  Reporter:  zach@=85              |        Owner:  zach@=85
>>     Type:  defect              |       Status:  closed
>>  Priority:  minor               |    Milestone:
>> Component:  coap                |      Version:
>>  Severity:  -                   |   Resolution:  fixed
>>  Keywords:                      |
>> =
--------------------------------+-----------------------------------------=
--
>> Changes (by zach@=85):
>>=20
>>  * status:  new =3D> closed
>>  * resolution:  =3D> fixed
>>=20
>>=20
>> Comment:
>>=20
>>  Fixed in coap-01 with the following text:
>>=20
>>  {{{
>>=20
>>  4.2.  Default Port
>>=20
>>    The CoAP default port number [TBD1] MUST be supported by a server =
for
>>    resource discovery (see Section 6) and SHOULD be supported for
>>    providing access to other resources.  In addition other end-points
>>    may be hosted in the dynamic port space.
>>=20
>>    When a CoAP server is hosted by a 6LoWPAN node, it SHOULD support =
a
>>    port in the 61616-61632 compressed UDP port space defined in
>>    [RFC4944].
>>=20
>>  }}}
>>=20
>> --
>> Ticket URL: =
<http://trac.tools.ietf.org/wg/core/trac/ticket/7#comment:1>
>> core <http://tools.ietf.org/core/>
>>=20
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>>=20

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From Michael.Stuber@itron.com  Wed Jun 30 06:42:43 2010
Return-Path: <Michael.Stuber@itron.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 595963A6AD0 for <core@core3.amsl.com>; Wed, 30 Jun 2010 06:42:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.381
X-Spam-Level: 
X-Spam-Status: No, score=-1.381 tagged_above=-999 required=5 tests=[AWL=-1.196, BAYES_40=-0.185]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CHwBIUPc5upg for <core@core3.amsl.com>; Wed, 30 Jun 2010 06:42:38 -0700 (PDT)
Received: from mailer-1.itron.com (mailer-1.itron.com [198.182.8.121]) by core3.amsl.com (Postfix) with ESMTP id ADA353A6ACF for <core@ietf.org>; Wed, 30 Jun 2010 06:42:38 -0700 (PDT)
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Date: Wed, 30 Jun 2010 06:42:49 -0700
Message-ID: <05C6A38D732F1144A8C4016BA4416BFE02F97B12@SPO-EXVS-02.itron.com>
In-Reply-To: <066.b7025225d8e17c1a85e060f68a8588f5@tools.ietf.org>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: [core] #6: Date option text needs update
Thread-Index: AcsYMNko3bnkAGrNRdui329Qx6ZUlQAKLbyA
References: <057.da78d33bccd664276d29b01bb2121dd2@tools.ietf.org> <066.b7025225d8e17c1a85e060f68a8588f5@tools.ietf.org>
From: "Stuber, Michael" <Michael.Stuber@itron.com>
To: "core issue tracker" <trac@tools.ietf.org>, <fluffy@cisco.com>, <zach@sensinode.com>
Cc: core@ietf.org
Subject: Re: [core] #6: Date option text needs update
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 13:42:43 -0000

RG8gd2UgbmVlZCB1c2UgMTk3MCBhcyB0aGUgYmFzaXMgZm9yIEVwb2NoPyAgSSByZWFsaXplIGl0
J3MgdHJhZGl0aW9uYWwsIGJ1dCBpdCBzZWVtcyB0byBtZSB3ZXJlIGdpdmluZyB1cCBvdmVyIDEu
MiBiaWxsaW9uIHNlY29uZHMgd29ydGggb2YgYml0cyB3b3JyeWluZyBhYm91dCB0aGUgcGFzdCAt
LSBtb3JlIHRoYW4gMS8yIHRoZSBzcGFjZSBhdmFpbGFibGUgaW4gMzEgYml0cy4gIElmIHdlIGFy
ZSBnb2luZyB0byBpbmNsdWRlIGEgZGF0ZSBvcHRpb24sIHdlIHNob3VsZCBzZXJpb3VzbHkgY29u
c2lkZXIgYmFzaW5nIGl0IG9uIGEgbmV3IGVwb2NoLCBzdWNoIGFzIDIwMTAvMS8xIG9yIDIwMDAv
MS8xLg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGNvcmUtYm91bmNl
c0BpZXRmLm9yZyBbbWFpbHRvOmNvcmUtYm91bmNlc0BpZXRmLm9yZ10gT24gQmVoYWxmIE9mDQo+
IGNvcmUgaXNzdWUgdHJhY2tlcg0KPiBTZW50OiBXZWRuZXNkYXksIEp1bmUgMzAsIDIwMTAgMTo0
NyBBTQ0KPiBUbzogZmx1ZmZ5QGNpc2NvLmNvbTsgemFjaEBzZW5zaW5vZGUuY29tDQo+IENjOiBj
b3JlQGlldGYub3JnDQo+IFN1YmplY3Q6IFJlOiBbY29yZV0gIzY6IERhdGUgb3B0aW9uIHRleHQg
bmVlZHMgdXBkYXRlDQo+IA0KPiAjNjogRGF0ZSBvcHRpb24gdGV4dCBuZWVkcyB1cGRhdGUNCj4g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0N
Cj4gIFJlcG9ydGVyOiAgemFjaEDigKYgICAgICAgICAgICAgIHwgICAgICAgT3duZXI6ICBDdWxs
ZW4gSmVubmluZ3MNCj4gPGZsdWZmeUDigKY+DQo+ICAgICAgVHlwZTogIGRlZmVjdCAgICAgICAg
ICAgICAgfCAgICAgIFN0YXR1czogIG5ldw0KPiAgUHJpb3JpdHk6ICB0cml2aWFsICAgICAgICAg
ICAgIHwgICBNaWxlc3RvbmU6ICBjb2FwLTAxDQo+IENvbXBvbmVudDogIGNvYXAgICAgICAgICAg
ICAgICAgfCAgICAgVmVyc2lvbjoNCj4gIFNldmVyaXR5OiAgLSAgICAgICAgICAgICAgICAgICB8
ICAgIEtleXdvcmRzOg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLQ0KPiBDaGFuZ2VzIChieSB6YWNoQOKApik6DQo+IA0KPiAgICogbWls
ZXN0b25lOiAgPT4gY29hcC0wMQ0KPiANCj4gDQo+IENvbW1lbnQ6DQo+IA0KPiAgLSBUaGUgY3Vy
cmVudCB0ZXh0IGlzIGEgYml0IHRvbyBjb21wbGV4IGFuZCBoYXMgdGhyZWUgZGlmZmVyZW50IGxl
bmd0aHMuDQo+ICBDdXJyZW50IHRleHQgYmVsb3csIGhvdyBjYW4gd2UgbWFrZSB0aGlzIGEgc2lu
Z2xlIGxlbmd0aD8gQ291bGQgc29tZW9uZQ0KPiBzcGluIHNvbWUgdGV4dD8gSGVyZSBpcyB0aGUg
Y3VycmVudCB0ZXh0Og0KPiANCj4gDQo+ICB7e3sNCj4gDQo+ICAzLjIuNS4gIERhdGUgT3B0aW9u
DQo+IA0KPiAgICAgVGhlIERhdGUgT3B0aW9uIGluZGljYXRlcyB0aGUgY3JlYXRpb24gdGltZSBh
bmQgZGF0ZSBvZiBhIGdpdmVuDQo+ICAgICByZXNvdXJjZSByZXByZXNlbnRhdGlvbi4gIEl0IE1B
WSBiZSB1c2VkIGluIHJlc3BvbnNlIGFuZCBub3RpZnkNCj4gICAgIG1lc3NhZ2VzLiAgVGhlIGlu
dGVnZXIgdmFsdWUgaXMgdGhlIG51bWJlciBvZiBzZWNvbmRzLCBhZnRlcg0KPiBtaWRuaWdodA0K
PiAgICAgVVRDLCBKYW51YXJ5IDEsIDE5NzAuICBUaGlzIHRpbWUgZm9ybWF0IGNhbm5vdCByZXBy
ZXNlbnQgdGltZSB2YWx1ZXMNCj4gICAgIHByaW9yIHRvIEphbnVhcnkgMSwgMTk3MC4gIFRoZSBs
YXRlc3QgVVRDIHRpbWUgdmFsdWUgdGhhdCBjYW4gYmUNCj4gICAgIHJlcHJlc2VudGVkIGJ5IGEg
MzEgYml0IGludGVnZXIgdmFsdWUgaXMgMDM6MTQ6MDcgb24gSmFudWFyeSAxOSwNCj4gICAgIDIw
MzguICBUaW1lIHZhbHVlcyBiZXlvbmQgMDM6MTQ6MDcgb24gSmFudWFyeSAxOSwgMjAzOCwgYXJl
DQo+ICAgICByZXByZXNlbnRlZCBieSAzOSBiaXQgaW50ZWdlciB2YWx1ZXMgd2hpY2ggaXMgc3Vm
ZmljaWVudCB0bw0KPiByZXByZXNlbnQNCj4gICAgIGRhdGVzIHRoYXQgc2hvdWxkIGJlIGVub3Vn
aCBmb3IgYW55b25lLiAgRm9yIGFwcGxpY2F0aW9ucyByZXF1aXJpbmcNCj4gICAgIG1vcmUgYWNj
dXJhY3ksIGEgNDgtYml0IGludGVnZXIgTUFZIGJlIGluY2x1ZGVkIHJlcHJlc2VudGluZyB0aGlz
DQo+ICAgICB2YWx1ZSBpbiBtaWxsaXNlY29uZHMgaW5zdGVhZCBvZiBzZWNvbmRzLg0KPiANCj4g
IH19fQ0KPiANCj4gDQo+ICAtIEFuZCBhIG1vcmUgZXh0cmVtZSBxdWVzdGlvbiwgZG8gd2UgcmVh
bGx5IG5lZWQgYSBEYXRlIE9wdGlvbiBhdCBhbGwNCj4gaW4gIENvQVA/IE1vc3QgY29uc3RyYWlu
ZWQgZGV2aWNlcyBkbyBub3Qga2VlcCBhYnNvbHV0ZSB0aW1lLg0KPiANCj4gLS0NCj4gVGlja2V0
IFVSTDogPGh0dHA6Ly90cmFjLnRvb2xzLmlldGYub3JnL3dnL2NvcmUvdHJhYy90aWNrZXQvNiNj
b21tZW50OjE+DQo+IGNvcmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9jb3JlLz4NCj4gDQo+IF9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IGNvcmUgbWFp
bGluZyBsaXN0DQo+IGNvcmVAaWV0Zi5vcmcNCj4gaHR0cHM6Ly93d3cuaWV0Zi5vcmcvbWFpbG1h
bi9saXN0aW5mby9jb3JlDQo=

From pab@peoplepowerco.com  Wed Jun 30 07:23:03 2010
Return-Path: <pab@peoplepowerco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 21FAE3A6993 for <core@core3.amsl.com>; Wed, 30 Jun 2010 07:23:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.117
X-Spam-Level: 
X-Spam-Status: No, score=-0.117 tagged_above=-999 required=5 tests=[BAYES_20=-0.74, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id b8BX0Z-IyDpm for <core@core3.amsl.com>; Wed, 30 Jun 2010 07:23:02 -0700 (PDT)
Received: from mail-vw0-f44.google.com (mail-vw0-f44.google.com [209.85.212.44]) by core3.amsl.com (Postfix) with ESMTP id C7FDB3A6833 for <core@ietf.org>; Wed, 30 Jun 2010 07:23:01 -0700 (PDT)
Received: by vws10 with SMTP id 10so1078248vws.31 for <core@ietf.org>; Wed, 30 Jun 2010 07:23:09 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.220.45.144 with SMTP id e16mr3124282vcf.276.1277907788830;  Wed, 30 Jun 2010 07:23:08 -0700 (PDT)
Received: by 10.220.105.137 with HTTP; Wed, 30 Jun 2010 07:23:08 -0700 (PDT)
In-Reply-To: <05C6A38D732F1144A8C4016BA4416BFE02F97B12@SPO-EXVS-02.itron.com>
References: <057.da78d33bccd664276d29b01bb2121dd2@tools.ietf.org> <066.b7025225d8e17c1a85e060f68a8588f5@tools.ietf.org> <05C6A38D732F1144A8C4016BA4416BFE02F97B12@SPO-EXVS-02.itron.com>
Date: Wed, 30 Jun 2010 09:23:08 -0500
Message-ID: <AANLkTinnQyXRL5kFE8PvR0vAM90YguZoTYtAq9cdye64@mail.gmail.com>
From: Peter Bigot <pab@peoplepowerco.com>
To: "Stuber, Michael" <Michael.Stuber@itron.com>
Content-Type: multipart/alternative; boundary=0016e6471502cf1a79048a4017b8
Cc: core issue tracker <trac@tools.ietf.org>, core@ietf.org
Subject: Re: [core] #6: Date option text needs update
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 14:23:03 -0000

--0016e6471502cf1a79048a4017b8
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

I think dropping the Date option is a sound choice; it eliminates all sorts
of problems with inappropriate cross-device time comparisons, as well as
time zone and leap second maintenance and the implied existence of a
real-time clock.  The value of knowing when a message was formatted doesn't
seem very high (unlike the value of knowing when a particular observation
took place: but that's content, not header).

Times based on the POSIX epoch should be familiar to most people using
Internet protocols.  If a date option is preserved, I think we should have =
a
good reason for selecting a non-standard epoch that will require special
code to convert to something useful (as it is now, a developer can just use
ctime(3)).

Peter

On Wed, Jun 30, 2010 at 8:42 AM, Stuber, Michael
<Michael.Stuber@itron.com>wrote:

> Do we need use 1970 as the basis for Epoch?  I realize it's traditional,
> but it seems to me were giving up over 1.2 billion seconds worth of bits
> worrying about the past -- more than 1/2 the space available in 31 bits. =
 If
> we are going to include a date option, we should seriously consider basin=
g
> it on a new epoch, such as 2010/1/1 or 2000/1/1.
>
> > -----Original Message-----
> > From: core-bounces@ietf.org [mailto:core-bounces@ietf.org] On Behalf Of
> > core issue tracker
> > Sent: Wednesday, June 30, 2010 1:47 AM
> > To: fluffy@cisco.com; zach@sensinode.com
> > Cc: core@ietf.org
> > Subject: Re: [core] #6: Date option text needs update
> >
> > #6: Date option text needs update
> > --------------------------------+--------------------------------------=
-
> > --------------------------------+----
> >  Reporter:  zach@=85              |       Owner:  Cullen Jennings
> > <fluffy@=85>
> >      Type:  defect              |      Status:  new
> >  Priority:  trivial             |   Milestone:  coap-01
> > Component:  coap                |     Version:
> >  Severity:  -                   |    Keywords:
> > --------------------------------+--------------------------------------=
-
> > --------------------------------+----
> > Changes (by zach@=85):
> >
> >   * milestone:  =3D> coap-01
> >
> >
> > Comment:
> >
> >  - The current text is a bit too complex and has three different length=
s.
> >  Current text below, how can we make this a single length? Could someon=
e
> > spin some text? Here is the current text:
> >
> >
> >  {{{
> >
> >  3.2.5.  Date Option
> >
> >     The Date Option indicates the creation time and date of a given
> >     resource representation.  It MAY be used in response and notify
> >     messages.  The integer value is the number of seconds, after
> > midnight
> >     UTC, January 1, 1970.  This time format cannot represent time value=
s
> >     prior to January 1, 1970.  The latest UTC time value that can be
> >     represented by a 31 bit integer value is 03:14:07 on January 19,
> >     2038.  Time values beyond 03:14:07 on January 19, 2038, are
> >     represented by 39 bit integer values which is sufficient to
> > represent
> >     dates that should be enough for anyone.  For applications requiring
> >     more accuracy, a 48-bit integer MAY be included representing this
> >     value in milliseconds instead of seconds.
> >
> >  }}}
> >
> >
> >  - And a more extreme question, do we really need a Date Option at all
> > in  CoAP? Most constrained devices do not keep absolute time.
> >
> > --
> > Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/6#comment:1=
>
> > core <http://tools.ietf.org/core/>
> >
> > _______________________________________________
> > core mailing list
> > core@ietf.org
> > https://www.ietf.org/mailman/listinfo/core
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>

--0016e6471502cf1a79048a4017b8
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

I think dropping the Date option is a sound choice; it eliminates all sorts=
 of problems with inappropriate cross-device time comparisons, as well as t=
ime zone and leap second maintenance and the implied existence of a real-ti=
me clock.=A0 The value of knowing when a message was formatted doesn&#39;t =
seem very high (unlike the value of knowing when a particular observation t=
ook place: but that&#39;s content, not header).<br>
<br>Times based on the POSIX epoch should be familiar to most people using =
Internet protocols.=A0 If a date option is preserved, I think we should hav=
e a good reason for selecting a non-standard epoch that will require specia=
l code to convert to something useful (as it is now, a developer can just u=
se ctime(3)).<br>
<br>Peter<br><br><div class=3D"gmail_quote">On Wed, Jun 30, 2010 at 8:42 AM=
, Stuber, Michael <span dir=3D"ltr">&lt;<a href=3D"mailto:Michael.Stuber@it=
ron.com">Michael.Stuber@itron.com</a>&gt;</span> wrote:<br><blockquote clas=
s=3D"gmail_quote" style=3D"margin: 0pt 0pt 0pt 0.8ex; border-left: 1px soli=
d rgb(204, 204, 204); padding-left: 1ex;">
Do we need use 1970 as the basis for Epoch? =A0I realize it&#39;s tradition=
al, but it seems to me were giving up over 1.2 billion seconds worth of bit=
s worrying about the past -- more than 1/2 the space available in 31 bits. =
=A0If we are going to include a date option, we should seriously consider b=
asing it on a new epoch, such as 2010/1/1 or 2000/1/1.<br>

<div><div></div><div class=3D"h5"><br>
&gt; -----Original Message-----<br>
&gt; From: <a href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</=
a> [mailto:<a href=3D"mailto:core-bounces@ietf.org">core-bounces@ietf.org</=
a>] On Behalf Of<br>
&gt; core issue tracker<br>
&gt; Sent: Wednesday, June 30, 2010 1:47 AM<br>
&gt; To: <a href=3D"mailto:fluffy@cisco.com">fluffy@cisco.com</a>; <a href=
=3D"mailto:zach@sensinode.com">zach@sensinode.com</a><br>
&gt; Cc: <a href=3D"mailto:core@ietf.org">core@ietf.org</a><br>
&gt; Subject: Re: [core] #6: Date option text needs update<br>
&gt;<br>
&gt; #6: Date option text needs update<br>
&gt; --------------------------------+-------------------------------------=
--<br>
&gt; --------------------------------+----<br>
&gt; =A0Reporter: =A0zach@=85 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A0 =A0 Owne=
r: =A0Cullen Jennings<br>
&gt; &lt;fluffy@=85&gt;<br>
&gt; =A0 =A0 =A0Type: =A0defect =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A0 =A0Sta=
tus: =A0new<br>
&gt; =A0Priority: =A0trivial =A0 =A0 =A0 =A0 =A0 =A0 | =A0 Milestone: =A0co=
ap-01<br>
&gt; Component: =A0coap =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 =A0 Version:<b=
r>
&gt; =A0Severity: =A0- =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =A0 =A0Keyword=
s:<br>
&gt; --------------------------------+-------------------------------------=
--<br>
&gt; --------------------------------+----<br>
&gt; Changes (by zach@=85):<br>
&gt;<br>
&gt; =A0 * milestone: =A0=3D&gt; coap-01<br>
&gt;<br>
&gt;<br>
&gt; Comment:<br>
&gt;<br>
&gt; =A0- The current text is a bit too complex and has three different len=
gths.<br>
&gt; =A0Current text below, how can we make this a single length? Could som=
eone<br>
&gt; spin some text? Here is the current text:<br>
&gt;<br>
&gt;<br>
&gt; =A0{{{<br>
&gt;<br>
&gt; =A03.2.5. =A0Date Option<br>
&gt;<br>
&gt; =A0 =A0 The Date Option indicates the creation time and date of a give=
n<br>
&gt; =A0 =A0 resource representation. =A0It MAY be used in response and not=
ify<br>
&gt; =A0 =A0 messages. =A0The integer value is the number of seconds, after=
<br>
&gt; midnight<br>
&gt; =A0 =A0 UTC, January 1, 1970. =A0This time format cannot represent tim=
e values<br>
&gt; =A0 =A0 prior to January 1, 1970. =A0The latest UTC time value that ca=
n be<br>
&gt; =A0 =A0 represented by a 31 bit integer value is 03:14:07 on January 1=
9,<br>
&gt; =A0 =A0 2038. =A0Time values beyond 03:14:07 on January 19, 2038, are<=
br>
&gt; =A0 =A0 represented by 39 bit integer values which is sufficient to<br=
>
&gt; represent<br>
&gt; =A0 =A0 dates that should be enough for anyone. =A0For applications re=
quiring<br>
&gt; =A0 =A0 more accuracy, a 48-bit integer MAY be included representing t=
his<br>
&gt; =A0 =A0 value in milliseconds instead of seconds.<br>
&gt;<br>
&gt; =A0}}}<br>
&gt;<br>
&gt;<br>
&gt; =A0- And a more extreme question, do we really need a Date Option at a=
ll<br>
&gt; in =A0CoAP? Most constrained devices do not keep absolute time.<br>
&gt;<br>
&gt; --<br>
&gt; Ticket URL: &lt;<a href=3D"http://trac.tools.ietf.org/wg/core/trac/tic=
ket/6#comment:1" target=3D"_blank">http://trac.tools.ietf.org/wg/core/trac/=
ticket/6#comment:1</a>&gt;<br>
&gt; core &lt;<a href=3D"http://tools.ietf.org/core/" target=3D"_blank">htt=
p://tools.ietf.org/core/</a>&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; core mailing list<br>
&gt; <a href=3D"mailto:core@ietf.org">core@ietf.org</a><br>
&gt; <a href=3D"https://www.ietf.org/mailman/listinfo/core" target=3D"_blan=
k">https://www.ietf.org/mailman/listinfo/core</a><br>
_______________________________________________<br>
core mailing list<br>
<a href=3D"mailto:core@ietf.org">core@ietf.org</a><br>
<a href=3D"https://www.ietf.org/mailman/listinfo/core" target=3D"_blank">ht=
tps://www.ietf.org/mailman/listinfo/core</a><br>
</div></div></blockquote></div><br><div style=3D"visibility: hidden; displa=
y: inline;" id=3D"avg_ls_inline_popup"></div><style type=3D"text/css">#avg_=
ls_inline_popup {  position:absolute;  z-index:9999;  padding: 0px 0px;  ma=
rgin-left: 0px;  margin-top: 0px;  width: 240px;  overflow: hidden;  word-w=
rap: break-word;  color: black;  font-size: 10px;  text-align: left;  line-=
height: 13px;}</style>

--0016e6471502cf1a79048a4017b8--

From cabo@tzi.org  Wed Jun 30 08:01:06 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 80EF93A6834 for <core@core3.amsl.com>; Wed, 30 Jun 2010 08:01:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.214
X-Spam-Level: 
X-Spam-Status: No, score=-5.214 tagged_above=-999 required=5 tests=[AWL=1.035,  BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nUiDLq4ahVs1 for <core@core3.amsl.com>; Wed, 30 Jun 2010 08:01:05 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 263753A67F0 for <core@ietf.org>; Wed, 30 Jun 2010 08:01:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5UF189U016491 for <core@ietf.org>; Wed, 30 Jun 2010 17:01:08 +0200 (CEST)
Received: from [10.0.1.2] (reingewinn.informatik.uni-bremen.de [134.102.218.123]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 80329BF3E;  Wed, 30 Jun 2010 17:01:08 +0200 (CEST)
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0 (Apple Message framework v1081)
From: Carsten Bormann <cabo@tzi.org>
Date: Wed, 30 Jun 2010 17:01:07 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <4AC5FEA8-E822-44EA-BFD9-98B20E352E44@tzi.org>
References: <20100630145740.ECA563A6B18@core3.amsl.com>
To: core <core@ietf.org>
X-Mailer: Apple Mail (2.1081)
Subject: [core] Fwd: New Version Notification for draft-bormann-coap-misc-02
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 15:01:06 -0000

We said we were going to respin this frequently.
The most important addition is the proposal for a simplified/fixed =
option encoding (section 6).
This is an element that would go into coap-01, so feedback would be very =
welcome.

Gruesse, Carsten

Begin forwarded message:

> From: IETF I-D Submission Tool <idsubmission@ietf.org>
> Date: June 30, 2010 16:57:40 +0200
> To: cabo@tzi.org
> Cc: hartke@tzi.org
> Subject: New Version Notification for draft-bormann-coap-misc-02=20
>=20
>=20
> A new version of I-D, draft-bormann-coap-misc-02.txt has been =
successfully submitted by Carsten Bormann and posted to the IETF =
repository.
>=20
> Filename:	 draft-bormann-coap-misc
> Revision:	 02
> Title:		 Miscellaneous additions to CoAP
> Creation_date:	 2010-06-30
> WG ID:		 Independent Submission
> Number_of_pages: 24
>=20
> Abstract:
> This short I-D makes a number of partially interrelated proposals how
> to solve certain problems in the CoRE WG's main protocol, CoAP.
>=20
>=20
>=20
> The IETF Secretariat.
>=20


From pete.st.pierre@oracle.com  Wed Jun 30 10:32:57 2010
Return-Path: <pete.st.pierre@oracle.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 13BFD3A6A6E for <core@core3.amsl.com>; Wed, 30 Jun 2010 10:32:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.299
X-Spam-Level: 
X-Spam-Status: No, score=-5.299 tagged_above=-999 required=5 tests=[AWL=1.299,  BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, UNPARSEABLE_RELAY=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id LRCTrqgnBq9D for <core@core3.amsl.com>; Wed, 30 Jun 2010 10:32:50 -0700 (PDT)
Received: from rcsinet10.oracle.com (rcsinet10.oracle.com [148.87.113.121]) by core3.amsl.com (Postfix) with ESMTP id 874A93A6843 for <core@ietf.org>; Wed, 30 Jun 2010 10:32:50 -0700 (PDT)
Received: from rcsinet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by rcsinet10.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id o5UHWwfr007428 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 30 Jun 2010 17:33:00 GMT
Received: from acsmt354.oracle.com (acsmt354.oracle.com [141.146.40.154]) by rcsinet15.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o5UEq9mL007953; Wed, 30 Jun 2010 17:32:58 GMT
Received: from abhmt016.oracle.com by acsmt354.oracle.com with ESMTP id 370713281277919143; Wed, 30 Jun 2010 10:32:23 -0700
Received: from dhcp-umpk16-79-125.sfbay.sun.com (/129.146.79.125) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 30 Jun 2010 10:32:23 -0700
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: "Pete St. Pierre" <pete.st.pierre@oracle.com>
In-Reply-To: <4AC5FEA8-E822-44EA-BFD9-98B20E352E44@tzi.org>
Date: Wed, 30 Jun 2010 10:32:21 -0700
Content-Transfer-Encoding: quoted-printable
Message-Id: <400B7325-B378-44C5-9806-8EA2AB13529A@oracle.com>
References: <20100630145740.ECA563A6B18@core3.amsl.com> <4AC5FEA8-E822-44EA-BFD9-98B20E352E44@tzi.org>
To: Carsten Bormann <cabo@tzi.org>
X-Mailer: Apple Mail (2.1081)
X-Source-IP: acsmt354.oracle.com [141.146.40.154]
X-Auth-Type: Internal IP
X-CT-RefId: str=0001.0A090208.4C2B7FCA.0195:SCFMA4539814,ss=1,fgs=0
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification for draft-bormann-coap-misc-02
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 17:32:57 -0000

Is there a target publication date for coap-01?  If this is going to be =
the foundation for the plugfest, sooner would be preferable to later :-)

Cheers,=20
...Pete
On Jun 30, 2010, at 8:01 AM, Carsten Bormann wrote:

> We said we were going to respin this frequently.
> The most important addition is the proposal for a simplified/fixed =
option encoding (section 6).
> This is an element that would go into coap-01, so feedback would be =
very welcome.
>=20
> Gruesse, Carsten
>=20
> Begin forwarded message:
>=20
>> From: IETF I-D Submission Tool <idsubmission@ietf.org>
>> Date: June 30, 2010 16:57:40 +0200
>> To: cabo@tzi.org
>> Cc: hartke@tzi.org
>> Subject: New Version Notification for draft-bormann-coap-misc-02=20
>>=20
>>=20
>> A new version of I-D, draft-bormann-coap-misc-02.txt has been =
successfully submitted by Carsten Bormann and posted to the IETF =
repository.
>>=20
>> Filename:	 draft-bormann-coap-misc
>> Revision:	 02
>> Title:		 Miscellaneous additions to CoAP
>> Creation_date:	 2010-06-30
>> WG ID:		 Independent Submission
>> Number_of_pages: 24
>>=20
>> Abstract:
>> This short I-D makes a number of partially interrelated proposals how
>> to solve certain problems in the CoRE WG's main protocol, CoAP.
>>=20
>>=20
>>=20
>> The IETF Secretariat.
>>=20
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--
Pete St. Pierre
Pete.St.Pierre@oracle.com
Sun Labs
Oracle=20
16 Network Circle
Menlo Park, CA 94025


From zach@sensinode.com  Wed Jun 30 12:43:59 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 4CE9D3A6823 for <core@core3.amsl.com>; Wed, 30 Jun 2010 12:43:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.089
X-Spam-Level: 
X-Spam-Status: No, score=-3.089 tagged_above=-999 required=5 tests=[AWL=0.510,  BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lrzwyATfkAGF for <core@core3.amsl.com>; Wed, 30 Jun 2010 12:43:57 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 795A43A6782 for <core@ietf.org>; Wed, 30 Jun 2010 12:43:56 -0700 (PDT)
Received: from [192.168.1.3] (line-6948.dyn.kponet.fi [85.29.73.126]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o5UJi2wB009956 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 30 Jun 2010 22:44:03 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <400B7325-B378-44C5-9806-8EA2AB13529A@oracle.com>
Date: Wed, 30 Jun 2010 22:44:04 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <6098BA2D-690F-467A-82D4-FBC7FB257837@sensinode.com>
References: <20100630145740.ECA563A6B18@core3.amsl.com> <4AC5FEA8-E822-44EA-BFD9-98B20E352E44@tzi.org> <400B7325-B378-44C5-9806-8EA2AB13529A@oracle.com>
To: "Pete St. Pierre" <pete.st.pierre@oracle.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification for draft-bormann-coap-misc-02
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 19:43:59 -0000

My goal is to get it out by mid next week, I have already closed quite a =
few tickets and am probably about 50% done with the changes.  So far =
looking good.

We still have some work to do on finishing the proxy, HTTP mapping and =
discovery sections. The subscription proposal will be put into =
coap-observe for now as to keep coap-01 very stable. Quick =
comments/help/opinions as questions come up on the list will help us get =
tickets closed faster, thanks!=20

Zach=20

On Jun 30, 2010, at 8:32 PM, Pete St. Pierre wrote:

> Is there a target publication date for coap-01?  If this is going to =
be the foundation for the plugfest, sooner would be preferable to later =
:-)
>=20
> Cheers,=20
> ...Pete
> On Jun 30, 2010, at 8:01 AM, Carsten Bormann wrote:
>=20
>> We said we were going to respin this frequently.
>> The most important addition is the proposal for a simplified/fixed =
option encoding (section 6).
>> This is an element that would go into coap-01, so feedback would be =
very welcome.
>>=20
>> Gruesse, Carsten
>>=20
>> Begin forwarded message:
>>=20
>>> From: IETF I-D Submission Tool <idsubmission@ietf.org>
>>> Date: June 30, 2010 16:57:40 +0200
>>> To: cabo@tzi.org
>>> Cc: hartke@tzi.org
>>> Subject: New Version Notification for draft-bormann-coap-misc-02=20
>>>=20
>>>=20
>>> A new version of I-D, draft-bormann-coap-misc-02.txt has been =
successfully submitted by Carsten Bormann and posted to the IETF =
repository.
>>>=20
>>> Filename:	 draft-bormann-coap-misc
>>> Revision:	 02
>>> Title:		 Miscellaneous additions to CoAP
>>> Creation_date:	 2010-06-30
>>> WG ID:		 Independent Submission
>>> Number_of_pages: 24
>>>=20
>>> Abstract:
>>> This short I-D makes a number of partially interrelated proposals =
how
>>> to solve certain problems in the CoRE WG's main protocol, CoAP.
>>>=20
>>>=20
>>>=20
>>> The IETF Secretariat.
>>>=20
>>=20
>> _______________________________________________
>> core mailing list
>> core@ietf.org
>> https://www.ietf.org/mailman/listinfo/core
>=20
> --
> Pete St. Pierre
> Pete.St.Pierre@oracle.com
> Sun Labs
> Oracle=20
> 16 Network Circle
> Menlo Park, CA 94025
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From cabo@tzi.org  Wed Jun 30 12:58:21 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id B838F3A689D for <core@core3.amsl.com>; Wed, 30 Jun 2010 12:58:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.695
X-Spam-Level: 
X-Spam-Status: No, score=-5.695 tagged_above=-999 required=5 tests=[AWL=0.554,  BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AusEttMffPC2 for <core@core3.amsl.com>; Wed, 30 Jun 2010 12:58:21 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 9537C3A6891 for <core@ietf.org>; Wed, 30 Jun 2010 12:58:20 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5UJwOTE022244; Wed, 30 Jun 2010 21:58:24 +0200 (CEST)
Received: from [192.168.217.101] (p5489F311.dip.t-dialin.net [84.137.243.17]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 60ECAB427;  Wed, 30 Jun 2010 21:58:24 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <400B7325-B378-44C5-9806-8EA2AB13529A@oracle.com>
Date: Wed, 30 Jun 2010 21:58:22 +0200
Content-Transfer-Encoding: 7bit
Message-Id: <4B58C4AE-59C2-4C6A-9291-D18DEA3BF91C@tzi.org>
References: <20100630145740.ECA563A6B18@core3.amsl.com> <4AC5FEA8-E822-44EA-BFD9-98B20E352E44@tzi.org> <400B7325-B378-44C5-9806-8EA2AB13529A@oracle.com>
To: "Pete St. Pierre" <pete.st.pierre@oracle.com>
X-Mailer: Apple Mail (2.1081)
Cc: core <core@ietf.org>
Subject: Re: [core] Fwd: New Version Notification for draft-bormann-coap-misc-02
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 19:58:21 -0000

On Jun 30, 2010, at 19:32, Pete St. Pierre wrote:

> target publication date for coap-01?

The absolute deadline is July 12, because that is the I-D cutoff.
But I think Zach and friends will be way faster than that.

So how do you like Klaus' and my proposal for the option encoding?

Gruesse, Carsten


From cabo@tzi.org  Wed Jun 30 14:39:57 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C18523A690A for <core@core3.amsl.com>; Wed, 30 Jun 2010 14:39:57 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.721
X-Spam-Level: 
X-Spam-Status: No, score=-3.721 tagged_above=-999 required=5 tests=[AWL=-1.468, BAYES_50=0.001, HELO_EQ_DE=0.35, MIME_QP_LONG_LINE=1.396, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id K7Ni7Bv+O8g8 for <core@core3.amsl.com>; Wed, 30 Jun 2010 14:39:56 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 2BDDB3A6873 for <core@ietf.org>; Wed, 30 Jun 2010 14:39:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5ULdwEe027341; Wed, 30 Jun 2010 23:39:58 +0200 (CEST)
Received: from [192.168.217.101] (p5489F311.dip.t-dialin.net [84.137.243.17]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id 09E53B47D;  Wed, 30 Jun 2010 23:39:57 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <AANLkTinnQyXRL5kFE8PvR0vAM90YguZoTYtAq9cdye64@mail.gmail.com>
Date: Wed, 30 Jun 2010 23:39:56 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <A7E8E885-1860-4847-ADEC-922A12F13DE8@tzi.org>
References: <057.da78d33bccd664276d29b01bb2121dd2@tools.ietf.org> <066.b7025225d8e17c1a85e060f68a8588f5@tools.ietf.org> <05C6A38D732F1144A8C4016BA4416BFE02F97B12@SPO-EXVS-02.itron.com> <AANLkTinnQyXRL5kFE8PvR0vAM90YguZoTYtAq9cdye64@mail.gmail.com>
To: Peter Bigot <pab@peoplepowerco.com>
X-Mailer: Apple Mail (2.1081)
Cc: Michael Stuber <Michael.Stuber@itron.com>, core <core@ietf.org>
Subject: Re: [core] #6: Date option text needs update
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 21:39:57 -0000

On Jun 30, 2010, at 16:23, Peter Bigot wrote:

> special code to convert

Here is my public domain implementation of converting UTC epoch =
2010-01-01 to epoch 1970-01-01:

t +=3D 1262304000;

I think most people can figure out the inverse if we write this into the =
spec :-)

I agree that date representation is not an easy problem to handle right, =
but the amount of code for handling different epochs may not the =
limiting factor here.

Adding 40 years to the lifetime of the 32-bit version just postpones the =
problem. =20
Until 2146, that is (assuming an unsigned 32-bit value, which is what we =
have elsewhere in the protocol), or at least until 2078 (signed 32-bit).

On the other hand:=20
The date of a resource can be in the past.
There are very few resources on the Web that date before 1970-01-01, but =
many before 2010-01-01.

$ curl -I http://www.ietf.org/rfc/rfc2429.txt
HTTP/1.1 200 OK
Date: Wed, 30 Jun 2010 21:13:05 GMT
Server: Apache/2.2.4 (Linux/SUSE) mod_ssl/2.2.4 OpenSSL/0.9.8e PHP/5.2.6 =
with Suhosin-Patch mod_python/3.3.1 Python/2.5.1 mod_perl/2.0.3 =
Perl/v5.8.8
Last-Modified: Fri, 09 Oct 1998 22:01:08 GMT             <=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
ETag: "1caecdd-a89e-59363100"
Accept-Ranges: bytes
Content-Length: 43166
Vary: Accept-Encoding
Content-Type: text/plain

Since CoAP can be gatewayed into HTTP both ways, and might be added to =
systems that exist today, we should have a good answer on what to do =
with these old dates.

Fortunately, most of the applications of dates in CoAP itself can live =
with the inaccuracy introduced by leap seconds, so maybe we don't have =
to distinguish between monotonic time (TAI) and wall clock time (UTC).

Gruesse, Carsten


From pab@peoplepowerco.com  Wed Jun 30 15:00:33 2010
Return-Path: <pab@peoplepowerco.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id DCE643A6928 for <core@core3.amsl.com>; Wed, 30 Jun 2010 15:00:33 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.117
X-Spam-Level: 
X-Spam-Status: No, score=-0.117 tagged_above=-999 required=5 tests=[BAYES_20=-0.74, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nwDIifHF9tNp for <core@core3.amsl.com>; Wed, 30 Jun 2010 15:00:32 -0700 (PDT)
Received: from mail-vw0-f44.google.com (mail-vw0-f44.google.com [209.85.212.44]) by core3.amsl.com (Postfix) with ESMTP id 67DB13A659C for <core@ietf.org>; Wed, 30 Jun 2010 15:00:32 -0700 (PDT)
Received: by vws10 with SMTP id 10so1553700vws.31 for <core@ietf.org>; Wed, 30 Jun 2010 15:00:18 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.220.62.206 with SMTP id y14mr5124562vch.101.1277935218145;  Wed, 30 Jun 2010 15:00:18 -0700 (PDT)
Received: by 10.220.105.137 with HTTP; Wed, 30 Jun 2010 15:00:17 -0700 (PDT)
In-Reply-To: <A7E8E885-1860-4847-ADEC-922A12F13DE8@tzi.org>
References: <057.da78d33bccd664276d29b01bb2121dd2@tools.ietf.org> <066.b7025225d8e17c1a85e060f68a8588f5@tools.ietf.org> <05C6A38D732F1144A8C4016BA4416BFE02F97B12@SPO-EXVS-02.itron.com> <AANLkTinnQyXRL5kFE8PvR0vAM90YguZoTYtAq9cdye64@mail.gmail.com> <A7E8E885-1860-4847-ADEC-922A12F13DE8@tzi.org>
Date: Wed, 30 Jun 2010 17:00:17 -0500
Message-ID: <AANLkTimYuCbYFtgNE-rOd5CBSRdC3ZQRQF2873loB3-Q@mail.gmail.com>
From: Peter Bigot <pab@peoplepowerco.com>
To: Carsten Bormann <cabo@tzi.org>
Content-Type: multipart/alternative; boundary=e0cb4e887885b93a37048a467a62
Cc: Michael Stuber <Michael.Stuber@itron.com>, core <core@ietf.org>
Subject: Re: [core] #6: Date option text needs update
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 22:00:34 -0000

--e0cb4e887885b93a37048a467a62
Content-Type: text/plain; charset=ISO-8859-1

I recently moved, and my copy of Fielding's dissertation is in a box
somewhere, so a clarification please:

I read "creation time and date of a given resource representation"
literally, so that (for example) if I have a temperature sensor that I
sample every five minutes, when I respond to a request to get that resource
in a particular format (json or xml), I create the representation and set
the date to when I created that json or xml representation---not when I
collected the sample (which is either the resource, or an instance of the
resource, or something else that isn't the representation of the resource).

Similarly, if I have to flush a cache and subsequently need to recreate a
representation of a resource with the same value, I would have used the
current date/time on that fresh representation.

Is the date option intended to instead provide some resource-specific date
concept like Last-Modified?  If so, the description of the option needs to
be changed.

And/or the technical term "resource representation" needs to be clearly
defined somewhere.

Peter

On Wed, Jun 30, 2010 at 4:39 PM, Carsten Bormann <cabo@tzi.org> wrote:

> On Jun 30, 2010, at 16:23, Peter Bigot wrote:
>
> > special code to convert
>
> Here is my public domain implementation of converting UTC epoch 2010-01-01
> to epoch 1970-01-01:
>
> t += 1262304000;
>
> I think most people can figure out the inverse if we write this into the
> spec :-)
>
> I agree that date representation is not an easy problem to handle right,
> but the amount of code for handling different epochs may not the limiting
> factor here.
>
> Adding 40 years to the lifetime of the 32-bit version just postpones the
> problem.
> Until 2146, that is (assuming an unsigned 32-bit value, which is what we
> have elsewhere in the protocol), or at least until 2078 (signed 32-bit).
>
> On the other hand:
> The date of a resource can be in the past.
> There are very few resources on the Web that date before 1970-01-01, but
> many before 2010-01-01.
>
> $ curl -I http://www.ietf.org/rfc/rfc2429.txt
> HTTP/1.1 200 OK
> Date: Wed, 30 Jun 2010 21:13:05 GMT
> Server: Apache/2.2.4 (Linux/SUSE) mod_ssl/2.2.4 OpenSSL/0.9.8e PHP/5.2.6
> with Suhosin-Patch mod_python/3.3.1 Python/2.5.1 mod_perl/2.0.3 Perl/v5.8.8
> Last-Modified: Fri, 09 Oct 1998 22:01:08 GMT             <===========
> ETag: "1caecdd-a89e-59363100"
> Accept-Ranges: bytes
> Content-Length: 43166
> Vary: Accept-Encoding
> Content-Type: text/plain
>
> Since CoAP can be gatewayed into HTTP both ways, and might be added to
> systems that exist today, we should have a good answer on what to do with
> these old dates.
>
> Fortunately, most of the applications of dates in CoAP itself can live with
> the inaccuracy introduced by leap seconds, so maybe we don't have to
> distinguish between monotonic time (TAI) and wall clock time (UTC).
>
> Gruesse, Carsten
>
>

--e0cb4e887885b93a37048a467a62
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

I recently moved, and my copy of Fielding&#39;s dissertation is in a box so=
mewhere, so a clarification please:<br><br>I read &quot;creation time and d=
ate of a given resource representation&quot; literally, so that (for exampl=
e) if I have a temperature sensor that I sample every five minutes, when I =
respond to a request to get that resource in a particular format (json or x=
ml), I create the representation and set the date to when I created that js=
on or xml representation---not when I collected the sample (which is either=
 the resource, or an instance of the resource, or something else that isn&#=
39;t the representation of the resource).<br>
<br>Similarly, if I have to flush a cache and subsequently need to recreate=
 a representation of a resource with the same value, I would have used the =
current date/time on that fresh representation.<br><br>Is the date option i=
ntended to instead provide some resource-specific date concept like Last-Mo=
dified?=A0 If so, the description of the option needs to be changed.<br>
<br>And/or the technical term &quot;resource representation&quot; needs to =
be clearly defined somewhere.<br><br>Peter<br><br><div class=3D"gmail_quote=
">On Wed, Jun 30, 2010 at 4:39 PM, Carsten Bormann <span dir=3D"ltr">&lt;<a=
 href=3D"mailto:cabo@tzi.org">cabo@tzi.org</a>&gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin: 0pt 0pt 0pt 0.8ex; borde=
r-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">On Jun 30, 2010, =
at 16:23, Peter Bigot wrote:<br>
<br>
&gt; special code to convert<br>
<br>
Here is my public domain implementation of converting UTC epoch 2010-01-01 =
to epoch 1970-01-01:<br>
<br>
t +=3D 1262304000;<br>
<br>
I think most people can figure out the inverse if we write this into the sp=
ec :-)<br>
<br>
I agree that date representation is not an easy problem to handle right, bu=
t the amount of code for handling different epochs may not the limiting fac=
tor here.<br>
<br>
Adding 40 years to the lifetime of the 32-bit version just postpones the pr=
oblem.<br>
Until 2146, that is (assuming an unsigned 32-bit value, which is what we ha=
ve elsewhere in the protocol), or at least until 2078 (signed 32-bit).<br>
<br>
On the other hand:<br>
The date of a resource can be in the past.<br>
There are very few resources on the Web that date before 1970-01-01, but ma=
ny before 2010-01-01.<br>
<br>
$ curl -I <a href=3D"http://www.ietf.org/rfc/rfc2429.txt" target=3D"_blank"=
>http://www.ietf.org/rfc/rfc2429.txt</a><br>
HTTP/1.1 200 OK<br>
Date: Wed, 30 Jun 2010 21:13:05 GMT<br>
Server: Apache/2.2.4 (Linux/SUSE) mod_ssl/2.2.4 OpenSSL/0.9.8e PHP/5.2.6 wi=
th Suhosin-Patch mod_python/3.3.1 Python/2.5.1 mod_perl/2.0.3 Perl/v5.8.8<b=
r>
Last-Modified: Fri, 09 Oct 1998 22:01:08 GMT =A0 =A0 =A0 =A0 =A0 =A0 &lt;=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>
ETag: &quot;1caecdd-a89e-59363100&quot;<br>
Accept-Ranges: bytes<br>
Content-Length: 43166<br>
Vary: Accept-Encoding<br>
Content-Type: text/plain<br>
<br>
Since CoAP can be gatewayed into HTTP both ways, and might be added to syst=
ems that exist today, we should have a good answer on what to do with these=
 old dates.<br>
<br>
Fortunately, most of the applications of dates in CoAP itself can live with=
 the inaccuracy introduced by leap seconds, so maybe we don&#39;t have to d=
istinguish between monotonic time (TAI) and wall clock time (UTC).<br>

<br>
Gruesse, Carsten<br>
<br>
</blockquote></div><br>

--e0cb4e887885b93a37048a467a62--

From cabo@tzi.org  Wed Jun 30 16:41:59 2010
Return-Path: <cabo@tzi.org>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 63BEA3A6816 for <core@core3.amsl.com>; Wed, 30 Jun 2010 16:41:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -5.658
X-Spam-Level: 
X-Spam-Status: No, score=-5.658 tagged_above=-999 required=5 tests=[AWL=0.591,  BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nfJH7Yuc2D-E for <core@core3.amsl.com>; Wed, 30 Jun 2010 16:41:57 -0700 (PDT)
Received: from informatik.uni-bremen.de (mailhost.informatik.uni-bremen.de [IPv6:2001:638:708:30c9:209:3dff:fe00:7136]) by core3.amsl.com (Postfix) with ESMTP id 4B8E93A67CC for <core@ietf.org>; Wed, 30 Jun 2010 16:41:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at informatik.uni-bremen.de
Received: from smtp-fb3.informatik.uni-bremen.de (smtp-fb3.informatik.uni-bremen.de [134.102.224.120]) by informatik.uni-bremen.de (8.14.3/8.14.3) with ESMTP id o5UNfrgn000468; Thu, 1 Jul 2010 01:41:53 +0200 (CEST)
Received: from [192.168.217.101] (p5489F311.dip.t-dialin.net [84.137.243.17]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by smtp-fb3.informatik.uni-bremen.de (Postfix) with ESMTP id F054AB4A1;  Thu,  1 Jul 2010 01:41:52 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Carsten Bormann <cabo@tzi.org>
In-Reply-To: <AANLkTimYuCbYFtgNE-rOd5CBSRdC3ZQRQF2873loB3-Q@mail.gmail.com>
Date: Thu, 1 Jul 2010 01:41:51 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <882A03D5-CD6F-4B22-A33D-B02CD5C31F5D@tzi.org>
References: <057.da78d33bccd664276d29b01bb2121dd2@tools.ietf.org> <066.b7025225d8e17c1a85e060f68a8588f5@tools.ietf.org> <05C6A38D732F1144A8C4016BA4416BFE02F97B12@SPO-EXVS-02.itron.com> <AANLkTinnQyXRL5kFE8PvR0vAM90YguZoTYtAq9cdye64@mail.gmail.com> <A7E8E885-1860-4847-ADEC-922A12F13DE8@tzi.org> <AANLkTimYuCbYFtgNE-rOd5CBSRdC3ZQRQF2873loB3-Q@mail.gmail.com>
To: Peter Bigot <pab@peoplepowerco.com>
X-Mailer: Apple Mail (2.1081)
Cc: Michael Stuber <Michael.Stuber@itron.com>, core <core@ietf.org>
Subject: Re: [core] #6: Date option text needs update
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 30 Jun 2010 23:41:59 -0000

On Jul 1, 2010, at 00:00, Peter Bigot wrote:

> I recently moved, and my copy of Fielding's dissertation is in a box =
somewhere,

http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm

It is not quite clear to me whether the CoAP Date option wants to be an =
HTTP Date header (14.18 in 2616, 9.3 in =
draft-ietf-httpbis-p1-messaging-09.txt) or a Last-Modified header (14.29 =
in 2616, 6.6 in draft-ietf-httpbis-p4-conditional-09.txt).

I think the latter may have been intended.

Which one/what do we need?  HTTP has both for a reason.  Can we live =
with just one?  A different one?

Gruesse, Carsten


From szymon.sasin@sensinode.com  Wed Jun 30 23:22:34 2010
Return-Path: <szymon.sasin@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1F3C83A67AB for <core@core3.amsl.com>; Wed, 30 Jun 2010 23:22:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.599
X-Spam-Level: 
X-Spam-Status: No, score=-3.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id UhOnGUmH5XWC for <core@core3.amsl.com>; Wed, 30 Jun 2010 23:22:31 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id 907D13A67A1 for <core@ietf.org>; Wed, 30 Jun 2010 23:22:29 -0700 (PDT)
Received: from [192.168.0.65] (82-128-196-163-Torikatu-TR1.suomi.net [82.128.196.163]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o616MasG028232 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <core@ietf.org>; Thu, 1 Jul 2010 09:22:37 +0300
Message-ID: <4C2C3432.80606@sensinode.com>
Date: Thu, 01 Jul 2010 09:22:42 +0300
From: Szymon <szymon.sasin@sensinode.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.10) Gecko/20100512 Lightning/1.0b1 Thunderbird/3.0.5
MIME-Version: 1.0
To: core@ietf.org
References: <057.da78d33bccd664276d29b01bb2121dd2@tools.ietf.org>	<066.b7025225d8e17c1a85e060f68a8588f5@tools.ietf.org>	<05C6A38D732F1144A8C4016BA4416BFE02F97B12@SPO-EXVS-02.itron.com>	<AANLkTinnQyXRL5kFE8PvR0vAM90YguZoTYtAq9cdye64@mail.gmail.com> <A7E8E885-1860-4847-ADEC-922A12F13DE8@tzi.org>
In-Reply-To: <A7E8E885-1860-4847-ADEC-922A12F13DE8@tzi.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Subject: Re: [core] #6: Date option text needs update
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 01 Jul 2010 06:22:34 -0000

Hi.

I guess we can assume that sensor devices, that will be using CoAP, are 
going to create (measure) resources, not get it from a past, I can not 
imagine a case that sensor device would need date before 2010(?). We 
could say that Date option can not be used for time before 2010, it 
should not do a problem.

How about defining relative date. It would say to a requester how many 
seconds ago (from receiving such a request), resource was updated. It 
could be done by defining Date as a signed integer and whether it is 
less that zero then it is relative. It could solve problem of not 
synchronized clock on sensor devices or of not having such a clock. When 
cashing, proxy could change it into absolute date.

Szymon Sasin


On 1.7.2010 0:39, Carsten Bormann wrote:
> On Jun 30, 2010, at 16:23, Peter Bigot wrote:
>
>    
>> special code to convert
>>      
> Here is my public domain implementation of converting UTC epoch 2010-01-01 to epoch 1970-01-01:
>
> t += 1262304000;
>
> I think most people can figure out the inverse if we write this into the spec :-)
>
> I agree that date representation is not an easy problem to handle right, but the amount of code for handling different epochs may not the limiting factor here.
>
> Adding 40 years to the lifetime of the 32-bit version just postpones the problem.
> Until 2146, that is (assuming an unsigned 32-bit value, which is what we have elsewhere in the protocol), or at least until 2078 (signed 32-bit).
>
> On the other hand:
> The date of a resource can be in the past.
> There are very few resources on the Web that date before 1970-01-01, but many before 2010-01-01.
>
> $ curl -I http://www.ietf.org/rfc/rfc2429.txt
> HTTP/1.1 200 OK
> Date: Wed, 30 Jun 2010 21:13:05 GMT
> Server: Apache/2.2.4 (Linux/SUSE) mod_ssl/2.2.4 OpenSSL/0.9.8e PHP/5.2.6 with Suhosin-Patch mod_python/3.3.1 Python/2.5.1 mod_perl/2.0.3 Perl/v5.8.8
> Last-Modified: Fri, 09 Oct 1998 22:01:08 GMT<===========
> ETag: "1caecdd-a89e-59363100"
> Accept-Ranges: bytes
> Content-Length: 43166
> Vary: Accept-Encoding
> Content-Type: text/plain
>
> Since CoAP can be gatewayed into HTTP both ways, and might be added to systems that exist today, we should have a good answer on what to do with these old dates.
>
> Fortunately, most of the applications of dates in CoAP itself can live with the inaccuracy introduced by leap seconds, so maybe we don't have to distinguish between monotonic time (TAI) and wall clock time (UTC).
>
> Gruesse, Carsten
>
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core
>    


From zach@sensinode.com  Wed Jun 30 23:23:48 2010
Return-Path: <zach@sensinode.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 491853A67A1 for <core@core3.amsl.com>; Wed, 30 Jun 2010 23:23:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.599
X-Spam-Level: 
X-Spam-Status: No, score=-3.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_LOW=-1]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6vGZZC0xaxse for <core@core3.amsl.com>; Wed, 30 Jun 2010 23:23:47 -0700 (PDT)
Received: from auth-smtp.nebula.fi (auth-smtp.nebula.fi [217.30.180.105]) by core3.amsl.com (Postfix) with ESMTP id CA30C3A67AB for <core@ietf.org>; Wed, 30 Jun 2010 23:23:46 -0700 (PDT)
Received: from [213.145.207.121] ([213.145.207.121]) (authenticated bits=0) by auth-smtp.nebula.fi (8.13.4/8.13.4) with ESMTP id o616Nrp6028410 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Thu, 1 Jul 2010 09:23:54 +0300
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=us-ascii
From: Zach Shelby <zach@sensinode.com>
In-Reply-To: <882A03D5-CD6F-4B22-A33D-B02CD5C31F5D@tzi.org>
Date: Thu, 1 Jul 2010 09:23:54 +0300
Content-Transfer-Encoding: quoted-printable
Message-Id: <45CA14FF-78D0-432D-AD03-CC4C68360DB1@sensinode.com>
References: <057.da78d33bccd664276d29b01bb2121dd2@tools.ietf.org> <066.b7025225d8e17c1a85e060f68a8588f5@tools.ietf.org> <05C6A38D732F1144A8C4016BA4416BFE02F97B12@SPO-EXVS-02.itron.com> <AANLkTinnQyXRL5kFE8PvR0vAM90YguZoTYtAq9cdye64@mail.gmail.com> <A7E8E885-1860-4847-ADEC-922A12F13DE8@tzi.org> <AANLkTimYuCbYFtgNE-rOd5CBSRdC3ZQRQF2873loB3-Q@mail.gmail.com> <882A03D5-CD6F-4B22-A33D-B02CD5C31F5D@tzi.org>
To: Carsten Bormann <cabo@tzi.org>
X-Mailer: Apple Mail (2.1081)
Cc: Michael Stuber <Michael.Stuber@itron.com>, core <core@ietf.org>
Subject: Re: [core] #6: Date option text needs update
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 01 Jul 2010 06:23:48 -0000

On Jul 1, 2010, at 2:41 AM, Carsten Bormann wrote:

> On Jul 1, 2010, at 00:00, Peter Bigot wrote:
>=20
>> I recently moved, and my copy of Fielding's dissertation is in a box =
somewhere,
>=20
> http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
>=20
> It is not quite clear to me whether the CoAP Date option wants to be =
an HTTP Date header (14.18 in 2616, 9.3 in =
draft-ietf-httpbis-p1-messaging-09.txt) or a Last-Modified header (14.29 =
in 2616, 6.6 in draft-ietf-httpbis-p4-conditional-09.txt).
>=20
> I think the latter may have been intended.
>=20
> Which one/what do we need?  HTTP has both for a reason.  Can we live =
with just one?  A different one?

Or do we need one at all?=20

As this seems to be an experimental subject at this point, and I am not =
really sure if anybody is going to use this in real constrained devices. =
How about we move the date option out of coap-xx and into coap-misc =
while we are pondering this? I would like to keep only the options we =
are really sure about in the base spec. How does that sound?

Zach

>=20
> Gruesse, Carsten
>=20
> _______________________________________________
> core mailing list
> core@ietf.org
> https://www.ietf.org/mailman/listinfo/core

--=20
Zach Shelby, Chief Nerd, Sensinode Ltd.
http://zachshelby.org  - My blog "On the Internet of Things"
http://6lowpan.net - My book "6LoWPAN: The Wireless Embedded Internet"
Mobile: +358 40 7796297


From vipul.x.gupta@oracle.com  Wed Jun 30 23:53:36 2010
Return-Path: <vipul.x.gupta@oracle.com>
X-Original-To: core@core3.amsl.com
Delivered-To: core@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 972943A67C3 for <core@core3.amsl.com>; Wed, 30 Jun 2010 23:53:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.432
X-Spam-Level: 
X-Spam-Status: No, score=-4.432 tagged_above=-999 required=5 tests=[AWL=-0.433, BAYES_50=0.001, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id D-jJ2cUINyHA for <core@core3.amsl.com>; Wed, 30 Jun 2010 23:53:35 -0700 (PDT)
Received: from rcsinet10.oracle.com (rcsinet10.oracle.com [148.87.113.121]) by core3.amsl.com (Postfix) with ESMTP id 9322C3A67A1 for <core@ietf.org>; Wed, 30 Jun 2010 23:53:35 -0700 (PDT)
Received: from acsinet15.oracle.com (acsinet15.oracle.com [141.146.126.227]) by rcsinet10.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id o616rjO1013154 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for <core@ietf.org>; Thu, 1 Jul 2010 06:53:46 GMT
Received: from acsmt354.oracle.com (acsmt354.oracle.com [141.146.40.154]) by acsinet15.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o5UILLpp014768 for <core@ietf.org>; Thu, 1 Jul 2010 06:53:44 GMT
Received: from abhmt006.oracle.com by acsmt353.oracle.com with ESMTP id 372695441277967223; Wed, 30 Jun 2010 23:53:43 -0700
Received: from [10.0.1.6] (/67.124.151.163) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 30 Jun 2010 23:53:42 -0700
From: Vipul Gupta <vipul.x.gupta@oracle.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Date: Wed, 30 Jun 2010 23:53:40 -0700
Message-Id: <8977BB27-E20B-4CA6-BB4A-655984542574@oracle.com>
To: core@ietf.org
Mime-Version: 1.0 (Apple Message framework v1081)
X-Mailer: Apple Mail (2.1081)
X-Source-IP: acsmt354.oracle.com [141.146.40.154]
X-Auth-Type: Internal IP
X-CT-RefId: str=0001.0A090201.4C2C3B78.0189:SCFMA4539814,ss=1,fgs=0
Cc: Vipul Gupta <vipul.x.gupta@oracle.com>
Subject: [core] CoRE v/s Compressed HTTP
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/core>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 01 Jul 2010 06:53:36 -0000

I've been following the mailing list discussion for some time now and
even after reading through draft-ietf-core-coap-00, I'm unable to see 
the compelling justification for a brand new protocol over using 
compressed HTTP as a starting point which is what Brian's original 
draft (http://tools.ietf.org/html/draft-frank-6lowapp-chopan-00) did. 

I can't help but feel an uneasy sense a Deja Vu. I'm reminded of the 
early days of the WAP forum which initially took the stance that 
"standard" Internet protocols were too heavyweight for phones and set 
about defining its own set of incompatible protocols. I'm particularly 
aware of the security work where the forum defined WTLS as a "wireless" 
version of TLS (the resuse of the TLS acronym seemed like a marketing 
ploy because the two protocols were incompatible and some of the 
incompatibilities introduced security vulnerabilities in WTLS). Our 
work at Sun Labs on SSL/TLS for small devices (Palm PDAs and subsequently
sensor nodes as small as the Berkeley mote[1][2]) showed otherwise. We 
demonstrated that one could profile SSL/TLS appropriately so it could 
still be used on the wireless devices of the day while maintaining 
compatibility with the large majority of existing deployments. Eventually, 
the right thing to do turned out to be the incorporation of Elliptic 
Curve Cryptography (ECC) the public key cryptosystem used in WTLS, 
into TLS (RFC 4492). This is now implemented in OpenSSL/Apache and 
Firefox, IE and offers meaningful performance benefits even for 
regular/unconstrained hosts [3].

I see strong parallels between adding ECC key exchange to TLS and 
defining header compression for HTTP. I wonder whether there would 
still be a place for COAP as currently defined if compressed HTTP 
were to become a standard. To me, the following seems like a better 
approach:

- Define header compression for HTTP which has the potential of being 
 very useful even for regular/unconstrained browsers and servers 
 interacting over TCP (Note that HTTP header compression is an 
 important component of SPDY, http://en.wikipedia.org/wiki/SPDY).

- Define a profile for compressed HTTP to be used in COAP, e.g. 
 subset of headers to be supported, restrictions on the size of 
 compressed messages so they can be carried over UDP, nailing 
 down the content of specific messages like subscriptions/
 notifications and check-in (as in the chopan 
 draft). The Webhooks approach (http://webhooks.org, 
 http://wiki.webhooks.org/RESTful-WebHooks) seems clean 
 and simple but certain aspects of subscriptions/notifications are 
 currently underspecified.

- Define how to carry compressed HTTP over UDP, e.g. handling of 
 retransmissions, congestion control, transaction IDs, etc

This approach seems to have several advantages -- it makes HTTP mapping 
easier, frees up the WG to devote its time to other important issues 
(nailing down the content of subscription/notification messages, 
discovery etc), and once regular browsers and servers adopt HTTP header 
compression (Chrome already seems to have some support for this) it 
makes true end-to-end security between COAP devices and the existing 
Web a real possibility.

Am I alone in feeling this way? What am I missing?

vipul
---
http://labs.oracle.com/people/mybio.php?uid=32495

[1] http://www.cs.plu.edu/courses/netsec/arts/coms.pdf
[2] http://cents.cs.berkeley.edu/retreats/winter_2005/SSL_on_motes.pdf
[3] http://labs.oracle.com/projects/crypto/ecc-ssl-ndss2004.pdf
