diff options
12 files changed, 31747 insertions, 0 deletions
@@ -17,3 +17,6 @@ We have a tiny collection of tests which can be pointed at specific servers. In ``` to run all of the tests! + +https://github.com/dmfs/davwiki/wiki +https://developers.google.com/google-apps/calendar/caldav/v2/guide diff --git a/lib/caldav/errors.ts b/lib/caldav/errors.ts new file mode 100644 index 0000000..1b58a6f --- /dev/null +++ b/lib/caldav/errors.ts @@ -0,0 +1,40 @@ +(function(module, ns) { + + Errors = {}; + + /** + * Errors typically are for front-end routing purposes so the important + * part really is just the name and (maybe) the symbol... These are really + * intended to be consumed by name... So once a name has been assigned it + * should never be modified. + */ + [ + { symbol: 'Authentication', name: 'authentication' }, + { symbol: 'InvalidEntrypoint', name: 'invalid-entrypoint' }, + { symbol: 'ServerFailure', name: 'server-failure' }, + { symbol: 'Unknown', name: 'unknown' } + ].forEach(function createError(def) { + var obj = Errors[def.symbol] = function(message) { + this.message = message; + this.name = 'caldav-' + def.name; + + try { + throw new Error(); + } catch (e) { + this.stack = e.stack; + } + }; + + // just so instanceof Error works + obj.prototype = Object.create(Error.prototype); + }); + + module.exports = Errors; + +}.apply( + this, + (this.Caldav) ? + [Caldav('errors'), Caldav] : + [module, require('./caldav')] +)); + diff --git a/rfcs/403 on OSX Contact server · Issue #68 · gaye_dav.html b/rfcs/403 on OSX Contact server · Issue #68 · gaye_dav.html new file mode 100644 index 0000000..b777078 --- /dev/null +++ b/rfcs/403 on OSX Contact server · Issue #68 · gaye_dav.html @@ -0,0 +1,1860 @@ +<!DOCTYPE html> +<html class="" lang="en"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta http-equiv="Content-Language" content="en"> + + + <title>403 on OSX Contact server · Issue #68 · gaye/dav</title> + <link rel="search" type="application/opensearchdescription+xml" href="https://github.com/opensearch.xml" title="GitHub"> + <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> + <link rel="apple-touch-icon" sizes="57x57" href="urn:not-loaded:https://github.com/apple-touch-icon-114.png"> + <link rel="apple-touch-icon" sizes="114x114" href="urn:not-loaded:https://github.com/apple-touch-icon-114.png"> + <link rel="apple-touch-icon" sizes="72x72" href="urn:not-loaded:https://github.com/apple-touch-icon-144.png"> + <link rel="apple-touch-icon" sizes="144x144" href="urn:not-loaded:https://github.com/apple-touch-icon-144.png"> + <meta property="fb:app_id" content="1401488693436528"> + + <meta content="@github" name="twitter:site"><meta content="summary" name="twitter:card"><meta content="403 on OSX Contact server · Issue #68 · gaye/dav" name="twitter:title"><meta content="Hi, + +First of all, this may or may not be an actual issue. I don't have any knowledge of the carddav protocol, so maybe all I need is a little guidance :) + +Context: + + +I have a running carddav server, " name="twitter:description"><meta content="https://avatars1.githubusercontent.com/u/1143093?v=3&s=400" name="twitter:image:src"> + <meta content="GitHub" property="og:site_name"><meta content="object" property="og:type"><meta content="https://avatars1.githubusercontent.com/u/1143093?v=3&s=400" property="og:image"><meta content="403 on OSX Contact server · Issue #68 · gaye/dav" property="og:title"><meta content="https://github.com/gaye/dav/issues/68" property="og:url"><meta content="Hi, + +First of all, this may or may not be an actual issue. I don't have any knowledge of the carddav protocol, so maybe all I need is a little guidance :) + +Context: + + +I have a running carddav server, based on the OSX server that's availa..." property="og:description"> + <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> + <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> + <link rel="assets" href="https://assets-cdn.github.com/"> + <link rel="web-socket" href="wss://live.github.com/_sockets/MTk4OTk5OjE1MmZhNDI3Y2IxNzUxNTU1MDhkZGRhODZmMTQzMDJmOmRhYzYxM2U5ZTdhNjFiOTc1NDU0NWM3MzQzYmRhYzhhOTExMmIwODJlMzBlNDJiYWNiYWM4ZmUyYmFlNWYzNTQ=--dfc678080551a360b963346f2f039f1ebe9613ff"> + <meta name="pjax-timeout" content="1000"> + <link rel="sudo-modal" href="https://github.com/sessions/sudo_modal"> + + <meta name="msapplication-TileImage" content="/windows-tile.png"> + <meta name="msapplication-TileColor" content="#ffffff"> + <meta name="selected-link" value="repo_issues" data-pjax-transient=""> + <meta name="google-analytics" content="UA-3769691-2"> + + <meta content="collector.githubapp.com" name="octolytics-host"><meta content="collector-cdn.github.com" name="octolytics-script-host"><meta content="github" name="octolytics-app-id"><meta content="53D0FC9F:1418:B85520B:552EA865" name="octolytics-dimension-request_id"><meta content="198999" name="octolytics-actor-id"><meta content="mcepl" name="octolytics-actor-login"><meta content="26667c59118a81b548139a896fa111ae07b11934d67d7ed9d1350c5adbca76a4" name="octolytics-actor-hash"> + + <meta content="Rails, view, issues#show" name="analytics-event"> + <meta class="js-ga-set" name="dimension1" content="Logged In"> + <meta class="js-ga-set" name="dimension2" content="Header v3"> + <meta name="is-dotcom" content="true"> + <meta name="hostname" content="github.com"> + <meta name="user-login" content="mcepl"> + + + <link rel="icon" type="image/x-icon" href="index_files/favicon_ico"> + + + <meta content="authenticity_token" name="csrf-param"> +<meta content="mr+qDLv6eLmSirFeSCKL5UYVv2Sp+DLrds8ZDXglh5X8wZPAauBapUi2P3UgSY8S7bGYojihCzZyO3y743Xo7A==" name="csrf-token"> + + <style media="all" rel="stylesheet">/* Effective stylesheet produced by snapshot save */
+html { font-family: sans-serif; }
+body { margin: 0px; }
+article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; }
+audio:not([controls]) { display: none; height: 0px; }
+a { background: transparent none repeat scroll 0% 0%; }
+a:active, a:hover { outline: 0px none; }
+b, strong { font-weight: bold; }
+h1 { font-size: 2em; margin: 0.67em 0px; }
+img { border: 0px none; }
+svg:not(:root) { overflow: hidden; }
+pre { overflow: auto; }
+code, kbd, pre, samp { font-family: monospace,monospace; font-size: 1em; }
+button, input, optgroup, select, textarea { color: inherit; font: inherit; margin: 0px; }
+button { overflow: visible; }
+button, select { text-transform: none; }
+button, html input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; }
+button::-moz-focus-inner, input::-moz-focus-inner { border: 0px none; padding: 0px; }
+input { line-height: normal; }
+input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0px; }
+textarea { overflow: auto; }
+* { box-sizing: border-box; }
+input, select, textarea, button { font: 13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"; }
+body { font: 13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255); }
+a { color: rgb(65, 131, 196); text-decoration: none; }
+a:hover, a:active { text-decoration: underline; }
+hr::before, .rule::before { display: table; content: ""; }
+hr::after, .rule::after { display: table; clear: both; content: ""; }
+h1, h2, h3, h4, h5, h6 { margin-top: 15px; margin-bottom: 15px; line-height: 1.1; }
+h1 { font-size: 30px; }
+h2 { font-size: 21px; }
+h3 { font-size: 16px; }
+.text-muted { color: rgb(153, 153, 153); }
+.text-emphasized { font-weight: bold; color: rgb(51, 51, 51); }
+ul, ol { padding: 0px; margin-top: 0px; margin-bottom: 0px; }
+tt, code { font-family: Consolas,"Liberation Mono",Menlo,Courier,monospace; font-size: 12px; }
+pre { margin-top: 0px; margin-bottom: 0px; font: 12px Consolas,"Liberation Mono",Menlo,Courier,monospace; }
+.container { width: 980px; margin-right: auto; margin-left: auto; }
+.container::before { display: table; content: ""; }
+.container::after { display: table; clear: both; content: ""; }
+.columns::before { display: table; content: ""; }
+.columns::after { display: table; clear: both; content: ""; }
+.form-control, input[type="text"], input[type="password"], input[type="email"], input[type="number"], input[type="tel"], input[type="url"], textarea { min-height: 34px; padding: 7px 8px; font-size: 13px; color: rgb(51, 51, 51); vertical-align: middle; background-color: rgb(255, 255, 255); background-repeat: no-repeat; background-position: right center; border: 1px solid rgb(204, 204, 204); border-radius: 3px; outline: medium none; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.075) inset; }
+.form-control.focus, .form-control:focus, input.focus[type="text"], input[type="text"]:focus, .focused .drag-and-drop, input.focus[type="password"], input[type="password"]:focus, input.focus[type="email"], input[type="email"]:focus, input.focus[type="number"], input[type="number"]:focus, input.focus[type="tel"], input[type="tel"]:focus, input.focus[type="url"], input[type="url"]:focus, textarea.focus, textarea:focus { border-color: rgb(81, 167, 232); box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.075) inset, 0px 0px 5px rgba(81, 167, 232, 0.5); }
+input.input-contrast, .input-contrast { background-color: rgb(250, 250, 250); }
+input.input-contrast:focus, .input-contrast:focus { background-color: rgb(255, 255, 255); }
+input.input-mini { min-height: 26px; padding-top: 4px; padding-bottom: 4px; font-size: 12px; }
+.input-monospace { font-family: Consolas,"Liberation Mono",Menlo,Courier,monospace; }
+dl.form.required > dt > label::after { padding-left: 5px; color: rgb(159, 16, 6); content: "*"; }
+.hfields::before { display: table; content: ""; }
+.hfields::after { display: table; clear: both; content: ""; }
+.drag-and-drop { padding: 7px 10px; margin: 0px; font-size: 13px; line-height: 16px; color: rgb(170, 170, 170); background-color: rgb(250, 250, 250); border-width: 0px 1px 1px; border-style: none solid solid; border-color: -moz-use-text-color rgb(204, 204, 204) rgb(204, 204, 204); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; }
+.drag-and-drop .default, .drag-and-drop .loading, .drag-and-drop .error { display: none; }
+.drag-and-drop .error { color: rgb(189, 44, 0); }
+.drag-and-drop img { vertical-align: top; }
+.is-default .drag-and-drop .default { display: inline-block; }
+.drag-and-drop-error-info { font-weight: normal; color: rgb(170, 170, 170); }
+.drag-and-drop-error-info a { color: rgb(65, 131, 196); }
+.manual-file-chooser { position: absolute; width: 240px; padding: 5px; margin-left: -80px; cursor: pointer; opacity: 0.0001; }
+.manual-file-chooser:hover + .manual-file-chooser-text { text-decoration: underline; }
+.upload-enabled textarea { display: block; border-bottom: 1px dashed rgb(221, 221, 221); border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; }
+.previewable-comment-form { position: relative; }
+.previewable-comment-form .tabnav { position: relative; padding: 10px 10px 0px; }
+.previewable-comment-form .comment { border: 1px solid rgb(202, 202, 202); }
+.previewable-comment-form .comment-form-error { margin-bottom: 10px; }
+.previewable-comment-form .write-content, .previewable-comment-form .preview-content { display: none; padding: 0px 10px 10px; }
+.previewable-comment-form.write-selected .write-content, .previewable-comment-form.preview-selected .preview-content { display: block; }
+.previewable-comment-form textarea { display: block; width: 100%; min-height: 100px; max-height: 500px; padding: 10px; resize: vertical; }
+.input-group { display: table; }
+.input-group input { position: relative; width: 100%; }
+.input-group input:focus { z-index: 2; }
+.input-group input, .input-group-button { display: table-cell; }
+.input-group-button { width: 1%; vertical-align: middle; }
+.input-group input:first-child, .input-group-button:first-child .btn { border-top-right-radius: 0px; border-bottom-right-radius: 0px; }
+.input-group input:last-child, .input-group-button:last-child .btn { border-top-left-radius: 0px; border-bottom-left-radius: 0px; }
+.form-actions::before { display: table; content: ""; }
+.form-actions::after { display: table; clear: both; content: ""; }
+.form-actions .btn { float: right; }
+.status-indicator-success::before { color: rgb(108, 198, 68); content: ""; }
+.status-indicator-failed::before { color: rgb(189, 44, 0); content: ""; }
+.flash, .flash-global { position: relative; font-size: 14px; line-height: 1.6; color: rgb(34, 68, 102); background-color: rgb(226, 238, 249); border: 1px solid rgb(186, 198, 211); }
+.flash.flash-error, .flash-global.flash-error { color: rgb(153, 17, 17); background-color: rgb(252, 222, 222); border-color: rgb(210, 178, 178); }
+.flash .flash-close, .flash-global .flash-close { float: right; padding: 17px; margin-top: -15px; margin-right: -15px; margin-left: 20px; color: inherit; text-decoration: none; cursor: pointer; opacity: 0.6; }
+.flash .flash-close:hover, .flash-global .flash-close:hover { opacity: 1; }
+.flash a, .flash-global a { font-weight: bold; }
+.flash { padding: 15px; border-radius: 3px; }
+.avatar { display: inline-block; overflow: hidden; line-height: 1; vertical-align: middle; border-radius: 3px; }
+.btn { position: relative; display: inline-block; padding: 6px 12px; font-size: 13px; font-weight: bold; line-height: 20px; color: rgb(51, 51, 51); white-space: nowrap; vertical-align: middle; cursor: pointer; background-color: rgb(238, 238, 238); background-image: linear-gradient(rgb(252, 252, 252), rgb(238, 238, 238)); border: 1px solid rgb(213, 213, 213); border-radius: 3px; -moz-user-select: none; }
+.btn .octicon { vertical-align: text-top; }
+.btn:focus { text-decoration: none; border-color: rgb(81, 167, 232); outline: medium none; box-shadow: 0px 0px 5px rgba(81, 167, 232, 0.5); }
+.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { text-decoration: none; background-color: rgb(221, 221, 221); background-image: linear-gradient(rgb(238, 238, 238), rgb(221, 221, 221)); border-color: rgb(204, 204, 204); }
+.btn:active, .btn.selected, .btn.selected:hover, .btn.zeroclipboard-is-active { background-color: rgb(220, 220, 220); background-image: none; border-color: rgb(181, 181, 181); box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15) inset; }
+.btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { color: rgba(102, 102, 102, 0.5); cursor: default; background-color: rgba(229, 229, 229, 0.5); background-image: none; border-color: rgba(197, 197, 197, 0.5); box-shadow: none; }
+.btn-primary { color: rgb(255, 255, 255); text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.15); background-color: rgb(96, 176, 68); background-image: linear-gradient(rgb(138, 221, 109), rgb(96, 176, 68)); border-color: rgb(92, 169, 65); }
+.btn-primary:hover { color: rgb(255, 255, 255); background-color: rgb(86, 158, 61); background-image: linear-gradient(rgb(121, 216, 88), rgb(86, 158, 61)); border-color: rgb(74, 153, 62); }
+.btn-primary:active, .btn-primary.selected { text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.15); background-color: rgb(86, 158, 61); background-image: none; border-color: rgb(65, 135, 55); }
+.btn-primary:disabled, .btn-primary:disabled:hover, .btn-primary.disabled, .btn-primary.disabled:hover { color: rgb(254, 254, 254); background-color: rgb(173, 211, 159); background-image: linear-gradient(rgb(195, 236, 180), rgb(173, 211, 159)); border-color: rgb(185, 220, 172) rgb(185, 220, 172) rgb(167, 200, 155); }
+.btn-with-count { float: left; border-top-right-radius: 0px; border-bottom-right-radius: 0px; }
+.btn-sm { padding: 2px 10px; }
+.social-count { float: left; padding: 2px 7px; font-size: 11px; font-weight: bold; line-height: 20px; color: rgb(51, 51, 51); vertical-align: middle; background-color: rgb(255, 255, 255); border-width: 1px 1px 1px 0px; border-style: solid solid solid none; border-color: rgb(221, 221, 221) rgb(221, 221, 221) rgb(221, 221, 221) -moz-use-text-color; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-top-right-radius: 3px; border-bottom-right-radius: 3px; }
+.social-count:hover, .social-count:active { text-decoration: none; }
+.social-count:hover { color: rgb(65, 131, 196); cursor: pointer; }
+.btn-group::before { display: table; content: ""; }
+.btn-group::after { display: table; clear: both; content: ""; }
+.btn-group .btn:not(:first-child):not(:last-child) { border-radius: 0px; }
+.menu-item:first-child::before { border-top-left-radius: 2px; }
+.menu-item:last-child::before { border-bottom-left-radius: 2px; }
+.menu-item.selected::before { position: absolute; top: 0px; left: 0px; bottom: 0px; width: 2px; content: ""; background-color: rgb(210, 105, 17); }
+.tabnav { margin-top: 0px; margin-bottom: 15px; border-bottom: 1px solid rgb(221, 221, 221); }
+.tabnav-tabs { margin-bottom: -1px; }
+.tabnav-tab { display: inline-block; padding: 8px 12px; font-size: 14px; line-height: 20px; color: rgb(102, 102, 102); text-decoration: none; border-width: 1px 1px 0px; border-style: solid solid none; border-color: transparent transparent -moz-use-text-color; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.tabnav-tab.selected { color: rgb(51, 51, 51); background-color: rgb(255, 255, 255); border-color: rgb(221, 221, 221); border-radius: 3px 3px 0px 0px; }
+.tabnav-tab:hover { text-decoration: none; }
+.tabnav-extra { display: inline-block; padding-top: 10px; margin-left: 10px; font-size: 12px; color: rgb(102, 102, 102); }
+.tabnav-extra > .octicon { margin-right: 2px; }
+a.tabnav-extra:hover { color: rgb(65, 131, 196); text-decoration: none; }
+.state { display: inline-block; padding: 4px 8px; font-weight: bold; line-height: 20px; color: rgb(255, 255, 255); text-align: center; border-radius: 3px; background-color: rgb(153, 153, 153); }
+.state-open, .state-proposed, .state-reopened { background-color: rgb(108, 198, 68); }
+.tooltipped { position: relative; }
+.tooltipped::after { position: absolute; z-index: 1000000; display: none; padding: 5px 8px; font: 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"; color: rgb(255, 255, 255); text-align: center; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-wrap: break-word; white-space: pre; pointer-events: none; content: attr(aria-label); background: rgba(0, 0, 0, 0.8) none repeat scroll 0% 0%; border-radius: 3px; }
+.tooltipped::before { position: absolute; z-index: 1000001; display: none; width: 0px; height: 0px; color: rgba(0, 0, 0, 0.8); pointer-events: none; content: ""; border: 5px solid transparent; }
+.tooltipped:hover::before, .tooltipped:hover::after, .tooltipped:active::before, .tooltipped:active::after, .tooltipped:focus::before, .tooltipped:focus::after { display: inline-block; text-decoration: none; }
+.tooltipped-multiline:hover::after, .tooltipped-multiline:active::after, .tooltipped-multiline:focus::after { display: table-cell; }
+.tooltipped-s::after, .tooltipped-se::after, .tooltipped-sw::after { top: 100%; right: 50%; margin-top: 5px; }
+.tooltipped-s::before, .tooltipped-se::before, .tooltipped-sw::before { top: auto; right: 50%; bottom: -5px; margin-right: -5px; border-bottom-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-se::after { right: auto; left: 50%; margin-left: -15px; }
+.tooltipped-sw::after { margin-right: -15px; }
+.tooltipped-n::after, .tooltipped-ne::after, .tooltipped-nw::after { right: 50%; bottom: 100%; margin-bottom: 5px; }
+.tooltipped-n::before, .tooltipped-ne::before, .tooltipped-nw::before { top: -5px; right: 50%; bottom: auto; margin-right: -5px; border-top-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-ne::after { right: auto; left: 50%; margin-left: -15px; }
+.tooltipped-nw::after { margin-right: -15px; }
+.tooltipped-s::after, .tooltipped-n::after { transform: translateX(50%); }
+.tooltipped-w::after { right: 100%; bottom: 50%; margin-right: 5px; transform: translateY(50%); }
+.tooltipped-w::before { top: 50%; bottom: 50%; left: -5px; margin-top: -5px; border-left-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-e::after { bottom: 50%; left: 100%; margin-left: 5px; transform: translateY(50%); }
+.tooltipped-e::before { top: 50%; right: -5px; bottom: 50%; margin-top: -5px; border-right-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-multiline::after { width: -moz-max-content; max-width: 250px; word-wrap: normal; white-space: pre-line; border-collapse: separate; }
+.tooltipped-multiline.tooltipped-s::after, .tooltipped-multiline.tooltipped-n::after { right: auto; left: 50%; transform: translateX(-50%); }
+.tooltipped-multiline.tooltipped-w::after, .tooltipped-multiline.tooltipped-e::after { right: 100%; }
+@media not all {
+ .tooltipped-multiline::after { width: 250px; }
+}
+.tooltipped-sticky::before, .tooltipped-sticky::after { display: inline-block; }
+.tooltipped-sticky.tooltipped-multiline::after { display: table-cell; }
+.fullscreen-overlay-enabled.dark-theme .tooltipped::after { color: rgb(0, 0, 0); background: rgba(255, 255, 255, 0.8) none repeat scroll 0% 0%; }
+.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s::before, .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se::before, .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw::before { border-bottom-color: rgba(255, 255, 255, 0.8); }
+.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n::before, .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne::before, .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw::before { border-top-color: rgba(255, 255, 255, 0.8); }
+.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e::before { border-right-color: rgba(255, 255, 255, 0.8); }
+.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w::before { border-left-color: rgba(255, 255, 255, 0.8); }
+.flex-table { display: table; }
+.flex-table-item { display: table-cell; width: 1%; white-space: nowrap; vertical-align: middle; }
+.flex-table-item-primary { width: 99%; }
+.css-truncate.css-truncate-target, .css-truncate .css-truncate-target { display: inline-block; max-width: 125px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: top; }
+.sunken-menu { position: relative; padding-top: 15px; padding-bottom: 15px; background-image: linear-gradient(to right, rgb(246, 246, 246) 0%, rgb(255, 255, 255) 8px); box-shadow: 1px 0px 0px rgb(238, 238, 238) inset; }
+.sunken-menu::before, .sunken-menu::after { position: absolute; left: 0px; width: 100%; height: 15px; content: ""; background-color: transparent; }
+.sunken-menu::before { top: 0px; background-color: transparent; background-image: linear-gradient(rgb(255, 255, 255), rgba(255, 255, 255, 0)); }
+.sunken-menu::after { bottom: 0px; background-color: transparent; background-image: linear-gradient(rgba(255, 255, 255, 0), rgb(255, 255, 255)); }
+.sunken-menu-separator { position: relative; height: 5px; margin: 8px 0px 6px 1px; background-image: radial-gradient(farthest-side at left top , rgb(244, 244, 244), rgba(244, 244, 244, 0)); }
+.sunken-menu-separator::before { position: absolute; top: 0px; width: 100%; height: 1px; content: ""; background-image: linear-gradient(to right, rgb(238, 238, 238) 70%, rgb(255, 255, 255) 100%); }
+.sunken-menu-group { list-style-type: none; }
+.sunken-menu-item { display: block; padding: 8px 10px; margin-top: 5px; margin-bottom: 5px; border: 1px solid transparent; outline: 0px none; }
+.sunken-menu-item .octicon { left: -1px; width: 16px; color: rgb(153, 153, 153); text-align: center; }
+.sunken-menu-item .mini-loader { position: absolute; top: 9px; left: 11px; display: none; }
+.sunken-menu-item:focus, .sunken-menu-item:hover { text-decoration: none; box-shadow: 2px 0px 0px rgb(204, 204, 204) inset; }
+.sunken-menu-item:focus .octicon, .sunken-menu-item:hover .octicon { color: rgb(51, 51, 51); }
+.sunken-menu-item.selected { font-weight: bold; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255); border-color: rgb(238, 238, 238) rgb(238, 238, 238) rgb(238, 238, 238) transparent; border-radius: 0px 3px 3px 0px; box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.05); }
+.sunken-menu-item.selected::after { position: absolute; top: 0px; right: 0px; bottom: 0px; width: 3px; content: ""; background-color: rgb(210, 105, 17); border-radius: 0px 3px 3px 0px; }
+.sunken-menu-item.selected .octicon { color: rgb(51, 51, 51); }
+@keyframes mini-nav-loader {
+ 0%, 90% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+@font-face { + font-family: "octicons"; + font-style: normal; + font-weight: normal; + src: url("urn:not-loaded:https://assets-cdn.github.com/assets/octicons/octicons/octicons-d5329fb2f700a56fe0b9ae5c301fabbdf5d77c1293b1fa1d35de9357530e2326.eot?#iefix") format("embedded-opentype"), url(data:application/octet-stream;base64,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) format("woff"), url("urn:not-loaded:https://assets-cdn.github.com/assets/octicons/octicons/octicons-39c6d7739e9153806ef211d2a0f75044891634c4f67425e6250b0d8c6283c2c7.ttf") format("truetype"), url("urn:not-loaded:https://assets-cdn.github.com/assets/octicons/octicons/octicons-c11b1be24a2862c1dc8880c22867d8d01315c9d7da5167c42119eb1bcce2e33c.svg#octicons") format("svg"); +}
+.octicon, .mega-octicon { font: 16px/1 octicons; display: inline-block; text-decoration: none; text-rendering: auto; -moz-user-select: none; }
+.mega-octicon { font-size: 32px; }
+.octicon-alert::before { content: ""; }
+.octicon-alignment-align::before { content: ""; }
+.octicon-alignment-aligned-to::before { content: ""; }
+.octicon-alignment-unalign::before { content: ""; }
+.octicon-arrow-down::before { content: ""; }
+.octicon-arrow-left::before { content: ""; }
+.octicon-arrow-right::before { content: ""; }
+.octicon-arrow-small-down::before { content: ""; }
+.octicon-arrow-small-left::before { content: ""; }
+.octicon-arrow-small-right::before { content: ""; }
+.octicon-arrow-small-up::before { content: ""; }
+.octicon-arrow-up::before { content: ""; }
+.octicon-beer::before { content: ""; }
+.octicon-book::before { content: ""; }
+.octicon-bookmark::before { content: ""; }
+.octicon-briefcase::before { content: ""; }
+.octicon-broadcast::before { content: ""; }
+.octicon-browser::before { content: ""; }
+.octicon-bug::before { content: ""; }
+.octicon-calendar::before { content: ""; }
+.octicon-check::before { content: ""; }
+.octicon-checklist::before { content: ""; }
+.octicon-chevron-down::before { content: ""; }
+.octicon-chevron-left::before { content: ""; }
+.octicon-chevron-right::before { content: ""; }
+.octicon-chevron-up::before { content: ""; }
+.octicon-circle-slash::before { content: ""; }
+.octicon-circuit-board::before { content: ""; }
+.octicon-clippy::before { content: ""; }
+.octicon-clock::before { content: ""; }
+.octicon-cloud-download::before { content: ""; }
+.octicon-cloud-upload::before { content: ""; }
+.octicon-code::before { content: ""; }
+.octicon-color-mode::before { content: ""; }
+.octicon-comment-add::before, .octicon-comment::before { content: ""; }
+.octicon-comment-discussion::before { content: ""; }
+.octicon-credit-card::before { content: ""; }
+.octicon-dash::before { content: ""; }
+.octicon-dashboard::before { content: ""; }
+.octicon-database::before { content: ""; }
+.octicon-device-camera::before { content: ""; }
+.octicon-device-camera-video::before { content: ""; }
+.octicon-device-desktop::before { content: ""; }
+.octicon-device-mobile::before { content: ""; }
+.octicon-diff::before { content: ""; }
+.octicon-diff-added::before { content: ""; }
+.octicon-diff-ignored::before { content: ""; }
+.octicon-diff-modified::before { content: ""; }
+.octicon-diff-removed::before { content: ""; }
+.octicon-diff-renamed::before { content: ""; }
+.octicon-ellipsis::before { content: ""; }
+.octicon-eye-unwatch::before, .octicon-eye-watch::before, .octicon-eye::before { content: ""; }
+.octicon-file-binary::before { content: ""; }
+.octicon-file-code::before { content: ""; }
+.octicon-file-directory::before { content: ""; }
+.octicon-file-media::before { content: ""; }
+.octicon-file-pdf::before { content: ""; }
+.octicon-file-submodule::before { content: ""; }
+.octicon-file-symlink-directory::before { content: ""; }
+.octicon-file-symlink-file::before { content: ""; }
+.octicon-file-text::before { content: ""; }
+.octicon-file-zip::before { content: ""; }
+.octicon-flame::before { content: ""; }
+.octicon-fold::before { content: ""; }
+.octicon-gear::before { content: ""; }
+.octicon-gift::before { content: ""; }
+.octicon-gist::before { content: ""; }
+.octicon-gist-secret::before { content: ""; }
+.octicon-git-branch-create::before, .octicon-git-branch-delete::before, .octicon-git-branch::before { content: ""; }
+.octicon-git-commit::before { content: ""; }
+.octicon-git-compare::before { content: ""; }
+.octicon-git-merge::before { content: ""; }
+.octicon-git-pull-request-abandoned::before, .octicon-git-pull-request::before { content: ""; }
+.octicon-globe::before { content: ""; }
+.octicon-graph::before { content: ""; }
+.octicon-heart::before { content: "♥"; }
+.octicon-history::before { content: ""; }
+.octicon-home::before { content: ""; }
+.octicon-horizontal-rule::before { content: ""; }
+.octicon-hourglass::before { content: ""; }
+.octicon-hubot::before { content: ""; }
+.octicon-inbox::before { content: ""; }
+.octicon-info::before { content: ""; }
+.octicon-issue-closed::before { content: ""; }
+.octicon-issue-opened::before { content: ""; }
+.octicon-issue-reopened::before { content: ""; }
+.octicon-jersey::before { content: ""; }
+.octicon-jump-down::before { content: ""; }
+.octicon-jump-left::before { content: ""; }
+.octicon-jump-right::before { content: ""; }
+.octicon-jump-up::before { content: ""; }
+.octicon-key::before { content: ""; }
+.octicon-keyboard::before { content: ""; }
+.octicon-law::before { content: ""; }
+.octicon-light-bulb::before { content: ""; }
+.octicon-link::before { content: ""; }
+.octicon-link-external::before { content: ""; }
+.octicon-list-ordered::before { content: ""; }
+.octicon-list-unordered::before { content: ""; }
+.octicon-location::before { content: ""; }
+.octicon-gist-private::before, .octicon-mirror-private::before, .octicon-git-fork-private::before, .octicon-lock::before { content: ""; }
+.octicon-logo-github::before { content: ""; }
+.octicon-mail::before { content: ""; }
+.octicon-mail-read::before { content: ""; }
+.octicon-mail-reply::before { content: ""; }
+.octicon-mark-github::before { content: ""; }
+.octicon-markdown::before { content: ""; }
+.octicon-megaphone::before { content: ""; }
+.octicon-mention::before { content: ""; }
+.octicon-microscope::before { content: ""; }
+.octicon-milestone::before { content: ""; }
+.octicon-mirror-public::before, .octicon-mirror::before { content: ""; }
+.octicon-mortar-board::before { content: ""; }
+.octicon-move-down::before { content: ""; }
+.octicon-move-left::before { content: ""; }
+.octicon-move-right::before { content: ""; }
+.octicon-move-up::before { content: ""; }
+.octicon-mute::before { content: ""; }
+.octicon-no-newline::before { content: ""; }
+.octicon-octoface::before { content: ""; }
+.octicon-organization::before { content: ""; }
+.octicon-package::before { content: ""; }
+.octicon-paintcan::before { content: ""; }
+.octicon-pencil::before { content: ""; }
+.octicon-person-add::before, .octicon-person-follow::before, .octicon-person::before { content: ""; }
+.octicon-pin::before { content: ""; }
+.octicon-playback-fast-forward::before { content: ""; }
+.octicon-playback-pause::before { content: ""; }
+.octicon-playback-play::before { content: ""; }
+.octicon-playback-rewind::before { content: ""; }
+.octicon-plug::before { content: ""; }
+.octicon-repo-create::before, .octicon-gist-new::before, .octicon-file-directory-create::before, .octicon-file-add::before, .octicon-plus::before { content: ""; }
+.octicon-podium::before { content: ""; }
+.octicon-primitive-dot::before { content: ""; }
+.octicon-primitive-square::before { content: ""; }
+.octicon-pulse::before { content: ""; }
+.octicon-puzzle::before { content: ""; }
+.octicon-question::before { content: ""; }
+.octicon-quote::before { content: ""; }
+.octicon-radio-tower::before { content: ""; }
+.octicon-repo-delete::before, .octicon-repo::before { content: ""; }
+.octicon-repo-clone::before { content: ""; }
+.octicon-repo-force-push::before { content: ""; }
+.octicon-gist-fork::before, .octicon-repo-forked::before { content: ""; }
+.octicon-repo-pull::before { content: ""; }
+.octicon-repo-push::before { content: ""; }
+.octicon-rocket::before { content: ""; }
+.octicon-rss::before { content: ""; }
+.octicon-ruby::before { content: ""; }
+.octicon-screen-full::before { content: ""; }
+.octicon-screen-normal::before { content: ""; }
+.octicon-search-save::before, .octicon-search::before { content: ""; }
+.octicon-server::before { content: ""; }
+.octicon-settings::before { content: ""; }
+.octicon-log-in::before, .octicon-sign-in::before { content: ""; }
+.octicon-log-out::before, .octicon-sign-out::before { content: ""; }
+.octicon-split::before { content: ""; }
+.octicon-squirrel::before { content: ""; }
+.octicon-star-add::before, .octicon-star-delete::before, .octicon-star::before { content: ""; }
+.octicon-steps::before { content: ""; }
+.octicon-stop::before { content: ""; }
+.octicon-repo-sync::before, .octicon-sync::before { content: ""; }
+.octicon-tag-remove::before, .octicon-tag-add::before, .octicon-tag::before { content: ""; }
+.octicon-telescope::before { content: ""; }
+.octicon-terminal::before { content: ""; }
+.octicon-three-bars::before { content: ""; }
+.octicon-thumbsdown::before { content: ""; }
+.octicon-thumbsup::before { content: ""; }
+.octicon-tools::before { content: ""; }
+.octicon-trashcan::before { content: ""; }
+.octicon-triangle-down::before { content: ""; }
+.octicon-triangle-left::before { content: ""; }
+.octicon-triangle-right::before { content: ""; }
+.octicon-triangle-up::before { content: ""; }
+.octicon-unfold::before { content: ""; }
+.octicon-unmute::before { content: ""; }
+.octicon-versions::before { content: ""; }
+.octicon-remove-close::before, .octicon-x::before { content: ""; }
+.octicon-zap::before { content: "⚡"; }
+h2.ghead::after { content: "."; height: 0px; display: block; visibility: hidden; clear: both; }
+.svg-tip::after { box-sizing: border-box; position: absolute; left: 50%; height: 5px; width: 5px; bottom: -10px; margin: 0px 0px 0px -5px; content: " "; border-width: 5px; border-style: solid; border-color: rgba(0, 0, 0, 0.8) transparent transparent; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.uniques-graph .x.axis .tick:nth-child(14) line { stroke: rgb(29, 127, 179); stroke-width: 2px; }
+table.capped-list tr:nth-child(2n) { background-color: rgb(252, 252, 252); }
+.traffic-graph-stats .summary-stats::before { display: table; content: ""; }
+.traffic-graph-stats .summary-stats::after { display: table; clear: both; content: ""; }
+.markdown-body { overflow: hidden; font-family: "Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif; font-size: 16px; line-height: 1.6; word-wrap: break-word; }
+.markdown-body > :first-child { margin-top: 0px ! important; }
+.markdown-body > :last-child { margin-bottom: 0px ! important; }
+.markdown-body a:not([href]) { color: inherit; text-decoration: none; }
+.markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre { margin-top: 0px; margin-bottom: 16px; }
+.markdown-body ul, .markdown-body ol { padding-left: 2em; }
+.markdown-body blockquote > :first-child { margin-top: 0px; }
+.markdown-body blockquote > :last-child { margin-bottom: 0px; }
+.markdown-body table tr:nth-child(2n) { background-color: rgb(248, 248, 248); }
+.markdown-body code, .markdown-body tt { padding: 0.2em 0px; margin: 0px; font-size: 85%; background-color: rgba(0, 0, 0, 0.04); border-radius: 3px; }
+.markdown-body code::before, .markdown-body code::after, .markdown-body tt::before, .markdown-body tt::after { letter-spacing: -0.2em; content: " "; }
+.markdown-body pre > code { padding: 0px; margin: 0px; font-size: 100%; word-break: normal; white-space: pre; background: transparent none repeat scroll 0% 0%; border: 0px none; }
+.markdown-body .highlight { margin-bottom: 16px; }
+.markdown-body .highlight pre, .markdown-body pre { padding: 16px; overflow: auto; font-size: 85%; line-height: 1.45; background-color: rgb(247, 247, 247); border-radius: 3px; }
+.markdown-body .highlight pre { margin-bottom: 0px; word-break: normal; }
+.markdown-body pre { word-wrap: normal; }
+.markdown-body pre code, .markdown-body pre tt { display: inline; max-width: initial; padding: 0px; margin: 0px; overflow: initial; line-height: inherit; word-wrap: normal; background-color: transparent; border: 0px none; }
+.markdown-body pre code::before, .markdown-body pre code::after, .markdown-body pre tt::before, .markdown-body pre tt::after { content: normal; }
+.pl-c { color: rgb(150, 152, 150); }
+.pl-c1, .pl-s .pl-v { color: rgb(0, 134, 179); }
+.pl-e, .pl-en { color: rgb(121, 93, 163); }
+.pl-s .pl-s1, .pl-smi { color: rgb(51, 51, 51); }
+.pl-k { color: rgb(167, 29, 93); }
+.pl-pds, .pl-s, .pl-s .pl-pse .pl-s1, .pl-sr, .pl-sr .pl-cce, .pl-sr .pl-sra, .pl-sr .pl-sre { color: rgb(24, 54, 145); }
+body { word-wrap: break-word; }
+.labels { position: relative; }
+.facebox { position: absolute; top: 0px; left: 0px; z-index: 100; padding-bottom: 40px; }
+.facebox-popup { position: relative; background-color: rgb(255, 255, 255); border: 1px solid rgba(0, 0, 0, 0.25); border-radius: 5px; box-shadow: 0px 0px 18px rgba(0, 0, 0, 0.4); background-clip: padding-box; }
+.facebox-content { width: 455px; padding: 15px; }
+.facebox-content::before { display: table; content: ""; }
+.facebox-content::after { display: table; clear: both; content: ""; }
+.facebox-close { position: absolute; top: 8px; right: 5px; padding: 10px; background-color: transparent; border: 0px none; opacity: 0.25; cursor: pointer; }
+.facebox-close:hover { opacity: 1; }
+.facebox-header { margin: -15px -15px 15px; padding: 15px; border-bottom: 1px solid rgb(229, 229, 229); font-size: 18px; font-weight: normal; }
+.user-mention, .team-mention { font-weight: bold; color: rgb(51, 51, 51); white-space: nowrap; }
+.select-menu-button::after { display: inline-block; width: 0px; height: 0px; content: ""; vertical-align: -2px; border-width: 4px; border-style: solid; border-color: -moz-use-text-color transparent transparent; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.select-menu-button.primary::after { border-top-color: rgb(255, 255, 255); }
+.select-menu-loading-overlay::before { position: absolute; left: 50%; top: 50%; margin: -16px 0px 0px -16px; width: 32px; content: ""; font: 32px/1 "octicons"; display: inline-block; text-decoration: none; text-indent: 0px; }
+@keyframes pulse {
+ 0% { color: rgba(170, 170, 170, 0.1); }
+ 10% { color: rgb(170, 170, 170); }
+ 100% { color: rgba(170, 170, 170, 0.1); }
+}
+.select-menu-modal-holder { position: absolute; display: none; z-index: 21; }
+.select-menu-modal { position: relative; width: 300px; margin-top: 4px; margin-bottom: 20px; overflow: hidden; font-size: 12px; color: rgb(102, 102, 102); background-color: rgb(255, 255, 255); background-clip: padding-box; border: 1px solid rgba(200, 200, 200, 0.4); border-radius: 3px; box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15); }
+.select-menu-header { padding: 8px 10px; background: rgb(245, 245, 245) none repeat scroll 0% 0%; border-bottom: 1px solid rgba(200, 200, 200, 0.4); }
+.select-menu-header .select-menu-title { font-weight: bold; color: rgb(51, 51, 51); text-shadow: 0px 1px 0px rgb(255, 255, 255); }
+.select-menu-header .octicon { display: block; float: right; color: rgb(204, 204, 204); cursor: pointer; }
+.select-menu-header .octicon:hover { color: rgb(85, 85, 85); }
+.select-menu-list { max-height: 400px; overflow: auto; position: relative; }
+.select-menu-item { cursor: pointer; border-bottom: 1px solid rgb(238, 238, 238); display: table; table-layout: fixed; width: 100%; overflow: hidden; color: inherit; }
+.select-menu-item:hover { text-decoration: none; }
+.select-menu-item .octicon { vertical-align: middle; }
+.select-menu-item .octicon-check { visibility: hidden; }
+.select-menu-item input[type="radio"] { display: none; }
+.select-menu-item .select-menu-item-icon { display: table-cell; color: transparent; vertical-align: top; padding: 8px 0px 8px 8px; width: 24px; text-align: center; }
+.select-menu-item.select-menu-action, .select-menu-item.selected { color: rgb(51, 51, 51); }
+.select-menu-item.select-menu-action .description, .select-menu-item.selected .description { color: rgb(102, 102, 102); }
+.select-menu-item.select-menu-action .octicon-check, .select-menu-item.selected .octicon-check { visibility: visible; }
+.select-menu-item.select-menu-action > .octicon, .select-menu-item.selected > .octicon { color: rgb(51, 51, 51); }
+.select-menu-item .hidden-select-button-text { display: none; }
+.select-menu-item.last-visible, .select-menu-list:last-child .select-menu-item:last-child { border-bottom: 0px none; border-radius: 0px 0px 3px 3px; }
+.select-menu-item-text { display: table-cell; vertical-align: top; padding: 8px 0px 8px 8px; text-align: left; }
+.select-menu-item-text:first-child { margin-left: 5px; }
+.select-menu-item-text .description { color: rgb(153, 153, 153); font-size: 12px; max-width: 265px; display: block; margin-top: 3px; }
+.select-menu-item-heading { display: block; margin-top: 0px; margin-bottom: 0px; font-size: 14px; font-weight: bold; line-height: 1.1; }
+.modal-backdrop { display: none; -moz-user-select: none; }
+.dropdown { position: relative; }
+.dropdown-caret { display: inline-block; width: 0px; height: 0px; content: ""; vertical-align: -2px; border-width: 4px; border-style: solid; border-color: -moz-use-text-color transparent transparent; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.dropdown-menu { position: absolute; top: 100%; left: 50%; z-index: 100; width: 160px; margin-top: 2px; margin-left: -80px; padding-top: 5px; padding-bottom: 5px; list-style: outside none none; background-color: rgb(255, 255, 255); background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 4px; box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15); }
+.dropdown-menu::before { position: absolute; top: -16px; left: 72px; display: inline-block; content: ""; border-width: 8px; border-style: solid; border-color: transparent transparent rgba(0, 0, 0, 0.15); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.dropdown-menu::after { position: absolute; top: -14px; left: 73px; display: inline-block; content: ""; border-width: 7px; border-style: solid; border-color: transparent transparent rgb(255, 255, 255); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.dropdown-menu > li > a, .dropdown-menu > li .sign-out-button { display: block; padding: 4px 10px 4px 35px; color: rgb(51, 51, 51); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; background: transparent none repeat scroll 0% 0%; }
+.dropdown-menu > li > a > .octicon, .dropdown-menu > li .sign-out-button > .octicon { float: left; margin-top: 1px; margin-left: -25px; opacity: 0.5; }
+.dropdown-menu > li > a:hover, .dropdown-menu > li > a.zeroclipboard-is-hover, .dropdown-menu > li .sign-out-button:hover, .dropdown-menu > li .sign-out-button.zeroclipboard-is-hover { color: rgb(255, 255, 255); text-decoration: none; background-color: rgb(65, 131, 196); }
+.dropdown-menu > li > a:hover > .octicon, .dropdown-menu > li > a.zeroclipboard-is-hover > .octicon, .dropdown-menu > li .sign-out-button:hover > .octicon, .dropdown-menu > li .sign-out-button.zeroclipboard-is-hover > .octicon { color: inherit; opacity: 1; }
+.sign-out-button { width: 100%; text-align: left; }
+.sign-out-button > .octicon-sign-out { padding-left: 3px; }
+.dropdown-divider { height: 1px; margin: 8px 1px; background-color: rgb(229, 229, 229); }
+.dropdown-header { padding: 4px 15px; font-size: 12px; color: rgb(153, 153, 153); }
+.dropdown-menu-content { display: none; }
+.dropdown-menu-w::before { top: 10px; right: -16px; left: auto; border-color: transparent transparent transparent rgba(0, 0, 0, 0.15); }
+.dropdown-menu-w::after { top: 11px; right: -14px; left: auto; border-color: transparent transparent transparent rgb(255, 255, 255); }
+.dropdown-menu-e::before { top: 10px; left: -16px; border-color: transparent rgba(0, 0, 0, 0.15) transparent transparent; }
+.dropdown-menu-e::after { top: 11px; left: -14px; border-color: transparent rgb(255, 255, 255) transparent transparent; }
+.dropdown-menu-sw::before { left: auto; right: 9px; }
+.dropdown-menu-sw::after { left: auto; right: 10px; }
+include-fragment, poll-include-fragment { display: block; }
+.pagination::before { display: table; content: ""; }
+.pagination::after { display: table; clear: both; content: ""; }
+.header { padding-top: 10px; padding-bottom: 10px; min-width: 1000px; background-color: rgb(245, 245, 245); border-bottom: 1px solid rgb(229, 229, 229); }
+.header-logo-invertocat { float: left; margin-right: 10px; margin-left: -2px; color: rgb(51, 51, 51); white-space: nowrap; }
+.header-logo-invertocat .octicon-mark-github { float: left; width: 28px; height: 28px; font-size: 28px; }
+.header-logo-invertocat:hover { color: rgb(65, 131, 196); text-decoration: none; }
+.notification-indicator .mail-status { position: absolute; top: -2px; right: 2px; z-index: 2; display: none; width: 14px; height: 14px; color: rgb(255, 255, 255); text-align: center; background-color: rgb(65, 131, 196); background-image: linear-gradient(rgb(123, 169, 214), rgb(65, 131, 196)); background-repeat: repeat-x; background-clip: padding-box; border-radius: 50%; border: 2px solid rgb(243, 243, 243); }
+.notification-indicator:hover .mail-status { background-color: rgb(65, 131, 196); }
+.site-search { position: relative; float: left; }
+.site-search form { position: relative; float: left; width: 360px; margin-right: 10px; }
+.site-search input[type="text"] { position: relative; width: 100%; min-height: 28px; padding: 4px 20px 4px 8px; font-size: 12px; }
+.site-search .scope-badge { position: absolute; top: 3px; left: 3px; bottom: 3px; z-index: 10; display: none; padding: 3px 6px; font-size: 12px; color: rgb(119, 119, 119); background-color: rgb(238, 238, 238); border-radius: 2px; transition: all 0.1s ease-in-out 0s; }
+.site-search.repo-scope .scope-badge { display: block; }
+.site-search.repo-scope input[type="text"] { padding-left: 100px; }
+.site-search.repo-scope input[type="text"]:focus + .scope-badge, .site-search.repo-scope .focused .drag-and-drop + .scope-badge, .focused .site-search.repo-scope .drag-and-drop + .scope-badge { background-color: rgb(228, 238, 247); color: rgb(65, 131, 196); }
+.header-nav { list-style: outside none none; }
+.header-nav-item { float: left; }
+.header-nav-item.active .tooltipped::before, .header-nav-item.active .tooltipped::after { display: none; }
+.header-nav-item .dropdown-menu { margin-top: 13px; width: 180px; }
+.header-nav-link { display: block; padding: 4px 8px; font-size: 13px; font-weight: bold; line-height: 20px; color: rgb(51, 51, 51); }
+.header-nav-link:hover, .header-nav-link:focus { color: rgb(65, 131, 196); text-decoration: none; }
+.header-nav-link:hover .dropdown-caret, .header-nav-link:focus .dropdown-caret { border-top-color: rgb(65, 131, 196); }
+.user-nav { margin-right: -8px; }
+.user-nav .header-nav-link { height: 28px; }
+.user-nav .octicon { width: 18px; height: 18px; text-align: center; }
+.user-nav .octicon-inbox { font-size: 20px; }
+.user-nav .octicon-sign-out { padding-top: 2px; }
+.user-nav .octicon-plus { float: left; width: 16px; height: 18px; font-size: 18px; }
+.user-nav .avatar { float: left; margin-right: 5px; }
+.user-nav .name { float: left; white-space: nowrap; }
+.sign-out-button { background: transparent none repeat scroll 0% 0%; border: 0px none; }
+.accessibility-aid { height: 1px; width: 1px; clip: rect(1px, 1px, 1px, 1px); overflow: hidden; position: absolute; margin: 0px; }
+.accessibility-aid:focus { height: auto; width: auto; clip: auto; z-index: 1; top: 0px; line-height: 49px; padding: 0px 10px; background: rgb(245, 245, 245) none repeat scroll 0% 0%; font-weight: bold; text-decoration: none; color: rgb(51, 51, 51); }
+.site-footer { position: relative; margin-top: 40px; padding-top: 40px; padding-bottom: 40px; font-size: 12px; line-height: 1.5; color: rgb(119, 119, 119); border-top: 1px solid rgb(238, 238, 238); }
+.site-footer::before { display: table; content: ""; }
+.site-footer::after { display: table; clear: both; content: ""; }
+.site-footer .octicon-mark-github { position: absolute; top: 38px; left: 50%; height: 24px; width: 24px; margin-left: -12px; font-size: 24px; color: rgb(204, 204, 204); }
+.site-footer .octicon-mark-github:hover { color: rgb(187, 187, 187); }
+.site-footer-links { margin: 0px; list-style: outside none none; }
+.site-footer-links li { display: inline-block; line-height: 16px; }
+.site-footer-links li + li { margin-left: 10px; }
+.billing-plans .coupon.expiring .coupon-label::after { border-bottom-color: rgb(223, 110, 0); }
+.coupon-label::after { position: absolute; bottom: 100%; left: 15px; width: 0px; height: 0px; pointer-events: none; content: " "; border-style: solid; border-color: transparent transparent rgb(108, 198, 68); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-width: 5px; }
+.suggester-container { position: absolute; top: 58px; left: 10px; z-index: 30; }
+.timeline-new-comment .suggester-container { top: 52px; }
+.suggester { position: relative; top: 0px; left: 0px; display: none; min-width: 180px; margin-top: 20px; background: rgb(255, 255, 255) none repeat scroll 0% 0%; border: 1px solid rgb(221, 221, 221); border-radius: 3px; box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1); }
+.breadcrumb .separator::before, .breadcrumb .separator::after { content: " "; }
+.blob-interaction-bar::before { display: table; content: ""; }
+.blob-interaction-bar::after { display: table; clear: both; content: ""; }
+.file-commit-form .commit-form::after, .file-commit-form .commit-form::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.file-commit-form .commit-form::after { border-width: 7px; border-right-color: rgb(255, 255, 255); margin-top: 1px; margin-left: 2px; }
+.file-commit-form .commit-form::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.branch-action-body::after, .branch-action-body::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.branch-action-body::after { border-width: 7px; border-right-color: rgb(255, 255, 255); margin-top: 1px; margin-left: 2px; }
+.branch-action-body::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.branch-action-state-clean .branch-action-body::before { border-right-color: rgb(149, 201, 126); }
+.branch-action-state-unknown .branch-action-body::before, .branch-action-state-unstable .branch-action-body::before { border-right-color: rgb(226, 204, 122); }
+.branch-action-state-merged .branch-action-body::before { border-right-color: rgb(136, 110, 173); }
+.merge-branch-form .commit-form::before { border-right-color: rgb(149, 201, 126); }
+.merge-branch-form.error .commit-form::before { border-right-color: rgb(233, 122, 116); }
+.starring-container .unstarred, .starring-container.on .starred { display: block; }
+.starring-container.on .unstarred, .starring-container .starred { display: none; }
+.code-list .blob-num::before { content: normal; }
+.container-preview:not(.show-code) .commit-create, .container-preview:not(.show-code) .actions { display: none; }
+.comment-body { width: 100%; padding: 15px; overflow: visible; font-size: 14px; }
+.comment-body .highlight { overflow: visible ! important; background-color: transparent; }
+.comment-form-textarea { width: 100%; max-width: 100%; height: 100px; min-height: 100px; margin: 0px; font-size: 14px; line-height: 1.6; }
+.comment-form-error, .comment-form-stale { display: none; padding: 5px 10px; margin: 0px 10px; font-weight: bold; color: rgb(153, 0, 0); background-color: rgb(255, 234, 234); border: 1px solid rgb(226, 160, 160); }
+.commits-listing::before { position: absolute; top: 0px; bottom: 0px; left: 14px; z-index: -1; display: block; width: 2px; content: ""; background-color: rgb(243, 243, 243); }
+.full-commit .branches-list li::before { padding-right: 6px; font-weight: normal; content: "+"; }
+.full-commit .branches-list li:first-child::before { padding-right: 0px; content: ""; }
+.full-commit .branches-list li.pull-request::before { margin-left: -8px; content: ""; }
+.file-history-tease .participation::before { display: table; content: ""; }
+.file-history-tease .participation::after { display: table; clear: both; content: ""; }
+.commit-build-statuses.active .tooltipped::before, .commit-build-statuses.active .tooltipped::after { display: none; }
+.existing-pull .list-group-item::before { display: table; content: ""; }
+.existing-pull .list-group-item::after { display: table; clear: both; content: ""; }
+.context-loader-container .context-loader { display: none; }
+.page-context-loader { margin-left: 10px; display: none; }
+@keyframes broadCastMaskFade {
+ 0% { opacity: 0; }
+ 30% { opacity: 1; }
+ 70% { opacity: 1; }
+ 100% { opacity: 0; }
+}
+.news .alert .mega-octicon::before { color: inherit; }
+@keyframes slideUp {
+ 0% { transform: translate3d(0px, 500px, 0px); }
+ 100% { transform: translate3d(0px, 0px, 0px); }
+}
+.discussion-timeline { position: relative; width: 760px; float: left; }
+.discussion-timeline::before { display: block; content: ""; position: absolute; top: 0px; bottom: 0px; left: 79px; width: 2px; background-color: rgb(243, 243, 243); z-index: -1; }
+.discussion-sidebar { position: sticky; top: 0px; z-index: 21; float: right; width: 140px; }
+.discussion-sidebar-item { padding-top: 15px; font-size: 12px; color: rgb(153, 153, 153); }
+.discussion-sidebar-item .btn .octicon { margin-right: 0px; }
+.discussion-sidebar-item + .discussion-sidebar-item { margin-top: 15px; border-top: 1px solid rgb(238, 238, 238); }
+.discussion-sidebar-heading { margin-top: 0px; margin-bottom: 10px; font-size: 12px; line-height: 16px; color: rgb(119, 119, 119); }
+.sidebar-notifications { position: relative; }
+.sidebar-notifications .thread-subscription-status { margin: 0px; padding: 0px; border: 0px none; }
+.sidebar-notifications .thread-subscription-status .thread-subscribe-form { display: block; }
+.sidebar-notifications .thread-subscription-status .mega-octicon { display: none; }
+.sidebar-notifications .thread-subscription-status .reason { padding: 0px; margin: 5px 0px 0px; font-size: 11px; color: rgb(153, 153, 153); }
+.sidebar-notifications .thread-subscription-status .btn-sm { display: block; width: 100%; }
+.participation .participant-avatar { float: left; margin: 3px 0px 0px 3px; }
+.participation a { color: rgb(153, 153, 153); }
+.participation a:hover { color: rgb(65, 131, 196); text-decoration: none; }
+.participation-avatars { margin-left: -3px; }
+.participation-avatars::before { display: table; content: ""; }
+.participation-avatars::after { display: table; clear: both; content: ""; }
+.inline-comment-form .form-actions, .timeline-new-comment .form-actions { padding: 0px 10px 10px; }
+.gh-header-actions { float: right; margin-top: 3px; }
+.gh-header-actions .btn-sm { float: left; margin-left: 5px; }
+.gh-header-title { margin-top: 0px; margin-bottom: 0px; margin-right: 150px; font-weight: normal; line-height: 1.1; word-wrap: break-word; }
+.gh-header-number { font-weight: 300; color: rgb(170, 170, 170); letter-spacing: -1px; }
+.gh-header-edit::before { display: table; content: ""; }
+.gh-header-edit::after { display: table; clear: both; content: ""; }
+.gh-header-meta { margin-top: 9px; font-size: 14px; line-height: 20px; color: rgb(119, 119, 119); padding-bottom: 20px; border-bottom: 1px solid rgb(238, 238, 238); }
+.gh-header.issue .gh-header-meta { margin-bottom: 15px; }
+.gh-header-meta .flex-table-item { vertical-align: top; }
+.gh-header-meta .flex-table-item-primary { padding-top: 4px; white-space: normal; word-wrap: break-word; }
+.gh-header-meta .state { margin-right: 8px; }
+.gh-header-meta .author { color: rgb(85, 85, 85); font-weight: bold; }
+.gh-header-meta .noun { text-transform: lowercase; }
+.timeline-comment-wrapper > .timeline-comment::after, .timeline-comment-wrapper > .timeline-comment::before, .timeline-new-comment .timeline-comment::after, .timeline-new-comment .timeline-comment::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.timeline-comment-wrapper > .timeline-comment::after, .timeline-new-comment .timeline-comment::after { border-width: 7px; border-right-color: rgb(247, 247, 247); margin-top: 1px; margin-left: 2px; }
+.timeline-comment-wrapper > .timeline-comment::before, .timeline-new-comment .timeline-comment::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.timeline-comment-wrapper { position: relative; padding-left: 64px; margin-top: 15px; margin-bottom: 15px; border-top: 2px solid rgb(255, 255, 255); border-bottom: 2px solid rgb(255, 255, 255); }
+.timeline-comment-wrapper:first-child { margin-top: 0px; }
+.discussion-timeline-actions .timeline-comment-wrapper:first-child { margin-top: 15px; }
+.timeline-comment-wrapper .timeline-comment.current-user::after, .timeline-comment-wrapper .timeline-comment.current-user::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.timeline-comment-wrapper .timeline-comment.current-user::after { border-width: 7px; border-right-color: rgb(242, 248, 250); margin-top: 1px; margin-left: 2px; }
+.timeline-comment-wrapper .timeline-comment.current-user::before { border-right-color: rgb(191, 204, 209); border-width: 8px; }
+.timeline-comment-wrapper .timeline-comment.unread-item::after, .timeline-comment-wrapper .timeline-comment.unread-item::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.timeline-comment-wrapper .timeline-comment.unread-item::after { border-width: 7px; border-right-color: rgb(255, 249, 234); margin-top: 1px; margin-left: 2px; }
+.timeline-comment-wrapper .timeline-comment.unread-item::before { border-right-color: rgb(223, 216, 194); border-width: 8px; }
+.timeline-comment-avatar { float: left; margin-left: -64px; border-radius: 3px; }
+.timeline-comment { position: relative; background-color: rgb(255, 255, 255); border: 1px solid rgb(221, 221, 221); border-radius: 3px; }
+.timeline-comment.will-transition-once::before, .timeline-comment.will-transition-once::after { transition: border-right-color 0.65s ease-in-out 0s; }
+.timeline-comment:empty { display: none; }
+.timeline-comment .comment + .comment::before, .timeline-comment .comment + .comment::after { display: none; }
+.timeline-comment-header { padding-left: 15px; padding-right: 15px; color: rgb(153, 153, 153); background-color: rgb(247, 247, 247); border-bottom: 1px solid rgb(238, 238, 238); border-top-left-radius: 3px; border-top-right-radius: 3px; }
+.timeline-comment-header .author { font-weight: bold; color: rgb(85, 85, 85); }
+.timeline-comment-header .timestamp { white-space: nowrap; color: inherit; }
+.timeline-comment-label { float: right; margin: 8px 0px 0px 10px; padding: 2px 5px; font-size: 12px; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 3px; }
+.timeline-comment-header-text { max-width: 78%; padding-top: 10px; padding-bottom: 10px; }
+.timeline-new-comment { max-width: 780px; margin-bottom: 0px; }
+.timeline-new-comment .comment-form-head { margin-bottom: 10px; }
+.timeline-new-comment .previewable-comment-form .comment-body { padding: 5px 5px 15px; border-bottom: 1px solid rgb(238, 238, 238); }
+.new-discussion-timeline .previewable-comment-form .comment-form-head.tabnav { background: rgb(247, 247, 247) none repeat scroll 0% 0%; padding: 6px 10px 0px; border-radius: 3px 3px 0px 0px; }
+.new-discussion-timeline .previewable-comment-form .comment { border: 0px none; }
+.new-discussion-timeline .previewable-comment-form .comment-body { padding: 5px 5px 15px; border-bottom: 1px solid rgb(238, 238, 238); background-color: transparent; }
+.new-discussion-timeline .composer .timeline-comment::after { border-right-color: rgb(255, 255, 255); }
+.discussion-timeline-actions { border-top: 2px solid rgb(243, 243, 243); background-color: rgb(255, 255, 255); }
+.git-lfs-setup-list li::before { content: counter(step-counter, decimal) "."; margin-right: 10px; font-weight: bold; }
+.explore-section:nth-child(2n) { background: rgb(249, 249, 249) none repeat scroll 0% 0%; }
+.explore-section:nth-child(2n) .repo-collection > ul { background: rgb(255, 255, 255) none repeat scroll 0% 0%; }
+.explore-section:nth-child(2n+1):last-child { padding-bottom: 0px; border-bottom: 0px none; }
+@keyframes fadein {
+ 0% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+.form-signup-home dl.form.errored dd.error::after, .form-signup-home dl.form.errored dd.warning::after { position: absolute; left: 10px; bottom: 100%; height: 0px; width: 0px; content: ""; border-style: solid; border-color: transparent transparent rgb(51, 51, 51); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-width: 8px; pointer-events: none; }
+.form-signup-home dl.successed::after, .form-signup-home dl.errored::after { position: absolute; top: 15px; right: 10px; text-shadow: none; font: 16px/1 "octicons"; display: inline-block; text-decoration: none; }
+.form-signup-home dl.successed::after { content: ""; color: rgb(108, 198, 68); }
+.form-signup-home dl.errored::after { content: ""; color: rgb(189, 44, 0); }
+.form-signup-home dl.is-loading::after { position: absolute; top: 15px; right: 10px; display: block; width: 16px; height: 16px; content: ""; background-image: url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-16px.gif"); }
+@media not all, not all, only screen and (min-resolution: 2dppx) {
+ .form-signup-home dl.is-loading::after { background-image: url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif"); background-size: 16px 16px; }
+}
+@keyframes cloud1animation {
+ 0% { transform: translateX(-70px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud2animation {
+ 0% { transform: translateX(50px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud3animation {
+ 0% { transform: translateX(-150px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud4animation {
+ 0% { transform: translateX(125px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud5animation {
+ 0% { transform: translateX(-80px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud6animation {
+ 0% { transform: translateX(-200px); }
+ 100% { transform: translateX(0px); }
+}
+.issue-list-meta::before { display: table; content: ""; }
+.issue-list-meta::after { display: table; clear: both; content: ""; }
+.new-label .label-edit::before { display: table; content: ""; }
+.new-label .label-edit::after { display: table; clear: both; content: ""; }
+.label-edit::before { display: table; content: ""; }
+.label-edit::after { display: table; clear: both; content: ""; }
+.label-colors::before { left: 8px; }
+.label-colors::after { left: 9px; }
+@keyframes ellipsis {
+ 0% { width: 2px; }
+ 100% { width: 12px; }
+}
+.context-loader.large-format-loader { position: fixed; display: none; top: 0px; left: 0px; bottom: 0px; right: 0px; margin: 0px; width: auto; padding: 190px 0px 0px; font-weight: normal; background: rgba(255, 255, 255, 0.8) none repeat scroll 0% 0%; border: 0px none; z-index: 9999; text-align: center; color: rgb(153, 153, 153); }
+.request-reviewers-list::before { display: table; content: ""; }
+.request-reviewers-list::after { display: table; clear: both; content: ""; }
+.clearfix::before { display: table; content: ""; }
+.clearfix::after { display: table; clear: both; content: ""; }
+.right { float: right; }
+.left { float: left; }
+</style> + <style media="all" rel="stylesheet">/* Effective stylesheet produced by snapshot save */
+.marketing-section::before { display: table; content: ""; }
+.marketing-section::after { display: table; clear: both; content: ""; }
+@keyframes rotate {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(-360deg); }
+}
+@keyframes teamDev {
+ 3% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 27% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 30% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+}
+@keyframes teamDesign {
+ 34% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 37% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 60% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 63% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+}
+@keyframes teamMarketing {
+ 67% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 70% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+ 94% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+}
+@keyframes teamDevDesign {
+ 3% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 27% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 30% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 34% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 37% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 60% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 63% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+}
+@keyframes teamDevDesignMarketing {
+ 3% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 27% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 30% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 34% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 37% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 60% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 63% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 67% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 70% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+ 94% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+}
+@keyframes bounceIn {
+ 0% { opacity: 0; transform: scale(0.3); }
+ 50% { opacity: 1; transform: scale(1.05); }
+ 70% { transform: scale(0.9); }
+ 100% { transform: scale(1); }
+}
+@keyframes fadeIn {
+ 0% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+.segmented-nav-tab::before { display: table; content: ""; }
+.segmented-nav-tab::after { display: table; clear: both; content: ""; }
+.table-list-header::before { display: table; content: ""; }
+.table-list-header::after { display: table; clear: both; content: ""; }
+.subnav::before { display: table; content: ""; }
+.subnav::after { display: table; clear: both; content: ""; }
+.boxed-group-list > li.approved::before { margin-right: 5px; font: 16px/1 "octicons"; display: inline-block; text-decoration: none; content: ""; color: rgb(94, 192, 81); }
+.boxed-group-list > li.rejected::before { margin-right: 5px; font: 16px/1 "octicons"; display: inline-block; text-decoration: none; content: ""; color: rgb(188, 0, 0); }
+#ajax-error-message { display: none; position: fixed; top: -200px; left: 50%; width: 974px; z-index: 9999; margin: 0px 3px 0px -487px; transition: top 0.5s ease-in-out 0s; }
+#ajax-error-message > .octicon-alert { vertical-align: text-top; }
+.simple-conversation-list.varied-states > li::before { display: table; content: ""; }
+.simple-conversation-list.varied-states > li::after { display: table; clear: both; content: ""; }
+.pagehead { position: relative; padding-top: 20px; padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px solid rgb(238, 238, 238); }
+.pagehead ul.pagehead-actions { z-index: 21; float: right; margin: 0px; }
+.pagehead .path-divider { margin: 0px 0.25em; }
+.pagehead h1 { margin-top: 0px; margin-bottom: 0px; font-size: 20px; font-weight: normal; line-height: 28px; }
+.pagehead h1 strong { font-weight: bold; }
+.pagehead h1 a { white-space: nowrap; }
+.pagehead-actions > li { float: left; margin: 0px 10px 0px 0px; font-size: 11px; color: rgb(51, 51, 51); list-style-type: none; }
+.pagehead-actions > li:last-child { margin-right: 0px; }
+.pagehead-actions .octicon-mute { color: rgb(204, 0, 0); }
+.pagehead-actions .select-menu { position: relative; }
+.pagehead-actions .select-menu::before { display: table; content: ""; }
+.pagehead-actions .select-menu::after { display: table; clear: both; content: ""; }
+.pagehead-actions .select-menu-modal-holder { top: 100%; }
+.context-loader { position: absolute; top: 0px; left: 50%; z-index: 20; width: 154px; padding: 10px 10px 10px 30px; margin-left: -75px; font-size: 12px; font-weight: bold; color: rgb(102, 102, 102); background: rgb(238, 238, 238) url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-16px.gif") no-repeat scroll 10px 50%; border-width: 1px; border-style: solid; border-color: rgb(255, 255, 255) rgb(221, 221, 221) rgb(221, 221, 221); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-radius: 0px 0px 5px 5px; }
+@media not all, screen and (max--moz-device-pixel-ratio: 2) {
+ .context-loader { background: rgb(238, 238, 238) url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-32-EAF2F5.gif") no-repeat scroll 10px 50% / 16px auto; }
+}
+.press-info::before { display: table; content: ""; }
+.press-info::after { display: table; clear: both; content: ""; }
+.hubbers-list::before { display: table; content: ""; }
+.hubbers-list::after { display: table; clear: both; content: ""; }
+.billing-addon-items table tr:nth-child(2n) { background-color: rgb(250, 250, 250); }
+.payment-methods .selected-payment-method::before { display: table; content: ""; }
+.payment-methods .selected-payment-method::after { display: table; clear: both; content: ""; }
+#bt-pp-cancel::before { font-size: 16px ! important; content: ""; }
+.branch-group::before { display: table; content: ""; }
+.branch-group::after { display: table; clear: both; content: ""; }
+@keyframes branch-bar-slide {
+ 0% { width: 0%; }
+ 100% { width: 100%; }
+}
+.capped-card::before { display: table; content: ""; }
+.capped-card::after { display: table; clear: both; content: ""; }
+.capped-card:nth-child(2n+1) { margin-left: 0px; }
+.capped-card:nth-child(2n) { margin-right: 0px; }
+.capped-card-content::before { display: table; content: ""; }
+.capped-card-content::after { display: table; clear: both; content: ""; }
+.clone-url .input-group { width: 100%; }
+.clone-url input.input-mini { font-size: 11px; color: rgb(153, 153, 153); }
+.commit-form::after, .commit-form::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.commit-form::after { border-width: 7px; border-right-color: rgb(255, 255, 255); margin-top: 1px; margin-left: 2px; }
+.commit-form::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.commit-form-actions::before { display: table; content: ""; }
+.commit-form-actions::after { display: table; clear: both; content: ""; }
+.diff-table tr:not(:last-child) .line-comments { border-top: 1px solid rgb(238, 238, 238); border-bottom: 1px solid rgb(238, 238, 238); }
+.blob-num::before { content: attr(data-line-number); }
+.blob-expanded + tr:not(.blob-expanded) .blob-num, .blob-expanded + tr:not(.blob-expanded) .blob-code { border-top: 1px solid rgb(238, 238, 238); }
+tr:not(.blob-expanded) + .blob-expanded .blob-num, tr:not(.blob-expanded) + .blob-expanded .blob-code { border-top: 1px solid rgb(238, 238, 238); }
+.file-header::before { display: table; content: ""; }
+.file-header::after { display: table; clear: both; content: ""; }
+.write-content { position: relative; }
+.fullscreen-overlay { display: none; position: fixed; top: 0px; bottom: 0px; left: 0px; right: 0px; background: rgb(255, 255, 255) none repeat scroll 0% 0%; text-shadow: none; z-index: 1000; }
+.fullscreen-overlay .fullscreen-container { max-width: 800px; height: 100%; margin: 0px auto; padding: 30px 0px; }
+.fullscreen-overlay .textarea-wrap { width: 100%; height: 100%; position: relative; }
+.fullscreen-overlay textarea { width: 100%; height: 100%; padding: 20px; border: 0px none; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: rgb(153, 153, 153); font-size: 21px; line-height: 1.6em; resize: none; transition: color 0.15s ease-in-out 0s; box-shadow: none; }
+.fullscreen-overlay textarea:focus, .fullscreen-overlay textarea:hover { outline: medium none; color: rgb(51, 51, 51); }
+.fullscreen-overlay .fullscreen-sidebar { position: absolute; top: 30px; right: 30px; text-align: right; z-index: 1002; }
+.fullscreen-overlay .fullscreen-sidebar .exit-fullscreen, .fullscreen-overlay .fullscreen-sidebar .theme-switcher { color: rgb(179, 179, 179); float: right; clear: right; margin-bottom: 15px; }
+.fullscreen-overlay .fullscreen-sidebar .exit-fullscreen:hover, .fullscreen-overlay .fullscreen-sidebar .theme-switcher:hover { color: rgb(51, 51, 51); text-shadow: 0px 0px 10px rgb(255, 255, 255); }
+.fullscreen-overlay .fullscreen-sidebar .theme-switcher { margin-right: 8px; }
+.fullscreen-overlay .suggester-container { top: 5px; left: 0px; }
+.issues-listing { position: relative; }
+.new-issue-form .discussion-timeline::before { display: none; }
+.new-pr-form::before { display: table; content: ""; }
+.new-pr-form::after { display: table; clear: both; content: ""; }
+.new-pr-form .discussion-timeline::before { display: none; }
+.thread-subscription-status { margin: 40px 0px 20px; padding: 10px; color: rgb(119, 119, 119); background-color: rgb(255, 255, 255); border: 1px solid rgb(238, 238, 238); border-radius: 3px; }
+.thread-subscription-status .mega-octicon { vertical-align: middle; margin-right: 10px; margin-left: 4px; color: rgb(204, 204, 204); }
+.thread-subscription-status .btn-sm > .octicon { margin-right: 1px; }
+.thread-subscription-status .reason { display: inline-block; margin: 0px 10px; vertical-align: middle; }
+.thread-subscription-status .thread-subscribe-form { display: inline-block; vertical-align: middle; }
+.ellipsis-button::before { content: "…"; }
+.oauth-permissions-details.default:not(.delete) .no-access, .oauth-permissions-details.default:not(.delete) .default-access, .oauth-permissions-details.none .no-access, .oauth-permissions-details.none .default-access { display: inline; }
+.oauth-permissions-details.default:not(.delete) .access-details, .oauth-permissions-details.default:not(.delete) .permission-title, .oauth-permissions-details.none .access-details, .oauth-permissions-details.none .permission-title { color: rgb(153, 153, 153); }
+.oauth-permissions-details.default:not(.delete) .mega-octicon, .oauth-permissions-details.none .mega-octicon { color: rgb(204, 204, 204); }
+.member-avatar-group::before { display: table; content: ""; }
+.member-avatar-group::after { display: table; clear: both; content: ""; }
+.member-row::before { display: table; content: ""; }
+.member-row::after { display: table; clear: both; content: ""; }
+.org-list .list-item::before { display: table; content: ""; }
+.org-list .list-item::after { display: table; clear: both; content: ""; }
+.permission-level-cell .select-menu-button::after { position: absolute; top: 10px; right: 10px; }
+.invitation-role-group::before { display: table; content: ""; }
+.invitation-role-group::after { display: table; clear: both; content: ""; }
+.migrate-org-roles .tooltipped::after { width: 300px; white-space: normal; }
+.migrate-org-avatar-list::before { display: table; content: ""; }
+.migrate-org-avatar-list::after { display: table; clear: both; content: ""; }
+.migrate-org-avatar-list .tooltipped::after { width: auto; white-space: nowrap; }
+.team-grid::before { display: table; content: ""; }
+.team-grid::after { display: table; clear: both; content: ""; }
+.typeahead-result::before { display: table; content: ""; }
+.typeahead-result::after { display: table; clear: both; content: ""; }
+.manage-user-info::before { display: table; content: ""; }
+.manage-user-info::after { display: table; clear: both; content: ""; }
+.org-migration-actions::before { display: table; content: ""; }
+.org-migration-actions::after { display: table; clear: both; content: ""; }
+.manage-repo-access-header::before { display: table; content: ""; }
+.manage-repo-access-header::after { display: table; clear: both; content: ""; }
+.ldap-memberships-list .ldap-group-form > div:not(.table-list-cell) { display: none ! important; }
+.invited .team-member-list .list-item::before { display: table; content: ""; }
+.invited .team-member-list .list-item::after { display: table; clear: both; content: ""; }
+.invited-banner::before { display: table; content: ""; }
+.invited-banner::after { display: table; clear: both; content: ""; }
+.owner-select-grid::before { display: table; content: ""; }
+.owner-select-grid::after { display: table; clear: both; content: ""; }
+.theme-selector-actions::before { display: table; content: ""; }
+.theme-selector-actions::after { display: table; clear: both; content: ""; }
+.vcard-stats::before { display: table; content: ""; }
+.vcard-stats::after { display: table; clear: both; content: ""; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable .unchanged:not(.vicinity) { display: none; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:first-child::before { margin-top: 1em; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable::before { font-family: "octicons"; content: ""; color: rgb(211, 211, 211); display: block; text-align: center; font-size: 24px; letter-spacing: 2px; line-height: 0; margin-top: 1em; margin-bottom: 1em; padding: 0px; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:hover::before { color: rgb(0, 0, 0); }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child::before { content: "Sorry, no visible changes to display."; color: rgb(211, 211, 211); font-size: 18px; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child:hover::before { color: rgb(0, 0, 0); }
+.prose-diff :not(.changed) > :not(.github-user-ins):not(.github-user-del) > .removed, .prose-diff :not(.changed) > :not(.github-user-ins):not(.github-user-del) > del { text-decoration: none; }
+.prose-diff > .markdown-body li ul.removed:not(.github-user-ins) { text-decoration: line-through; }
+.prose-diff > .markdown-body li.added.moved-up::before { font-family: "octicons"; content: ""; color: rgb(211, 211, 211); }
+.prose-diff > .markdown-body li.added.moved-down::before { font-family: "octicons"; content: ""; color: rgb(211, 211, 211); }
+.prose-diff > .markdown-body li.removed:not(.moved) { color: rgb(170, 51, 51); background: rgb(255, 234, 234) none repeat scroll 0% 0%; }
+.prose-diff > .markdown-body li.removed:not(.moved):not(.github-user-ins) { text-decoration: line-through; }
+.prose-diff > .markdown-body .added:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins + .added:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins:not(.github-user-del):not(.github-user-ins) { text-decoration: none; }
+.prose-diff > .markdown-body ins pre:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins code:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins > div:not(.github-user-del):not(.github-user-ins) { text-decoration: none; }
+.tabnav-callout::before { position: absolute; top: 50%; right: 100%; margin-top: -7px; display: inline-block; content: ""; border: 7px solid transparent; }
+.callout-review::before { border-right-color: rgb(252, 235, 155); }
+.callout-success::before { border-right-color: rgb(216, 240, 205); }
+.radio-group::before { display: table; content: ""; }
+.radio-group::after { display: table; clear: both; content: ""; }
+:checked + .radio-label { z-index: 1; position: relative; border-color: rgb(65, 131, 196); }
+.recommended-showcase-link:nth-child(2n+1) { margin-left: 4%; }
+.release-timeline-tags > li::before { display: table; content: ""; }
+.release-timeline-tags > li::after { display: table; clear: both; content: ""; }
+.release-timeline-tags .date::after { box-sizing: border-box; content: " "; display: block; position: absolute; top: 50%; right: -7px; z-index: 10; width: 12px; height: 12px; margin-top: -6px; background-color: rgb(238, 238, 238); border: 2px solid rgb(255, 255, 255); border-radius: 6px; }
+.release-timeline-tags .expander .date::after { display: none; }
+.release::before { display: table; content: ""; }
+.release::after { display: table; clear: both; content: ""; }
+.uploaded-files > li.delete:nth-child(2) { border-top-right-radius: 3px; border-top-left-radius: 3px; }
+.uploaded-files > li:nth-child(2) { border-top: 0px none; }
+.releases-target-menu .select-menu-button::before { top: 14px; }
+.render-container.is-render-ready.is-render-requested:not(.is-render-failed) { background: transparent none repeat scroll 0% 0%; height: 500px; padding: 0px; }
+.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer { display: block; }
+.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-error, .render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-fatal, .render-container.is-render-ready.is-render-requested:not(.is-render-failed) .octospinner { display: none; }
+.pagehead.repohead h1 { color: rgb(102, 102, 102); padding-left: 34px; position: relative; float: left; }
+.pagehead.repohead h1.private .mega-octicon::before { color: rgb(233, 219, 165); }
+.pagehead.repohead h1 .octicon-lock, .pagehead.repohead h1 .octicon-repo, .pagehead.repohead h1 .octicon-mirror, .pagehead.repohead h1 .octicon-repo-forked, .pagehead.repohead h1 .octicon-gist, .pagehead.repohead h1 .octicon-gist-secret { position: absolute; left: 0px; top: 12px; line-height: 32px; margin-top: -13px; color: rgb(187, 187, 187); }
+.filter-bar::before { display: table; content: ""; }
+.filter-bar::after { display: table; clear: both; content: ""; }
+.repo-container { min-height: 345px; }
+.repo-nav .full-word { display: none; }
+.only-with-full-nav { display: none; }
+.repository-with-sidebar::before { display: table; content: ""; }
+.repository-with-sidebar::after { display: table; clear: both; content: ""; }
+.repository-with-sidebar .repository-sidebar { float: right; width: 38px; }
+.repository-with-sidebar .repository-sidebar .sidebar-button { width: 100%; margin: 0px 0px 10px; text-align: center; }
+.repository-with-sidebar .repository-sidebar h3 { margin-bottom: 5px; font-size: 11px; font-weight: normal; color: rgb(153, 153, 153); }
+.repository-with-sidebar .repository-sidebar .clone-url { display: none; margin-top: -5px; }
+.repository-with-sidebar .repository-sidebar .clone-url.open { display: block; }
+.repository-with-sidebar .repository-sidebar .clone-options { margin: 8px 0px 15px; font-size: 11px; color: rgb(102, 102, 102); }
+.repository-with-sidebar .repository-sidebar .clone-options .octicon-question { position: relative; bottom: 1px; font-size: 11px; color: rgb(0, 0, 0); cursor: pointer; }
+.repository-with-sidebar .repository-content { float: left; width: 920px; }
+.repository-with-sidebar.with-full-navigation .sunken-menu-group .tooltipped::before, .repository-with-sidebar.with-full-navigation .sunken-menu-group .tooltipped::after { display: none; }
+.repository-meta::before { display: table; content: ""; }
+.repository-meta::after { display: table; clear: both; content: ""; }
+.file-navigation::before { display: table; content: ""; }
+.file-navigation::after { display: table; clear: both; content: ""; }
+.fork-select-fragment { text-align: center; }
+.pagehead.repohead .select-menu .select-menu-modal-holder { z-index: 25; }
+.audit-search-form::before { display: table; content: ""; }
+.audit-search-form::after { display: table; clear: both; content: ""; }
+.graticule :nth-child(2n) { stroke-dasharray: 2, 2; }
+.export-actions .select-menu-button::after { position: absolute; right: 15px; top: 50%; margin-top: -2px; }
+.audit-log-export-button.disabled::after { display: none; }
+.context-loader-container .large-format-loader { position: fixed; top: 0px; left: 0px; bottom: 0px; right: 0px; padding-top: 190px; background: rgba(255, 255, 255, 0.8) none repeat scroll 0% 0%; z-index: 9999; text-align: center; color: rgb(153, 153, 153); }
+.two-factor-recovery-code::before { content: "□"; font-size: 26px; margin-right: 10px; color: rgb(234, 234, 234); position: relative; top: 1px; }
+.markdown-body .sms-or-app::before { display: table; content: ""; }
+.markdown-body .sms-or-app::after { display: table; clear: both; content: ""; }
+.two-factor-setup-container .select-menu .select-menu-button::before { top: 14px; }
+li.session-device.session-current .sessions-more-info::after { border-top-color: rgb(255, 255, 255); }
+.setup-form .octicon-alert::before { color: rgb(189, 44, 0); }
+.setup-form .octicon-check::before { color: rgb(108, 198, 68); }
+.collection-card:nth-child(3n+3) { margin-right: 0px; }
+.signup-plans tr:nth-child(2n+1) td { background-color: rgb(245, 245, 245); }
+.signup-plans-personal tr:nth-child(2n+1) td { background-color: rgb(240, 245, 250); }
+.signup-plans-orgs tr:nth-child(2n+1) td { background-color: rgb(246, 252, 244); }
+#user-content-toc ul ul li::before { float: left; margin-top: -0.2em; margin-right: 0.2em; font-size: 1.2em; line-height: 1; color: rgb(170, 170, 170); content: "⌞"; }
+.wiki-wrapper .wiki-auxiliary-content.markdown-body.wiki-writable > :nth-child(2) { margin-top: 0px ! important; }
+.wiki-wrapper .wiki-custom-sidebar > :nth-child(2) { margin-top: 0px; }
+</style> + + + + + <meta http-equiv="x-pjax-version" content="be127a1bc145075f45563e8af963c3fb"> + + + <meta name="description" content="dav - WebDAV, CalDAV, and CardDAV client for nodejs and the browser."> + <meta name="go-import" content="github.com/gaye/dav git https://github.com/gaye/dav.git"> + + <meta content="535859" name="octolytics-dimension-user_id"><meta content="gaye" name="octolytics-dimension-user_login"><meta content="20107688" name="octolytics-dimension-repository_id"><meta content="gaye/dav" name="octolytics-dimension-repository_nwo"><meta content="true" name="octolytics-dimension-repository_public"><meta content="false" name="octolytics-dimension-repository_is_fork"><meta content="20107688" name="octolytics-dimension-repository_network_root_id"><meta content="gaye/dav" name="octolytics-dimension-repository_network_root_nwo"> + <link href="https://github.com/gaye/dav/commits/master.atom" rel="alternate" title="Recent Commits to dav:master" type="application/atom+xml"> + + <script async="" type="text/javascript">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script></head> + + + <body class="logged_in env-production linux vis-public"> + <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a> + <div class="wrapper"> + + + + + + <div class="header header-logged-in true" role="banner"> + <div class="container clearfix"> + + <a class="header-logo-invertocat" href="https://github.com/" data-hotkey="g d" aria-label="Homepage" data-ga-click="Header, go to dashboard, icon:logo"> + <span class="mega-octicon octicon-mark-github"></span> +</a> + + + <div class="site-search repo-scope js-site-search" role="search"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/search" class="js-site-search-form" data-global-search-url="/search" data-repo-search-url="/gaye/dav/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"></div> + <input class="js-site-search-field is-clearable" data-hotkey="s" name="q" placeholder="Search" data-global-scope-placeholder="Search GitHub" data-repo-scope-placeholder="Search" tabindex="1" autocapitalize="off" type="text"> + <div class="scope-badge">This repository</div> +</form> + </div> + + <ul class="header-nav left" role="navigation"> + <li class="header-nav-item explore"> + <a class="header-nav-link" href="https://github.com/explore" data-ga-click="Header, go to explore, text:explore">Explore</a> + </li> + <li class="header-nav-item"> + <a class="header-nav-link" href="https://gist.github.com/" data-ga-click="Header, go to gist, text:gist">Gist</a> + </li> + <li class="header-nav-item"> + <a class="header-nav-link" href="https://github.com/blog" data-ga-click="Header, go to blog, text:blog">Blog</a> + </li> + <li class="header-nav-item"> + <a class="header-nav-link" href="https://help.github.com/" data-ga-click="Header, go to help, text:help">Help</a> + </li> + </ul> + + +<ul class="header-nav user-nav right" id="user-links"> + <li class="header-nav-item dropdown js-menu-container"> + <a class="header-nav-link name" href="https://github.com/mcepl" data-ga-click="Header, go to profile, text:username"> + <img alt="@mcepl" class="avatar" data-user="198999" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAE00lEQVRYw8WXS4wUVRSGv1NVbTfMA3lIIEMMkYcIBCNqYjRGVkh4uEGjEY0uIEY2LkxYiTruXZAYgiFKMECi4kKJLxI3GI1ECTGgkKDEIEyYGehBpme6arr7Hhfd1V3dXS96mnAnlTt9bt1b/z3n/P89V1RVqbV8fh/npg4xJS53ojkVm/t0EwMDbzdsPj4RIZcbYvus05y3JsNXEEADfZdty8s2P99chaoiIqgqjoiEAyEwOQpsnE06s4lUneU7zQlEuNE04v9btXXYgpisINqmXcXtvAueirT5phoepw1c2pDdRpBBp1mqSluYNeKhpe+2DVBthDiZJDFe3XJ5ESe+2IoxdmDI8Dr7yNEsU6ObYO/96QgmLZ5MJklEG5o5yXN/rOLIkRcxprqqLYZdHGS2uvWP6UbY8EJnxFPVzklyak6er1/7EMcp47ozcN2ZFIsz0KIgLuACHvAKHF+YQpYimhWMd1sOEp4nfj/aN45tV9pc0PRaf8QaUbYWqbFuSaAkbucS/1pKBvt+qstMpyQJ/3rE65L+FGolicVtatLJ8diig/UQhzIZeObyAI9cnxObh1FJ1PRahA6uvw47L7cv0aSDkSQBTh7bwuZTD/Pvjv2M9t9s3+k/i6lU7HiS/A0r57dvfskEfPkRDC4B3owmiRMXJqPC0aPP4h3eRlZMW32kanHTzYaSRAFR0J1w1gqptrQ6zrvNJViQJIkniQCqguvOiKs9wsNc+6h4MWmXmSZJtBM61ERetCNdbiOJ48c7zJMWii0VLCqpFratCuP04Wg5JRDFwwOm2khSD3EcSV7lALv4FE2zd4ECvTyov+NqLhXADCWUQdD3k0kS5sEcHrPVS30lcbSMqzk8si2j4bONWlg4ySRp00GJzpvQE0uiElYTzzYh4U4SW1H7E+2YDK+EgWsgtu0yIhqZg4lX0TiSIMBmuPYylPtDJl+CeTtAx8PxW5Zhz543GFh7qm3Mm+jhu8Mv8ZltQk+SVCQZ3QBPb4Xj94TvbuUcOOuESVLj1+rVZ1n32MnQ+Q+tOcO6iR6+UTojyd7FyRd3Cb0+S6RwB4dOzx/ltI5OjyRpyi1JEvBbuBG2ksRKJMkdbrHlVpqyP/pI1Pi5ceulLbeSQC4pgJp4khQKvd25k6QKcyBf1uer9ZxMAVmQLEhWyWa9+pPJlDh0aBtrri6Y3p3ER2uMVDeTgiRLi7Vic7DhhSnxUAaxA2XmMTE87nsxAaTWyrumq7AG2tjYD3r42grlDv0dzC/SkZHPg5AUVVVjjKqqlsue5vO/6L6hpdUpJjDdhPRdtO0fXqDDI8e1VCrW8RhjFGOMtj6FwhU9MLRdl3lztbdiNRbs8tNbEV3m3a0fX3leb9z4S8Ow1AH6iP3HdW/o8PAnuju/XjcWZnXdg5sne3X32FN69epeLRavaSsOvxc/1D5Zgmw2xlAoXKRU+p73rK+4kPmVb3vHpiW8Gyf6WOqt5R224Dgb6OlZgW3b0ZzUSJWmCejk5AUumTOcKP2EMT9ybuYZPuiZSgVqYTnDW2MPAE+wLvsk91pryOWW4ziZZGWL82Dwd5VQhkqlgOp/XJ8a4c/x30DOI1wEGcESryYVd4HOQ1kMuoK5fY+y8q6FQD+O04eI3VQQBKWu1fY/7H7d6/Cmr/YAAAAASUVORK5CYII=" width="20" height="20"> + <span class="css-truncate"> + <span class="css-truncate-target">mcepl</span> + </span> + </a> + </li> + + <li class="header-nav-item dropdown js-menu-container"> + <a class="header-nav-link js-menu-target tooltipped tooltipped-s" href="https://github.com/new" aria-label="Create new..." data-ga-click="Header, create new, icon:add"> + <span class="octicon octicon-plus"></span> + <span class="dropdown-caret"></span> + </a> + + <div class="dropdown-menu-content js-menu-content"> + <ul class="dropdown-menu"> + +<li> + <a href="https://github.com/new" data-ga-click="Header, create new repository, icon:repo"><span class="octicon octicon-repo"></span> New repository</a> +</li> +<li> + <a href="https://github.com/organizations/new" data-ga-click="Header, create new organization, icon:organization"><span class="octicon octicon-organization"></span> New organization</a> +</li> + + + <li class="dropdown-divider"> + <li class="dropdown-header"> + <span title="gaye/dav">This repository</span> + </li> + <li> + <a href="https://github.com/gaye/dav/issues/new" data-ga-click="Header, create new issue, icon:issue"><span class="octicon octicon-issue-opened"></span> New issue</a> + </li> + + </ul> + </div> + </li> + + <li class="header-nav-item"> + <a href="https://github.com/notifications" aria-label="You have no unread notifications" class="header-nav-link notification-indicator tooltipped tooltipped-s" data-ga-click="Header, go to notifications, icon:read" data-hotkey="g n"> + <span class="mail-status all-read"></span> + <span class="octicon octicon-inbox"></span> +</a> + </li> + + <li class="header-nav-item"> + <a class="header-nav-link tooltipped tooltipped-s" href="https://github.com/settings/profile" id="account_settings" aria-label="Settings" data-ga-click="Header, go to settings, icon:settings"> + <span class="octicon octicon-gear"></span> + </a> + </li> + + <li class="header-nav-item"> + <form accept-charset="UTF-8" action="https://github.com/logout" class="logout-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="Bsy9zdg+YzWRYbwBJlq1tXix2hiPHJ5x5lVaN94f0F9j7rzjN6NH/AFevXNfJeKziwRAxH9jxobfhoH8EyUwcA==" type="hidden"></div> + <button class="header-nav-link sign-out-button tooltipped tooltipped-s" aria-label="Sign out" data-ga-click="Header, sign out, icon:logout"> + <span class="octicon octicon-sign-out"></span> + </button> +</form> </li> + +</ul> + + + + + </div> +</div> + + + + + + + <div id="start-of-content" class="accessibility-aid"></div> + <div class="site" itemscope="" itemtype="http://schema.org/WebPage"> + <div id="js-flash-container"> + + </div> + <div class="pagehead repohead instapaper_ignore readability-menu"> + <div class="container"> + +<ul class="pagehead-actions"> + + <li> + <form accept-charset="UTF-8" action="https://github.com/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="FR0QCkW159FehrTqP2/RyW1k803HndBTjlDiuLl+EQDu8mOyWqqGhl4yXGUtRu4VM2X8gdVDbWsNby4ge8CdtA==" type="hidden"></div> <input id="repository_id" name="repository_id" value="20107688" type="hidden"> + + <div class="select-menu js-menu-container js-select-menu"> + <a href="https://github.com/gaye/dav/subscription" class="btn btn-sm btn-with-count select-menu-button js-menu-target" role="button" tabindex="0" aria-haspopup="true" data-ga-click="Repository, click Watch settings, action:issues#show"> + <span class="js-select-button"> + <span class="octicon octicon-eye"></span> + Watch + </span> + </a> + <a class="social-count js-social-count" href="https://github.com/gaye/dav/watchers"> + 9 + </a> + + <div class="select-menu-modal-holder"> + <div class="select-menu-modal subscription-menu-modal js-menu-content" aria-hidden="true"> + <div class="select-menu-header"> + <span class="select-menu-title">Notifications</span> + <span class="octicon octicon-x js-menu-close" role="button" aria-label="Close"></span> + </div> + + <div class="select-menu-list js-navigation-container" role="menu"> + + <div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0"> + <span class="select-menu-item-icon octicon octicon-check"></span> + <div class="select-menu-item-text"> + <input checked id="do_included" name="do" value="included" type="radio"> + <span class="select-menu-item-heading">Not watching</span> + <span class="description">Be notified when participating or @mentioned.</span> + <span class="js-select-button-text hidden-select-button-text"> + <span class="octicon octicon-eye"></span> + Watch + </span> + </div> + </div> + + <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0"> + <span class="select-menu-item-icon octicon octicon octicon-check"></span> + <div class="select-menu-item-text"> + <input id="do_subscribed" name="do" value="subscribed" type="radio"> + <span class="select-menu-item-heading">Watching</span> + <span class="description">Be notified of all conversations.</span> + <span class="js-select-button-text hidden-select-button-text"> + <span class="octicon octicon-eye"></span> + Unwatch + </span> + </div> + </div> + + <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0"> + <span class="select-menu-item-icon octicon octicon-check"></span> + <div class="select-menu-item-text"> + <input id="do_ignore" name="do" value="ignore" type="radio"> + <span class="select-menu-item-heading">Ignoring</span> + <span class="description">Never be notified.</span> + <span class="js-select-button-text hidden-select-button-text"> + <span class="octicon octicon-mute"></span> + Stop ignoring + </span> + </div> + </div> + + </div> + + </div> + </div> + </div> +</form> + </li> + + <li> + + <div class="js-toggler-container js-social-container starring-container "> + + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/unstar" class="js-toggler-form starred js-unstar-button" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="EXLX3ce3i04PNeuQ4vyHHqFg3lnuyaiGl1LBfa/I/MqWhhB5bmPulFZvCLnAqUREJBx5AGTI6cjcle8HVj4PAQ==" type="hidden"></div> + <button class="btn btn-sm btn-with-count js-toggler-target" aria-label="Unstar this repository" title="Unstar gaye/dav" data-ga-click="Repository, click unstar button, action:issues#show; text:Unstar"> + <span class="octicon octicon-star"></span> + Unstar + </button> + <a class="social-count js-social-count" href="https://github.com/gaye/dav/stargazers"> + 36 + </a> +</form> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/star" class="js-toggler-form unstarred js-star-button" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="vkwPeOREEjtx5c/WRKso3NisNi4gTKsUm5/MhutCVQc271KDSzctCigQSTRg87nzg7OlkqMgJVzq0/TX9prTVA==" type="hidden"></div> + <button class="btn btn-sm btn-with-count js-toggler-target" aria-label="Star this repository" title="Star gaye/dav" data-ga-click="Repository, click star button, action:issues#show; text:Star"> + <span class="octicon octicon-star"></span> + Star + </button> + <a class="social-count js-social-count" href="https://github.com/gaye/dav/stargazers"> + 36 + </a> +</form> </div> + + </li> + + <li> + <a href="#fork-destination-box" class="btn btn-sm btn-with-count" title="Fork your own copy of gaye/dav to your account" aria-label="Fork your own copy of gaye/dav to your account" rel="facebox" data-ga-click="Repository, show fork modal, action:issues#show; text:Fork"> + <span class="octicon octicon-repo-forked"></span> + Fork + </a> + <a href="https://github.com/gaye/dav/network" class="social-count">8</a> + + <div id="fork-destination-box" style="display: none;"> + <h2 class="facebox-header">Where should we fork this repository?</h2> + <include-fragment src="" class="js-fork-select-fragment fork-select-fragment" data-url="/gaye/dav/fork?fragment=1"> + <img alt="Loading" src="data:image/gif;base64,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" width="64" height="64"> + </include-fragment> + </div> + </li> + +</ul> + + <h1 itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public"> + <span class="mega-octicon octicon-repo"></span> + <span class="author"><a href="https://github.com/gaye" class="url fn" itemprop="url" rel="author"><span itemprop="title">gaye</span></a></span><!-- + --><span class="path-divider">/</span><!-- + --><strong><a href="https://github.com/gaye/dav" class="js-current-repository" data-pjax="#js-repo-pjax-container">dav</a></strong> + + <span class="page-context-loader"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> + </span> + + </h1> + </div><!-- /.container --> + </div><!-- /.repohead --> + + <div class="container"> + <div class="repository-with-sidebar repo-container new-discussion-timeline"> + <div class="repository-sidebar clearfix"> + +<nav class="sunken-menu repo-nav js-repo-nav js-sidenav-container-pjax js-octicon-loaders" role="navigation" data-pjax="#js-repo-pjax-container" data-issue-count-url="/gaye/dav/issues/counts"> + <ul class="sunken-menu-group"> + <li class="tooltipped tooltipped-w" aria-label="Code"> + <a href="https://github.com/gaye/dav" aria-label="Code" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /gaye/dav"> + <span class="octicon octicon-code"></span> <span class="full-word">Code</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Issues"> + <a href="https://github.com/gaye/dav/issues" aria-label="Issues" class="selected js-selected-navigation-item sunken-menu-item" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /gaye/dav/issues"> + <span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span> + <span class="js-issue-replace-counter"></span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Pull requests"> + <a href="https://github.com/gaye/dav/pulls" aria-label="Pull requests" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g p" data-selected-links="repo_pulls /gaye/dav/pulls"> + <span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull requests</span> + <span class="js-pull-replace-counter"></span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Wiki"> + <a href="https://github.com/gaye/dav/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g w" data-selected-links="repo_wiki /gaye/dav/wiki"> + <span class="octicon octicon-book"></span> <span class="full-word">Wiki</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + </ul> + <div class="sunken-menu-separator"></div> + <ul class="sunken-menu-group"> + + <li class="tooltipped tooltipped-w" aria-label="Pulse"> + <a href="https://github.com/gaye/dav/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-selected-links="pulse /gaye/dav/pulse"> + <span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Graphs"> + <a href="https://github.com/gaye/dav/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-selected-links="repo_graphs repo_contributors /gaye/dav/graphs"> + <span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + </ul> + + +</nav> + + <div class="only-with-full-nav"> + +<div class="clone-url open" data-protocol-type="http" data-url="/users/set_protocol?protocol_selector=http&protocol_type=clone"> + <h3><span class="text-emphasized">HTTPS</span> clone URL</h3> + <div class="input-group js-zeroclipboard-container"> + <input class="input-mini input-monospace js-url-field js-zeroclipboard-target" value="https://github.com/gaye/dav.git" readonly type="text"> + <span class="input-group-button"> + + </span> + </div> +</div> + + +<div class="clone-url " data-protocol-type="ssh" data-url="/users/set_protocol?protocol_selector=ssh&protocol_type=clone"> + <h3><span class="text-emphasized">SSH</span> clone URL</h3> + <div class="input-group js-zeroclipboard-container"> + <input class="input-mini input-monospace js-url-field js-zeroclipboard-target" value="git@github.com:gaye/dav.git" readonly type="text"> + <span class="input-group-button"> + + </span> + </div> +</div> + + +<div class="clone-url " data-protocol-type="subversion" data-url="/users/set_protocol?protocol_selector=subversion&protocol_type=clone"> + <h3><span class="text-emphasized">Subversion</span> checkout URL</h3> + <div class="input-group js-zeroclipboard-container"> + <input class="input-mini input-monospace js-url-field js-zeroclipboard-target" value="https://github.com/gaye/dav" readonly type="text"> + <span class="input-group-button"> + + </span> + </div> +</div> + + + +<p class="clone-options">You can clone with + <a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>, <a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>, or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>. + <a href="https://help.github.com/articles/which-remote-url-should-i-use" class="help tooltipped tooltipped-n" aria-label="Get help on which URL is right for you."> + <span class="octicon octicon-question"></span> + </a> +</p> + + + + + <a href="https://github.com/gaye/dav/archive/master.zip" class="btn btn-sm sidebar-button" aria-label="Download the contents of gaye/dav as a zip file" title="Download the contents of gaye/dav as a zip file" rel="nofollow"> + <span class="octicon octicon-cloud-download"></span> + Download ZIP + </a> + </div> + </div><!-- /.repository-sidebar --> + + <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container=""> + +<style type="text/css" media="screen"><!--
+/* Effective stylesheet produced by snapshot save */
+--></style> + +<div class="issues-listing" data-pjax=""> + <div class="context-loader large-format-loader"> + <p><img alt="" src="data:image/gif;base64,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" width="64" height="64"></p> + <p>Loading…</p> +</div> + + <div id="show_issue" class="js-issues-results"> + + + <div id="partial-discussion-header" class="gh-header js-details-container js-socket-channel js-updatable-content issue" data-channel="gaye/dav:issue:38242112" data-url="/gaye/dav/issues/68/show_partial?partial=title"> + + <div class="gh-header-show "> + <div class="gh-header-actions"> + <a href="https://github.com/gaye/dav/issues/new" class="btn btn-sm btn-primary right" data-hotkey="c"> + New issue + </a> + </div> + + <h1 class="gh-header-title"> + <span class="js-issue-title">403 on OSX Contact server</span> + <span class="gh-header-number">#68</span> + </h1> + </div> + + + <div class="flex-table gh-header-meta"> + <div class="flex-table-item"> + <div class="state state-open"> + <span class="octicon octicon-issue-opened"></span> + Open + </div> + </div> + <div class="flex-table-item flex-table-item-primary"> + <a href="https://github.com/aspyct" class="author">aspyct</a> opened this <span class="noun">Issue</span> <time title="19 Jul 2014 20:49 GMT+2" datetime="2014-07-19T18:49:07Z" is="relative-time">on 19 Jul 2014</time> + · 2 comments + </div> + </div> +</div> + + + <div id="discussion_bucket" class="tab-content clearfix"> + <div class="discussion-sidebar"> + <div id="partial-discussion-stats" class="discussion-stats js-socket-channel js-updatable-content" data-channel="gaye/dav:issue:38242112" data-url="/gaye/dav/issues/68/show_partial?partial=discussion_stats"> +</div> + + + +<div class="discussion-sidebar-item sidebar-labels js-discussion-sidebar-item"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/issues/68?partial=sidebar%2Fshow%2Flabels" class="js-issue-sidebar-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="_method" value="put" type="hidden"><input name="authenticity_token" value="Fqdts3Z3vF+GFZhwgXpWNNDtBPBkYA7u4+Ri/z/eWaJjQGAnDoZDTDT5p7jtdVtQseVCz51yPYnLWucjmo/rXg==" type="hidden"></div> + + <h3 class="discussion-sidebar-heading"> + Labels + </h3> + + + <div class="labels css-truncate"> + None yet +</div> + +</form></div> + +<div class="discussion-sidebar-item sidebar-milestone js-discussion-sidebar-item"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/issues/68/set_milestone?partial=sidebar%2Fshow%2Fmilestone" class="js-issue-sidebar-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="_method" value="put" type="hidden"><input name="authenticity_token" value="yw70Xln+6ozYDISwEIvKAOWImF2LpGhX/R15WQWAF6htpKXHh+kfDRRkaYNEsPNjeCw44LiEK7EQ/5s9GPPJ2w==" type="hidden"></div> + + <h3 class="discussion-sidebar-heading"> + Milestone + </h3> + + + <span class="text-muted">No milestone</span> + +</form></div> + +<div class="discussion-sidebar-item sidebar-assignee js-discussion-sidebar-item"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/issues/68?partial=sidebar%2Fshow%2Fassignee" class="js-issue-sidebar-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="_method" value="put" type="hidden"><input name="authenticity_token" value="chpPOR004fin3LUbNxFvY2svN88RrkoOeCwr8+mJouC53dEQRevR4dZMPncoRr7VqbfOHqo5uspUj4Ey3Ib8zQ==" type="hidden"></div> + + <h3 class="discussion-sidebar-heading"> + Assignee + </h3> + + + <span class="css-truncate"> + <span class="text-muted">No one assigned</span> +</span> + +</form></div> + + <div class="discussion-sidebar-item sidebar-notifications"> + <h3 class="discussion-sidebar-heading">Notifications</h3> + <div class="thread-subscription-status js-thread-subscription-status js-socket-channel js-updatable-content" data-channel="gaye/dav:thread-subscription:38242112:mcepl" data-url="/notifications/thread_subscription?repository_id=20107688&thread_class=Issue&thread_id=38242112"> + + <span class="mega-octicon octicon-radio-tower"></span> + + <form accept-charset="UTF-8" action="https://github.com/notifications/thread" class="thread-subscribe-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="CGYLZedizjyYsSMiNVomNj4LCBRPzhXFC2ovOhMipn0wSTfnNtJyYWoQ8xV5iuv8hp30ShZaWR3pOPl+xGBqvw==" type="hidden"></div> <input name="repository_id" value="20107688" type="hidden"> + <input name="thread_id" value="38242112" type="hidden"> + <input name="thread_class" value="Issue" type="hidden"> + <input name="id" value="subscribe" type="hidden"> + + <button class="btn btn-sm" type="submit" data-disable-with=""> + <span class="octicon octicon-eye"></span> + Subscribe + </button> +</form> + <p class="reason">You're not receiving notifications from this thread.</p> +</div> + + </div> + +<div id="partial-users-participants" class="discussion-sidebar-item js-socket-channel js-updatable-content" data-channel="gaye/dav:issue:38242112" data-url="/gaye/dav/issues/68/show_partial?partial=participants"> + <div class="participation"> + + <h3 class="discussion-sidebar-heading"> + 2 participants + </h3> + <div class="participation-avatars"> + <a class="participant-avatar tooltipped tooltipped-s" aria-label="aspyct" href="https://github.com/aspyct"><img alt="@aspyct" class="avatar" data-user="1143093" src="data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACgAKAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AOi1XVWk0qXVtLu2+zLclZYiFZhJngghhgbSOPQ/jXJXGoyatcGS5IltoI9p81hJt46DI6n8frmsppJmtSI51t0OGk2H5dx4Ge2SOc0aMwklls0VZISoLAA5LdM5Pfg15N/bTtJWt0NqUVexSXV7eCWU7LgoF2r6AY7+orY02W2SwLtMxuNm5HkfAHbpjjqPXvz2Hd+G/C+jW6mSSOGWaVdoUsDx9Oma8+8ZaQLLW4jZW58pf3OwE4VwSen0xTq0o8ra0NKtPl1RYR0M7STGPa4+QxMc5Iwevc0/Zbet3/31/wDWqnb6a39lzTKRbh32lXb5t4z0H4dODzVP7Dcf8/s3/fJ/xrjWH8zPmRPr+lWmiabAkNyx1F1865jk4CI4BU44IOOMe/0zS8Px2zQXEV7cvFGxGWj5cLzwcdetaGm+G38SW0upz6narw7C2ZgSqqTksBjHYD1/CsKzmtF1KXA8sHEQTceCMDPv34969RQlze6iaU+WR6ho7eGP7AszNBJO1hIeWJ3qGb5fYnp05rD+IOq2s+q+XYqvnABiW+YliPT/AHf1NXfBs8MUs1itvK8s42hQq+WvuT1x7Vy/jG0m0jxk1xEW8qTcFUAghlUf0YHPv7VNWm5xduh0V58q9SrY6i5cQ3Eg3xH93G4Ibef5HgjPvWr9svP+fWb/AL/j/GuUv7pSizom66JMckrMpjYc8jjIz7nqPcAZ32uf1g/77H+NQotaI49GdJp2ly2lrMYnMrzLgMdy7R6YDDPbrkcdKwZpW0bWF+1QpPD8wGV6YODj/Peu3sv+PRP90VxXi7/j+j/3n/8AZa9Syj8Ikj1PwFqunfbWuWcHMLGHbgZI/h9ielZniHUbvWtUmi1TT7eGSOQsgRtysCEC9eQcAg8Dg1h+Bf8Aj3tf95q2td/5GS4/3o//AEFa1jFezcraszcm5qL2REdN0+KAXLRbXBzsYnAPqMHrx3zmovPsv7q/98LVrUf+PBvqP61gVzywtGeriXdn/9k=" width="20" height="20"> </a> + <a class="participant-avatar tooltipped tooltipped-s" aria-label="gaye" href="https://github.com/gaye"><img alt="@gaye" class="avatar" data-user="535859" src="data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACgAKAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AIY25qWa8gs4TLPIsaDuxxUEVcf4hcaxrsVh5p+zxAEhCMljn+lZtLqUld2Rsaf41ae+VJYY1tnk2Bg3IB6E9q7qIhlBBBB6EVneEfhpol8qrcNdh8HJVwB09MVG9vD4U8S3Wim63242tFvI4yOgpypqS5olShKm7SN+MVLtpIQGAYdDU+2suRkM4aRvKt5JMZ2qTXltq92Z57kO4mD7m9vT+deuxpmue1zRvsn2m+tlAjmTEuOobP3vp2rdjha+ps6HF4iHh/TtXfUpVhmcnEQYH72MHb34B5I6+xpvxG0G9tpLfWJ2lmNyMAsORjYBn8zya3/h2HvvDbWTFWx1EgY45zxz1qx420TUdZ1fSbEyummW1uWlfd/rHLYxj1wOuO5pps6KyjGF2S6Gs7aRaG5XbKYxuFafl0+2t1ihjjXoihR+FWPLp8p57qpHCBkhjMkjKiL1ZjgCuX13xarxPYaWhlkkBRpSOMd8A9eK3Na/5At1/u15xZf8hSL6n+VdFGlGdrnLXxE4Xt0Vz0/4e318lrGWWRLcHb0xzXpOoX8N2kUESqRGcl/w/wD11wHgz/kAj/frqrf77V04ShFx9o90eJxNmVek44aGkZK777vT0LIYIwU9+BUvP92q0v8Ar4v98VcredGne9jwaGZ4tRtzvT0f5o//2Q==" width="20" height="20"> </a> + </div> + </div> +</div> + + + + + </div> + + <div class="discussion-timeline js-quote-selection-container"> + + <div class="js-discussion js-socket-channel" data-channel="gaye/dav:marked-as-read:38242112"> + + + <div class="timeline-comment-wrapper js-comment-container"> + <a href="https://github.com/aspyct"><img alt="@aspyct" class="timeline-comment-avatar" data-user="1143093" src="data:image/jpeg;base64,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" width="48" height="48"></a> + <div id="issue-38242112" class="comment timeline-comment js-comment js-task-list-container " data-body-version="641138a637a23425059a5cb59455f6b1"> + + <div class="timeline-comment-header "> + + + + + <div class="timeline-comment-header-text"> + + <strong> + <a href="https://github.com/aspyct" class="author">aspyct</a> + </strong> + + commented + + <a href="#issue-38242112" class="timestamp"> + <time title="19 Jul 2014 20:49 GMT+2" datetime="2014-07-19T18:49:07Z" is="relative-time">on 19 Jul 2014</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body markdown-format js-comment-body"> + <p>Hi,</p> + +<p>First of all, this may or may not be an actual issue. I don't have any knowledge of the carddav protocol, so maybe all I need is a little guidance :)</p> + +<p>Context:</p> + +<ul class="task-list"> +<li>I have a running carddav server, based on the OSX server that's available from the App Store. That should be a rather standard carddav server, I guess.</li> +<li>I'm using <code>dav.js</code> 1.6.2 from the browser, after running <code>make dav.js</code>.</li> +</ul> + +<p>Here's the code (happily taken from your example):</p> + +<div class="highlight highlight-javascript"><pre> <span class="pl-k">var</span> xhr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">dav.transport</span>.Basic( + <span class="pl-k">new</span> <span class="pl-en">dav.Credentials</span>({ + username<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>tester<span class="pl-pds">'</span></span>, + password<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>tester<span class="pl-pds">'</span></span> + }) + ); + + <span class="pl-k">var</span> client <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">dav.Client</span>(xhr); + <span class="pl-c">// No transport arg</span> + client.createAccount({ + <span class="pl-c">// that's my localhost</span> + server<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>https://Antoines-MacBook-Pro.local:8443<span class="pl-pds">'</span></span>, + accountType<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>carddav<span class="pl-pds">'</span></span> + }) + .then(<span class="pl-k">function</span>(<span class="pl-smi">account</span>) { + account.addressBooks.forEach(<span class="pl-k">function</span>(<span class="pl-smi">addressBook</span>) { + <span class="pl-en">console</span><span class="pl-c1">.log</span>(<span class="pl-s"><span class="pl-pds">'</span>Found address book name <span class="pl-pds">'</span></span> <span class="pl-k">+</span> addressBook.displayName); + <span class="pl-c">// etc.</span> + }); + });</pre></div> + +<p>The account exists, and works with the Apple Contacts app. Could not validate yet with another app.</p> + +<p>When I run this code (from the browser), I get the following 403 error:</p> + +<pre><code>PROPFIND https://tester:tester@antoines-macbook-pro.local:8443/principals/__uids__/997ADEEA-6E14-4325-A619-7C5449D227BE/ 403 (Forbidden) +</code></pre> + +<p>Is there any way I could get debug logging / any idea related to this?</p> + </div> + </div> + + </div> +</div> + + </div> + <div class="timeline-comment-wrapper js-comment-container"> + <a href="https://github.com/gaye"><img alt="@gaye" class="timeline-comment-avatar" data-user="535859" src="data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAGAAYAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AIAakU1CD0qRTUDJ1NSKahWpAaljJwaRLmFyQsqEg4IDDrWXq+p/YNPeaPDMuMgEV54Li6vL0F7ogsejNgDn1+lONPm3E3Y9fRgw4INSivMtF1e80u9SFkUwM4BAxyucZ9//AK1emoc4I6VnUhyscXckFPFNUVItQVYco5qVRUaipVHNBLOLFTLUS81KtdFhEq1l69qh03TpJ1xleAM9ea0ydqEmvNfFNw2o64LVSQIlweeOef60LQNzJn1S6u3bfM2M5C54FTWokSQMSrLHg7q2tI8PWcyqJBl/Wu+0HwlozfNNAH2jkE8UKpY2jh5SPO7aEXLO4uApHKhQRk9ec10ml+JdSsI1/tGMywdN3G4Y/nXruj/D/wAN3EfnpZKB/dJODWL4w+HVnZWEtzYZRRyY85X9elb6TWqM5UnCTVyraXUV5Cs0JyjDIq4orjvDV19nX7OMkA/Op/hrr4XDjIPWuWdPlYoyuTAVKopqipVFSogzh1qVajUVIOK3JKeo3xtkwoBOMnc2B+decJcm71m6uCADnGBz7f0rb8dahhorVEI/iZs/kK5SwE0Rby8bmwcn0otoVF2Z6B4eiWWRQWxzXomlRBLkxKQfkzXitprF1pzBjJDKP7qnkV1WheMbq6uvLtlUXEuUBc4AGCeT9AahQOunXS0tqe/6EU8uMK2PlwR61J4pmSHQbouMgxnivBIdZ1E36xT65OoD9I4yQD+BruJtR1c6DO8Gqw3ipEzeVcWx5wMkfeBH1raMkRJSnJyZ5nHqZsLlmRWO5ySPqeK7LQtbj1BginayHlWGCa4PULI2moE3qPG7RrIYt2SCyg/lzU2hXSWWpJNubZuyT3x05py945GnE9eQcA+tTKKigIeJGHQjIqwgrJIZwwFPxgE0AU8DNUB5f4qE17qTMuQgQsoY9QPSqOnCOaBRJkH7pOD24r0bXdGhn053hti8ycrtySueuB/SuO06w+x6i1s4YjduXepUkH2PIpPRF01eVjOuYokJC/NjptXrXrvw08KQan4RuUaONL9JBNbzsuSjjkZ9j0I9Ca4HWDDFcrGsW4L1xxk/WvQvh1rVxaWYgt4G86Y4Tdyo9zShPW51wgrtIbqVhDaXKz/2deWtyfvKpR13d8EHOPriuw0bTrzVtJkjWzkT7RGYXuJ5EARCMEqqkknGcZxzVzXtJutSsUuZFQ3EY5aMYFWvC15IITAwwyHawob5J6mk0pQ916nBfEvRVsfEq36W5+ytbhXZVztOG7emF5rzLRNNu9RuobePOJf4sdAPWvUPir4sax106Vb28bSPaYaZjkqH3AgL647+9cb4NYtr0JV3ABIwBxWi2OCq1pY9PtbcW9tFCCSI1Cgn2FWUXmhV4qVVqTFyOCUVIq0iipUFBVxVWud1/Q5pLtdStBlgv71M9cYwR+VdMoqQLnigadjzDVXNwsc0Rww5ZR3PpXYeCpbfakjpOoLAFVmAHT6561keJtI+wXK3UC4tpmwyj+Bv8DWr4V037RIJGZUVCOQMmpirOx2UpxerPVF02e+SKaO5ls4UIJjjmLmXjGGJ4x14xWlpdt9lR2YfMzZ+tQ6U8bIsfm7wg5JNakJWeYBP9Wvf1qnG75mXOaXuxPnvxFY3nin4j6g+JImM22INwCifLkenTNehaJoVtplvH+6TzwPmcDk10Or6YdPnmu3VVgZifN7AE9Ce1VkHNaxg5R5uh5NWrGM+RvUeq1Kq01RUqilYzcjgFqZBTAtOeSOCIySuqIoySx4FTa5rz23JQKhvL+106AzXUyxr2z1P0Heub1TxhHEhjsE3v/z1cfKPoO9cTfXtxfStNcStI57k1rGi+pjLEraJoaz4luNZvyQWjtI8eXFn9T6n+Vbui6lLDGoj456g1yUOlXMsPnwoXU8HHWuq8J6VdTygTROsDdGI71FSnODvbc6cPWhUVk723PTNCuZLiEeZLgHqBxmu+0wr5QVa87stOewkVd3yetdQurJBahYD82Pv+laQw9Wp0MsdmuFwMH7WWvbr9367Gxr1/Elq9oMMzjD/AOyOD+tc6g3Jubgk8VGr+czF+g5x3NWUAIAPYV6lOkqUeVH5vjcfUx9f209OiXZCDipEINQk4NNt5lmG3o4HIqJ4eElex04bOsTTfLJ8y8/8z//Z" width="48" height="48"></a> + <div id="issuecomment-49639147" class="comment timeline-comment js-comment js-task-list-container owner-comment" data-body-version="2170db08e312ff21876cbf02dc86b37c"> + + <div class="timeline-comment-header "> + + + <span class="timeline-comment-label">Owner</span> + + + <div class="timeline-comment-header-text"> + + <strong> + <a href="https://github.com/gaye" class="author">gaye</a> + </strong> + + commented + + <a href="#issuecomment-49639147" class="timestamp"> + <time title="21 Jul 2014 19:41 GMT+2" datetime="2014-07-21T17:41:48Z" is="relative-time">on 21 Jul 2014</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body markdown-format js-comment-body"> + <p>Hi <a href="https://github.com/aspyct" class="user-mention">@aspyct</a>! Can you use the browser network monitor to figure out exactly what request(s) dav is sending to your server and what response(s) are being received? There's also library level logging which could be useful; to enable, you can call <code>dav.debug.enable('dav:*');</code>.</p> + +<p>I am on Linux, but if there's some way that I can interact with your server (perhaps <a href="https://ngrok.com/">https://ngrok.com/</a>), I would be happy to help debug.</p> + </div> + </div> + + </div> +</div> + + </div> + <div class="timeline-comment-wrapper js-comment-container"> + <a href="https://github.com/aspyct"><img alt="@aspyct" class="timeline-comment-avatar" data-user="1143093" src="data:image/jpeg;base64,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" width="48" height="48"></a> + <div id="issuecomment-49861472" class="comment timeline-comment js-comment js-task-list-container " data-body-version="61163648d2add2875c4000ea4014f69c"> + + <div class="timeline-comment-header "> + + + + + <div class="timeline-comment-header-text"> + + <strong> + <a href="https://github.com/aspyct" class="author">aspyct</a> + </strong> + + commented + + <a href="#issuecomment-49861472" class="timestamp"> + <time title="23 Jul 2014 13:22 GMT+2" datetime="2014-07-23T11:22:35Z" is="relative-time">on 23 Jul 2014</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body markdown-format js-comment-body"> + <p>Hi!</p> + +<p>I'll try to set you up an access to the contact server, but it's running on my laptop, so access will probably be bound to certain hours... I'll see what I can do.</p> + +<p>I'll also send you the request log from the navigator ASAP (expect it somewhere next week).</p> + </div> + </div> + + </div> +</div> + + </div> + + + +<!-- Rendered timeline since 2014-07-23 04:22:35 --> +<div id="partial-timeline-marker" class="js-timeline-marker js-socket-channel js-updatable-content" data-channel="gaye/dav:issue:38242112" data-url="/gaye/dav/issues/68/show_partial?partial=timeline_marker&since=1406114555" data-mark-as-read-url="/gaye/dav/notifications/mark?ids=37440106" data-last-modified="Wed, 23 Jul 2014 11:22:35 GMT"> +</div> + + + </div> + + <div class="discussion-timeline-actions"> + + +<div class="timeline-comment-wrapper timeline-new-comment js-comment-container "> + <a href="https://github.com/mcepl"><img alt="@mcepl" class="timeline-comment-avatar" data-user="198999" src="data:image/png;base64,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" width="48" height="48"></a> + + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/issue_comments" class="js-new-comment-form" data-remote="true" data-type="json" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="mOZl9vRqzwUZnqjzErtZstnxgeEhQtX7n3WB7aUYdoCu2OHl8zeIPw/VY24vO81WlM7gRvJVhnPskRPbnkngMQ==" type="hidden"></div> + <div class="timeline-comment"> + <input name="issue" value="68" type="hidden"> + +<div class="js-previewable-comment-form js-suggester-container previewable-comment-form write-selected" data-preview-url="/preview?repository=20107688"> + <div class="comment-form-head tabnav"> + <div class="right"> + <a class="tabnav-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"> + <span class="octicon octicon-markdown"></span> + Markdown supported + </a> + +<a href="#fullscreen" class="enable-fullscreen js-enable-fullscreen tooltipped-n + tabnav-extra"> + <span class="octicon octicon-screen-full"></span> + Edit in fullscreen +</a> + + </div> + <nav class="tabnav-tabs"> + <a href="#" class="tabnav-tab write-tab js-write-tab selected">Write</a> + <a href="#" class="tabnav-tab preview-tab js-preview-tab">Preview</a> + </nav> + </div> + + <div class="comment-form-error js-comment-form-error" style="display:none"> There was an error creating your Issue. +</div> + <div class="write-content js-write-bucket js-uploadable-container js-upload-markdown-image upload-enabled is-default" data-upload-policy-url="/upload/policies/assets"> + + <textarea name="comment[body]" tabindex="1" id="new_comment_field" placeholder="Leave a comment" aria-label="Comment body" class="input-contrast comment-form-textarea js-comment-field js-task-list-field js-quick-submit js-size-to-fit js-quote-selection-target js-session-resumable js-suggester-field"></textarea><img style="cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0px ! important; margin: 0px ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important; left: 721px ! important; top: 1761px ! important;" title="It's All Text!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAADdklEQVQ4y42UP4xVRRjFfzP37q7LxgBvV8FEjDEhxsJEo52VFhqpNBTIkqgFyZIIFhLtqdRCo3aiW5gYlMQoHYmxtsFCAyJ/tsDg7sLuu/fy3p25f969830W7/qWECCeZv5lzplv5pwxdPhjRSLnwsKunn1oz2573hhouAMKGO4LEfAOshSKspbBoHrh4qXLmqSJ29i8eTUGuLSmkc/lZV+Ew6mVfdkQrLFsm42Iok5BAHs7893HbaPkLlCPoB1pSDJ/0kZT/xRFfa6pq89igNzr3rblvbrS51eHzQNtgDiyTE0ZDAZF7l/eHUsqigIiMpUXzd7c17uq0tkgOhMDOK9HEV5qgrWuMBhtsSZgLKhKx6YdW9c3sPjaTk79lG31z2QTcWMgBPCFzKRpPp9lG3tnZnc8HQPMbrPvJH2hqi31KBBC6Db+d3TZqgTGbN0gL8ftl6dSUEVRDh+YZ/l0hqoQdMo0TRMVZbHn0cefPWsBNjchHxqyLJC7Ed4HfCnseWSapcUeCzsjvFd8qTy8EPPW/h0sLc4D4AvBF4GlxR6+EI4cWiCODUuHevhSqWtoW0Oa9Kdurq9FFmAjgf4tQzaoGDohL5W8EPa9+CBfn07Z/+oO8lLIC+H1V7bzw9khX32fjisshNxvVXviiw0ATny+gSvGe1wR8N6RpCkxQJJAXYIvAqGVzgCGIMrhAz1EFO8VjNK2yoXLFdLdsi8UdCzovUyM4wtBEeqyJEv7eO/wvhgLrq+ViLSENhCCTnweWcOnywkr10YTKw69ML8zZnZmnAnnQ/em4IqxwUQUG0E2aMhv9VlbvUI+6DM3l4wFs4EbP7gqop1hUD5Z7nPkYI+5bZY3j6+CEc78POTdt3vMTHeChU4M5EoFBGsNH76/izeOnmdzfYUsXSVIzI31CycNwIFj1z4ObftBWQ5QgWh6DmuiLUd2V3Z7Oia4Y05VCKFmVCa4wTWGyZ9UfoO6HmQqo5MxQOnzi8PB+mXvkidDqLHRLNZOd4E3d0m33iX93Zq2NPUAN7hK5a6DtkgYFSKjK8ba6zHA9b9/+7FtysfqKj/YjIqnmtYRGo+G6h7k94aqoKFGpUIlYKK41VD9ZZBvMHw3+ZCeeO6j7ah5JoSw38zsPqahIrTlVuj/t2BAZUSo+4TRjd+ldedsNP2tBvdrsvpL+y+TkkabJ8Dt4AAAAABJRU5ErkJggg=="> + + <p class="drag-and-drop"> + <span class="default"> + Attach images by dragging & dropping or + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <a class="manual-file-chooser-text" href="#">selecting them</a>. + </span> + <span class="loading"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> Uploading your images… + </span> + <span class="error bad-file"> + Unfortunately, we don't support that file type. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a PNG, GIF, or JPG. + </span> + </span> + <span class="error too-big"> + Yowza, that's a big file. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with an image file smaller than 10MB. + </span> + </span> + <span class="error empty"> + This file is empty. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a file that's not empty. + </span> + </span> + <span class="error bad-browser"> + This browser doesn't support image attachments. + <span class="drag-and-drop-error-info"> + We recommend updating to the latest + <a href="http://windows.microsoft.com/ie">Internet Explorer</a>, + <a href="https://chrome.google.com/">Google Chrome</a>, or + <a href="https://www.mozilla.org/firefox">Firefox</a>. + </span> + </span> + <span class="error failed-request"> + Something went really wrong, and we can't process that image. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again.</a> + </span> + </span> + </p> + + </div> + + <div class="preview-content"> + <div class="comment"> + <div class="comment-content"> + <div class="comment-body markdown-body js-preview-body"> + <p>Nothing to preview</p> + </div> + </div> +</div> + + </div> + + + <div class="suggester-container"> + <div class="suggester js-suggester js-navigation-container" data-url="/gaye/dav/suggestions/issue/38242112"> + </div> + </div> +</div> + + <div class="form-actions"> + <div id="partial-new-comment-form-actions" class="js-socket-channel js-updatable-content" data-channel="gaye/dav:issue:38242112:state" data-url="/gaye/dav/issues/68/show_partial?partial=form_actions"> + + <button type="submit" class="btn btn-primary" tabindex="2" data-disable-with="" data-disable-invalid=""> + Comment + </button> + + +</div> + + + </div> + </div> +</form> +</div> + + + </div> + </div> + + </div> + <div class="clear"></div> + </div> + +</div> + + + </div> + + </div><!-- /.repo-container --> + <div class="modal-backdrop"></div> + </div><!-- /.container --> + </div><!-- /.site --> + + + </div><!-- /.wrapper --> + + <div class="container"> + <div class="site-footer" role="contentinfo"> + <ul class="site-footer-links right"> + <li><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li> + <li><a href="https://developer.github.com/" data-ga-click="Footer, go to api, text:api">API</a></li> + <li><a href="https://training.github.com/" data-ga-click="Footer, go to training, text:training">Training</a></li> + <li><a href="https://shop.github.com/" data-ga-click="Footer, go to shop, text:shop">Shop</a></li> + <li><a href="https://github.com/blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li> + <li><a href="https://github.com/about" data-ga-click="Footer, go to about, text:about">About</a></li> + + </ul> + + <a href="https://github.com/" aria-label="Homepage"> + <span class="mega-octicon octicon-mark-github" title="GitHub"></span> +</a> + <ul class="site-footer-links"> + <li>© 2015 <span title="0.12941s from github-fe121-cp1-prd.iad.github.net">GitHub</span>, Inc.</li> + <li><a href="https://github.com/site/terms" data-ga-click="Footer, go to terms, text:terms">Terms</a></li> + <li><a href="https://github.com/site/privacy" data-ga-click="Footer, go to privacy, text:privacy">Privacy</a></li> + <li><a href="https://github.com/security" data-ga-click="Footer, go to security, text:security">Security</a></li> + <li><a href="https://github.com/contact" data-ga-click="Footer, go to contact, text:contact">Contact</a></li> + </ul> + </div> +</div> + + + <div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay"> + <div class="fullscreen-container js-suggester-container"> + <div class="textarea-wrap"> + <textarea name="fullscreen-contents" id="fullscreen-contents" class="fullscreen-contents js-fullscreen-contents" placeholder=""></textarea><img style="cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0px ! important; margin: 0px ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important;" title="It's All Text!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAADdklEQVQ4y42UP4xVRRjFfzP37q7LxgBvV8FEjDEhxsJEo52VFhqpNBTIkqgFyZIIFhLtqdRCo3aiW5gYlMQoHYmxtsFCAyJ/tsDg7sLuu/fy3p25f969830W7/qWECCeZv5lzplv5pwxdPhjRSLnwsKunn1oz2573hhouAMKGO4LEfAOshSKspbBoHrh4qXLmqSJ29i8eTUGuLSmkc/lZV+Ew6mVfdkQrLFsm42Iok5BAHs7893HbaPkLlCPoB1pSDJ/0kZT/xRFfa6pq89igNzr3rblvbrS51eHzQNtgDiyTE0ZDAZF7l/eHUsqigIiMpUXzd7c17uq0tkgOhMDOK9HEV5qgrWuMBhtsSZgLKhKx6YdW9c3sPjaTk79lG31z2QTcWMgBPCFzKRpPp9lG3tnZnc8HQPMbrPvJH2hqi31KBBC6Db+d3TZqgTGbN0gL8ftl6dSUEVRDh+YZ/l0hqoQdMo0TRMVZbHn0cefPWsBNjchHxqyLJC7Ed4HfCnseWSapcUeCzsjvFd8qTy8EPPW/h0sLc4D4AvBF4GlxR6+EI4cWiCODUuHevhSqWtoW0Oa9Kdurq9FFmAjgf4tQzaoGDohL5W8EPa9+CBfn07Z/+oO8lLIC+H1V7bzw9khX32fjisshNxvVXviiw0ATny+gSvGe1wR8N6RpCkxQJJAXYIvAqGVzgCGIMrhAz1EFO8VjNK2yoXLFdLdsi8UdCzovUyM4wtBEeqyJEv7eO/wvhgLrq+ViLSENhCCTnweWcOnywkr10YTKw69ML8zZnZmnAnnQ/em4IqxwUQUG0E2aMhv9VlbvUI+6DM3l4wFs4EbP7gqop1hUD5Z7nPkYI+5bZY3j6+CEc78POTdt3vMTHeChU4M5EoFBGsNH76/izeOnmdzfYUsXSVIzI31CycNwIFj1z4ObftBWQ5QgWh6DmuiLUd2V3Z7Oia4Y05VCKFmVCa4wTWGyZ9UfoO6HmQqo5MxQOnzi8PB+mXvkidDqLHRLNZOd4E3d0m33iX93Zq2NPUAN7hK5a6DtkgYFSKjK8ba6zHA9b9/+7FtysfqKj/YjIqnmtYRGo+G6h7k94aqoKFGpUIlYKK41VD9ZZBvMHw3+ZCeeO6j7ah5JoSw38zsPqahIrTlVuj/t2BAZUSo+4TRjd+ldedsNP2tBvdrsvpL+y+TkkabJ8Dt4AAAAABJRU5ErkJggg=="> + <div class="suggester-container"> + <div class="suggester fullscreen-suggester js-suggester js-navigation-container"></div> + </div> + </div> + </div> + <div class="fullscreen-sidebar"> + <a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped tooltipped-w" aria-label="Exit Zen Mode"> + <span class="mega-octicon octicon-screen-normal"></span> + </a> + <a href="#" class="theme-switcher js-theme-switcher tooltipped tooltipped-w" aria-label="Switch themes"> + <span class="octicon octicon-color-mode"></span> + </a> + </div> +</div> + + + + + + + <div id="ajax-error-message" class="flash flash-error"> + <span class="octicon octicon-alert"></span> + <a href="#" class="octicon octicon-x flash-close js-ajax-error-dismiss" aria-label="Dismiss error"></a> + Something went wrong with that request. Please try again. + </div> + + + <script crossorigin="anonymous">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> + <script async="async" crossorigin="anonymous">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> + + + + + + + + <div class="facebox" id="facebox" style="display:none;"> <div class="facebox-popup"> <div class="facebox-content"> </div> <button type="button" class="facebox-close js-facebox-close" aria-label="Close modal"> <span class="octicon octicon-remove-close"></span> </button> </div> </div></body></html>
\ No newline at end of file diff --git a/rfcs/RFC 4791 - Calendaring Extensions to WebDAV (CalDAV).html b/rfcs/RFC 4791 - Calendaring Extensions to WebDAV (CalDAV).html new file mode 100644 index 0000000..a0a7c98 --- /dev/null +++ b/rfcs/RFC 4791 - Calendaring Extensions to WebDAV (CalDAV).html @@ -0,0 +1,6064 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head profile="http://dublincore.org/documents/2008/08/04/dc-html/"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta name="robots" content="index,follow"> + <meta name="creator" content="rfcmarkup version 1.111"> + <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"> +<meta name="DC.Identifier" content="urn:ietf:rfc:4791"> +<meta name="DC.Description.Abstract" content="This document defines extensions to the Web Distributed Authoring and +Versioning (WebDAV) protocol to specify a standard way of accessing, +managing, and sharing calendaring and scheduling information based on +the iCalendar format. This document defines the " calendar-access feature of caldav.> +<meta name="DC.Creator" content="Dusseault, Lisa"> +<meta name="DC.Creator" content="Desruisseaux, Bernard"> +<meta name="DC.Creator" content="Daboo, Cyrus"> +<meta name="DC.Date.Issued" content="March, 2007"> +<meta name="DC.Title" content="Calendaring Extensions to WebDAV (CalDAV)"> + + <link rel="icon" href="index_files/rfc.png" type="image/png"> + <link rel="shortcut icon" href="index_files/rfc.png" type="image/png"> + <title>RFC 4791 - Calendaring Extensions to WebDAV (CalDAV)</title> + + + <style type="text/css"><!--
+/* Effective stylesheet produced by snapshot save */
+body { margin: 0px 8px; font-size: 1em; }
+h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { line-height: 0pt; display: inline; white-space: pre; font-family: monospace; font-size: 1em; font-weight: bold; }
+pre { font-size: 1em; margin-top: 0px; margin-bottom: 0px; }
+.pre { white-space: pre; font-family: monospace; }
+.newpage { page-break-before: always; }
+.invisible { text-decoration: none; color: white; }
+a.selflink { color: black; text-decoration: none; }
+@media print {
+ body { font-family: monospace; font-size: 10.5pt; }
+ h1, h2, h3, h4, h5, h6 { font-size: 1em; }
+ a:link, a:visited { color: inherit; text-decoration: none; }
+ .noprint { display: none; }
+}
+@media screen {
+ .grey, .grey a:link, .grey a:visited { color: rgb(119, 119, 119); }
+ .docinfo { background-color: rgb(238, 238, 238); }
+ .top { border-top: 7px solid rgb(238, 238, 238); }
+ .bgblue { background-color: rgb(102, 102, 255); }
+ .legend { font-size: 90%; }
+}
+--></style> + <!--[if IE]> + <style> + body { + font-size: 13px; + margin: 10px 10px; + } + </style> + <![endif]--> + + <script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script> +</head> +<body onload=""> + <div style="height: 13px;"> + <div onmouseover="" onclick="" onmouseout="" style="height: 6px; position: absolute;" class="pre noprint docinfo bgblue" title="Click for colour legend."> </div> + <div id="legend" class="docinfo noprint pre legend" style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; " onmouseover="" onmouseout=""> + </div> + </div> +<span class="pre noprint docinfo top">[<a href="http://tools.ietf.org/html/" title="Document search and retrieval page">Docs</a>] [<a href="http://tools.ietf.org/rfc/rfc4791.txt" title="Plaintext version of this document">txt</a>|<a href="http://tools.ietf.org/pdf/rfc4791" title="PDF version of this document">pdf</a>] [<a href="http://tools.ietf.org/html/draft-dusseault-caldav" title="draft-dusseault-caldav">draft-dusseault-c...</a>] [<a href="http://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=rfc4791" title="Inline diff (wdiff)">Diff1</a>] [<a href="http://tools.ietf.org/rfcdiff?url2=rfc4791" title="Side-by-side diff">Diff2</a>] [<a href="https://www.rfc-editor.org/errata_search.php?rfc=4791">Errata</a>] </span><br> +<span class="pre noprint docinfo"> </span><br> +<span class="pre noprint docinfo">Updated by: <a href="http://tools.ietf.org/html/rfc5689">5689</a>, <a href="http://tools.ietf.org/html/rfc6638">6638</a>, <a href="http://tools.ietf.org/html/rfc6764">6764</a> PROPOSED STANDARD</span><br> +<span class="pre noprint docinfo"> <span style="color: #C00;">Errata Exist</span></span><br> +<pre>Network Working Group C. Daboo +Request for Comments: 4791 Apple +Category: Standards Track B. Desruisseaux + Oracle + L. Dusseault + CommerceNet + March 2007 + + + <span class="h1"><h1>Calendaring Extensions to WebDAV (CalDAV)</h1></span> + +Status of This Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The IETF Trust (2007). + +Abstract + + This document defines extensions to the Web Distributed Authoring and + Versioning (WebDAV) protocol to specify a standard way of accessing, + managing, and sharing calendaring and scheduling information based on + the iCalendar format. This document defines the "calendar-access" + feature of CalDAV. + + + + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 1]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-2" id="page-2" href="#page-2" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +Table of Contents + + <a href="#section-1">1</a>. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-5">5</a> + <a href="#section-1.1">1.1</a>. Notational Conventions . . . . . . . . . . . . . . . . . . <a href="#page-5">5</a> + <a href="#section-1.2">1.2</a>. XML Namespaces and Processing . . . . . . . . . . . . . . <a href="#page-5">5</a> + <a href="#section-1.3">1.3</a>. Method Preconditions and Postconditions . . . . . . . . . <a href="#page-6">6</a> + <a href="#section-2">2</a>. Requirements Overview . . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a> + <a href="#section-3">3</a>. Calendaring Data Model . . . . . . . . . . . . . . . . . . . . <a href="#page-7">7</a> + <a href="#section-3.1">3.1</a>. Calendar Server . . . . . . . . . . . . . . . . . . . . . <a href="#page-7">7</a> + <a href="#section-3.2">3.2</a>. Recurrence and the Data Model . . . . . . . . . . . . . . <a href="#page-8">8</a> + <a href="#section-4">4</a>. Calendar Resources . . . . . . . . . . . . . . . . . . . . . . <a href="#page-9">9</a> + <a href="#section-4.1">4.1</a>. Calendar Object Resources . . . . . . . . . . . . . . . . <a href="#page-9">9</a> + <a href="#section-4.2">4.2</a>. Calendar Collection . . . . . . . . . . . . . . . . . . . <a href="#page-10">10</a> + <a href="#section-5">5</a>. Calendar Access Feature . . . . . . . . . . . . . . . . . . . <a href="#page-11">11</a> + <a href="#section-5.1">5.1</a>. Calendar Access Support . . . . . . . . . . . . . . . . . <a href="#page-11">11</a> + 5.1.1. Example: Using OPTIONS for the Discovery of + Calendar Access Support . . . . . . . . . . . . . . . <a href="#page-12">12</a> + <a href="#section-5.2">5.2</a>. Calendar Collection Properties . . . . . . . . . . . . . . <a href="#page-12">12</a> + <a href="#section-5.2.1">5.2.1</a>. CALDAV:calendar-description Property . . . . . . . . . <a href="#page-12">12</a> + <a href="#section-5.2.2">5.2.2</a>. CALDAV:calendar-timezone Property . . . . . . . . . . <a href="#page-13">13</a> + <a href="#section-5.2.3">5.2.3</a>. CALDAV:supported-calendar-component-set Property . . . <a href="#page-14">14</a> + <a href="#section-5.2.4">5.2.4</a>. CALDAV:supported-calendar-data Property . . . . . . . <a href="#page-15">15</a> + <a href="#section-5.2.5">5.2.5</a>. CALDAV:max-resource-size Property . . . . . . . . . . <a href="#page-16">16</a> + <a href="#section-5.2.6">5.2.6</a>. CALDAV:min-date-time Property . . . . . . . . . . . . <a href="#page-17">17</a> + <a href="#section-5.2.7">5.2.7</a>. CALDAV:max-date-time Property . . . . . . . . . . . . <a href="#page-18">18</a> + <a href="#section-5.2.8">5.2.8</a>. CALDAV:max-instances Property . . . . . . . . . . . . <a href="#page-19">19</a> + <a href="#section-5.2.9">5.2.9</a>. CALDAV:max-attendees-per-instance Property . . . . . . <a href="#page-19">19</a> + <a href="#section-5.2.10">5.2.10</a>. Additional Precondition for PROPPATCH . . . . . . . . <a href="#page-20">20</a> + <a href="#section-5.3">5.3</a>. Creating Resources . . . . . . . . . . . . . . . . . . . . <a href="#page-20">20</a> + <a href="#section-5.3.1">5.3.1</a>. MKCALENDAR Method . . . . . . . . . . . . . . . . . . <a href="#page-20">20</a> + <a href="#section-5.3.1.1">5.3.1.1</a>. Status Codes . . . . . . . . . . . . . . . . . . . <a href="#page-22">22</a> + <a href="#section-5.3.1.2">5.3.1.2</a>. Example: Successful MKCALENDAR Request . . . . . . <a href="#page-23">23</a> + <a href="#section-5.3.2">5.3.2</a>. Creating Calendar Object Resources . . . . . . . . . . <a href="#page-25">25</a> + 5.3.2.1. Additional Preconditions for PUT, COPY, and + MOVE . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-26">26</a> + 5.3.3. Non-Standard Components, Properties, and Parameters . 28 + <a href="#section-5.3.4">5.3.4</a>. Calendar Object Resource Entity Tag . . . . . . . . . <a href="#page-28">28</a> + <a href="#section-6">6</a>. Calendaring Access Control . . . . . . . . . . . . . . . . . . <a href="#page-29">29</a> + <a href="#section-6.1">6.1</a>. Calendaring Privilege . . . . . . . . . . . . . . . . . . <a href="#page-29">29</a> + <a href="#section-6.1.1">6.1.1</a>. CALDAV:read-free-busy Privilege . . . . . . . . . . . <a href="#page-29">29</a> + <a href="#section-6.2">6.2</a>. Additional Principal Property . . . . . . . . . . . . . . <a href="#page-30">30</a> + <a href="#section-6.2.1">6.2.1</a>. CALDAV:calendar-home-set Property . . . . . . . . . . <a href="#page-30">30</a> + <a href="#section-7">7</a>. Calendaring Reports . . . . . . . . . . . . . . . . . . . . . <a href="#page-31">31</a> + <a href="#section-7.1">7.1</a>. REPORT Method . . . . . . . . . . . . . . . . . . . . . . <a href="#page-31">31</a> + <a href="#section-7.2">7.2</a>. Ordinary Collections . . . . . . . . . . . . . . . . . . . <a href="#page-31">31</a> + <a href="#section-7.3">7.3</a>. Date and Floating Time . . . . . . . . . . . . . . . . . . <a href="#page-32">32</a> + <a href="#section-7.4">7.4</a>. Time Range Filtering . . . . . . . . . . . . . . . . . . . <a href="#page-32">32</a> + <a href="#section-7.5">7.5</a>. Searching Text: Collations . . . . . . . . . . . . . . . . <a href="#page-33">33</a> + + + +<span class="grey">Daboo, et al. Standards Track [Page 2]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-3" id="page-3" href="#page-3" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <a href="#section-7.5.1">7.5.1</a>. CALDAV:supported-collation-set Property . . . . . . . <a href="#page-34">34</a> + <a href="#section-7.6">7.6</a>. Partial Retrieval . . . . . . . . . . . . . . . . . . . . <a href="#page-34">34</a> + <a href="#section-7.7">7.7</a>. Non-Standard Components, Properties, and Parameters . . . <a href="#page-35">35</a> + <a href="#section-7.8">7.8</a>. CALDAV:calendar-query REPORT . . . . . . . . . . . . . . . <a href="#page-36">36</a> + <a href="#section-7.8.1">7.8.1</a>. Example: Partial Retrieval of Events by Time Range . . <a href="#page-38">38</a> + <a href="#section-7.8.2">7.8.2</a>. Example: Partial Retrieval of Recurring Events . . . . <a href="#page-42">42</a> + <a href="#section-7.8.3">7.8.3</a>. Example: Expanded Retrieval of Recurring Events . . . <a href="#page-45">45</a> + 7.8.4. Example: Partial Retrieval of Stored Free Busy + Components . . . . . . . . . . . . . . . . . . . . . . <a href="#page-48">48</a> + <a href="#section-7.8.5">7.8.5</a>. Example: Retrieval of To-Dos by Alarm Time Range . . . <a href="#page-50">50</a> + <a href="#section-7.8.6">7.8.6</a>. Example: Retrieval of Event by UID . . . . . . . . . . <a href="#page-51">51</a> + <a href="#section-7.8.7">7.8.7</a>. Example: Retrieval of Events by PARTSTAT . . . . . . . <a href="#page-53">53</a> + <a href="#section-7.8.8">7.8.8</a>. Example: Retrieval of Events Only . . . . . . . . . . <a href="#page-55">55</a> + <a href="#section-7.8.9">7.8.9</a>. Example: Retrieval of All Pending To-Dos . . . . . . . <a href="#page-59">59</a> + <a href="#section-7.8.10">7.8.10</a>. Example: Attempt to Query Unsupported Property . . . . <a href="#page-62">62</a> + <a href="#section-7.9">7.9</a>. CALDAV:calendar-multiget REPORT . . . . . . . . . . . . . <a href="#page-63">63</a> + 7.9.1. Example: Successful CALDAV:calendar-multiget REPORT . 64 + <a href="#section-7.10">7.10</a>. CALDAV:free-busy-query REPORT . . . . . . . . . . . . . . <a href="#page-66">66</a> + <a href="#section-7.10.1">7.10.1</a>. Example: Successful CALDAV:free-busy-query REPORT . . <a href="#page-68">68</a> + <a href="#section-8">8</a>. Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-69">69</a> + <a href="#section-8.1">8.1</a>. Client-to-Client Interoperability . . . . . . . . . . . . <a href="#page-69">69</a> + <a href="#section-8.2">8.2</a>. Synchronization Operations . . . . . . . . . . . . . . . . <a href="#page-69">69</a> + <a href="#section-8.2.1">8.2.1</a>. Use of Reports . . . . . . . . . . . . . . . . . . . . <a href="#page-69">69</a> + <a href="#section-8.2.1.1">8.2.1.1</a>. Restrict the Time Range . . . . . . . . . . . . . <a href="#page-69">69</a> + <a href="#section-8.2.1.2">8.2.1.2</a>. Synchronize by Time Range . . . . . . . . . . . . <a href="#page-70">70</a> + <a href="#section-8.2.1.3">8.2.1.3</a>. Synchronization Process . . . . . . . . . . . . . <a href="#page-70">70</a> + <a href="#section-8.2.2">8.2.2</a>. Restrict the Properties Returned . . . . . . . . . . . <a href="#page-72">72</a> + <a href="#section-8.3">8.3</a>. Use of Locking . . . . . . . . . . . . . . . . . . . . . . <a href="#page-72">72</a> + <a href="#section-8.4">8.4</a>. Finding Calendars . . . . . . . . . . . . . . . . . . . . <a href="#page-72">72</a> + <a href="#section-8.5">8.5</a>. Storing and Using Attachments . . . . . . . . . . . . . . <a href="#page-74">74</a> + <a href="#section-8.5.1">8.5.1</a>. Inline Attachments . . . . . . . . . . . . . . . . . . <a href="#page-74">74</a> + <a href="#section-8.5.2">8.5.2</a>. External Attachments . . . . . . . . . . . . . . . . . <a href="#page-75">75</a> + <a href="#section-8.6">8.6</a>. Storing and Using Alarms . . . . . . . . . . . . . . . . . <a href="#page-76">76</a> + <a href="#section-9">9</a>. XML Element Definitions . . . . . . . . . . . . . . . . . . . <a href="#page-77">77</a> + <a href="#section-9.1">9.1</a>. CALDAV:calendar XML Element . . . . . . . . . . . . . . . <a href="#page-77">77</a> + <a href="#section-9.2">9.2</a>. CALDAV:mkcalendar XML Element . . . . . . . . . . . . . . <a href="#page-77">77</a> + <a href="#section-9.3">9.3</a>. CALDAV:mkcalendar-response XML Element . . . . . . . . . . <a href="#page-78">78</a> + <a href="#section-9.4">9.4</a>. CALDAV:supported-collation XML Element . . . . . . . . . . <a href="#page-78">78</a> + <a href="#section-9.5">9.5</a>. CALDAV:calendar-query XML Element . . . . . . . . . . . . <a href="#page-78">78</a> + <a href="#section-9.6">9.6</a>. CALDAV:calendar-data XML Element . . . . . . . . . . . . . <a href="#page-79">79</a> + <a href="#section-9.6.1">9.6.1</a>. CALDAV:comp XML Element . . . . . . . . . . . . . . . <a href="#page-80">80</a> + <a href="#section-9.6.2">9.6.2</a>. CALDAV:allcomp XML Element . . . . . . . . . . . . . . <a href="#page-81">81</a> + <a href="#section-9.6.3">9.6.3</a>. CALDAV:allprop XML Element . . . . . . . . . . . . . . <a href="#page-81">81</a> + <a href="#section-9.6.4">9.6.4</a>. CALDAV:prop XML Element . . . . . . . . . . . . . . . <a href="#page-82">82</a> + <a href="#section-9.6.5">9.6.5</a>. CALDAV:expand XML Element . . . . . . . . . . . . . . <a href="#page-82">82</a> + <a href="#section-9.6.6">9.6.6</a>. CALDAV:limit-recurrence-set XML Element . . . . . . . <a href="#page-83">83</a> + <a href="#section-9.6.7">9.6.7</a>. CALDAV:limit-freebusy-set XML Element . . . . . . . . <a href="#page-84">84</a> + <a href="#section-9.7">9.7</a>. CALDAV:filter XML Element . . . . . . . . . . . . . . . . <a href="#page-85">85</a> + + + +<span class="grey">Daboo, et al. Standards Track [Page 3]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-4" id="page-4" href="#page-4" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <a href="#section-9.7.1">9.7.1</a>. CALDAV:comp-filter XML Element . . . . . . . . . . . . <a href="#page-85">85</a> + <a href="#section-9.7.2">9.7.2</a>. CALDAV:prop-filter XML Element . . . . . . . . . . . . <a href="#page-86">86</a> + <a href="#section-9.7.3">9.7.3</a>. CALDAV:param-filter XML Element . . . . . . . . . . . <a href="#page-87">87</a> + <a href="#section-9.7.4">9.7.4</a>. CALDAV:is-not-defined XML Element . . . . . . . . . . <a href="#page-88">88</a> + <a href="#section-9.7.5">9.7.5</a>. CALDAV:text-match XML Element . . . . . . . . . . . . <a href="#page-88">88</a> + <a href="#section-9.8">9.8</a>. CALDAV:timezone XML Element . . . . . . . . . . . . . . . <a href="#page-89">89</a> + <a href="#section-9.9">9.9</a>. CALDAV:time-range XML Element . . . . . . . . . . . . . . <a href="#page-90">90</a> + <a href="#section-9.10">9.10</a>. CALDAV:calendar-multiget XML Element . . . . . . . . . . . <a href="#page-94">94</a> + <a href="#section-9.11">9.11</a>. CALDAV:free-busy-query XML Element . . . . . . . . . . . . <a href="#page-95">95</a> + <a href="#section-10">10</a>. Internationalization Considerations . . . . . . . . . . . . . <a href="#page-95">95</a> + <a href="#section-11">11</a>. Security Considerations . . . . . . . . . . . . . . . . . . . <a href="#page-95">95</a> + <a href="#section-12">12</a>. IANA Considerations . . . . . . . . . . . . . . . . . . . . . <a href="#page-96">96</a> + <a href="#section-12.1">12.1</a>. Namespace Registration . . . . . . . . . . . . . . . . . . <a href="#page-96">96</a> + <a href="#section-13">13</a>. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-96">96</a> + <a href="#section-14">14</a>. References . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-97">97</a> + <a href="#section-14.1">14.1</a>. Normative References . . . . . . . . . . . . . . . . . . . <a href="#page-97">97</a> + <a href="#section-14.2">14.2</a>. Informative References . . . . . . . . . . . . . . . . . . <a href="#page-98">98</a> + <a href="#appendix-A">Appendix A</a>. CalDAV Method Privilege Table (Normative) . . . . . . <a href="#page-99">99</a> + <a href="#appendix-B">Appendix B</a>. Calendar Collections Used in the Examples . . . . . . <a href="#page-99">99</a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 4]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-5" id="page-5" href="#page-5" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h2"><h2><a class="selflink" name="section-1" href="#section-1">1</a>. Introduction</h2></span> + + The concept of using HTTP [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>] and WebDAV [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>] as a basis + for a calendar access protocol is by no means a new concept: it was + discussed in the IETF CALSCH working group as early as 1997 or 1998. + Several companies have implemented calendar access protocols using + HTTP to upload and download iCalendar [<a href="http://tools.ietf.org/html/rfc2445" title="" internet calendaring and scheduling core object specification>RFC2445</a>] objects, and using + WebDAV to get listings of resources. However, those implementations + do not interoperate because there are many small and big decisions to + be made in how to model calendaring data as WebDAV resources, as well + as how to implement required features that aren't already part of + WebDAV. This document proposes a way to model calendar data in + WebDAV, with additional features to make an interoperable calendar + access protocol. + +<span class="h3"><h3><a class="selflink" name="section-1.1" href="#section-1.1">1.1</a>. Notational Conventions</h3></span> + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [<a href="http://tools.ietf.org/html/rfc2119" title="" key words for use in rfcs to indicate requirement levels>RFC2119</a>]. + + The term "protected" is used in the Conformance field of property + definitions as defined in <a href="http://tools.ietf.org/html/rfc3253#section-1.4.2">Section 1.4.2 of [RFC3253]</a>. + + When XML element types in the namespaces "DAV:" and + "urn:ietf:params:xml:ns:caldav" are referenced in this document + outside of the context of an XML fragment, the string "DAV:" and + "CALDAV:" will be prefixed to the element type names, respectively. + +<span class="h3"><h3><a class="selflink" name="section-1.2" href="#section-1.2">1.2</a>. XML Namespaces and Processing</h3></span> + + Definitions of XML elements in this document use XML element type + declarations (as found in XML Document Type Declarations), described + in Section 3.2 of [<a href="#ref-W3C.REC-xml-20060816" title="" extensible markup language edition>W3C.REC-xml-20060816</a>]. + + The namespace "urn:ietf:params:xml:ns:caldav" is reserved for the XML + elements defined in this specification, its revisions, and related + CalDAV specifications. XML elements defined by individual + implementations MUST NOT use the "urn:ietf:params:xml:ns:caldav" + namespace, and instead should use a namespace that they control. + + The XML declarations used in this document do not include namespace + information. Thus, implementers must not use these declarations as + the only way to create valid CalDAV properties or to validate CalDAV + XML element types. Some of the declarations refer to XML elements + defined by WebDAV [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>], which use the "DAV:" namespace. + Wherever such XML elements appear, they are explicitly prefixed with + "DAV:" to avoid confusion. + + + +<span class="grey">Daboo, et al. Standards Track [Page 5]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-6" id="page-6" href="#page-6" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Also note that some CalDAV XML element names are identical to WebDAV + XML element names, though their namespace differs. Care must be + taken not to confuse the two sets of names. + + Processing of XML by CalDAV clients and servers MUST follow the rules + described in [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]; in particular, <a href="#section-14">Section 14</a>, and Appendix 3 of + that specification. + +<span class="h3"><h3><a class="selflink" name="section-1.3" href="#section-1.3">1.3</a>. Method Preconditions and Postconditions</h3></span> + + A "precondition" of a method describes the state of the server that + must be true for that method to be performed. A "postcondition" of a + method describes the state of the server that must be true after that + method has been completed. If a method precondition or postcondition + for a request is not satisfied, the response status of the request + MUST either be 403 (Forbidden), if the request should not be repeated + because it will always fail, or 409 (Conflict), if it is expected + that the user might be able to resolve the conflict and resubmit the + request. + + In order to allow better client handling of 403 and 409 responses, a + distinct XML element type is associated with each method precondition + and postcondition of a request. When a particular precondition is + not satisfied or a particular postcondition cannot be achieved, the + appropriate XML element MUST be returned as the child of a top-level + DAV:error element in the response body, unless otherwise negotiated + by the request. + +<span class="h2"><h2><a class="selflink" name="section-2" href="#section-2">2</a>. Requirements Overview</h2></span> + + This section lists what functionality is required of a CalDAV server. + To advertise support for CalDAV, a server: + + o MUST support iCalendar [<a href="http://tools.ietf.org/html/rfc2445" title="" internet calendaring and scheduling core object specification>RFC2445</a>] as a media type for the calendar + object resource format; + + o MUST support WebDAV Class 1 [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>] (note that [<a href="#ref-rfc2518bis" title="" http extensions for distributed authoring webdav>rfc2518bis</a>] + describes clarifications to [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>] that aid interoperability); + + o MUST support WebDAV ACL [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>] with the additional privilege + defined in <a href="#section-6.1">Section 6.1</a> of this document; + + o MUST support transport over TLS [<a href="http://tools.ietf.org/html/rfc2246" title="" the tls protocol version>RFC2246</a>] as defined in [<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>] + (note that [<a href="http://tools.ietf.org/html/rfc2246" title="" the tls protocol version>RFC2246</a>] has been obsoleted by [<a href="http://tools.ietf.org/html/rfc4346" title="" the transport layer security protocol version>RFC4346</a>]); + + o MUST support ETags [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>] with additional requirements + specified in <a href="#section-5.3.4">Section 5.3.4</a> of this document; + + + + +<span class="grey">Daboo, et al. Standards Track [Page 6]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-7" id="page-7" href="#page-7" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + o MUST support all calendaring reports defined in <a href="#section-7">Section 7</a> of this + document; and + + o MUST advertise support on all calendar collections and calendar + object resources for the calendaring reports in the DAV:supported- + report-set property, as defined in Versioning Extensions to WebDAV + [<a href="http://tools.ietf.org/html/rfc3253" title="" versioning extensions to webdav distributed authoring and>RFC3253</a>]. + + In addition, a server: + + o SHOULD support the MKCALENDAR method defined in <a href="#section-5.3.1">Section 5.3.1</a> of + this document. + +<span class="h2"><h2><a class="selflink" name="section-3" href="#section-3">3</a>. Calendaring Data Model</h2></span> + + One of the features that has made WebDAV a successful protocol is its + firm data model. This makes it a useful framework for other + applications such as calendaring. This specification follows the + same pattern by developing all features based on a well-described + data model. + + As a brief overview, a CalDAV calendar is modeled as a WebDAV + collection with a defined structure; each calendar collection + contains a number of resources representing calendar objects as its + direct child resource. Each resource representing a calendar object + (event, to-do, journal entry, or other calendar components) is called + a "calendar object resource". Each calendar object resource and each + calendar collection can be individually locked and have individual + WebDAV properties. Requirements derived from this model are provided + in <a href="#section-4.1">Section 4.1</a> and <a href="#section-4.2">Section 4.2</a>. + +<span class="h3"><h3><a class="selflink" name="section-3.1" href="#section-3.1">3.1</a>. Calendar Server</h3></span> + + A CalDAV server is a calendaring-aware engine combined with a WebDAV + repository. A WebDAV repository is a set of WebDAV collections, + containing other WebDAV resources, within a unified URL namespace. + For example, the repository "http://www.example.com/webdav/" may + contain WebDAV collections and resources, all of which have URLs + beginning with "http://www.example.com/webdav/". Note that the root + URL, "http://www.example.com/", may not itself be a WebDAV repository + (for example, if the WebDAV support is implemented through a servlet + or other Web server extension). + + A WebDAV repository MAY include calendar data in some parts of its + URL namespace, and non-calendaring data in other parts. + + A WebDAV repository can advertise itself as a CalDAV server if it + supports the functionality defined in this specification at any point + + + +<span class="grey">Daboo, et al. Standards Track [Page 7]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-8" id="page-8" href="#page-8" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + within the root of the repository. That might mean that calendaring + data is spread throughout the repository and mixed with non-calendar + data in nearby collections (e.g., calendar data may be found in + /home/lisa/calendars/ as well as in /home/bernard/calendars/, and + non-calendar data in /home/lisa/contacts/). Or, it might mean that + calendar data can be found only in certain sections of the repository + (e.g., /calendar/). Calendaring features are only required in the + repository sections that are or contain calendar object resources. + Therefore, a repository confining calendar data to the /calendar/ + collection would only need to support the CalDAV required features + within that collection. + + The CalDAV server or repository is the canonical location for + calendar data and state information. Clients may submit requests to + change data or download data. Clients may store calendar objects + offline and attempt to synchronize at a later time. However, clients + MUST be prepared for calendar data on the server to change between + the time of last synchronization and when attempting an update, as + calendar collections may be shared and accessible via multiple + clients. Entity tags and other features make this possible. + +<span class="h3"><h3><a class="selflink" name="section-3.2" href="#section-3.2">3.2</a>. Recurrence and the Data Model</h3></span> + + Recurrence is an important part of the data model because it governs + how many resources are expected to exist. This specification models + a recurring calendar component and its recurrence exceptions as a + single resource. In this model, recurrence rules, recurrence dates, + exception rules, and exception dates are all part of the data in a + single calendar object resource. This model avoids problems of + limiting how many recurrence instances to store in the repository, + how to keep recurrence instances in sync with the recurring calendar + component, and how to link recurrence exceptions with the recurring + calendar component. It also results in less data to synchronize + between client and server, and makes it easier to make changes to all + recurrence instances or to a recurrence rule. It makes it easier to + create a recurring calendar component and to delete all recurrence + instances. + + Clients are not forced to retrieve information about all recurrence + instances of a recurring component. The CALDAV:calendar-query and + CALDAV:calendar-multiget reports defined in this document allow + clients to retrieve only recurrence instances that overlap a given + time range. + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 8]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-9" id="page-9" href="#page-9" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h2"><h2><a class="selflink" name="section-4" href="#section-4">4</a>. Calendar Resources</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-4.1" href="#section-4.1">4.1</a>. Calendar Object Resources</h3></span> + + Calendar object resources contained in calendar collections MUST NOT + contain more than one type of calendar component (e.g., VEVENT, + VTODO, VJOURNAL, VFREEBUSY, etc.) with the exception of VTIMEZONE + components, which MUST be specified for each unique TZID parameter + value specified in the iCalendar object. For instance, a calendar + object resource can contain one VEVENT component and one VTIMEZONE + component, but it cannot contain one VEVENT component and one VTODO + component. Instead, the VEVENT and VTODO components would have to be + stored in separate calendar object resources in the same collection. + + Calendar object resources contained in calendar collections MUST NOT + specify the iCalendar METHOD property. + + The UID property value of the calendar components contained in a + calendar object resource MUST be unique in the scope of the calendar + collection in which they are stored. + + Calendar components in a calendar collection that have different UID + property values MUST be stored in separate calendar object resources. + + Calendar components with the same UID property value, in a given + calendar collection, MUST be contained in the same calendar object + resource. This ensures that all components in a recurrence "set" are + contained in the same calendar object resource. It is possible for a + calendar object resource to just contain components that represent + "overridden" instances (ones that modify the behavior of a regular + instance, and thus include a RECURRENCE-ID property) without also + including the "master" recurring component (the one that defines the + recurrence "set" and does not contain any RECURRENCE-ID property). + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 9]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-10" id="page-10" href="#page-10" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + For example, given the following iCalendar object: + + BEGIN:VCALENDAR + PRODID:-//Example Corp.//CalDAV Client//EN + VERSION:2.0 + BEGIN:VEVENT + UID:1@example.com + SUMMARY:One-off Meeting + DTSTAMP:20041210T183904Z + DTSTART:20041207T120000Z + DTEND:20041207T130000Z + END:VEVENT + BEGIN:VEVENT + UID:2@example.com + SUMMARY:Weekly Meeting + DTSTAMP:20041210T183838Z + DTSTART:20041206T120000Z + DTEND:20041206T130000Z + RRULE:FREQ=WEEKLY + END:VEVENT + BEGIN:VEVENT + UID:2@example.com + SUMMARY:Weekly Meeting + RECURRENCE-ID:20041213T120000Z + DTSTAMP:20041210T183838Z + DTSTART:20041213T130000Z + DTEND:20041213T140000Z + END:VEVENT + END:VCALENDAR + + The VEVENT component with the UID value "1@example.com" would be + stored in its own calendar object resource. The two VEVENT + components with the UID value "2@example.com", which represent a + recurring event where one recurrence instance has been overridden, + would be stored in the same calendar object resource. + +<span class="h3"><h3><a class="selflink" name="section-4.2" href="#section-4.2">4.2</a>. Calendar Collection</h3></span> + + A calendar collection contains calendar object resources that + represent calendar components within a calendar. A calendar + collection is manifested to clients as a WebDAV resource collection + identified by a URL. A calendar collection MUST report the DAV: + collection and CALDAV:calendar XML elements in the value of the DAV: + resourcetype property. The element type declaration for CALDAV: + calendar is: + + <!ELEMENT calendar EMPTY> + + + + +<span class="grey">Daboo, et al. Standards Track [Page 10]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-11" id="page-11" href="#page-11" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + A calendar collection can be created through provisioning (i.e., + automatically created when a user's account is provisioned), or it + can be created with the MKCALENDAR method (see <a href="#section-5.3.1">Section 5.3.1</a>). This + method can be useful for a user to create additional calendars (e.g., + soccer schedule) or for users to share a calendar (e.g., team events + or conference rooms). However, note that this document doesn't + define the purpose of extra calendar collections. Users must rely on + non-standard cues to find out what a calendar collection is for, or + use the CALDAV:calendar-description property defined in <a href="#section-5.2.1">Section 5.2.1</a> + to provide such a cue. + + The following restrictions are applied to the resources within a + calendar collection: + + a. Calendar collections MUST only contain calendar object resources + and collections that are not calendar collections, i.e., the only + "top-level" non-collection resources allowed in a calendar + collection are calendar object resources. This ensures that + calendar clients do not have to deal with non-calendar data in a + calendar collection, though they do have to distinguish between + calendar object resources and collections when using standard + WebDAV techniques to examine the contents of a collection. + + b. Collections contained in calendar collections MUST NOT contain + calendar collections at any depth, i.e., "nesting" of calendar + collections within other calendar collections at any depth is not + allowed. This specification does not define how collections + contained in a calendar collection are used or how they relate to + any calendar object resources contained in the calendar + collection. + + Multiple calendar collections MAY be children of the same collection. + +<span class="h2"><h2><a class="selflink" name="section-5" href="#section-5">5</a>. Calendar Access Feature</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-5.1" href="#section-5.1">5.1</a>. Calendar Access Support</h3></span> + + A server supporting the features described in this document MUST + include "calendar-access" as a field in the DAV response header from + an OPTIONS request on any resource that supports any calendar + properties, reports, method, or privilege. A value of "calendar- + access" in the DAV response header MUST indicate that the server + supports all MUST level requirements specified in this document. + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 11]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-12" id="page-12" href="#page-12" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-5.1.1" href="#section-5.1.1">5.1.1</a>. Example: Using OPTIONS for the Discovery of Calendar Access</h4></span> +<span class="h4"><h4> Support</h4></span> + + >> Request << + + OPTIONS /home/bernard/calendars/ HTTP/1.1 + Host: cal.example.com + + >> Response << + + HTTP/1.1 200 OK + Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE + Allow: PROPFIND, PROPPATCH, LOCK, UNLOCK, REPORT, ACL + DAV: 1, 2, access-control, calendar-access + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Length: 0 + + In this example, the OPTIONS method returns the value "calendar- + access" in the DAV response header to indicate that the collection + "/home/bernard/calendars/" supports the properties, reports, method, + or privilege defined in this specification. + +<span class="h3"><h3><a class="selflink" name="section-5.2" href="#section-5.2">5.2</a>. Calendar Collection Properties</h3></span> + + This section defines properties for calendar collections. + +<span class="h4"><h4><a class="selflink" name="section-5.2.1" href="#section-5.2.1">5.2.1</a>. CALDAV:calendar-description Property</h4></span> + + Name: calendar-description + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Provides a human-readable description of the calendar + collection. + + Conformance: This property MAY be defined on any calendar + collection. If defined, it MAY be protected and SHOULD NOT be + returned by a PROPFIND DAV:allprop request (as defined in <a href="#section-12.14.1">Section</a> + <a href="#section-12.14.1">12.14.1</a> of [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]). An xml:lang attribute indicating the human + language of the description SHOULD be set for this property by + clients or through server provisioning. Servers MUST return any + xml:lang attribute if set for the property. + + Description: If present, the property contains a description of the + calendar collection that is suitable for presentation to a user. + If not present, the client should assume no description for the + calendar collection. + + + + +<span class="grey">Daboo, et al. Standards Track [Page 12]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-13" id="page-13" href="#page-13" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Definition: + + <!ELEMENT calendar-description (#PCDATA)> + PCDATA value: string + + Example: + + <C:calendar-description xml:lang="fr-CA" + xmlns:C="urn:ietf:params:xml:ns:caldav" + >Calendrier de Mathilde Desruisseaux</C:calendar-description> + +<span class="h4"><h4><a class="selflink" name="section-5.2.2" href="#section-5.2.2">5.2.2</a>. CALDAV:calendar-timezone Property</h4></span> + + Name: calendar-timezone + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies a time zone on a calendar collection. + + Conformance: This property SHOULD be defined on all calendar + collections. If defined, it SHOULD NOT be returned by a PROPFIND + DAV:allprop request (as defined in <a href="http://tools.ietf.org/html/rfc2518#section-12.14.1">Section 12.14.1 of [RFC2518]</a>). + + Description: The CALDAV:calendar-timezone property is used to + specify the time zone the server should rely on to resolve "date" + values and "date with local time" values (i.e., floating time) to + "date with UTC time" values. The server will require this + information to determine if a calendar component scheduled with + "date" values or "date with local time" values overlaps a CALDAV: + time-range specified in a CALDAV:calendar-query REPORT. The + server will also require this information to compute the proper + FREEBUSY time period as "date with UTC time" in the VFREEBUSY + component returned in a response to a CALDAV:free-busy-query + REPORT request that takes into account calendar components + scheduled with "date" values or "date with local time" values. In + the absence of this property, the server MAY rely on the time zone + of their choice. + + Note: The iCalendar data embedded within the CALDAV:calendar- + timezone XML element MUST follow the standard XML character data + encoding rules, including use of &lt;, &gt;, &amp; etc. entity + encoding or the use of a <![CDATA[ ... ]]> construct. In the + later case, the iCalendar data cannot contain the character + sequence "]]>", which is the end delimiter for the CDATA section. + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 13]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-14" id="page-14" href="#page-14" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Definition: + + <!ELEMENT calendar-timezone (#PCDATA)> + PCDATA value: an iCalendar object with exactly one VTIMEZONE + component. + + Example: + + <C:calendar-timezone + xmlns:C="urn:ietf:params:xml:ns:caldav">BEGIN:VCALENDAR + PRODID:-//Example Corp.//CalDAV Client//EN + VERSION:2.0 + BEGIN:VTIMEZONE + TZID:US-Eastern + LAST-MODIFIED:19870101T000000Z + BEGIN:STANDARD + DTSTART:19671029T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + TZNAME:Eastern Standard Time (US &amp; Canada) + END:STANDARD + BEGIN:DAYLIGHT + DTSTART:19870405T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:Eastern Daylight Time (US &amp; Canada) + END:DAYLIGHT + END:VTIMEZONE + END:VCALENDAR + </C:calendar-timezone> + +<span class="h4"><h4><a class="selflink" name="section-5.2.3" href="#section-5.2.3">5.2.3</a>. CALDAV:supported-calendar-component-set Property</h4></span> + + Name: supported-calendar-component-set + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies the calendar component types (e.g., VEVENT, + VTODO, etc.) that calendar object resources can contain in the + calendar collection. + + Conformance: This property MAY be defined on any calendar + collection. If defined, it MUST be protected and SHOULD NOT be + returned by a PROPFIND DAV:allprop request (as defined in <a href="#section-12.14.1">Section</a> + <a href="#section-12.14.1">12.14.1</a> of [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]). + + + + +<span class="grey">Daboo, et al. Standards Track [Page 14]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-15" id="page-15" href="#page-15" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Description: The CALDAV:supported-calendar-component-set property is + used to specify restrictions on the calendar component types that + calendar object resources may contain in a calendar collection. + Any attempt by the client to store calendar object resources with + component types not listed in this property, if it exists, MUST + result in an error, with the CALDAV:supported-calendar-component + precondition (<a href="#section-5.3.2.1">Section 5.3.2.1</a>) being violated. Since this + property is protected, it cannot be changed by clients using a + PROPPATCH request. However, clients can initialize the value of + this property when creating a new calendar collection with + MKCALENDAR. The empty-element tag <C:comp name="VTIMEZONE"/> MUST + only be specified if support for calendar object resources that + only contain VTIMEZONE components is provided or desired. Support + for VTIMEZONE components in calendar object resources that contain + VEVENT or VTODO components is always assumed. In the absence of + this property, the server MUST accept all component types, and the + client can assume that all component types are accepted. + + Definition: + + <!ELEMENT supported-calendar-component-set (comp+)> + + Example: + + <C:supported-calendar-component-set + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <C:comp name="VEVENT"/> + <C:comp name="VTODO"/> + </C:supported-calendar-component-set> + +<span class="h4"><h4><a class="selflink" name="section-5.2.4" href="#section-5.2.4">5.2.4</a>. CALDAV:supported-calendar-data Property</h4></span> + + Name: supported-calendar-data + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies what media types are allowed for calendar object + resources in a calendar collection. + + Conformance: This property MAY be defined on any calendar + collection. If defined, it MUST be protected and SHOULD NOT be + returned by a PROPFIND DAV:allprop request (as defined in <a href="#section-12.14.1">Section</a> + <a href="#section-12.14.1">12.14.1</a> of [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]). + + Description: The CALDAV:supported-calendar-data property is used to + specify the media type supported for the calendar object resources + contained in a given calendar collection (e.g., iCalendar version + 2.0). Any attempt by the client to store calendar object + + + +<span class="grey">Daboo, et al. Standards Track [Page 15]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-16" id="page-16" href="#page-16" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + resources with a media type not listed in this property MUST + result in an error, with the CALDAV:supported-calendar-data + precondition (<a href="#section-5.3.2.1">Section 5.3.2.1</a>) being violated. In the absence of + this property, the server MUST only accept data with the media + type "text/calendar" and iCalendar version 2.0, and clients can + assume that the server will only accept this data. + + Definition: + + <!ELEMENT supported-calendar-data (calendar-data+)> + + Example: + + <C:supported-calendar-data + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <C:calendar-data content-type="text/calendar" version="2.0"/> + </C:supported-calendar-data> + +<span class="h4"><h4><a class="selflink" name="section-5.2.5" href="#section-5.2.5">5.2.5</a>. CALDAV:max-resource-size Property</h4></span> + + Name: max-resource-size + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Provides a numeric value indicating the maximum size of a + resource in octets that the server is willing to accept when a + calendar object resource is stored in a calendar collection. + + Conformance: This property MAY be defined on any calendar + collection. If defined, it MUST be protected and SHOULD NOT be + returned by a PROPFIND DAV:allprop request (as defined in <a href="#section-12.14.1">Section</a> + <a href="#section-12.14.1">12.14.1</a> of [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]). + + Description: The CALDAV:max-resource-size is used to specify a + numeric value that represents the maximum size in octets that the + server is willing to accept when a calendar object resource is + stored in a calendar collection. Any attempt to store a calendar + object resource exceeding this size MUST result in an error, with + the CALDAV:max-resource-size precondition (<a href="#section-5.3.2.1">Section 5.3.2.1</a>) being + violated. In the absence of this property, the client can assume + that the server will allow storing a resource of any reasonable + size. + + Definition: + + <!ELEMENT max-resource-size (#PCDATA)> + PCDATA value: a numeric value (positive integer) + + + + +<span class="grey">Daboo, et al. Standards Track [Page 16]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-17" id="page-17" href="#page-17" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Example: + + <C:max-resource-size xmlns:C="urn:ietf:params:xml:ns:caldav" + >102400</C:max-resource-size> + +<span class="h4"><h4><a class="selflink" name="section-5.2.6" href="#section-5.2.6">5.2.6</a>. CALDAV:min-date-time Property</h4></span> + + Name: min-date-time + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Provides a DATE-TIME value indicating the earliest date and + time (in UTC) that the server is willing to accept for any DATE or + DATE-TIME value in a calendar object resource stored in a calendar + collection. + + Conformance: This property MAY be defined on any calendar + collection. If defined, it MUST be protected and SHOULD NOT be + returned by a PROPFIND DAV:allprop request (as defined in <a href="#section-12.14.1">Section</a> + <a href="#section-12.14.1">12.14.1</a> of [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]). + + Description: The CALDAV:min-date-time is used to specify an + iCalendar DATE-TIME value in UTC that indicates the earliest + inclusive date that the server is willing to accept for any + explicit DATE or DATE-TIME value in a calendar object resource + stored in a calendar collection. Any attempt to store a calendar + object resource using a DATE or DATE-TIME value earlier than this + value MUST result in an error, with the CALDAV:min-date-time + precondition (<a href="#section-5.3.2.1">Section 5.3.2.1</a>) being violated. Note that servers + MUST accept recurring components that specify instances beyond + this limit, provided none of those instances have been overridden. + In that case, the server MAY simply ignore those instances outside + of the acceptable range when processing reports on the calendar + object resource. In the absence of this property, the client can + assume any valid iCalendar date may be used at least up to the + CALDAV:max-date-time value, if that is defined. + + Definition: + + <!ELEMENT min-date-time (#PCDATA)> + PCDATA value: an iCalendar format DATE-TIME value in UTC + + Example: + + <C:min-date-time xmlns:C="urn:ietf:params:xml:ns:caldav" + >19000101T000000Z</C:min-date-time> + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 17]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-18" id="page-18" href="#page-18" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-5.2.7" href="#section-5.2.7">5.2.7</a>. CALDAV:max-date-time Property</h4></span> + + Name: max-date-time + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Provides a DATE-TIME value indicating the latest date and + time (in UTC) that the server is willing to accept for any DATE or + DATE-TIME value in a calendar object resource stored in a calendar + collection. + + Conformance: This property MAY be defined on any calendar + collection. If defined, it MUST be protected and SHOULD NOT be + returned by a PROPFIND DAV:allprop request (as defined in <a href="#section-12.14.1">Section</a> + <a href="#section-12.14.1">12.14.1</a> of [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]). + + Description: The CALDAV:max-date-time is used to specify an + iCalendar DATE-TIME value in UTC that indicates the inclusive + latest date that the server is willing to accept for any date or + time value in a calendar object resource stored in a calendar + collection. Any attempt to store a calendar object resource using + a DATE or DATE-TIME value later than this value MUST result in an + error, with the CALDAV:max-date-time precondition + (<a href="#section-5.3.2.1">Section 5.3.2.1</a>) being violated. Note that servers MUST accept + recurring components that specify instances beyond this limit, + provided none of those instances have been overridden. In that + case, the server MAY simply ignore those instances outside of the + acceptable range when processing reports on the calendar object + resource. In the absence of this property, the client can assume + any valid iCalendar date may be used at least down to the CALDAV: + min-date-time value, if that is defined. + + Definition: + + <!ELEMENT max-date-time (#PCDATA)> + PCDATA value: an iCalendar format DATE-TIME value in UTC + + Example: + + <C:max-date-time xmlns:C="urn:ietf:params:xml:ns:caldav" + >20491231T235959Z</C:max-date-time> + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 18]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-19" id="page-19" href="#page-19" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-5.2.8" href="#section-5.2.8">5.2.8</a>. CALDAV:max-instances Property</h4></span> + + Name: max-instances + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Provides a numeric value indicating the maximum number of + recurrence instances that a calendar object resource stored in a + calendar collection can generate. + + Conformance: This property MAY be defined on any calendar + collection. If defined, it MUST be protected and SHOULD NOT be + returned by a PROPFIND DAV:allprop request (as defined in <a href="#section-12.14.1">Section</a> + <a href="#section-12.14.1">12.14.1</a> of [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]). + + Description: The CALDAV:max-instances is used to specify a numeric + value that indicates the maximum number of recurrence instances + that a calendar object resource stored in a calendar collection + can generate. Any attempt to store a calendar object resource + with a recurrence pattern that generates more instances than this + value MUST result in an error, with the CALDAV:max-instances + precondition (<a href="#section-5.3.2.1">Section 5.3.2.1</a>) being violated. In the absence of + this property, the client can assume that the server has no limits + on the number of recurrence instances it can handle or expand. + + Definition: + + <!ELEMENT max-instances (#PCDATA)> + PCDATA value: a numeric value (integer greater than zero) + + Example: + + <C:max-instances xmlns:C="urn:ietf:params:xml:ns:caldav" + >100</C:max-instances> + +<span class="h4"><h4><a class="selflink" name="section-5.2.9" href="#section-5.2.9">5.2.9</a>. CALDAV:max-attendees-per-instance Property</h4></span> + + Name: max-attendees-per-instance + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Provides a numeric value indicating the maximum number of + ATTENDEE properties in any instance of a calendar object resource + stored in a calendar collection. + + Conformance: This property MAY be defined on any calendar + collection. If defined, it MUST be protected and SHOULD NOT be + + + + +<span class="grey">Daboo, et al. Standards Track [Page 19]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-20" id="page-20" href="#page-20" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + returned by a PROPFIND DAV:allprop request (as defined in <a href="#section-12.14.1">Section</a> + <a href="#section-12.14.1">12.14.1</a> of [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]). + + Description: The CALDAV:max-attendees-per-instance is used to + specify a numeric value that indicates the maximum number of + iCalendar ATTENDEE properties on any one instance of a calendar + object resource stored in a calendar collection. Any attempt to + store a calendar object resource with more ATTENDEE properties per + instance than this value MUST result in an error, with the CALDAV: + max-attendees-per-instance precondition (<a href="#section-5.3.2.1">Section 5.3.2.1</a>) being + violated. In the absence of this property, the client can assume + that the server can handle any number of ATTENDEE properties in a + calendar component. + + Definition: + + <!ELEMENT max-attendees-per-instance (#PCDATA)> + PCDATA value: a numeric value (integer greater than zero) + + Example: + + <C:max-attendees-per-instance + xmlns:C="urn:ietf:params:xml:ns:caldav" + >25</C:max-attendees-per-instance> + +<span class="h4"><h4><a class="selflink" name="section-5.2.10" href="#section-5.2.10">5.2.10</a>. Additional Precondition for PROPPATCH</h4></span> + + This specification requires an additional Precondition for the + PROPPATCH method. The precondition is: + + (CALDAV:valid-calendar-data): The time zone specified in CALDAV: + calendar-timezone property MUST be a valid iCalendar object + containing a single valid VTIMEZONE component. + +<span class="h3"><h3><a class="selflink" name="section-5.3" href="#section-5.3">5.3</a>. Creating Resources</h3></span> + + Calendar collections and calendar object resources may be created by + either a CalDAV client or by the CalDAV server. This specification + defines restrictions and a data model that both clients and servers + MUST adhere to when manipulating such calendar data. + +<span class="h4"><h4><a class="selflink" name="section-5.3.1" href="#section-5.3.1">5.3.1</a>. MKCALENDAR Method</h4></span> + + An HTTP request using the MKCALENDAR method creates a new calendar + collection resource. A server MAY restrict calendar collection + creation to particular collections. + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 20]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-21" id="page-21" href="#page-21" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Support for MKCALENDAR on the server is only RECOMMENDED and not + REQUIRED because some calendar stores only support one calendar per + user (or principal), and those are typically pre-created for each + account. However, servers and clients are strongly encouraged to + support MKCALENDAR whenever possible to allow users to create + multiple calendar collections to help organize their data better. + + Clients SHOULD use the DAV:displayname property for a human-readable + name of the calendar. Clients can either specify the value of the + DAV:displayname property in the request body of the MKCALENDAR + request, or alternatively issue a PROPPATCH request to change the + DAV:displayname property to the appropriate value immediately after + issuing the MKCALENDAR request. Clients SHOULD NOT set the DAV: + displayname property to be the same as any other calendar collection + at the same URI "level". When displaying calendar collections to + users, clients SHOULD check the DAV:displayname property and use that + value as the name of the calendar. In the event that the DAV: + displayname property is empty, the client MAY use the last part of + the calendar collection URI as the name; however, that path segment + may be "opaque" and not represent any meaningful human-readable text. + + If a MKCALENDAR request fails, the server state preceding the request + MUST be restored. + + Marshalling: + If a request body is included, it MUST be a CALDAV:mkcalendar XML + element. Instruction processing MUST occur in the order + instructions are received (i.e., from top to bottom). + Instructions MUST either all be executed or none executed. Thus, + if any error occurs during processing, all executed instructions + MUST be undone and a proper error result returned. Instruction + processing details can be found in the definition of the DAV:set + instruction in <a href="http://tools.ietf.org/html/rfc2518#section-12.13.2">Section 12.13.2 of [RFC2518]</a>. + + <!ELEMENT mkcalendar (DAV:set)> + + If a response body for a successful request is included, it MUST + be a CALDAV:mkcalendar-response XML element. + + <!ELEMENT mkcalendar-response ANY> + + The response MUST include a Cache-Control:no-cache header. + + Preconditions: + + (DAV:resource-must-be-null): A resource MUST NOT exist at the + Request-URI; + + + + +<span class="grey">Daboo, et al. Standards Track [Page 21]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-22" id="page-22" href="#page-22" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + (CALDAV:calendar-collection-location-ok): The Request-URI MUST + identify a location where a calendar collection can be created; + + (CALDAV:valid-calendar-data): The time zone specified in the + CALDAV:calendar-timezone property MUST be a valid iCalendar object + containing a single valid VTIMEZONE component; + + (DAV:needs-privilege): The DAV:bind privilege MUST be granted to + the current user on the parent collection of the Request-URI. + + Postconditions: + + (CALDAV:initialize-calendar-collection): A new calendar collection + exists at the Request-URI. The DAV:resourcetype of the calendar + collection MUST contain both DAV:collection and CALDAV:calendar + XML elements. + +<span class="h5"><h5><a class="selflink" name="section-5.3.1.1" href="#section-5.3.1.1">5.3.1.1</a>. Status Codes</h5></span> + + The following are examples of response codes one would expect to get + in a response to a MKCALENDAR request. Note that this list is by no + means exhaustive. + + 201 (Created) - The calendar collection resource was created in + its entirety; + + 207 (Multi-Status) - The calendar collection resource was not + created since one or more DAV:set instructions specified in the + request body could not be processed successfully. The following + are examples of response codes one would expect to be used in a + 207 (Multi-Status) response in this situation: + + 403 (Forbidden) - The client, for reasons the server chooses + not to specify, cannot alter one of the properties; + + 409 (Conflict) - The client has provided a value whose + semantics are not appropriate for the property. This includes + trying to set read-only properties; + + 424 (Failed Dependency) - The DAV:set instruction on the + specified resource would have succeeded if it were not for the + failure of another DAV:set instruction specified in the request + body; + + 423 (Locked) - The specified resource is locked and the client + either is not a lock owner or the lock type requires a lock + token to be submitted and the client did not submit it; and + + + + +<span class="grey">Daboo, et al. Standards Track [Page 22]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-23" id="page-23" href="#page-23" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + 507 (Insufficient Storage) - The server did not have sufficient + space to record the property; + + 403 (Forbidden) - This indicates at least one of two conditions: + 1) the server does not allow the creation of calendar collections + at the given location in its namespace, or 2) the parent + collection of the Request-URI exists but cannot accept members; + + 409 (Conflict) - A collection cannot be made at the Request-URI + until one or more intermediate collections have been created; + + 415 (Unsupported Media Type) - The server does not support the + request type of the body; and + + 507 (Insufficient Storage) - The resource does not have sufficient + space to record the state of the resource after the execution of + this method. + +<span class="h5"><h5><a class="selflink" name="section-5.3.1.2" href="#section-5.3.1.2">5.3.1.2</a>. Example: Successful MKCALENDAR Request</h5></span> + + This example creates a calendar collection called /home/lisa/ + calendars/events/ on the server cal.example.com with specific values + for the properties DAV:displayname, CALDAV:calendar-description, + CALDAV:supported-calendar-component-set, and CALDAV:calendar- + timezone. + + + + + + + + + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 23]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-24" id="page-24" href="#page-24" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + >> Request << + + MKCALENDAR /home/lisa/calendars/events/ HTTP/1.1 + Host: cal.example.com + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:mkcalendar xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:set> + <D:prop> + <D:displayname>Lisa's Events</D:displayname> + <C:calendar-description xml:lang="en" + >Calendar restricted to events.</C:calendar-description> + <C:supported-calendar-component-set> + <C:comp name="VEVENT"/> + </C:supported-calendar-component-set> + <C:calendar-timezone><![CDATA[BEGIN:VCALENDAR + PRODID:-//Example Corp.//CalDAV Client//EN + VERSION:2.0 + BEGIN:VTIMEZONE + TZID:US-Eastern + LAST-MODIFIED:19870101T000000Z + BEGIN:STANDARD + DTSTART:19671029T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + TZNAME:Eastern Standard Time (US & Canada) + END:STANDARD + BEGIN:DAYLIGHT + DTSTART:19870405T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + TZNAME:Eastern Daylight Time (US & Canada) + END:DAYLIGHT + END:VTIMEZONE + END:VCALENDAR + ]]></C:calendar-timezone> + </D:prop> + </D:set> + </C:mkcalendar> + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 24]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-25" id="page-25" href="#page-25" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + >> Response << + + HTTP/1.1 201 Created + Cache-Control: no-cache + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Length: 0 + +<span class="h4"><h4><a class="selflink" name="section-5.3.2" href="#section-5.3.2">5.3.2</a>. Creating Calendar Object Resources</h4></span> + + Clients populate calendar collections with calendar object resources. + The URL for each calendar object resource is entirely arbitrary and + does not need to bear a specific relationship to the calendar object + resource's iCalendar properties or other metadata. New calendar + object resources MUST be created with a PUT request targeted at an + unmapped URI. A PUT request targeted at a mapped URI updates an + existing calendar object resource. + + When servers create new resources, it's not hard for the server to + choose an unmapped URI. It's slightly tougher for clients, because a + client might not want to examine all resources in the collection and + might not want to lock the entire collection to ensure that a new + resource isn't created with a name collision. However, there is an + HTTP feature to mitigate this. If the client intends to create a new + non-collection resource, such as a new VEVENT, the client SHOULD use + the HTTP request header "If-None-Match: *" on the PUT request. The + Request-URI on the PUT request MUST include the target collection, + where the resource is to be created, plus the name of the resource in + the last path segment. The "If-None-Match: *" request header ensures + that the client will not inadvertently overwrite an existing resource + if the last path segment turned out to already be used. + + + + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 25]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-26" id="page-26" href="#page-26" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + >> Request << + + PUT /home/lisa/calendars/events/qwue23489.ics HTTP/1.1 + If-None-Match: * + Host: cal.example.com + Content-Type: text/calendar + Content-Length: xxxx + + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VEVENT + UID:20010712T182145Z-123401@example.com + DTSTAMP:20060712T182145Z + DTSTART:20060714T170000Z + DTEND:20060715T040000Z + SUMMARY:Bastille Day Party + END:VEVENT + END:VCALENDAR + + >> Response << + + HTTP/1.1 201 Created + Content-Length: 0 + Date: Sat, 11 Nov 2006 09:32:12 GMT + ETag: "123456789-000-111" + + The request to change an existing event is the same, but with a + specific ETag in the "If-Match" header, rather than the "If-None- + Match" header. + + As indicated in <a href="http://tools.ietf.org/html/rfc2445#section-3.10">Section 3.10 of [RFC2445]</a>, the URL of calendar object + resources containing (an arbitrary set of) calendaring and scheduling + information may be suffixed by ".ics", and the URL of calendar object + resources containing free or busy time information may be suffixed by + ".ifb". + +<span class="h5"><h5><a class="selflink" name="section-5.3.2.1" href="#section-5.3.2.1">5.3.2.1</a>. Additional Preconditions for PUT, COPY, and MOVE</h5></span> + + This specification creates additional Preconditions for PUT, COPY, + and MOVE methods. These preconditions apply when a PUT operation of + a calendar object resource into a calendar collection occurs, or when + a COPY or MOVE operation of a calendar object resource into a + calendar collection occurs, or when a COPY or MOVE operation occurs + on a calendar collection. + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 26]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-27" id="page-27" href="#page-27" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + The new preconditions are: + + (CALDAV:supported-calendar-data): The resource submitted in the + PUT request, or targeted by a COPY or MOVE request, MUST be a + supported media type (i.e., iCalendar) for calendar object + resources; + + (CALDAV:valid-calendar-data): The resource submitted in the PUT + request, or targeted by a COPY or MOVE request, MUST be valid data + for the media type being specified (i.e., MUST contain valid + iCalendar data); + + (CALDAV:valid-calendar-object-resource): The resource submitted in + the PUT request, or targeted by a COPY or MOVE request, MUST obey + all restrictions specified in <a href="#section-4.1">Section 4.1</a> (e.g., calendar object + resources MUST NOT contain more than one type of calendar + component, calendar object resources MUST NOT specify the + iCalendar METHOD property, etc.); + + (CALDAV:supported-calendar-component): The resource submitted in + the PUT request, or targeted by a COPY or MOVE request, MUST + contain a type of calendar component that is supported in the + targeted calendar collection; + + (CALDAV:no-uid-conflict): The resource submitted in the PUT + request, or targeted by a COPY or MOVE request, MUST NOT specify + an iCalendar UID property value already in use in the targeted + calendar collection or overwrite an existing calendar object + resource with one that has a different UID property value. + Servers SHOULD report the URL of the resource that is already + making use of the same UID property value in the DAV:href element; + + <!ELEMENT no-uid-conflict (DAV:href)> + + (CALDAV:calendar-collection-location-ok): In a COPY or MOVE + request, when the Request-URI is a calendar collection, the + Destination-URI MUST identify a location where a calendar + collection can be created; + + (CALDAV:max-resource-size): The resource submitted in the PUT + request, or targeted by a COPY or MOVE request, MUST have an octet + size less than or equal to the value of the CALDAV:max-resource- + size property value (<a href="#section-5.2.5">Section 5.2.5</a>) on the calendar collection + where the resource will be stored; + + (CALDAV:min-date-time): The resource submitted in the PUT request, + or targeted by a COPY or MOVE request, MUST have all of its + iCalendar DATE or DATE-TIME property values (for each recurring + + + +<span class="grey">Daboo, et al. Standards Track [Page 27]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-28" id="page-28" href="#page-28" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + instance) greater than or equal to the value of the CALDAV:min- + date-time property value (<a href="#section-5.2.6">Section 5.2.6</a>) on the calendar + collection where the resource will be stored; + + (CALDAV:max-date-time): The resource submitted in the PUT request, + or targeted by a COPY or MOVE request, MUST have all of its + iCalendar DATE or DATE-TIME property values (for each recurring + instance) less than the value of the CALDAV:max-date-time property + value (<a href="#section-5.2.7">Section 5.2.7</a>) on the calendar collection where the + resource will be stored; + + (CALDAV:max-instances): The resource submitted in the PUT request, + or targeted by a COPY or MOVE request, MUST generate a number of + recurring instances less than or equal to the value of the CALDAV: + max-instances property value (<a href="#section-5.2.8">Section 5.2.8</a>) on the calendar + collection where the resource will be stored; + + (CALDAV:max-attendees-per-instance): The resource submitted in the + PUT request, or targeted by a COPY or MOVE request, MUST have a + number of ATTENDEE properties on any one instance less than or + equal to the value of the CALDAV:max-attendees-per-instance + property value (<a href="#section-5.2.9">Section 5.2.9</a>) on the calendar collection where + the resource will be stored; + +<span class="h4"><h4><a class="selflink" name="section-5.3.3" href="#section-5.3.3">5.3.3</a>. Non-Standard Components, Properties, and Parameters</h4></span> + + iCalendar provides a "standard mechanism for doing non-standard + things". This extension support allows implementers to make use of + non-standard components, properties, and parameters whose names are + prefixed with the text "X-". + + Servers MUST support the use of non-standard components, properties, + and parameters in calendar object resources stored via the PUT + method. + + Servers may need to enforce rules for their own "private" components, + properties, or parameters, so servers MAY reject any attempt by the + client to change those or use values for those outside of any + restrictions the server may have. Servers SHOULD ensure that any + "private" components, properties, or parameters it uses follow the + convention of including a vendor id in the "X-" name, as described in + <a href="http://tools.ietf.org/html/rfc2445#section-4.2">Section 4.2 of [RFC2445]</a>, e.g., "X-ABC-PRIVATE". + +<span class="h4"><h4><a class="selflink" name="section-5.3.4" href="#section-5.3.4">5.3.4</a>. Calendar Object Resource Entity Tag</h4></span> + + The DAV:getetag property MUST be defined and set to a strong entity + tag on all calendar object resources. + + + + +<span class="grey">Daboo, et al. Standards Track [Page 28]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-29" id="page-29" href="#page-29" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + A response to a GET request targeted at a calendar object resource + MUST contain an ETag response header field indicating the current + value of the strong entity tag of the calendar object resource. + + Servers SHOULD return a strong entity tag (ETag header) in a PUT + response when the stored calendar object resource is equivalent by + octet equality to the calendar object resource submitted in the body + of the PUT request. This allows clients to reliably use the returned + strong entity tag for data synchronization purposes. For instance, + the client can do a PROPFIND request on the stored calendar object + resource and have the DAV:getetag property returned, and compare that + value with the strong entity tag it received on the PUT response, and + know that if they are equal, then the calendar object resource on the + server has not been changed. + + In the case where the data stored by a server as a result of a PUT + request is not equivalent by octet equality to the submitted calendar + object resource, the behavior of the ETag response header is not + specified here, with the exception that a strong entity tag MUST NOT + be returned in the response. As a result, clients may need to + retrieve the modified calendar object resource (and ETag) as a basis + for further changes, rather than use the calendar object resource it + had sent with the PUT request. + +<span class="h2"><h2><a class="selflink" name="section-6" href="#section-6">6</a>. Calendaring Access Control</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-6.1" href="#section-6.1">6.1</a>. Calendaring Privilege</h3></span> + + CalDAV servers MUST support and adhere to the requirements of WebDAV + ACL [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>]. WebDAV ACL provides a framework for an extensible set + of privileges that can be applied to WebDAV collections and ordinary + resources. CalDAV servers MUST also support the calendaring + privilege defined in this section. + +<span class="h4"><h4><a class="selflink" name="section-6.1.1" href="#section-6.1.1">6.1.1</a>. CALDAV:read-free-busy Privilege</h4></span> + + Calendar users often wish to allow other users to see their busy time + information, without viewing the other details of the calendar + components (e.g., location, summary, attendees). This allows a + significant amount of privacy while still allowing other users to + schedule meetings at times when the user is likely to be free. + + The CALDAV:read-free-busy privilege controls which calendar + collections, regular collections, and calendar object resources are + examined when a CALDAV:free-busy-query REPORT request is processed + (see <a href="#section-7.10">Section 7.10</a>). This privilege can be granted on calendar + collections, regular collections, or calendar object resources. + + + + +<span class="grey">Daboo, et al. Standards Track [Page 29]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-30" id="page-30" href="#page-30" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Servers MUST support this privilege on all calendar collections, + regular collections, and calendar object resources. + + + <!ELEMENT read-free-busy EMPTY> + + The CALDAV:read-free-busy privilege MUST be aggregated in the DAV: + read privilege. Servers MUST allow the CALDAV:read-free-busy to be + granted without the DAV:read privilege being granted. + + Clients should note that when only the CALDAV:read-free-busy + privilege has been granted on a resource, access to GET, HEAD, + OPTIONS, and PROPFIND on the resource is not implied (those + operations are governed by the DAV:read privilege). + +<span class="h3"><h3><a class="selflink" name="section-6.2" href="#section-6.2">6.2</a>. Additional Principal Property</h3></span> + + This section defines an additional property for WebDAV principal + resources, as defined in [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>]. + +<span class="h4"><h4><a class="selflink" name="section-6.2.1" href="#section-6.2.1">6.2.1</a>. CALDAV:calendar-home-set Property</h4></span> + + Name: calendar-home-set + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Identifies the URL of any WebDAV collections that contain + calendar collections owned by the associated principal resource. + + Conformance: This property SHOULD be defined on a principal + resource. If defined, it MAY be protected and SHOULD NOT be + returned by a PROPFIND DAV:allprop request (as defined in <a href="#section-12.14.1">Section</a> + <a href="#section-12.14.1">12.14.1</a> of [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]). + + Description: The CALDAV:calendar-home-set property is meant to allow + users to easily find the calendar collections owned by the + principal. Typically, users will group all the calendar + collections that they own under a common collection. This + property specifies the URL of collections that are either calendar + collections or ordinary collections that have child or descendant + calendar collections owned by the principal. + + Definition: + + <!ELEMENT calendar-home-set (DAV:href*)> + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 30]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-31" id="page-31" href="#page-31" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Example: + + <C:calendar-home-set xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:href>http://cal.example.com/home/bernard/calendars/</D:href> + </C:calendar-home-set> + +<span class="h2"><h2><a class="selflink" name="section-7" href="#section-7">7</a>. Calendaring Reports</h2></span> + + This section defines the reports that CalDAV servers MUST support on + calendar collections and calendar object resources. + + CalDAV servers MUST advertise support for these reports on all + calendar collections and calendar object resources with the DAV: + supported-report-set property, defined in <a href="http://tools.ietf.org/html/rfc3253#section-3.1.5">Section 3.1.5 of [RFC3253]</a>. + CalDAV servers MAY also advertise support for these reports on + ordinary collections. + + Some of these reports allow calendar data (from possibly multiple + resources) to be returned. + +<span class="h3"><h3><a class="selflink" name="section-7.1" href="#section-7.1">7.1</a>. REPORT Method</h3></span> + + The REPORT method (defined in <a href="http://tools.ietf.org/html/rfc3253#section-3.6">Section 3.6 of [RFC3253]</a>) provides an + extensible mechanism for obtaining information about one or more + resources. Unlike the PROPFIND method, which returns the value of + one or more named properties, the REPORT method can involve more + complex processing. REPORT is valuable in cases where the server has + access to all of the information needed to perform the complex + request (such as a query), and where it would require multiple + requests for the client to retrieve the information needed to perform + the same request. + + CalDAV servers MUST support the DAV:expand-property REPORT defined in + <a href="http://tools.ietf.org/html/rfc3253#section-3.8">Section 3.8 of [RFC3253]</a>. + +<span class="h3"><h3><a class="selflink" name="section-7.2" href="#section-7.2">7.2</a>. Ordinary Collections</h3></span> + + Servers MAY support the reports defined in this document on ordinary + collections (collections that are not calendar collections), in + addition to calendar collections or calendar object resources. In + computing responses to the reports on ordinary collections, servers + MUST only consider calendar object resources contained in calendar + collections that are targeted by the REPORT request, based on the + value of the Depth request header. + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 31]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-32" id="page-32" href="#page-32" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-7.3" href="#section-7.3">7.3</a>. Date and Floating Time</h3></span> + + iCalendar provides a way to specify DATE and DATE-TIME values that + are not bound to any time zone in particular, hereafter called + "floating date" and "floating time", respectively. These values are + used to represent the same day, hour, minute, and second value, + regardless of which time zone is being observed. For instance, the + DATE value "20051111", represents November 11, 2005 in no specific + time zone, while the DATE-TIME value "20051111T111100" represents + November 11, 2005, at 11:11 A.M. in no specific time zone. + + CalDAV servers may need to convert "floating date" and "floating + time" values in date with UTC time values in the processing of + calendaring REPORT requests. + + For the CALDAV:calendar-query REPORT, CalDAV servers MUST rely on the + value of the CALDAV:timezone XML element, if specified as part of the + request body, to perform the proper conversion of "floating date" and + "floating time" values to date with UTC time values. If the CALDAV: + timezone XML element is not specified in the request body, CalDAV + servers MUST rely on the value of the CALDAV:calendar-timezone + property, if defined, or else the CalDAV servers MAY rely on the time + zone of their choice. + + For the CALDAV:free-busy-query REPORT, CalDAV servers MUST rely on + the value of the CALDAV:calendar-timezone property, if defined, to + compute the proper FREEBUSY time period value as date with UTC time + for calendar components scheduled with "floating date" or "floating + time". If the CALDAV:calendar-timezone property is not defined, + CalDAV servers MAY rely on the time zone of their choice. + +<span class="h3"><h3><a class="selflink" name="section-7.4" href="#section-7.4">7.4</a>. Time Range Filtering</h3></span> + + Some of the reports defined in this section can include a time range + filter that is used to restrict the set of calendar object resources + returned to just those that overlap the specified time range. The + time range filter can be applied to a calendar component as a whole, + or to specific calendar component properties with DATE or DATE-TIME + value types. + + To determine whether a calendar object resource matches the time + range filter element, the start and end times for the targeted + component or property are determined and then compared to the + requested time range. If there is an overlap with the requested time + range, then the calendar object resource matches the filter element. + The rules defined in [<a href="http://tools.ietf.org/html/rfc2445" title="" internet calendaring and scheduling core object specification>RFC2445</a>] for determining the actual start and + end times of calendar components MUST be used, and these are fully + enumerated in <a href="#section-9.9">Section 9.9</a> of this document. + + + +<span class="grey">Daboo, et al. Standards Track [Page 32]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-33" id="page-33" href="#page-33" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + When such time range filtering is used, special consideration must be + given to recurring calendar components, such as VEVENT and VTODO. + The server MUST expand recurring components to determine whether any + recurrence instances overlap the specified time range. If one or + more recurrence instances overlap the time range, then the calendar + object resource matches the filter element. + +<span class="h3"><h3><a class="selflink" name="section-7.5" href="#section-7.5">7.5</a>. Searching Text: Collations</h3></span> + + Some of the reports defined in this section do text matches of + character strings provided by the client and are compared to stored + calendar data. Since iCalendar data is, by default, encoded in the + UTF-8 charset and may include characters outside the US-ASCII charset + range in some property and parameter values, there is a need to + ensure that text matching follows well-defined rules. + + To deal with this, this specification makes use of the IANA Collation + Registry defined in [<a href="http://tools.ietf.org/html/rfc4790" title="" internet application protocol collation registry>RFC4790</a>] to specify collations that may be used + to carry out the text comparison operations with a well-defined rule. + + The comparisons used in CalDAV are all "substring" matches, as per + <a href="http://tools.ietf.org/html/rfc4790#section-4.2">[RFC4790], Section 4.2</a>. Collations supported by the server MUST + support "substring" match operations. + + CalDAV servers are REQUIRED to support the "i;ascii-casemap" and + "i;octet" collations, as described in [<a href="http://tools.ietf.org/html/rfc4790" title="" internet application protocol collation registry>RFC4790</a>], and MAY support + other collations. + + Servers MUST advertise the set of collations that they support via + the CALDAV:supported-collation-set property defined on any resource + that supports reports that use collations. + + Clients MUST only use collations from the list advertised by the + server. + + In the absence of a collation explicitly specified by the client, or + if the client specifies the "default" collation identifier (as + defined in <a href="http://tools.ietf.org/html/rfc4790#section-3.1">[RFC4790], Section 3.1</a>), the server MUST default to using + "i;ascii-casemap" as the collation. + + Wildcards (as defined in <a href="http://tools.ietf.org/html/rfc4790#section-3.2">[RFC4790], Section 3.2</a>) MUST NOT be used in + the collation identifier. + + If the client chooses a collation not supported by the server, the + server MUST respond with a CALDAV:supported-collation precondition + error response. + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 33]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-34" id="page-34" href="#page-34" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-7.5.1" href="#section-7.5.1">7.5.1</a>. CALDAV:supported-collation-set Property</h4></span> + + Name: supported-collation-set + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Identifies the set of collations supported by the server + for text matching operations. + + Conformance: This property MUST be defined on any resource that + supports a report that does text matching. If defined, it MUST be + protected and SHOULD NOT be returned by a PROPFIND DAV:allprop + request (as defined in <a href="http://tools.ietf.org/html/rfc2518#section-12.14.1">Section 12.14.1 of [RFC2518]</a>). + + Description: The CALDAV:supported-collation-set property contains + zero or more CALDAV:supported-collation elements, which specify + the collection identifiers of the collations supported by the + server. + + Definition: + + <!ELEMENT supported-collation-set (supported-collation*)> + + <!ELEMENT supported-collation (#PCDATA)> + + Example: + + <C:supported-collation-set + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <C:supported-collation>i;ascii-casemap</C:supported-collation> + <C:supported-collation>i;octet</C:supported-collation> + </C:supported-collation-set> + +<span class="h3"><h3><a class="selflink" name="section-7.6" href="#section-7.6">7.6</a>. Partial Retrieval</h3></span> + + Some calendaring reports defined in this document allow partial + retrieval of calendar object resources. A CalDAV client can specify + what information to return in the body of a calendaring REPORT + request. + + A CalDAV client can request particular WebDAV property values, all + WebDAV property values, or a list of the names of the resource's + WebDAV properties. A CalDAV client can also request calendar data to + be returned and specify whether all calendar components and + properties should be returned, or only particular ones. See CALDAV: + calendar-data in <a href="#section-9.6">Section 9.6</a>. + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 34]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-35" id="page-35" href="#page-35" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + By default, the returned calendar data will include the component + that defines the recurrence set, referred to as the "master + component", as well as the components that define exceptions to the + recurrence set, referred to as the "overridden components". + + A CalDAV client that is only interested in the recurrence instances + that overlap a specified time range can request to receive only the + "master component", along with the "overridden components" that + impact the specified time range, and thus, limit the data returned by + the server (see CALDAV:limit-recurrence-set in <a href="#section-9.6.6">Section 9.6.6</a>). An + overridden component impacts a time range if its current start and + end times overlap the time range, or if the original start and end + times -- the ones that would have been used if the instance were not + overridden -- overlap the time range, or if it affects other + instances that overlap the time range. + + A CalDAV client with no support for recurrence properties (i.e., + EXDATE, EXRULE, RDATE, and RRULE) and possibly VTIMEZONE components, + or a client unwilling to perform recurrence expansion because of + limited processing capability, can request to receive only the + recurrence instances that overlap a specified time range as separate + calendar components that each define exactly one recurrence instance + (see CALDAV:expand in <a href="#section-9.6.5">Section 9.6.5</a>.) + + Finally, in the case of VFREEBUSY components, a CalDAV client can + request to receive only the FREEBUSY property values that overlap a + specified time range (see CALDAV:limit-freebusy-set in + <a href="#section-9.6.7">Section 9.6.7</a>.) + +<span class="h3"><h3><a class="selflink" name="section-7.7" href="#section-7.7">7.7</a>. Non-Standard Components, Properties, and Parameters</h3></span> + + Servers MUST support the use of non-standard component, property, or + parameter names in the CALDAV:calendar-data XML element in + calendaring REPORT requests to allow clients to request that non- + standard components, properties, and parameters be returned in the + calendar data provided in the response. + + Servers MAY support the use of non-standard component, property, or + parameter names in the CALDAV:comp-filter, CALDAV:prop-filter, and + CALDAV:param-filter XML elements specified in the CALDAV:filter XML + element of calendaring REPORT requests. + + Servers MUST fail with the CALDAV:supported-filter precondition if a + calendaring REPORT request uses a CALDAV:comp-filter, CALDAV:prop- + filter, or CALDAV:param-filter XML element that makes reference to a + non-standard component, property, or parameter name on which the + server does not support queries. + + + + +<span class="grey">Daboo, et al. Standards Track [Page 35]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-36" id="page-36" href="#page-36" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-7.8" href="#section-7.8">7.8</a>. CALDAV:calendar-query REPORT</h3></span> + + The CALDAV:calendar-query REPORT performs a search for all calendar + object resources that match a specified filter. The response of this + report will contain all the WebDAV properties and calendar object + resource data specified in the request. In the case of the CALDAV: + calendar-data XML element, one can explicitly specify the calendar + components and properties that should be returned in the calendar + object resource data that matches the filter. + + The format of this report is modeled on the PROPFIND method. The + request and response bodies of the CALDAV:calendar-query REPORT use + XML elements that are also used by PROPFIND. In particular, the + request can include XML elements to request WebDAV properties to be + returned. When that occurs, the response should follow the same + behavior as PROPFIND with respect to the DAV:multistatus response + elements used to return specific property results. For instance, a + request to retrieve the value of a property that does not exist is an + error and MUST be noted with a response XML element that contains a + 404 (Not Found) status value. + + Support for the CALDAV:calendar-query REPORT is REQUIRED. + + Marshalling: + + The request body MUST be a CALDAV:calendar-query XML element, as + defined in <a href="#section-9.5">Section 9.5</a>. + + The request MAY include a Depth header. If no Depth header is + included, Depth:0 is assumed. + + The response body for a successful request MUST be a DAV: + multistatus XML element (i.e., the response uses the same format + as the response for PROPFIND). In the case where there are no + response elements, the returned DAV:multistatus XML element is + empty. + + The response body for a successful CALDAV:calendar-query REPORT + request MUST contain a DAV:response element for each iCalendar + object that matched the search filter. Calendar data is being + returned in the CALDAV:calendar-data XML element inside the DAV: + propstat XML element. + + Preconditions: + + (CALDAV:supported-calendar-data): The attributes "content-type" + and "version" of the CALDAV:calendar-data XML element (see + + + + +<span class="grey">Daboo, et al. Standards Track [Page 36]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-37" id="page-37" href="#page-37" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <a href="#section-9.6">Section 9.6</a>) specify a media type supported by the server for + calendar object resources. + + (CALDAV:valid-filter): The CALDAV:filter XML element (see + <a href="#section-9.7">Section 9.7</a>) specified in the REPORT request MUST be valid. For + instance, a CALDAV:filter cannot nest a <C:comp name="VEVENT"> + element in a <C:comp name="VTODO"> element, and a CALDAV:filter + cannot nest a <C:time-range start="..." end="..."> element in a + <C:prop name="SUMMARY"> element. + + (CALDAV:supported-filter): The CALDAV:comp-filter (see + <a href="#section-9.7.1">Section 9.7.1</a>), CALDAV:prop-filter (see <a href="#section-9.7.2">Section 9.7.2</a>), and + CALDAV:param-filter (see <a href="#section-9.7.3">Section 9.7.3</a>) XML elements used in the + CALDAV:filter XML element (see <a href="#section-9.7">Section 9.7</a>) in the REPORT request + only make reference to components, properties, and parameters for + which queries are supported by the server, i.e., if the CALDAV: + filter element attempts to reference an unsupported component, + property, or parameter, this precondition is violated. Servers + SHOULD report the CALDAV:comp-filter, CALDAV:prop-filter, or + CALDAV:param-filter for which it does not provide support. + + <!ELEMENT supported-filter (comp-filter*, + prop-filter*, + param-filter*)> + + (CALDAV:valid-calendar-data): The time zone specified in the + REPORT request MUST be a valid iCalendar object containing a + single valid VTIMEZONE component. + + (CALDAV:min-date-time): Any XML element specifying a range of time + MUST have its start or end DATE or DATE-TIME values greater than + or equal to the value of the CALDAV:min-date-time property value + (<a href="#section-5.2.6">Section 5.2.6</a>) on the calendar collections being targeted by the + REPORT request; + + (CALDAV:max-date-time): Any XML element specifying a range of time + MUST have its start or end DATE or DATE-TIME values less than or + equal to the value of the CALDAV:max-date-time property value + (<a href="#section-5.2.7">Section 5.2.7</a>) on the calendar collections being targeted by the + REPORT request; + + (CALDAV:supported-collation): Any XML attribute specifying a + collation MUST specify a collation supported by the server as + described in <a href="#section-7.5">Section 7.5</a>. + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 37]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-38" id="page-38" href="#page-38" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Postconditions: + + (DAV:number-of-matches-within-limits): The number of matching + calendar object resources must fall within server-specific, + predefined limits. For example, this condition might be triggered + if a search specification would cause the return of an extremely + large number of responses. + +<span class="h4"><h4><a class="selflink" name="section-7.8.1" href="#section-7.8.1">7.8.1</a>. Example: Partial Retrieval of Events by Time Range</h4></span> + + In this example, the client requests the server to return specific + components and properties of the VEVENT components that overlap the + time range from January 4, 2006, at 00:00:00 A.M. UTC to January 5, + 2006, at 00:00:00 A.M. UTC. In addition, the DAV:getetag property is + also requested and returned as part of the response. Note that the + first calendar object returned is a recurring event whose first + instance lies outside the requested time range, but whose third + instance does overlap the time range. Note that due to the CALDAV: + calendar-data element restrictions, the DTSTAMP property in VEVENT + components has not been returned, and the only property returned in + the VCALENDAR object is VERSION. + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 38]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-39" id="page-39" href="#page-39" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop> + <D:getetag/> + <C:calendar-data> + <C:comp name="VCALENDAR"> + <C:prop name="VERSION"/> + <C:comp name="VEVENT"> + <C:prop name="SUMMARY"/> + <C:prop name="UID"/> + <C:prop name="DTSTART"/> + <C:prop name="DTEND"/> + <C:prop name="DURATION"/> + <C:prop name="RRULE"/> + <C:prop name="RDATE"/> + <C:prop name="EXRULE"/> + <C:prop name="EXDATE"/> + <C:prop name="RECURRENCE-ID"/> + </C:comp> + <C:comp name="VTIMEZONE"/> + </C:comp> + </C:calendar-data> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"> + <C:comp-filter name="VEVENT"> + <C:time-range start="20060104T000000Z" + end="20060105T000000Z"/> + </C:comp-filter> + </C:comp-filter> + </C:filter> + </C:calendar-query> + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + + +<span class="grey">Daboo, et al. Standards Track [Page 39]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-40" id="page-40" href="#page-40" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd2"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + DTSTART;TZID=US/Eastern:20060102T120000 + DURATION:PT1H + RRULE:FREQ=DAILY;COUNT=5 + SUMMARY:Event #2 + UID:00959BC664CA650E933C892C@example.com + END:VEVENT + BEGIN:VEVENT + DTSTART;TZID=US/Eastern:20060104T140000 + DURATION:PT1H + RECURRENCE-ID;TZID=US/Eastern:20060104T120000 + SUMMARY:Event #2 bis + UID:00959BC664CA650E933C892C@example.com + END:VEVENT + BEGIN:VEVENT + DTSTART;TZID=US/Eastern:20060106T140000 + DURATION:PT1H + RECURRENCE-ID;TZID=US/Eastern:20060106T120000 + SUMMARY:Event #2 bis bis + UID:00959BC664CA650E933C892C@example.com + + + +<span class="grey">Daboo, et al. Standards Track [Page 40]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-41" id="page-41" href="#page-41" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd3"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + DTSTART;TZID=US/Eastern:20060104T100000 + DURATION:PT1H + SUMMARY:Event #3 + UID:DC6C50A017428C5216A2F1CD@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 41]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-42" id="page-42" href="#page-42" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-7.8.2" href="#section-7.8.2">7.8.2</a>. Example: Partial Retrieval of Recurring Events</h4></span> + + In this example, the client requests the server to return VEVENT + components that overlap the time range from January 3, 2006, at 00: + 00:00 A.M. UTC to January 5, 2006, at 00:00:00 A.M. UTC. Use of the + CALDAV:limit-recurrence-set element causes the server to only return + overridden recurrence components that overlap the time range + specified in that element or that affect other instances that overlap + the time range (e.g., in the case of a THISANDFUTURE behavior). In + this example, the first overridden component in the matching resource + is returned, but the second one is not. + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop> + <C:calendar-data> + <C:limit-recurrence-set start="20060103T000000Z" + end="20060105T000000Z"/> + </C:calendar-data> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"> + <C:comp-filter name="VEVENT"> + <C:time-range start="20060103T000000Z" + end="20060105T000000Z"/> + </C:comp-filter> + </C:comp-filter> + </C:filter> + </C:calendar-query> + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + + + +<span class="grey">Daboo, et al. Standards Track [Page 42]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-43" id="page-43" href="#page-43" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd2"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + DTSTAMP:20060206T001121Z + DTSTART;TZID=US/Eastern:20060102T120000 + DURATION:PT1H + RRULE:FREQ=DAILY;COUNT=5 + SUMMARY:Event #2 + UID:00959BC664CA650E933C892C@example.com + END:VEVENT + BEGIN:VEVENT + DTSTAMP:20060206T001121Z + DTSTART;TZID=US/Eastern:20060104T140000 + DURATION:PT1H + RECURRENCE-ID;TZID=US/Eastern:20060104T120000 + SUMMARY:Event #2 bis + UID:00959BC664CA650E933C892C@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + + + +<span class="grey">Daboo, et al. Standards Track [Page 43]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-44" id="page-44" href="#page-44" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd3"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com + ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com + DTSTAMP:20060206T001220Z + DTSTART;TZID=US/Eastern:20060104T100000 + DURATION:PT1H + LAST-MODIFIED:20060206T001330Z + ORGANIZER:mailto:cyrus@example.com + SEQUENCE:1 + STATUS:TENTATIVE + SUMMARY:Event #3 + UID:DC6C50A017428C5216A2F1CD@example.com + X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + + + +<span class="grey">Daboo, et al. Standards Track [Page 44]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-45" id="page-45" href="#page-45" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + </D:response> + </D:multistatus> + +<span class="h4"><h4><a class="selflink" name="section-7.8.3" href="#section-7.8.3">7.8.3</a>. Example: Expanded Retrieval of Recurring Events</h4></span> + + In this example, the client requests the server to return VEVENT + components that overlap the time range from January 2, 2006, at 00: + 00:00 A.M. UTC to January 5, 2006, at 00:00:00 A.M. UTC and to return + recurring calendar components expanded into individual recurrence + instance calendar components. Use of the CALDAV:expand element + causes the server to only return overridden recurrence instances that + overlap the time range specified in that element. + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop> + <C:calendar-data> + <C:expand start="20060103T000000Z" + end="20060105T000000Z"/> + </C:calendar-data> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"> + <C:comp-filter name="VEVENT"> + <C:time-range start="20060103T000000Z" + end="20060105T000000Z"/> + </C:comp-filter> + </C:comp-filter> + </C:filter> + </C:calendar-query> + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + + +<span class="grey">Daboo, et al. Standards Track [Page 45]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-46" id="page-46" href="#page-46" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd2"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VEVENT + DTSTAMP:20060206T001121Z + DTSTART:20060103T170000 + DURATION:PT1H + RECURRENCE-ID:20060103T170000 + SUMMARY:Event #2 + UID:00959BC664CA650E933C892C@example.com + END:VEVENT + BEGIN:VEVENT + DTSTAMP:20060206T001121Z + DTSTART:20060104T190000 + DURATION:PT1H + RECURRENCE-ID:20060104T170000 + SUMMARY:Event #2 bis + UID:00959BC664CA650E933C892C@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd3"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VEVENT + ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com + ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com + DTSTAMP:20060206T001220Z + DTSTART:20060104T150000 + DURATION:PT1H + LAST-MODIFIED:20060206T001330Z + + + +<span class="grey">Daboo, et al. Standards Track [Page 46]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-47" id="page-47" href="#page-47" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + ORGANIZER:mailto:cyrus@example.com + SEQUENCE:1 + STATUS:TENTATIVE + SUMMARY:Event #3 + UID:DC6C50A017428C5216A2F1CD@example.com + X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 47]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-48" id="page-48" href="#page-48" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-7.8.4" href="#section-7.8.4">7.8.4</a>. Example: Partial Retrieval of Stored Free Busy Components</h4></span> + + In this example, the client requests the server to return the + VFREEBUSY components that have free busy information that overlap the + time range from January 2, 2006, at 00:00:00 A.M. UTC (inclusively) + to January 3, 2006, at 00:00:00 A.M. UTC (exclusively). Use of the + CALDAV:limit-freebusy-set element causes the server to only return + the FREEBUSY property values that overlap the time range specified in + that element. Note that this is not an example of discovering when + the calendar owner is busy. + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop> + <C:calendar-data> + <C:limit-freebusy-set start="20060102T000000Z" + end="20060103T000000Z"/> + </C:calendar-data> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"> + <C:comp-filter name="VFREEBUSY"> + <C:time-range start="20060102T000000Z" + end="20060103T000000Z"/> + </C:comp-filter> + </C:comp-filter> + </C:filter> + </C:calendar-query> + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 48]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-49" id="page-49" href="#page-49" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd8.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd8"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VFREEBUSY + ORGANIZER;CN="Bernard Desruisseaux":mailto:bernard@example.com + UID:76ef34-54a3d2@example.com + DTSTAMP:20050530T123421Z + DTSTART:20060101T100000Z + DTEND:20060108T100000Z + FREEBUSY;FBTYPE=BUSY-TENTATIVE:20060102T100000Z/20060102T120000Z + END:VFREEBUSY + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 49]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-50" id="page-50" href="#page-50" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-7.8.5" href="#section-7.8.5">7.8.5</a>. Example: Retrieval of To-Dos by Alarm Time Range</h4></span> + + In this example, the client requests the server to return the VTODO + components that have an alarm trigger scheduled in the specified time + range. + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop xmlns:D="DAV:"> + <D:getetag/> + <C:calendar-data/> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"> + <C:comp-filter name="VTODO"> + <C:comp-filter name="VALARM"> + <C:time-range start="20060106T100000Z" + end="20060107T100000Z"/> + </C:comp-filter> + </C:comp-filter> + </C:comp-filter> + </C:filter> + </C:calendar-query> + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 50]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-51" id="page-51" href="#page-51" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd4.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd4"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTODO + DTSTAMP:20060205T235300Z + DUE;TZID=US/Eastern:20060106T120000 + LAST-MODIFIED:20060205T235308Z + SEQUENCE:1 + STATUS:NEEDS-ACTION + SUMMARY:Task #2 + UID:E10BA47467C5C69BB74E8720@example.com + BEGIN:VALARM + ACTION:AUDIO + TRIGGER;RELATED=START:-PT10M + END:VALARM + END:VTODO + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + +<span class="h4"><h4><a class="selflink" name="section-7.8.6" href="#section-7.8.6">7.8.6</a>. Example: Retrieval of Event by UID</h4></span> + + In this example, the client requests the server to return the VEVENT + component that has the UID property set to + "DC6C50A017428C5216A2F1CD@example.com". + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 51]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-52" id="page-52" href="#page-52" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop xmlns:D="DAV:"> + <D:getetag/> + <C:calendar-data/> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"> + <C:comp-filter name="VEVENT"> + <C:prop-filter name="UID"> + <C:text-match collation="i;octet" + >DC6C50A017428C5216A2F1CD@example.com</C:text-match> + </C:prop-filter> + </C:comp-filter> + </C:comp-filter> + </C:filter> + </C:calendar-query> + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd3"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + + + +<span class="grey">Daboo, et al. Standards Track [Page 52]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-53" id="page-53" href="#page-53" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com + ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com + DTSTAMP:20060206T001220Z + DTSTART;TZID=US/Eastern:20060104T100000 + DURATION:PT1H + LAST-MODIFIED:20060206T001330Z + ORGANIZER:mailto:cyrus@example.com + SEQUENCE:1 + STATUS:TENTATIVE + SUMMARY:Event #3 + UID:DC6C50A017428C5216A2F1CD@example.com + X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + +<span class="h4"><h4><a class="selflink" name="section-7.8.7" href="#section-7.8.7">7.8.7</a>. Example: Retrieval of Events by PARTSTAT</h4></span> + + In this example, the client requests the server to return the VEVENT + components that have the ATTENDEE property with the value + "mailto:lisa@example.com" and for which the PARTSTAT parameter is set + to NEEDS-ACTION. + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 53]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-54" id="page-54" href="#page-54" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop xmlns:D="DAV:"> + <D:getetag/> + <C:calendar-data/> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"> + <C:comp-filter name="VEVENT"> + <C:prop-filter name="ATTENDEE"> + <C:text-match collation="i;ascii-casemap" + >mailto:lisa@example.com</C:text-match> + <C:param-filter name="PARTSTAT"> + <C:text-match collation="i;ascii-casemap" + >NEEDS-ACTION</C:text-match> + </C:param-filter> + </C:prop-filter> + </C:comp-filter> + </C:comp-filter> + </C:filter> + </C:calendar-query> + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd3"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + + + +<span class="grey">Daboo, et al. Standards Track [Page 54]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-55" id="page-55" href="#page-55" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com + ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com + DTSTAMP:20060206T001220Z + DTSTART;TZID=US/Eastern:20060104T100000 + DURATION:PT1H + LAST-MODIFIED:20060206T001330Z + ORGANIZER:mailto:cyrus@example.com + SEQUENCE:1 + STATUS:TENTATIVE + SUMMARY:Event #3 + UID:DC6C50A017428C5216A2F1CD@example.com + X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + +<span class="h4"><h4><a class="selflink" name="section-7.8.8" href="#section-7.8.8">7.8.8</a>. Example: Retrieval of Events Only</h4></span> + + In this example, the client requests the server to return all VEVENT + components. + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 55]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-56" id="page-56" href="#page-56" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop xmlns:D="DAV:"> + <D:getetag/> + <C:calendar-data/> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"> + <C:comp-filter name="VEVENT"/> + </C:comp-filter> + </C:filter> + </C:calendar-query> + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd1.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd1"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + + + +<span class="grey">Daboo, et al. Standards Track [Page 56]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-57" id="page-57" href="#page-57" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + DTSTAMP:20060206T001102Z + DTSTART;TZID=US/Eastern:20060102T100000 + DURATION:PT1H + SUMMARY:Event #1 + Description:Go Steelers! + UID:74855313FA803DA593CD579A@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd2"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + + + +<span class="grey">Daboo, et al. Standards Track [Page 57]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-58" id="page-58" href="#page-58" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + END:VTIMEZONE + BEGIN:VEVENT + DTSTAMP:20060206T001121Z + DTSTART;TZID=US/Eastern:20060102T120000 + DURATION:PT1H + RRULE:FREQ=DAILY;COUNT=5 + SUMMARY:Event #2 + UID:00959BC664CA650E933C892C@example.com + END:VEVENT + BEGIN:VEVENT + DTSTAMP:20060206T001121Z + DTSTART;TZID=US/Eastern:20060104T140000 + DURATION:PT1H + RECURRENCE-ID;TZID=US/Eastern:20060104T120000 + SUMMARY:Event #2 bis + UID:00959BC664CA650E933C892C@example.com + END:VEVENT + BEGIN:VEVENT + DTSTAMP:20060206T001121Z + DTSTART;TZID=US/Eastern:20060106T140000 + DURATION:PT1H + RECURRENCE-ID;TZID=US/Eastern:20060106T120000 + SUMMARY:Event #2 bis bis + UID:00959BC664CA650E933C892C@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd3"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + + + +<span class="grey">Daboo, et al. Standards Track [Page 58]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-59" id="page-59" href="#page-59" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com + ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com + DTSTAMP:20060206T001220Z + DTSTART;TZID=US/Eastern:20060104T100000 + DURATION:PT1H + LAST-MODIFIED:20060206T001330Z + ORGANIZER:mailto:cyrus@example.com + SEQUENCE:1 + STATUS:TENTATIVE + SUMMARY:Event #3 + UID:DC6C50A017428C5216A2F1CD@example.com + X-ABC-GUID:E1CX5Dr-0007ym-Hz@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + +<span class="h4"><h4><a class="selflink" name="section-7.8.9" href="#section-7.8.9">7.8.9</a>. Example: Retrieval of All Pending To-Dos</h4></span> + + In this example, the client requests the server to return all VTODO + components that do not include a COMPLETED property and do not have a + STATUS property value matching CANCELLED, i.e., VTODOs that still + need to be worked on. + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 59]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-60" id="page-60" href="#page-60" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop xmlns:D="DAV:"> + <D:getetag/> + <C:calendar-data/> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"> + <C:comp-filter name="VTODO"> + <C:prop-filter name="COMPLETED"> + <C:is-not-defined/> + </C:prop-filter> + <C:prop-filter name="STATUS"> + <C:text-match + negate-condition="yes">CANCELLED</C:text-match> + </C:prop-filter> + </C:comp-filter> + </C:comp-filter> + </C:filter> + </C:calendar-query> + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd4.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd4"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTODO + + + +<span class="grey">Daboo, et al. Standards Track [Page 60]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-61" id="page-61" href="#page-61" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + DTSTAMP:20060205T235335Z + DUE;VALUE=DATE:20060104 + STATUS:NEEDS-ACTION + SUMMARY:Task #1 + UID:DDDEEB7915FA61233B861457@example.com + BEGIN:VALARM + ACTION:AUDIO + TRIGGER;RELATED=START:-PT10M + END:VALARM + END:VTODO + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd5.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd5"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTODO + DTSTAMP:20060205T235300Z + DUE;VALUE=DATE:20060106 + LAST-MODIFIED:20060205T235308Z + SEQUENCE:1 + STATUS:NEEDS-ACTION + SUMMARY:Task #2 + UID:E10BA47467C5C69BB74E8720@example.com + BEGIN:VALARM + ACTION:AUDIO + TRIGGER;RELATED=START:-PT10M + END:VALARM + END:VTODO + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 61]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-62" id="page-62" href="#page-62" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-7.8.10" href="#section-7.8.10">7.8.10</a>. Example: Attempt to Query Unsupported Property</h4></span> + + In this example, the client requests the server to return all VEVENT + components that include an X-ABC-GUID property with a value matching + "ABC". However, the server does not support querying that non- + standard property, and instead returns an error response. + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop xmlns:D="DAV:"> + <D:getetag/> + <C:calendar-data/> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"> + <C:comp-filter name="VEVENT"> + <C:prop-filter name="X-ABC-GUID"> + <C:text-match>ABC</C:text-match> + </C:prop-filter> + </C:comp-filter> + </C:comp-filter> + </C:filter> + </C:calendar-query> + + >> Response << + + HTTP/1.1 403 Forbidden + Date: Sat, 11 Nov 2005 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:error> + <C:supported-filter> + <C:prop-filter name="X-ABC-GUID"/> + </C:supported-filter> + </D:error> + + + + +<span class="grey">Daboo, et al. Standards Track [Page 62]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-63" id="page-63" href="#page-63" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-7.9" href="#section-7.9">7.9</a>. CALDAV:calendar-multiget REPORT</h3></span> + + The CALDAV:calendar-multiget REPORT is used to retrieve specific + calendar object resources from within a collection, if the Request- + URI is a collection, or to retrieve a specific calendar object + resource, if the Request-URI is a calendar object resource. This + report is similar to the CALDAV:calendar-query REPORT (see + <a href="#section-7.8">Section 7.8</a>), except that it takes a list of DAV:href elements, + instead of a CALDAV:filter element, to determine which calendar + object resources to return. + + Support for the CALDAV:calendar-multiget REPORT is REQUIRED. + + Marshalling: + + The request body MUST be a CALDAV:calendar-multiget XML element + (see <a href="#section-9.10">Section 9.10</a>). If the Request-URI is a collection resource, + then the DAV:href elements MUST refer to calendar object resources + within that collection, and they MAY refer to calendar object + resources at any depth within the collection. As a result, the + "Depth" header MUST be ignored by the server and SHOULD NOT be + sent by the client. If the Request-URI refers to a non-collection + resource, then there MUST be a single DAV:href element that is + equivalent to the Request-URI. + + The response body for a successful request MUST be a DAV: + multistatus XML element. + + The response body for a successful CALDAV:calendar-multiget REPORT + request MUST contain a DAV:response element for each calendar + object resource referenced by the provided set of DAV:href + elements. Calendar data is being returned in the CALDAV:calendar- + data element inside the DAV:prop element. + + In the case of an error accessing any of the provided DAV:href + resources, the server MUST return the appropriate error status + code in the DAV:status element of the corresponding DAV:response + element. + + Preconditions: + + (CALDAV:supported-calendar-data): The attributes "content-type" + and "version" of the CALDAV:calendar-data XML elements (see + <a href="#section-9.6">Section 9.6</a>) specify a media type supported by the server for + calendar object resources. + + (CALDAV:min-date-time): Any XML element specifying a range of time + MUST have its start or end DATE or DATE-TIME values greater than + + + +<span class="grey">Daboo, et al. Standards Track [Page 63]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-64" id="page-64" href="#page-64" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + or equal to the value of the CALDAV:min-date-time property value + (<a href="#section-5.2.6">Section 5.2.6</a>) on the calendar collections being targeted by the + REPORT request; + + (CALDAV:max-date-time): Any XML element specifying a range of time + MUST have its start or end DATE or DATE-TIME values less than or + equal to the value of the CALDAV:max-date-time property value + (<a href="#section-5.2.7">Section 5.2.7</a>) on the calendar collections being targeted by the + REPORT request; + + Postconditions: + + None. + +<span class="h4"><h4><a class="selflink" name="section-7.9.1" href="#section-7.9.1">7.9.1</a>. Example: Successful CALDAV:calendar-multiget REPORT</h4></span> + + In this example, the client requests the server to return specific + properties of the VEVENT components referenced by specific URIs. In + addition, the DAV:getetag property is also requested and returned as + part of the response. Note that in this example, the resource at + http://cal.example.com/bernard/work/mtg1.ics does not exist, + resulting in an error status response. + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-multiget xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop> + <D:getetag/> + <C:calendar-data/> + </D:prop> + <D:href>/bernard/work/abcd1.ics</D:href> + <D:href>/bernard/work/mtg1.ics</D:href> + </C:calendar-multiget> + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + + + +<span class="grey">Daboo, et al. Standards Track [Page 64]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-65" id="page-65" href="#page-65" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd1.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd1"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + DTSTAMP:20060206T001102Z + DTSTART;TZID=US/Eastern:20060102T100000 + DURATION:PT1H + SUMMARY:Event #1 + Description:Go Steelers! + UID:74855313FA803DA593CD579A@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + <D:response> + <D:href>http://cal.example.com/bernard/work/mtg1.ics</D:href> + <D:status>HTTP/1.1 404 Not Found</D:status> + + + +<span class="grey">Daboo, et al. Standards Track [Page 65]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-66" id="page-66" href="#page-66" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + </D:response> + </D:multistatus> + +<span class="h3"><h3><a class="selflink" name="section-7.10" href="#section-7.10">7.10</a>. CALDAV:free-busy-query REPORT</h3></span> + + The CALDAV:free-busy-query REPORT generates a VFREEBUSY component + containing free busy information for all the calendar object + resources targeted by the request and that have the CALDAV:read-free- + busy or DAV:read privilege granted to the current user. + + Only VEVENT components without a TRANSP property or with the TRANSP + property set to OPAQUE, and VFREEBUSY components SHOULD be considered + in generating the free busy time information. + + In the case of VEVENT components, the free or busy time type (FBTYPE) + of the FREEBUSY properties in the returned VFREEBUSY component SHOULD + be derived from the value of the TRANSP and STATUS properties, as + outlined in the table below: + + +---------------------------++------------------+ + | VEVENT || VFREEBUSY | + +-------------+-------------++------------------+ + | TRANSP | STATUS || FBTYPE | + +=============+=============++==================+ + | | CONFIRMED || BUSY | + | | (default) || | + | OPAQUE +-------------++------------------+ + | (default) | CANCELLED || FREE | + | +-------------++------------------+ + | | TENTATIVE || BUSY-TENTATIVE | + | +-------------++------------------+ + | | x-name || BUSY or | + | | || x-name | + +-------------+-------------++------------------+ + | | CONFIRMED || | + | TRANSPARENT | CANCELLED || FREE | + | | TENTATIVE || | + | | x-name || | + +-------------+-------------++------------------+ + + Duplicate busy time periods with the same FBTYPE parameter value + SHOULD NOT be specified in the returned VFREEBUSY component. Servers + SHOULD coalesce consecutive or overlapping busy time periods of the + same type. Busy time periods with different FBTYPE parameter values + MAY overlap. + + Support for the CALDAV:free-busy-query REPORT is REQUIRED. + + + + +<span class="grey">Daboo, et al. Standards Track [Page 66]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-67" id="page-67" href="#page-67" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Marshalling: + + The request body MUST be a CALDAV:free-busy-query XML element (see + <a href="#section-9.11">Section 9.11</a>), which MUST contain exactly one CALDAV:time-range + XML element, as defined in <a href="#section-9.9">Section 9.9</a>. + + The request MAY include a Depth header. If no Depth header is + included, Depth:0 is assumed. + + The response body for a successful request MUST be an iCalendar + object that contains exactly one VFREEBUSY component that + describes the busy time intervals for the calendar object + resources containing VEVENT, or VFREEBUSY components that satisfy + the Depth value and for which the current user is at least granted + the CALDAV:read-free-busy privilege. If no calendar object + resources are found to satisfy these conditions, a VFREEBUSY + component with no FREEBUSY property MUST be returned. This report + only returns busy time information. Free time information can be + inferred from the returned busy time information. + + If the current user is not granted the CALDAV:read-free-busy or + DAV:read privileges on the Request-URI, the CALDAV:free-busy-query + REPORT request MUST fail and return a 404 (Not Found) status + value. This restriction will prevent users from discovering URLs + of resources for which they are only granted the CALDAV:read-free- + busy privilege. + + The CALDAV:free-busy-query REPORT request can only be run against + a collection (either a regular collection or a calendar + collection). An attempt to run the report on a calendar object + resource MUST fail and return a 403 (Forbidden) status value. + + Preconditions: + + None. + + Postconditions: + + (DAV:number-of-matches-within-limits): The number of matching + calendar object resources must fall within server-specific, + predefined limits. For example, this postcondition might fail if + the specified CALDAV:time-range would cause an extremely large + number of calendar object resources to be considered in computing + the response. + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 67]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-68" id="page-68" href="#page-68" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-7.10.1" href="#section-7.10.1">7.10.1</a>. Example: Successful CALDAV:free-busy-query REPORT</h4></span> + + In this example, the client requests the server to return free busy + information on the calendar collection /bernard/work/, between 9:00 + A.M. and 5:00 P.M. EST (2:00 P.M. and 10:00 P.M. UTC) on the January + 4, 2006. The server responds, indicating two busy time intervals of + one hour, one of which is tentative. + + See <a href="#appendix-B">Appendix B</a> for the calendar data being targeted by this example. + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav"> + <C:time-range start="20060104T140000Z" + end="20060105T220000Z"/> + </C:free-busy-query> + + >> Response << + + HTTP/1.1 200 OK + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: text/calendar + Content-Length: xxxx + + BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Server//EN + BEGIN:VFREEBUSY + DTSTAMP:20050125T090000Z + DTSTART:20060104T140000Z + DTEND:20060105T220000Z + FREEBUSY;FBTYPE=BUSY-TENTATIVE:20060104T150000Z/PT1H + FREEBUSY:20060104T190000Z/PT1H + END:VFREEBUSY + END:VCALENDAR + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 68]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-69" id="page-69" href="#page-69" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h2"><h2><a class="selflink" name="section-8" href="#section-8">8</a>. Guidelines</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-8.1" href="#section-8.1">8.1</a>. Client-to-Client Interoperability</h3></span> + + There are a number of actions clients can take that will be legal + (the server will not return errors), but that can degrade + interoperability with other client implementations accessing the same + data. For example, a recurrence rule could be replaced with a set of + recurrence dates, a single recurring event could be replaced with a + set of independent resources to represent each recurrence, or the + start/end time values can be translated from the original time zone + to another time zone. Although this advice amounts to iCalendar + interoperability best practices and is not limited only to CalDAV + usage, interoperability problems are likely to be more evident in + CalDAV use cases. + +<span class="h3"><h3><a class="selflink" name="section-8.2" href="#section-8.2">8.2</a>. Synchronization Operations</h3></span> + + WebDAV already provides functionality required to synchronize a + collection or set of collections, to make changes offline, and + provides a simple way to resolve conflicts when reconnected. ETags + are the key to making this work, but these are not required of all + WebDAV servers. Since offline functionality is more important to + calendar applications than to some other WebDAV applications, CalDAV + servers MUST support ETags, as specified in <a href="#section-5.3.4">Section 5.3.4</a>. + +<span class="h4"><h4><a class="selflink" name="section-8.2.1" href="#section-8.2.1">8.2.1</a>. Use of Reports</h4></span> + +<span class="h5"><h5><a class="selflink" name="section-8.2.1.1" href="#section-8.2.1.1">8.2.1.1</a>. Restrict the Time Range</h5></span> + + The reports provided in CalDAV can be used by clients to optimize + their performance in terms of network bandwidth usage and resource + consumption on the local client machine. Both are certainly major + considerations for mobile or handheld devices with limited capacity, + but they are also relevant to desktop client applications in cases + where the calendar collections contain large amounts of data. + + Typically, clients present calendar data to users in views that span + a finite time interval, so whenever possible, clients should only + retrieve calendar components from the server using CALDAV:calendar- + query REPORT, combined with a CALDAV:time-range element, to limit the + set of returned components to just those needed to populate the + current view. + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 69]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-70" id="page-70" href="#page-70" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h5"><h5><a class="selflink" name="section-8.2.1.2" href="#section-8.2.1.2">8.2.1.2</a>. Synchronize by Time Range</h5></span> + + Typically in a calendar, historical data (events, to-dos, etc. that + have completed prior to the current date) do not change, though they + may be deleted. As a result, a client can speed up the + synchronization process by only considering data for the present time + and the future up to a reasonable limit (e.g., one week, one month). + If the user then tries to examine a portion of the calendar outside + the range that has been synchronized, the client can perform another + synchronization operation on the new time interval being examined. + This "just-in-time" synchronization can minimize bandwidth for common + user interaction behaviors. + +<span class="h5"><h5><a class="selflink" name="section-8.2.1.3" href="#section-8.2.1.3">8.2.1.3</a>. Synchronization Process</h5></span> + + If a client wants to support calendar data synchronization, as + opposed to downloading calendar data each time it is needed, the + client needs to cache the calendar object resource's URI and ETag, + along with the actual calendar data. While the URI remains static + for the lifetime of the calendar object resource, the ETag will + change with each successive change to the calendar object resource. + Thus, to synchronize a local data cache with the server, the client + can first fetch the URI/ETag pairs for the time interval being + considered, and compare those results with the cached data. Any + cached component whose ETag differs from that on the server needs to + be refreshed. + + In order to properly detect the changes between the server and client + data, the client will need to keep a record of which calendar object + resources have been created, changed, or deleted since the last + synchronization operation so that it can reconcile those changes with + the data on the server. + + Here's an example of how to do that: + + The client issues a CALDAV:calendar-query REPORT request for a + specific time range and asks for only the DAV:getetag property to be + returned: + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 70]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-71" id="page-71" href="#page-71" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop> + <D:getetag/> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"> + <C:comp-filter name="VEVENT"> + <C:time-range start="20040902T000000Z" + end="20040903T000000Z"/> + </C:comp-filter> + </C:comp-filter> + </C:filter> + </C:calendar-query> + + The client then uses the results to determine which calendar object + resources have changed, been created, or deleted on the server, and + how those relate to locally cached calendar object resources that may + have changed, been created, or deleted. If the client determines + that there are calendar object resources on the server that need to + be fetched, the client issues a CALDAV:calendar-multiget REPORT + request to fetch its calendar data: + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-multiget xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop> + <D:getetag/> + <C:calendar-data/> + </D:prop> + <D:href>/bernard/work/abcd1.ics</D:href> + <D:href>/bernard/work/mtg1.ics</D:href> + </C:calendar-multiget> + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 71]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-72" id="page-72" href="#page-72" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-8.2.2" href="#section-8.2.2">8.2.2</a>. Restrict the Properties Returned</h4></span> + + A client may not need all the calendar properties of a calendar + object resource when presenting information to the user. Since some + calendar property values can be large (e.g., ATTACH or ATTENDEE), a + client can choose to restrict the calendar properties to be returned + in a calendaring REPORT request to those it knows it will use. + + However, if a client needs to make a change to a calendar object + resource, it can only change the entire calendar object resource via + a PUT request. There is currently no way to incrementally make a + change to a set of calendar properties of a calendar object resource. + As a result, the client will have to get the entire calendar object + resource that is being changed. + +<span class="h3"><h3><a class="selflink" name="section-8.3" href="#section-8.3">8.3</a>. Use of Locking</h3></span> + + WebDAV locks can be used to prevent two clients that are modifying + the same resource from either overwriting each others' changes + (though that problem can also be solved by using ETags) or wasting + time making changes that will conflict with another set of changes. + In a multi-user calendar system, an interactive calendar client could + lock an event while the user is editing the event, and unlock the + event when the user finishes or cancels. Locks can also be used to + prevent changes while data is being reorganized. For example, a + calendar client might lock two calendar collections prior to moving a + bunch of calendar resources from one to another. + + Clients are responsible for requesting a lock timeout period that is + appropriate to the use case. When the user explicitly decides to + reserve a resource and prevent other changes, a long timeout might be + appropriate, but in cases where the client automatically decides to + lock the resource, the timeout should be short (and the client can + always refresh the lock should it need to). A short lock timeout + means that if the client is unable to remove the lock, the other + calendar users aren't prevented from making changes. + +<span class="h3"><h3><a class="selflink" name="section-8.4" href="#section-8.4">8.4</a>. Finding Calendars</h3></span> + + Much of the time, a calendar client (or agent) will discover a new + calendar's location by being provided directly with the URL. For + example, a user will type his or her own calendar location into + client configuration information or copy and paste a URL from email + into the calendar application. The client need only confirm that the + URL points to a resource that is a calendar collection. The client + may also be able to browse WebDAV collections to find calendar + collections. + + + + +<span class="grey">Daboo, et al. Standards Track [Page 72]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-73" id="page-73" href="#page-73" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + The choice of HTTP URLs means that calendar object resources are + backward compatible with existing software, but does have the + disadvantage that existing software does not usually know to look at + the OPTIONS response to that URL to determine what can be done with + it. This is somewhat of a barrier for WebDAV usage as well as with + CalDAV usage. This specification does not offer a way through this + other than making the information available in the OPTIONS response + should this be requested. + + For calendar sharing and scheduling use cases, one might wish to find + the calendar belonging to another user. If the other user has a + calendar in the same repository, that calendar can be found by using + the principal namespace required by WebDAV ACL support. For other + cases, the authors have no universal solution, but implementers can + consider whether to use vCard [<a href="http://tools.ietf.org/html/rfc2426" title="" vcard mime directory profile>RFC2426</a>] or LDAP [<a href="http://tools.ietf.org/html/rfc4511" title="" lightweight directory access protocol the>RFC4511</a>] standards + together with calendar attributes [<a href="http://tools.ietf.org/html/rfc2739" title="" calendar attributes for vcard and ldap>RFC2739</a>]. + + Because CalDAV requires servers to support WebDAV ACL [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>], + including principal namespaces, and with the addition of the CALDAV: + calendar-home-set property, there are a couple options for CalDAV + clients to find one's own calendar or another user's calendar. + + In this case, a DAV:principal-match REPORT is used to find a named + property (the CALDAV:calendar-home-set) on the Principal-URL of the + current user. Using this, a WebDAV client can learn "who am I" and + "where are my calendars". The REPORT request body looks like this: + + <?xml version="1.0" encoding="utf-8" ?> + <D:principal-match xmlns:D="DAV:"> + <D:self/> + <D:prop> + <C:calendar-home-set + xmlns:C="urn:ietf:params:xml:ns:caldav"/> + </D:prop> + </D:principal-match> + + To find other users' calendars, the DAV:principal-property-search + REPORT can be used to filter on some properties and return others. + To search for a calendar owned by a user named "Laurie", the REPORT + request body would look like this: + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 73]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-74" id="page-74" href="#page-74" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <?xml version="1.0" encoding="utf-8" ?> + <D:principal-property-search xmlns:D="DAV:"> + <D:property-search> + <D:prop> + <D:displayname/> + </D:prop> + <D:match>Laurie</D:match> + </D:property-search> + <D:prop> + <C:calendar-home-set + xmlns:C="urn:ietf:params:xml:ns:caldav"/> + <D:displayname/> + </D:prop> + </D:principal-property-search> + + The server performs a case-sensitive or caseless search for a + matching string subset of "Laurie" within the DAV:displayname + property. Thus, the server might return "Laurie Dusseault", "Laurier + Desruisseaux", or "Wilfrid Laurier" as matching DAV:displayname + values, and return the calendars for each of these. + +<span class="h3"><h3><a class="selflink" name="section-8.5" href="#section-8.5">8.5</a>. Storing and Using Attachments</h3></span> + + CalDAV clients MAY create attachments in calendar components either + as inline or external. This section contains some guidelines for + creating and managing attachments. + +<span class="h4"><h4><a class="selflink" name="section-8.5.1" href="#section-8.5.1">8.5.1</a>. Inline Attachments</h4></span> + + CalDAV clients MUST support inline attachments as specified in + iCalendar [<a href="http://tools.ietf.org/html/rfc2445" title="" internet calendaring and scheduling core object specification>RFC2445</a>]. CalDAV servers MUST support inline attachments, + so clients can rely on being able to create attachments this way. On + the other hand, inline attachments have some drawbacks: + + o Servers MAY impose limitations on the size of calendar object + resources (i.e., refusing PUT requests of very large iCalendar + objects). Servers that impose such limitations MUST use the + CALDAV:max-resource-size property on a calendar collection to + inform the client as to what the limitation is (see + <a href="#section-5.2.5">Section 5.2.5</a>). + + o Servers MAY impose storage quota limitations on calendar + collections (See [<a href="http://tools.ietf.org/html/rfc4331" title="" quota and size properties for distributed authoring versioning collections>RFC4331</a>]). + + o Any change to a calendar object resource containing an inline + attachment requires the entire inline attachment to be re- + uploaded. + + + + +<span class="grey">Daboo, et al. Standards Track [Page 74]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-75" id="page-75" href="#page-75" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + o Clients synchronizing a changed calendar object resource have to + download the entire calendar object resource, even if the + attachment is unchanged. + +<span class="h4"><h4><a class="selflink" name="section-8.5.2" href="#section-8.5.2">8.5.2</a>. External Attachments</h4></span> + + CalDAV clients SHOULD support downloading of external attachments + referenced by arbitrary URI schemes, by either processing them + directly, or by passing the attachment URI to a suitable "helper + application" for processing, if such an application exists. CalDAV + clients MUST support downloading of external attachments referenced + by the "http" or "https" URI schemes. An external attachment could + be: + + o In a collection in the calendar collection containing the calendar + object resource; + + o Somewhere else in the same repository that hosts the calendar + collection; or + + o On an HTTP or FTP server elsewhere. + + CalDAV servers MAY provide support for child collections in calendar + collections. CalDAV servers MAY allow the MKCOL method to create + child collections in calendar collections. Child collections of + calendar collections MAY contain any type of resource except calendar + collections that they MUST NOT contain. Some CalDAV servers won't + allow child collections in calendar collections, and it may be + possible on such a server to discover other locations where + attachments can be stored. + + Clients are entirely responsible for maintaining reference + consistency with calendar components that link to external + attachments. A client deleting a calendar component with an external + attachment might therefore also delete the attachment if that's + appropriate; however, appropriateness can be very hard to determine. + A new component might easily reference some pre-existing Web resource + that is intended to have independent existence from the calendar + component (the "attachment" could be a major proposal to be discussed + in a meeting, for instance). Best practices will probably emerge and + should probably be documented, but for now, clients should be wary of + engaging in aggressive "cleanup" of external attachments. A client + could involve the user in making decisions about removing + unreferenced documents, or a client could be conservative in only + deleting attachments it had created. + + Also, clients are responsible for consistency of permissions when + using external attachments. One reason for servers to support the + + + +<span class="grey">Daboo, et al. Standards Track [Page 75]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-76" id="page-76" href="#page-76" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + storage of attachments within child collections of calendar + collections is that ACL inheritance might make it easier to grant the + same permissions to attachments that are granted on the calendar + collection. Otherwise, it can be very difficult to keep permissions + synchronized. With attachments stored on separate repositories, it + can be impossible to keep permissions consistent -- the two + repositories may not support the same permissions or have the same + set of principals. Some systems have used tickets or other anonymous + access control mechanisms to provide partially satisfactory solutions + to these kinds of problems. + +<span class="h3"><h3><a class="selflink" name="section-8.6" href="#section-8.6">8.6</a>. Storing and Using Alarms</h3></span> + + Note that all CalDAV calendar collections (including those the user + might treat as public or group calendars) can contain alarm + information on events and to-dos. Users can synchronize a calendar + between multiple devices and decide to have alarms execute on a + different device than the device that created the alarm. Not all + alarm action types are completely interoperable (e.g., those that + name a sound file to play). + + When the action is AUDIO and the client is configured to execute + the alarm, the client SHOULD play the suggested sound if it's + available or play another sound, but SHOULD NOT rewrite the alarm + just to replace the suggested sound with a sound that's locally + available. + + When the action is DISPLAY and the client is configured to execute + the alarm, the client SHOULD execute a display alarm by displaying + according to the suggested description or some reasonable + replacement, but SHOULD NOT rewrite the alarm for its own + convenience. + + When the action is EMAIL and the client is incapable of sending + email, it SHOULD ignore the alarm, but it MUST continue to + synchronize the alarm itself. + + This specification makes no recommendations about executing alarms + of type PROCEDURE, except to note that clients are advised to take + care to avoid creating security holes by executing these. + + Non-interoperable alarm information (e.g., should somebody define a + color to be used in a display alarm) should be put in non-standard + properties inside the VALARM component in order to keep the basic + alarm usable on all devices. + + Clients that allow changes to calendar object resources MUST + synchronize the alarm data that already exists in the resources. + + + +<span class="grey">Daboo, et al. Standards Track [Page 76]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-77" id="page-77" href="#page-77" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Clients MAY execute alarms that are downloaded in this fashion, + possibly based on user preference. If a client is only doing read + operations on a calendar and there is no risk of losing alarm + information, then the client MAY discard alarm information. + + This specification makes no attempt to provide multi-user alarms on + group calendars or to find out for whom an alarm is intended. + Addressing those issues might require extensions to iCalendar; for + example, to store alarms per-user, or to indicate for which user a + VALARM was intended. In the meantime, clients might maximize + interoperability by generally not uploading alarm information to + public, group, or resource calendars. + +<span class="h2"><h2><a class="selflink" name="section-9" href="#section-9">9</a>. XML Element Definitions</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-9.1" href="#section-9.1">9.1</a>. CALDAV:calendar XML Element</h3></span> + + Name: calendar + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies the resource type of a calendar collection. + + Description: See <a href="#section-4.2">Section 4.2</a>. + + Definition: + + <!ELEMENT calendar EMPTY> + +<span class="h3"><h3><a class="selflink" name="section-9.2" href="#section-9.2">9.2</a>. CALDAV:mkcalendar XML Element</h3></span> + + Name: mkcalendar + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies a request that includes the WebDAV property + values to be set for a calendar collection resource when it is + created. + + Description: See <a href="#section-5.3.1">Section 5.3.1</a>. + + Definition: + + <!ELEMENT mkcalendar (DAV:set)> + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 77]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-78" id="page-78" href="#page-78" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-9.3" href="#section-9.3">9.3</a>. CALDAV:mkcalendar-response XML Element</h3></span> + + Name: mkcalendar-response + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies a response body for a successful MKCALENDAR + request. + + Description: See <a href="#section-5.3.1">Section 5.3.1</a>. + + Definition: + + <!ELEMENT mkcalendar-response ANY> + +<span class="h3"><h3><a class="selflink" name="section-9.4" href="#section-9.4">9.4</a>. CALDAV:supported-collation XML Element</h3></span> + + Name: supported-collation + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Identifies a single collation via its collation identifier, + as defined by [<a href="http://tools.ietf.org/html/rfc4790" title="" internet application protocol collation registry>RFC4790</a>]. + + Description: The CALDAV:supported-collation contains the text of a + collation identifier, as described in <a href="#section-7.5.1">Section 7.5.1</a>. + + Definition: + + <!ELEMENT supported-collation (#PCDATA)> + PCDATA value: collation identifier + +<span class="h3"><h3><a class="selflink" name="section-9.5" href="#section-9.5">9.5</a>. CALDAV:calendar-query XML Element</h3></span> + + Name: calendar-query + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Defines a report for querying calendar object resources. + + Description: See <a href="#section-7.8">Section 7.8</a>. + + Definition: + + <!ELEMENT calendar-query ((DAV:allprop | + DAV:propname | + DAV:prop)?, filter, timezone?)> + + + + +<span class="grey">Daboo, et al. Standards Track [Page 78]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-79" id="page-79" href="#page-79" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-9.6" href="#section-9.6">9.6</a>. CALDAV:calendar-data XML Element</h3></span> + + Name: calendar-data + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specified one of the following: + + 1. A supported media type for calendar object resources when + nested in the CALDAV:supported-calendar-data property; + + 2. The parts of a calendar object resource should be returned by + a calendaring report; + + 3. The content of a calendar object resource in a response to a + calendaring report. + + Description: When nested in the CALDAV:supported-calendar-data + property, the CALDAV:calendar-data XML element specifies a media + type supported by the CalDAV server for calendar object resources. + + When used in a calendaring REPORT request, the CALDAV:calendar- + data XML element specifies which parts of calendar object + resources need to be returned in the response. If the CALDAV: + calendar-data XML element doesn't contain any CALDAV:comp element, + calendar object resources will be returned in their entirety. + + Finally, when used in a calendaring REPORT response, the CALDAV: + calendar-data XML element specifies the content of a calendar + object resource. Given that XML parsers normalize the two- + character sequence CRLF (US-ASCII decimal 13 and US-ASCII decimal + 10) to a single LF character (US-ASCII decimal 10), the CR + character (US-ASCII decimal 13) MAY be omitted in calendar object + resources specified in the CALDAV:calendar-data XML element. + Furthermore, calendar object resources specified in the CALDAV: + calendar-data XML element MAY be invalid per their media type + specification if the CALDAV:calendar-data XML element part of the + calendaring REPORT request did not specify required properties + (e.g., UID, DTSTAMP, etc.), or specified a CALDAV:prop XML element + with the "novalue" attribute set to "yes". + + Note: The CALDAV:calendar-data XML element is specified in requests + and responses inside the DAV:prop XML element as if it were a + WebDAV property. However, the CALDAV:calendar-data XML element is + not a WebDAV property and, as such, is not returned in PROPFIND + responses, nor used in PROPPATCH requests. + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 79]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-80" id="page-80" href="#page-80" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Note: The iCalendar data embedded within the CALDAV:calendar-data + XML element MUST follow the standard XML character data encoding + rules, including use of &lt;, &gt;, &amp; etc. entity encoding or + the use of a <![CDATA[ ... ]]> construct. In the later case, the + iCalendar data cannot contain the character sequence "]]>", which + is the end delimiter for the CDATA section. + + Definition: + + <!ELEMENT calendar-data EMPTY> + + when nested in the CALDAV:supported-calendar-data property + to specify a supported media type for calendar object + resources; + + <!ELEMENT calendar-data (comp?, + (expand | limit-recurrence-set)?, + limit-freebusy-set?)> + + when nested in the DAV:prop XML element in a calendaring + REPORT request to specify which parts of calendar object + resources should be returned in the response; + + <!ELEMENT calendar-data (#PCDATA)> + PCDATA value: iCalendar object + + when nested in the DAV:prop XML element in a calendaring + REPORT response to specify the content of a returned + calendar object resource. + + <!ATTLIST calendar-data content-type CDATA "text/calendar" + version CDATA "2.0"> + content-type value: a MIME media type + version value: a version string + + attributes can be used on all three variants of the + CALDAV:calendar-data XML element. + +<span class="h4"><h4><a class="selflink" name="section-9.6.1" href="#section-9.6.1">9.6.1</a>. CALDAV:comp XML Element</h4></span> + + Name: comp + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Defines which component types to return. + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 80]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-81" id="page-81" href="#page-81" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Description: The name value is a calendar component name (e.g., + VEVENT). + + Definition: + + <!ELEMENT comp ((allprop | prop*), (allcomp | comp*))> + + <!ATTLIST comp name CDATA #REQUIRED> + name value: a calendar component name + + Note: The CALDAV:prop and CALDAV:allprop elements have the same name + as the DAV:prop and DAV:allprop elements defined in [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]. + However, the CALDAV:prop and CALDAV:allprop elements are defined + in the "urn:ietf:params:xml:ns:caldav" namespace instead of the + "DAV:" namespace. + +<span class="h4"><h4><a class="selflink" name="section-9.6.2" href="#section-9.6.2">9.6.2</a>. CALDAV:allcomp XML Element</h4></span> + + Name: allcomp + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies that all components shall be returned. + + Description: The CALDAV:allcomp XML element can be used when the + client wants all types of components returned by a calendaring + REPORT request. + + Definition: + + <!ELEMENT allcomp EMPTY> + +<span class="h4"><h4><a class="selflink" name="section-9.6.3" href="#section-9.6.3">9.6.3</a>. CALDAV:allprop XML Element</h4></span> + + Name: allprop + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies that all properties shall be returned. + + Description: The CALDAV:allprop XML element can be used when the + client wants all properties of components returned by a + calendaring REPORT request. + + Definition: + + <!ELEMENT allprop EMPTY> + + + + +<span class="grey">Daboo, et al. Standards Track [Page 81]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-82" id="page-82" href="#page-82" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Note: The CALDAV:allprop element has the same name as the DAV: + allprop element defined in [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]. However, the CALDAV:allprop + element is defined in the "urn:ietf:params:xml:ns:caldav" + namespace instead of the "DAV:" namespace. + +<span class="h4"><h4><a class="selflink" name="section-9.6.4" href="#section-9.6.4">9.6.4</a>. CALDAV:prop XML Element</h4></span> + + Name: prop + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Defines which properties to return in the response. + + Description: The "name" attribute specifies the name of the calendar + property to return (e.g., ATTENDEE). The "novalue" attribute can + be used by clients to request that the actual value of the + property not be returned (if the "novalue" attribute is set to + "yes"). In that case, the server will return just the iCalendar + property name and any iCalendar parameters and a trailing ":" + without the subsequent value data. + + Definition: + + <!ELEMENT prop EMPTY> + + <!ATTLIST prop name CDATA #REQUIRED + novalue (yes | no) "no"> + name value: a calendar property name + novalue value: "yes" or "no" + + Note: The CALDAV:prop element has the same name as the DAV:prop + element defined in [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]. However, the CALDAV:prop element is + defined in the "urn:ietf:params:xml:ns:caldav" namespace instead + of the "DAV:" namespace. + +<span class="h4"><h4><a class="selflink" name="section-9.6.5" href="#section-9.6.5">9.6.5</a>. CALDAV:expand XML Element</h4></span> + + Name: expand + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Forces the server to expand recurring components into + individual recurrence instances. + + Description: The CALDAV:expand XML element specifies that for a + given calendaring REPORT request, the server MUST expand the + recurrence set into calendar components that define exactly one + + + + +<span class="grey">Daboo, et al. Standards Track [Page 82]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-83" id="page-83" href="#page-83" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + recurrence instance, and MUST return only those whose scheduled + time intersect a specified time range. + + The "start" attribute specifies the inclusive start of the time + range, and the "end" attribute specifies the non-inclusive end of + the time range. Both attributes are specified as date with UTC + time value. The value of the "end" attribute MUST be greater than + the value of the "start" attribute. + + The server MUST use the same logic as defined for CALDAV:time- + range to determine if a recurrence instance intersects the + specified time range. + + Recurring components, other than the initial instance, MUST + include a RECURRENCE-ID property indicating which instance they + refer to. + + The returned calendar components MUST NOT use recurrence + properties (i.e., EXDATE, EXRULE, RDATE, and RRULE) and MUST NOT + have reference to or include VTIMEZONE components. Date and local + time with reference to time zone information MUST be converted + into date with UTC time. + + Definition: + + <!ELEMENT expand EMPTY> + + <!ATTLIST expand start CDATA #REQUIRED + end CDATA #REQUIRED> + start value: an iCalendar "date with UTC time" + end value: an iCalendar "date with UTC time" + +<span class="h4"><h4><a class="selflink" name="section-9.6.6" href="#section-9.6.6">9.6.6</a>. CALDAV:limit-recurrence-set XML Element</h4></span> + + Name: limit-recurrence-set + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies a time range to limit the set of "overridden + components" returned by the server. + + Description: The CALDAV:limit-recurrence-set XML element specifies + that for a given calendaring REPORT request, the server MUST + return, in addition to the "master component", only the + "overridden components" that impact a specified time range. An + overridden component impacts a time range if its current start and + end times overlap the time range, or if the original start and end + + + + +<span class="grey">Daboo, et al. Standards Track [Page 83]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-84" id="page-84" href="#page-84" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + times -- the ones that would have been used if the instance were + not overridden -- overlap the time range. + + The "start" attribute specifies the inclusive start of the time + range, and the "end" attribute specifies the non-inclusive end of + the time range. Both attributes are specified as date with UTC + time value. The value of the "end" attribute MUST be greater than + the value of the "start" attribute. + + The server MUST use the same logic as defined for CALDAV:time- + range to determine if the current or original scheduled time of an + "overridden" recurrence instance intersects the specified time + range. + + Overridden components that have a RANGE parameter on their + RECURRENCE-ID property may specify one or more instances in the + recurrence set, and some of those instances may fall within the + specified time range or may have originally fallen within the + specified time range prior to being overridden. If that is the + case, the overridden component MUST be included in the results, as + it has a direct impact on the interpretation of instances within + the specified time range. + + Definition: + + <!ELEMENT limit-recurrence-set EMPTY> + + <!ATTLIST limit-recurrence-set start CDATA #REQUIRED + end CDATA #REQUIRED> + start value: an iCalendar "date with UTC time" + end value: an iCalendar "date with UTC time" + +<span class="h4"><h4><a class="selflink" name="section-9.6.7" href="#section-9.6.7">9.6.7</a>. CALDAV:limit-freebusy-set XML Element</h4></span> + + Name: limit-freebusy-set + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies a time range to limit the set of FREEBUSY values + returned by the server. + + Description: The CALDAV:limit-freebusy-set XML element specifies + that for a given calendaring REPORT request, the server MUST only + return the FREEBUSY property values of a VFREEBUSY component that + intersects a specified time range. + + The "start" attribute specifies the inclusive start of the time + range, and the "end" attribute specifies the non-inclusive end of + + + +<span class="grey">Daboo, et al. Standards Track [Page 84]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-85" id="page-85" href="#page-85" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + the time range. Both attributes are specified as "date with UTC + time" value. The value of the "end" attribute MUST be greater + than the value of the "start" attribute. + + The server MUST use the same logic as defined for CALDAV:time- + range to determine if a FREEBUSY property value intersects the + specified time range. + + Definition: + + <!ELEMENT limit-freebusy-set EMPTY> + + <!ATTLIST limit-freebusy-set start CDATA #REQUIRED + end CDATA #REQUIRED> + start value: an iCalendar "date with UTC time" + end value: an iCalendar "date with UTC time" + +<span class="h3"><h3><a class="selflink" name="section-9.7" href="#section-9.7">9.7</a>. CALDAV:filter XML Element</h3></span> + + Name: filter + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies a filter to limit the set of calendar components + returned by the server. + + Description: The CALDAV:filter XML element specifies the search + filter used to limit the calendar components returned by a + calendaring REPORT request. + + Definition: + + <!ELEMENT filter (comp-filter)> + +<span class="h4"><h4><a class="selflink" name="section-9.7.1" href="#section-9.7.1">9.7.1</a>. CALDAV:comp-filter XML Element</h4></span> + + Name: comp-filter + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies search criteria on calendar components. + + Description: The CALDAV:comp-filter XML element specifies a query + targeted at the calendar object (i.e., VCALENDAR) or at a specific + calendar component type (e.g., VEVENT). The scope of the + CALDAV:comp-filter XML element is the calendar object when used as + a child of the CALDAV:filter XML element. The scope of the + CALDAV:comp-filter XML element is the enclosing calendar component + + + +<span class="grey">Daboo, et al. Standards Track [Page 85]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-86" id="page-86" href="#page-86" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + when used as a child of another CALDAV:comp-filter XML element. A + CALDAV:comp-filter is said to match if: + + * The CALDAV:comp-filter XML element is empty and the calendar + object or calendar component type specified by the "name" + attribute exists in the current scope; + + or: + + * The CALDAV:comp-filter XML element contains a CALDAV:is-not- + defined XML element and the calendar object or calendar + component type specified by the "name" attribute does not exist + in the current scope; + + or: + + * The CALDAV:comp-filter XML element contains a CALDAV:time-range + XML element and at least one recurrence instance in the + targeted calendar component is scheduled to overlap the + specified time range, and all specified CALDAV:prop-filter and + CALDAV:comp-filter child XML elements also match the targeted + calendar component; + + or: + + * The CALDAV:comp-filter XML element only contains CALDAV:prop- + filter and CALDAV:comp-filter child XML elements that all match + the targeted calendar component. + + Definition: + + <!ELEMENT comp-filter (is-not-defined | (time-range?, + prop-filter*, comp-filter*))> + + <!ATTLIST comp-filter name CDATA #REQUIRED> + name value: a calendar object or calendar component + type (e.g., VEVENT) + +<span class="h4"><h4><a class="selflink" name="section-9.7.2" href="#section-9.7.2">9.7.2</a>. CALDAV:prop-filter XML Element</h4></span> + + Name: prop-filter + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies search criteria on calendar properties. + + Description: The CALDAV:prop-filter XML element specifies a query + targeted at a specific calendar property (e.g., CATEGORIES) in the + + + +<span class="grey">Daboo, et al. Standards Track [Page 86]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-87" id="page-87" href="#page-87" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + scope of the enclosing calendar component. A calendar property is + said to match a CALDAV:prop-filter if: + + * The CALDAV:prop-filter XML element is empty and a property of + the type specified by the "name" attribute exists in the + enclosing calendar component; + + or: + + * The CALDAV:prop-filter XML element contains a CALDAV:is-not- + defined XML element and no property of the type specified by + the "name" attribute exists in the enclosing calendar + component; + + or: + + * The CALDAV:prop-filter XML element contains a CALDAV:time-range + XML element and the property value overlaps the specified time + range, and all specified CALDAV:param-filter child XML elements + also match the targeted property; + + or: + + * The CALDAV:prop-filter XML element contains a CALDAV:text-match + XML element and the property value matches it, and all + specified CALDAV:param-filter child XML elements also match the + targeted property; + + Definition: + + <!ELEMENT prop-filter (is-not-defined | + ((time-range | text-match)?, + param-filter*))> + + <!ATTLIST prop-filter name CDATA #REQUIRED> + name value: a calendar property name (e.g., ATTENDEE) + +<span class="h4"><h4><a class="selflink" name="section-9.7.3" href="#section-9.7.3">9.7.3</a>. CALDAV:param-filter XML Element</h4></span> + + Name: param-filter + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Limits the search to specific parameter values. + + Description: The CALDAV:param-filter XML element specifies a query + targeted at a specific calendar property parameter (e.g., + PARTSTAT) in the scope of the calendar property on which it is + + + +<span class="grey">Daboo, et al. Standards Track [Page 87]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-88" id="page-88" href="#page-88" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + defined. A calendar property parameter is said to match a CALDAV: + param-filter if: + + * The CALDAV:param-filter XML element is empty and a parameter of + the type specified by the "name" attribute exists on the + calendar property being examined; + + or: + + * The CALDAV:param-filter XML element contains a CALDAV:is-not- + defined XML element and no parameter of the type specified by + the "name" attribute exists on the calendar property being + examined; + + Definition: + + <!ELEMENT param-filter (is-not-defined | text-match?)> + + <!ATTLIST param-filter name CDATA #REQUIRED> + name value: a property parameter name (e.g., PARTSTAT) + +<span class="h4"><h4><a class="selflink" name="section-9.7.4" href="#section-9.7.4">9.7.4</a>. CALDAV:is-not-defined XML Element</h4></span> + + Name: is-not-defined + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies that a match should occur if the enclosing + component, property, or parameter does not exist. + + Description: The CALDAV:is-not-defined XML element specifies that a + match occurs if the enclosing component, property, or parameter + value specified in a calendaring REPORT request does not exist in + the calendar data being tested. + + Definition: + + <!ELEMENT is-not-defined EMPTY> + +<span class="h4"><h4><a class="selflink" name="section-9.7.5" href="#section-9.7.5">9.7.5</a>. CALDAV:text-match XML Element</h4></span> + + Name: text-match + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies a substring match on a property or parameter + value. + + + + +<span class="grey">Daboo, et al. Standards Track [Page 88]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-89" id="page-89" href="#page-89" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + Description: The CALDAV:text-match XML element specifies text used + for a substring match against the property or parameter value + specified in a calendaring REPORT request. + + The "collation" attribute is used to select the collation that the + server MUST use for character string matching. In the absence of + this attribute, the server MUST use the "i;ascii-casemap" + collation. + + The "negate-condition" attribute is used to indicate that this + test returns a match if the text matches when the attribute value + is set to "no", or return a match if the text does not match, if + the attribute value is set to "yes". For example, this can be + used to match components with a STATUS property not set to + CANCELLED. + + Definition: + + <!ELEMENT text-match (#PCDATA)> + PCDATA value: string + + <!ATTLIST text-match collation CDATA "i;ascii-casemap" + negate-condition (yes | no) "no"> + +<span class="h3"><h3><a class="selflink" name="section-9.8" href="#section-9.8">9.8</a>. CALDAV:timezone XML Element</h3></span> + + Name: timezone + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies the time zone component to use when determining + the results of a report. + + Description: The CALDAV:timezone XML element specifies that for a + given calendaring REPORT request, the server MUST rely on the + specified VTIMEZONE component instead of the CALDAV:calendar- + timezone property of the calendar collection, in which the + calendar object resource is contained to resolve "date" values and + "date with local time" values (i.e., floating time) to "date with + UTC time" values. The server will require this information to + determine if a calendar component scheduled with "date" values or + "date with local time" values intersects a CALDAV:time-range + specified in a CALDAV:calendar-query REPORT. + + Note: The iCalendar data embedded within the CALDAV:timezone XML + element MUST follow the standard XML character data encoding + rules, including use of &lt;, &gt;, &amp; etc. entity encoding or + the use of a <![CDATA[ ... ]]> construct. In the later case, the + + + +<span class="grey">Daboo, et al. Standards Track [Page 89]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-90" id="page-90" href="#page-90" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + iCalendar data cannot contain the character sequence "]]>", which + is the end delimiter for the CDATA section. + + Definition: + + <!ELEMENT timezone (#PCDATA)> + PCDATA value: an iCalendar object with exactly one VTIMEZONE + +<span class="h3"><h3><a class="selflink" name="section-9.9" href="#section-9.9">9.9</a>. CALDAV:time-range XML Element</h3></span> + + Name: time-range + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: Specifies a time range to limit the set of calendar + components returned by the server. + + Description: The CALDAV:time-range XML element specifies that for a + given calendaring REPORT request, the server MUST only return the + calendar object resources that, depending on the context, have a + component or property whose value intersects a specified time + range. + + The "start" attribute specifies the inclusive start of the time + range, and the "end" attribute specifies the non-inclusive end of + the time range. Both attributes MUST be specified as "date with + UTC time" value. Time ranges open at one end can be specified by + including only one attribute; however, at least one attribute MUST + always be present in the CALDAV:time-range element. If either the + "start" or "end" attribute is not specified in the CALDAV:time- + range XML element, assume "-infinity" and "+infinity" as their + value, respectively. If both "start" and "end" are present, the + value of the "end" attribute MUST be greater than the value of the + "start" attribute. + + Time range tests MUST consider every recurrence instance when + testing the time range condition; if any one instance matches, + then the test returns true. Testing recurrence instances requires + the server to infer an effective value for DTSTART, DTEND, + DURATION, and DUE properties for an instance based on the + recurrence patterns and any overrides. + + A VEVENT component overlaps a given time range if the condition + for the corresponding component state specified in the table below + is satisfied. Note that, as specified in [<a href="http://tools.ietf.org/html/rfc2445" title="" internet calendaring and scheduling core object specification>RFC2445</a>], the DTSTART + property is REQUIRED in the VEVENT component. The conditions + depend on the presence of the DTEND and DURATION properties in the + VEVENT component. Furthermore, the value of the DTEND property + + + +<span class="grey">Daboo, et al. Standards Track [Page 90]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-91" id="page-91" href="#page-91" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + MUST be later in time than the value of the DTSTART property. The + duration of a VEVENT component with no DTEND and DURATION + properties is 1 day (+P1D) when the DTSTART is a DATE value, and 0 + seconds when the DTSTART is a DATE-TIME value. + + +---------------------------------------------------------------+ + | VEVENT has the DTEND property? | + | +-----------------------------------------------------------+ + | | VEVENT has the DURATION property? | + | | +-------------------------------------------------------+ + | | | DURATION property value is greater than 0 seconds? | + | | | +---------------------------------------------------+ + | | | | DTSTART property is a DATE-TIME value? | + | | | | +-----------------------------------------------+ + | | | | | Condition to evaluate | + +---+---+---+---+-----------------------------------------------+ + | Y | N | N | * | (start < DTEND AND end > DTSTART) | + +---+---+---+---+-----------------------------------------------+ + | N | Y | Y | * | (start < DTSTART+DURATION AND end > DTSTART) | + | | +---+---+-----------------------------------------------+ + | | | N | * | (start <= DTSTART AND end > DTSTART) | + +---+---+---+---+-----------------------------------------------+ + | N | N | N | Y | (start <= DTSTART AND end > DTSTART) | + +---+---+---+---+-----------------------------------------------+ + | N | N | N | N | (start < DTSTART+P1D AND end > DTSTART) | + +---+---+---+---+-----------------------------------------------+ + + A VTODO component is said to overlap a given time range if the + condition for the corresponding component state specified in the + table below is satisfied. The conditions depend on the presence + of the DTSTART, DURATION, DUE, COMPLETED, and CREATED properties + in the VTODO component. Note that, as specified in [<a href="http://tools.ietf.org/html/rfc2445" title="" internet calendaring and scheduling core object specification>RFC2445</a>], the + DUE value MUST be a DATE-TIME value equal to or after the DTSTART + value if specified. + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 91]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-92" id="page-92" href="#page-92" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + +-------------------------------------------------------------------+ + | VTODO has the DTSTART property? | + | +---------------------------------------------------------------+ + | | VTODO has the DURATION property? | + | | +-----------------------------------------------------------+ + | | | VTODO has the DUE property? | + | | | +-------------------------------------------------------+ + | | | | VTODO has the COMPLETED property? | + | | | | +---------------------------------------------------+ + | | | | | VTODO has the CREATED property? | + | | | | | +-----------------------------------------------+ + | | | | | | Condition to evaluate | + +---+---+---+---+---+-----------------------------------------------+ + | Y | Y | N | * | * | (start <= DTSTART+DURATION) AND | + | | | | | | ((end > DTSTART) OR | + | | | | | | (end >= DTSTART+DURATION)) | + +---+---+---+---+---+-----------------------------------------------+ + | Y | N | Y | * | * | ((start < DUE) OR (start <= DTSTART)) | + | | | | | | AND | + | | | | | | ((end > DTSTART) OR (end >= DUE)) | + +---+---+---+---+---+-----------------------------------------------+ + | Y | N | N | * | * | (start <= DTSTART) AND (end > DTSTART) | + +---+---+---+---+---+-----------------------------------------------+ + | N | N | Y | * | * | (start < DUE) AND (end >= DUE) | + +---+---+---+---+---+-----------------------------------------------+ + | N | N | N | Y | Y | ((start <= CREATED) OR (start <= COMPLETED))| + | | | | | | AND | + | | | | | | ((end >= CREATED) OR (end >= COMPLETED))| + +---+---+---+---+---+-----------------------------------------------+ + | N | N | N | Y | N | (start <= COMPLETED) AND (end >= COMPLETED) | + +---+---+---+---+---+-----------------------------------------------+ + | N | N | N | N | Y | (end > CREATED) | + +---+---+---+---+---+-----------------------------------------------+ + | N | N | N | N | N | TRUE | + +---+---+---+---+---+-----------------------------------------------+ + + A VJOURNAL component overlaps a given time range if the condition + for the corresponding component state specified in the table below + is satisfied. The conditions depend on the presence of the + DTSTART property in the VJOURNAL component and on whether the + DTSTART is a DATE-TIME or DATE value. The effective "duration" of + a VJOURNAL component is 1 day (+P1D) when the DTSTART is a DATE + value, and 0 seconds when the DTSTART is a DATE-TIME value. + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 92]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-93" id="page-93" href="#page-93" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + +----------------------------------------------------+ + | VJOURNAL has the DTSTART property? | + | +------------------------------------------------+ + | | DTSTART property is a DATE-TIME value? | + | | +--------------------------------------------+ + | | | Condition to evaluate | + +---+---+--------------------------------------------+ + | Y | Y | (start <= DTSTART) AND (end > DTSTART) | + +---+---+--------------------------------------------+ + | Y | N | (start < DTSTART+P1D) AND (end > DTSTART) | + +---+---+--------------------------------------------+ + | N | * | FALSE | + +---+---+--------------------------------------------+ + + A VFREEBUSY component overlaps a given time range if the condition + for the corresponding component state specified in the table below + is satisfied. The conditions depend on the presence in the + VFREEBUSY component of the DTSTART and DTEND properties, and any + FREEBUSY properties in the absence of DTSTART and DTEND. Any + DURATION property is ignored, as it has a special meaning when + used in a VFREEBUSY component. + + When only FREEBUSY properties are used, each period in each + FREEBUSY property is compared against the time range, irrespective + of the type of free busy information (free, busy, busy-tentative, + busy-unavailable) represented by the property. + + + +------------------------------------------------------+ + | VFREEBUSY has both the DTSTART and DTEND properties? | + | +--------------------------------------------------+ + | | VFREEBUSY has the FREEBUSY property? | + | | +----------------------------------------------+ + | | | Condition to evaluate | + +---+---+----------------------------------------------+ + | Y | * | (start <= DTEND) AND (end > DTSTART) | + +---+---+----------------------------------------------+ + | N | Y | (start < freebusy-period-end) AND | + | | | (end > freebusy-period-start) | + +---+---+----------------------------------------------+ + | N | N | FALSE | + +---+---+----------------------------------------------+ + + A VALARM component is said to overlap a given time range if the + following condition holds: + + (start <= trigger-time) AND (end > trigger-time) + + + + +<span class="grey">Daboo, et al. Standards Track [Page 93]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-94" id="page-94" href="#page-94" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + A VALARM component can be defined such that it triggers repeatedly. + Such a VALARM component is said to overlap a given time range if at + least one of its triggers overlaps the time range. + + The calendar properties COMPLETED, CREATED, DTEND, DTSTAMP, + DTSTART, DUE, and LAST-MODIFIED overlap a given time range if the + following condition holds: + + (start <= date-time) AND (end > date-time) + + Note that if DTEND is not present in a VEVENT, but DURATION is, then + the test should instead operate on the 'effective' DTEND, i.e., + DTSTART+DURATION. Similarly, if DUE is not present in a VTODO, but + DTSTART and DURATION are, then the test should instead operate on the + 'effective' DUE, i.e., DTSTART+DURATION. + + The semantic of CALDAV:time-range is not defined for any other + calendar components and properties. + + Definition: + + <!ELEMENT time-range EMPTY> + + <!ATTLIST time-range start CDATA #IMPLIED + end CDATA #IMPLIED> + start value: an iCalendar "date with UTC time" + end value: an iCalendar "date with UTC time" + +<span class="h3"><h3><a class="selflink" name="section-9.10" href="#section-9.10">9.10</a>. CALDAV:calendar-multiget XML Element</h3></span> + + Name: calendar-multiget + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: CalDAV report used to retrieve specific calendar object + resources. + + Description: See <a href="#section-7.9">Section 7.9</a>. + + Definition: + + <!ELEMENT calendar-multiget ((DAV:allprop | + DAV:propname | + DAV:prop)?, DAV:href+)> + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 94]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-95" id="page-95" href="#page-95" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-9.11" href="#section-9.11">9.11</a>. CALDAV:free-busy-query XML Element</h3></span> + + Name: free-busy-query + + Namespace: urn:ietf:params:xml:ns:caldav + + Purpose: CalDAV report used to generate a VFREEBUSY to determine + busy time over a specific time range. + + Description: See <a href="#section-7.10">Section 7.10</a>. + + Definition: + + <!ELEMENT free-busy-query (time-range)> + +<span class="h2"><h2><a class="selflink" name="section-10" href="#section-10">10</a>. Internationalization Considerations</h2></span> + + CalDAV allows internationalized strings to be stored and retrieved + for the description of calendar collections (see <a href="#section-5.2.1">Section 5.2.1</a>). + + The CALDAV:calendar-query REPORT (<a href="#section-7.8">Section 7.8</a>) includes a text + searching option controlled by the CALDAV:text-match element, and + details of character handling are covered in the description of that + element (see <a href="#section-9.7.5">Section 9.7.5</a>). + +<span class="h2"><h2><a class="selflink" name="section-11" href="#section-11">11</a>. Security Considerations</h2></span> + + HTTP protocol transactions are sent in the clear over the network + unless protection from snooping is negotiated. This can be + accomplished by use of TLS, as defined in [<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>]. In particular, + HTTP Basic authentication MUST NOT be used unless TLS is in effect. + + Servers MUST take adequate precautions to ensure that malicious + clients cannot consume excessive server resources (CPU, memory, disk, + etc.) through carefully crafted reports. For example, a client could + upload an event with a recurrence rule that specifies a recurring + event occurring every second for the next 100 years, which would + result in approximately 3 x 10^9 instances! A report that asks for + recurrences to be expanded over that range would likely constitute a + denial-of-service attack on the server. + + When creating new resources (including calendar collections), clients + MUST ensure that the resource name (the last path segment of the + resource URI) assigned to the new resource does not expose any data + from within the iCalendar resource itself or information about the + nature of a calendar collection. This is required to ensure that the + presence of a specific iCalendar component or nature of components in + a collection cannot be inferred based on the name of a resource. + + + +<span class="grey">Daboo, et al. Standards Track [Page 95]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-96" id="page-96" href="#page-96" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + When rolling up free-busy information, more information about a + user's events is exposed if busy periods overlap or are adjacent + (this tells the client requesting the free-busy information that the + calendar owner has at least two events, rather than knowing only that + the calendar owner has one or more events during the busy period). + Thus, a conservative approach to calendar data privacy would have + servers always coalesce such busy periods when they are the same + type. + + Procedure alarms are a known security risk for either clients or + servers to handle, particularly when the alarm was created by another + agent. Clients and servers are not required to execute such + procedure alarms. + + Security considerations described in iCalendar [<a href="http://tools.ietf.org/html/rfc2445" title="" internet calendaring and scheduling core object specification>RFC2445</a>] and iTIP + [<a href="http://tools.ietf.org/html/rfc2446" title="" icalendar transport-independent interoperability protocol scheduling events busytime to-dos and journal entries>RFC2446</a>] are also applicable to CalDAV. + + Beyond these, CalDAV does not raise any security considerations that + are not present in HTTP [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>] and WebDAV [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>], [<a href="http://tools.ietf.org/html/rfc3253" title="" versioning extensions to webdav distributed authoring and>RFC3253</a>], + [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>]. + +<span class="h2"><h2><a class="selflink" name="section-12" href="#section-12">12</a>. IANA Considerations</h2></span> + + This document uses one new URN to identify a new XML namespace. The + URN conforms to a registry mechanism described in [<a href="http://tools.ietf.org/html/rfc3688" title="" the ietf xml registry>RFC3688</a>]. + +<span class="h3"><h3><a class="selflink" name="section-12.1" href="#section-12.1">12.1</a>. Namespace Registration</h3></span> + + Registration request for the CalDAV namespace: + + URI: urn:ietf:params:xml:ns:caldav + + Registrant Contact: See the "Authors' Addresses" section of this + document. + + XML: None. Namespace URIs do not represent an XML specification. + +<span class="h2"><h2><a class="selflink" name="section-13" href="#section-13">13</a>. Acknowledgements</h2></span> + + The authors would like to thank the following individuals for + contributing their ideas and support for writing this specification: + Michael Arick, Mario Bonin, Chris Bryant, Scott Carr, Andre + Courtemanche, Mike Douglass, Ted Hardie, Marten den Haring, Jeffrey + Harris, Sam Hartman, Helge Hess, Jeff McCullough, Alexey Melnikov, + Dan Mosedale, Brian Moseley, Francois Perrault, Kervin L. Pierre, + Julian F. Reschke, Wilfredo Sanchez Vega, Mike Shaver, Jari + Urpalainen, Simon Vaillancourt, and Jim Whitehead. + + + + +<span class="grey">Daboo, et al. Standards Track [Page 96]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-97" id="page-97" href="#page-97" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + The authors would also like to thank the Calendaring and Scheduling + Consortium for advice with this specification, and for organizing + interoperability testing events to help refine it. + +<span class="h2"><h2><a class="selflink" name="section-14" href="#section-14">14</a>. References</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-14.1" href="#section-14.1">14.1</a>. Normative References</h3></span> + + [<a name="ref-RFC2119" id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to + Indicate Requirement Levels", <a href="http://tools.ietf.org/html/bcp14">BCP 14</a>, + <a href="http://tools.ietf.org/html/rfc2119">RFC 2119</a>, March 1997. + + [<a name="ref-RFC2246" id="ref-RFC2246">RFC2246</a>] Dierks, T. and C. Allen, "The TLS Protocol + Version 1.0", <a href="http://tools.ietf.org/html/rfc2246">RFC 2246</a>, January 1999. + + [<a name="ref-RFC2445" id="ref-RFC2445">RFC2445</a>] Dawson, F. and Stenerson, D., "Internet + Calendaring and Scheduling Core Object + Specification (iCalendar)", <a href="http://tools.ietf.org/html/rfc2445">RFC 2445</a>, + November 1998. + + [<a name="ref-RFC2446" id="ref-RFC2446">RFC2446</a>] Silverberg, S., Mansour, S., Dawson, F., and + R. Hopson, "iCalendar Transport-Independent + Interoperability Protocol (iTIP) Scheduling + Events, BusyTime, To-dos and Journal + Entries", <a href="http://tools.ietf.org/html/rfc2446">RFC 2446</a>, November 1998. + + [<a name="ref-RFC2518" id="ref-RFC2518">RFC2518</a>] Goland, Y., Whitehead, E., Faizi, A., Carter, + S., and D. Jensen, "HTTP Extensions for + Distributed Authoring -- WEBDAV", <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a>, + February 1999. + + [<a name="ref-RFC2616" id="ref-RFC2616">RFC2616</a>] Fielding, R., Gettys, J., Mogul, J., Frystyk, + H., Masinter, L., Leach, P., and T. Berners- + Lee, "Hypertext Transfer Protocol -- + HTTP/1.1", <a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a>, June 1999. + + [<a name="ref-RFC2818" id="ref-RFC2818">RFC2818</a>] Rescorla, E., "HTTP Over TLS", <a href="http://tools.ietf.org/html/rfc2818">RFC 2818</a>, + May 2000. + + [<a name="ref-RFC3253" id="ref-RFC3253">RFC3253</a>] Clemm, G., Amsden, J., Ellison, T., Kaler, + C., and J. Whitehead, "Versioning Extensions + to WebDAV (Web Distributed Authoring and + Versioning)", <a href="http://tools.ietf.org/html/rfc3253">RFC 3253</a>, March 2002. + + [<a name="ref-RFC3688" id="ref-RFC3688">RFC3688</a>] Mealling, M., "The IETF XML Registry", + <a href="http://tools.ietf.org/html/bcp81">BCP 81</a>, <a href="http://tools.ietf.org/html/rfc3688">RFC 3688</a>, January 2004. + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 97]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-98" id="page-98" href="#page-98" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + [<a name="ref-RFC3744" id="ref-RFC3744">RFC3744</a>] Clemm, G., Reschke, J., Sedlar, E., and J. + Whitehead, "Web Distributed Authoring and + Versioning (WebDAV) Access Control Protocol", + <a href="http://tools.ietf.org/html/rfc3744">RFC 3744</a>, May 2004. + + [<a name="ref-RFC4346" id="ref-RFC4346">RFC4346</a>] Dierks, T. and E. Rescorla, "The Transport + Layer Security (TLS) Protocol Version 1.1", + <a href="http://tools.ietf.org/html/rfc4346">RFC 4346</a>, April 2006. + + [<a name="ref-RFC4790" id="ref-RFC4790">RFC4790</a>] Newman, C., Duerst, M., and A. Gulbrandsen, + "Internet Application Protocol Collation + Registry", <a href="http://tools.ietf.org/html/rfc4790">RFC 4790</a>, March 2007. + + [<a name="ref-W3C.REC-xml-20060816" id="ref-W3C.REC-xml-20060816">W3C.REC-xml-20060816</a>] Paoli, J., Maler, E., Yergeau, F., Sperberg- + McQueen, C., and T. Bray, "Extensible Markup + Language (XML) 1.0 (Fourth Edition)", World + Wide Web Consortium Recommendation REC-xml- + 20060816, August 2006, + <<a href="http://www.w3.org/TR/2006/REC-xml-20060816">http://www.w3.org/TR/2006/REC-xml-20060816</a>>. + +<span class="h3"><h3><a class="selflink" name="section-14.2" href="#section-14.2">14.2</a>. Informative References</h3></span> + + [<a name="ref-RFC2426" id="ref-RFC2426">RFC2426</a>] Dawson, F. and T. Howes, "vCard MIME + Directory Profile", <a href="http://tools.ietf.org/html/rfc2426">RFC 2426</a>, September 1998. + + [<a name="ref-RFC2739" id="ref-RFC2739">RFC2739</a>] Small, T., Hennessy, D., and F. Dawson, + "Calendar Attributes for vCard and LDAP", + <a href="http://tools.ietf.org/html/rfc2739">RFC 2739</a>, January 2000. + + [<a name="ref-RFC4331" id="ref-RFC4331">RFC4331</a>] Korver, B. and L. Dusseault, "Quota and Size + Properties for Distributed Authoring and + Versioning (DAV) Collections", <a href="http://tools.ietf.org/html/rfc4331">RFC 4331</a>, + February 2006. + + [<a name="ref-RFC4511" id="ref-RFC4511">RFC4511</a>] Sermersheim, J., "Lightweight Directory + Access Protocol (LDAP): The Protocol", + <a href="http://tools.ietf.org/html/rfc4511">RFC 4511</a>, June 2006. + + [<a name="ref-rfc2518bis" id="ref-rfc2518bis">rfc2518bis</a>] Dusseault, L., "HTTP Extensions for + Distributed Authoring - WebDAV", Work + in Progress, December 2006. + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 98]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-99" id="page-99" href="#page-99" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +<span class="h2"><h2><a class="selflink" name="appendix-A" href="#appendix-A">Appendix A</a>. CalDAV Method Privilege Table (Normative)</h2></span> + + The following table extends the WebDAV Method Privilege Table + specified in <a href="http://tools.ietf.org/html/rfc3744#appendix-B">Appendix B of [RFC3744]</a>. + + +------------+------------------------------------------------------+ + | METHOD | PRIVILEGES | + +------------+------------------------------------------------------+ + | MKCALENDAR | DAV:bind | + | REPORT | DAV:read or CALDAV:read-free-busy (on all referenced | + | | resources) | + +------------+------------------------------------------------------+ + +<span class="h2"><h2><a class="selflink" name="appendix-B" href="#appendix-B">Appendix B</a>. Calendar Collections Used in the Examples</h2></span> + + This appendix shows the calendar object resources contained in the + calendar collection queried in the examples throughout this document. + + The content of the calendar collection is being shown as if it were + returned by a CALDAV:calendar-query REPORT request designed to return + all the calendar data in the collection: + + >> Request << + + REPORT /bernard/work/ HTTP/1.1 + Host: cal.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:calendar-query xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + <D:prop> + <D:getetag/> + <C:calendar-data/> + </D:prop> + <C:filter> + <C:comp-filter name="VCALENDAR"/> + </C:filter> + </C:calendar-query> + + >> Response << + + HTTP/1.1 207 Multi-Status + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + + + +<span class="grey">Daboo, et al. Standards Track [Page 99]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-100" id="page-100" href="#page-100" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:caldav"> + + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd1.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd1"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + DTSTAMP:20060206T001102Z + DTSTART;TZID=US/Eastern:20060102T100000 + DURATION:PT1H + SUMMARY:Event #1 + Description:Go Steelers! + UID:74855313FA803DA593CD579A@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd2.ics</D:href> + <D:propstat> + + + +<span class="grey">Daboo, et al. Standards Track [Page 100]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-101" id="page-101" href="#page-101" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <D:prop> + <D:getetag>"fffff-abcd2"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + DTSTAMP:20060206T001121Z + DTSTART;TZID=US/Eastern:20060102T120000 + DURATION:PT1H + RRULE:FREQ=DAILY;COUNT=5 + SUMMARY:Event #2 + UID:00959BC664CA650E933C892C@example.com + END:VEVENT + BEGIN:VEVENT + DTSTAMP:20060206T001121Z + DTSTART;TZID=US/Eastern:20060104T140000 + DURATION:PT1H + RECURRENCE-ID;TZID=US/Eastern:20060104T120000 + SUMMARY:Event #2 bis + UID:00959BC664CA650E933C892C@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd3.ics</D:href> + + + +<span class="grey">Daboo, et al. Standards Track [Page 101]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-102" id="page-102" href="#page-102" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd3"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTIMEZONE + LAST-MODIFIED:20040110T032845Z + TZID:US/Eastern + BEGIN:DAYLIGHT + DTSTART:20000404T020000 + RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 + TZNAME:EDT + TZOFFSETFROM:-0500 + TZOFFSETTO:-0400 + END:DAYLIGHT + BEGIN:STANDARD + DTSTART:20001026T020000 + RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 + TZNAME:EST + TZOFFSETFROM:-0400 + TZOFFSETTO:-0500 + END:STANDARD + END:VTIMEZONE + BEGIN:VEVENT + ATTENDEE;PARTSTAT=ACCEPTED;ROLE=CHAIR:mailto:cyrus@example.com + ATTENDEE;PARTSTAT=NEEDS-ACTION:mailto:lisa@example.com + DTSTAMP:20060206T001220Z + DTSTART;TZID=US/Eastern:20060104T100000 + DURATION:PT1H + LAST-MODIFIED:20060206T001330Z + ORGANIZER:mailto:cyrus@example.com + SEQUENCE:1 + STATUS:TENTATIVE + SUMMARY:Event #3 + UID:DC6C50A017428C5216A2F1CD@example.com + END:VEVENT + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd4.ics</D:href> + <D:propstat> + <D:prop> + + + +<span class="grey">Daboo, et al. Standards Track [Page 102]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-103" id="page-103" href="#page-103" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + <D:getetag>"fffff-abcd4"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTODO + DTSTAMP:20060205T235335Z + DUE;VALUE=DATE:20060104 + STATUS:NEEDS-ACTION + SUMMARY:Task #1 + UID:DDDEEB7915FA61233B861457@example.com + BEGIN:VALARM + ACTION:AUDIO + TRIGGER;RELATED=START:-PT10M + END:VALARM + END:VTODO + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd5.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd5"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTODO + DTSTAMP:20060205T235300Z + DUE;VALUE=DATE:20060106 + LAST-MODIFIED:20060205T235308Z + SEQUENCE:1 + STATUS:NEEDS-ACTION + SUMMARY:Task #2 + UID:E10BA47467C5C69BB74E8720@example.com + BEGIN:VALARM + ACTION:AUDIO + TRIGGER;RELATED=START:-PT10M + END:VALARM + END:VTODO + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + + + +<span class="grey">Daboo, et al. Standards Track [Page 103]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-104" id="page-104" href="#page-104" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + </D:response> + + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd6.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd6"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTODO + COMPLETED:20051223T122322Z + DTSTAMP:20060205T235400Z + DUE;VALUE=DATE:20051225 + LAST-MODIFIED:20060205T235308Z + SEQUENCE:1 + STATUS:COMPLETED + SUMMARY:Task #3 + UID:E10BA47467C5C69BB74E8722@example.com + END:VTODO + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd7.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd7"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VTODO + DTSTAMP:20060205T235600Z + DUE;VALUE=DATE:20060101 + LAST-MODIFIED:20060205T235308Z + SEQUENCE:1 + STATUS:CANCELLED + SUMMARY:Task #4 + UID:E10BA47467C5C69BB74E8725@example.com + END:VTODO + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + + + +<span class="grey">Daboo, et al. Standards Track [Page 104]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-105" id="page-105" href="#page-105" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + + </D:propstat> + </D:response> + + <D:response> + <D:href>http://cal.example.com/bernard/work/abcd8.ics</D:href> + <D:propstat> + <D:prop> + <D:getetag>"fffff-abcd8"</D:getetag> + <C:calendar-data>BEGIN:VCALENDAR + VERSION:2.0 + PRODID:-//Example Corp.//CalDAV Client//EN + BEGIN:VFREEBUSY + ORGANIZER;CN="Bernard Desruisseaux":mailto:bernard@example.com + UID:76ef34-54a3d2@example.com + DTSTAMP:20050530T123421Z + DTSTART:20060101T000000Z + DTEND:20060108T000000Z + FREEBUSY:20050531T230000Z/20050601T010000Z + FREEBUSY;FBTYPE=BUSY-TENTATIVE:20060102T100000Z/20060102T120000Z + FREEBUSY:20060103T100000Z/20060103T120000Z + FREEBUSY:20060104T100000Z/20060104T120000Z + FREEBUSY;FBTYPE=BUSY-UNAVAILABLE:20060105T100000Z/20060105T120000Z + FREEBUSY:20060106T100000Z/20060106T120000Z + END:VFREEBUSY + END:VCALENDAR + </C:calendar-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + + </D:multistatus> + + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 105]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-106" id="page-106" href="#page-106" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +Authors' Addresses + + Cyrus Daboo + Apple Inc. + 1 Infinite Loop + Cupertino, CA 95014 + USA + + EMail: cyrus@daboo.name + URI: <a href="http://www.apple.com/">http://www.apple.com/</a> + + + Bernard Desruisseaux + Oracle Corporation + 600 Blvd. de Maisonneuve West + Suite 1900 + Montreal, QC H3A 3J2 + CANADA + + EMail: bernard.desruisseaux@oracle.com + URI: <a href="http://www.oracle.com/">http://www.oracle.com/</a> + + + Lisa Dusseault + CommerceNet + 169 University Ave. + Palo Alto, CA 94301 + USA + + EMail: ldusseault@commerce.net + URI: <a href="http://commerce.net/">http://commerce.net/</a> + + + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo, et al. Standards Track [Page 106]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-107" id="page-107" href="#page-107" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4791</a> CalDAV March 2007</span> + + +Full Copyright Statement + + Copyright (C) The IETF Trust (2007). + + This document is subject to the rights, licenses and restrictions + contained in <a href="http://tools.ietf.org/html/bcp78">BCP 78</a>, and except as set forth therein, the authors + retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND + THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF + THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in <a href="http://tools.ietf.org/html/bcp78">BCP 78</a> and <a href="http://tools.ietf.org/html/bcp79">BCP 79</a>. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + <a href="http://www.ietf.org/ipr">http://www.ietf.org/ipr</a>. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at + ietf-ipr@ietf.org. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + +Daboo, et al. Standards Track [Page 107] + +</pre><br> +<span class="noprint"><small><small>Html markup produced by rfcmarkup 1.111, available from +<a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a> +</small></small></span> + +</body></html>
\ No newline at end of file diff --git a/rfcs/RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV).html b/rfcs/RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV).html new file mode 100644 index 0000000..748cdbf --- /dev/null +++ b/rfcs/RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV).html @@ -0,0 +1,7186 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head profile="http://dublincore.org/documents/2008/08/04/dc-html/"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta name="robots" content="index,follow"> + <meta name="creator" content="rfcmarkup version 1.109"> + <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"> +<meta name="DC.Relation.Replaces" content="rfc2518"> +<meta name="DC.Identifier" content="urn:ietf:rfc:4918"> +<meta name="DC.Date.Issued" content="June, 2007"> +<meta name="DC.Creator" content="Lisa Dusseault <ldusseault@commerce.net>"> +<meta name="DC.Description.Abstract" content="Web Distributed Authoring and Versioning (WebDAV) consists of a set of +methods, headers, and content-types ancillary to HTTP/1.1 for the +management of resource properties, creation and management of resource +collections, URL namespace manipulation, and resource locking +(collision avoidance). RFC 2518 was published in February 1999, and +this specification obsoletes RFC 2518 with minor revisions mostly due +to interoperability experience. [STANDARDS-TRACK]"> +<meta name="DC.Title" content="HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)"> + + <link rel="icon" href="index_files/rfc.png" type="image/png"> + <link rel="shortcut icon" href="index_files/rfc.png" type="image/png"> + <title>RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</title> + + + <style type="text/css"><!--
+/* Effective stylesheet produced by snapshot save */
+body { margin: 0px 8px; font-size: 1em; }
+h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { line-height: 0pt; display: inline; white-space: pre; font-family: monospace; font-size: 1em; font-weight: bold; }
+pre { font-size: 1em; margin-top: 0px; margin-bottom: 0px; }
+.pre { white-space: pre; font-family: monospace; }
+.newpage { page-break-before: always; }
+.invisible { text-decoration: none; color: white; }
+a.selflink { color: black; text-decoration: none; }
+@media print {
+ body { font-family: monospace; font-size: 10.5pt; }
+ h1, h2, h3, h4, h5, h6 { font-size: 1em; }
+ a:link, a:visited { color: inherit; text-decoration: none; }
+ .noprint { display: none; }
+}
+@media screen {
+ .grey, .grey a:link, .grey a:visited { color: rgb(119, 119, 119); }
+ .docinfo { background-color: rgb(238, 238, 238); }
+ .top { border-top: 7px solid rgb(238, 238, 238); }
+ .bgblue { background-color: rgb(102, 102, 255); }
+ .legend { font-size: 90%; }
+}
+--></style> + <!--[if IE]> + <style> + body { + font-size: 13px; + margin: 10px 10px; + } + </style> + <![endif]--> + + <script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script> +</head> +<body onload=""> + <div style="height: 13px;"> + <div onmouseover="" onclick="" onmouseout="" style="height: 6px; position: absolute;" class="pre noprint docinfo bgblue" title="Click for colour legend."> </div> + <div id="legend" class="docinfo noprint pre legend" style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; " onmouseover="" onmouseout=""> + </div> + </div> +<span class="pre noprint docinfo top">[<a href="http://tools.ietf.org/html/" title="Document search and retrieval page">Docs</a>] [<a href="http://tools.ietf.org/rfc/rfc4918.txt" title="Plaintext version of this document">txt</a>|<a href="http://tools.ietf.org/pdf/rfc4918" title="PDF version of this document">pdf</a>] [<a href="http://tools.ietf.org/html/draft-ietf-webdav-rfc2518bis" title="draft-ietf-webdav-rfc2518bis">draft-ietf-webdav...</a>] [<a href="http://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=rfc4918" title="Inline diff (wdiff)">Diff1</a>] [<a href="http://tools.ietf.org/rfcdiff?url2=rfc4918" title="Side-by-side diff">Diff2</a>] [<a href="https://www.rfc-editor.org/errata_search.php?rfc=4918">Errata</a>] </span><br> +<span class="pre noprint docinfo"> </span><br> +<span class="pre noprint docinfo">Updated by: <a href="http://tools.ietf.org/html/rfc5689">5689</a> PROPOSED STANDARD</span><br> +<span class="pre noprint docinfo"> <span style="color: #C00;">Errata Exist</span></span><br> +<pre>Network Working Group L. Dusseault, Ed. +Request for Comments: 4918 CommerceNet +Obsoletes: <a href="http://tools.ietf.org/html/rfc2518">2518</a> June 2007 +Category: Standards Track + + + <span class="h1"><h1>HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</h1></span> + +Status of This Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The IETF Trust (2007). + +Abstract + + Web Distributed Authoring and Versioning (WebDAV) consists of a set + of methods, headers, and content-types ancillary to HTTP/1.1 for the + management of resource properties, creation and management of + resource collections, URL namespace manipulation, and resource + locking (collision avoidance). + + <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a> was published in February 1999, and this specification + obsoletes <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a> with minor revisions mostly due to + interoperability experience. + + + + + + + + + + + + + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 1]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-2" id="page-2" href="#page-2" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +Table of Contents + + <a href="#section-1">1</a>. Introduction ....................................................<a href="#page-7">7</a> + <a href="#section-2">2</a>. Notational Conventions ..........................................<a href="#page-8">8</a> + <a href="#section-3">3</a>. Terminology .....................................................<a href="#page-8">8</a> + <a href="#section-4">4</a>. Data Model for Resource Properties .............................<a href="#page-10">10</a> + <a href="#section-4.1">4.1</a>. The Resource Property Model ...............................<a href="#page-10">10</a> + <a href="#section-4.2">4.2</a>. Properties and HTTP Headers ...............................<a href="#page-10">10</a> + <a href="#section-4.3">4.3</a>. Property Values ...........................................<a href="#page-10">10</a> + <a href="#section-4.3.1">4.3.1</a>. Example - Property with Mixed Content ..............<a href="#page-12">12</a> + <a href="#section-4.4">4.4</a>. Property Names ............................................<a href="#page-14">14</a> + <a href="#section-4.5">4.5</a>. Source Resources and Output Resources .....................<a href="#page-14">14</a> + <a href="#section-5">5</a>. Collections of Web Resources ...................................<a href="#page-14">14</a> + <a href="#section-5.1">5.1</a>. HTTP URL Namespace Model ..................................<a href="#page-15">15</a> + <a href="#section-5.2">5.2</a>. Collection Resources ......................................<a href="#page-15">15</a> + <a href="#section-6">6</a>. Locking ........................................................<a href="#page-17">17</a> + <a href="#section-6.1">6.1</a>. Lock Model ................................................<a href="#page-18">18</a> + <a href="#section-6.2">6.2</a>. Exclusive vs. Shared Locks ................................<a href="#page-19">19</a> + <a href="#section-6.3">6.3</a>. Required Support ..........................................<a href="#page-20">20</a> + <a href="#section-6.4">6.4</a>. Lock Creator and Privileges ...............................<a href="#page-20">20</a> + <a href="#section-6.5">6.5</a>. Lock Tokens ...............................................<a href="#page-21">21</a> + <a href="#section-6.6">6.6</a>. Lock Timeout ..............................................<a href="#page-21">21</a> + <a href="#section-6.7">6.7</a>. Lock Capability Discovery .................................<a href="#page-22">22</a> + <a href="#section-6.8">6.8</a>. Active Lock Discovery .....................................<a href="#page-22">22</a> + <a href="#section-7">7</a>. Write Lock .....................................................<a href="#page-23">23</a> + <a href="#section-7.1">7.1</a>. Write Locks and Properties ................................<a href="#page-24">24</a> + <a href="#section-7.2">7.2</a>. Avoiding Lost Updates .....................................<a href="#page-24">24</a> + <a href="#section-7.3">7.3</a>. Write Locks and Unmapped URLs .............................<a href="#page-25">25</a> + <a href="#section-7.4">7.4</a>. Write Locks and Collections ...............................<a href="#page-26">26</a> + <a href="#section-7.5">7.5</a>. Write Locks and the If Request Header .....................<a href="#page-28">28</a> + <a href="#section-7.5.1">7.5.1</a>. Example - Write Lock and COPY ......................<a href="#page-28">28</a> + 7.5.2. Example - Deleting a Member of a Locked + Collection .........................................<a href="#page-29">29</a> + <a href="#section-7.6">7.6</a>. Write Locks and COPY/MOVE .................................<a href="#page-30">30</a> + <a href="#section-7.7">7.7</a>. Refreshing Write Locks ....................................<a href="#page-30">30</a> + <a href="#section-8">8</a>. General Request and Response Handling ..........................<a href="#page-31">31</a> + <a href="#section-8.1">8.1</a>. Precedence in Error Handling ..............................<a href="#page-31">31</a> + <a href="#section-8.2">8.2</a>. Use of XML ................................................<a href="#page-31">31</a> + <a href="#section-8.3">8.3</a>. URL Handling ..............................................<a href="#page-32">32</a> + <a href="#section-8.3.1">8.3.1</a>. Example - Correct URL Handling .....................<a href="#page-32">32</a> + <a href="#section-8.4">8.4</a>. Required Bodies in Requests ...............................<a href="#page-33">33</a> + <a href="#section-8.5">8.5</a>. HTTP Headers for Use in WebDAV ............................<a href="#page-33">33</a> + <a href="#section-8.6">8.6</a>. ETag ......................................................<a href="#page-33">33</a> + <a href="#section-8.7">8.7</a>. Including Error Response Bodies ...........................<a href="#page-34">34</a> + <a href="#section-8.8">8.8</a>. Impact of Namespace Operations on Cache Validators ........<a href="#page-34">34</a> + <a href="#section-9">9</a>. HTTP Methods for Distributed Authoring .........................<a href="#page-35">35</a> + <a href="#section-9.1">9.1</a>. PROPFIND Method ...........................................<a href="#page-35">35</a> + <a href="#section-9.1.1">9.1.1</a>. PROPFIND Status Codes ..............................<a href="#page-37">37</a> + + + +<span class="grey">Dusseault Standards Track [Page 2]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-3" id="page-3" href="#page-3" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + <a href="#section-9.1.2">9.1.2</a>. Status Codes for Use in 'propstat' Element .........<a href="#page-37">37</a> + <a href="#section-9.1.3">9.1.3</a>. Example - Retrieving Named Properties ..............<a href="#page-38">38</a> + 9.1.4. Example - Using 'propname' to Retrieve All + Property Names .....................................<a href="#page-39">39</a> + <a href="#section-9.1.5">9.1.5</a>. Example - Using So-called 'allprop' ................<a href="#page-41">41</a> + <a href="#section-9.1.6">9.1.6</a>. Example - Using 'allprop' with 'include' ...........<a href="#page-43">43</a> + <a href="#section-9.2">9.2</a>. PROPPATCH Method ..........................................<a href="#page-44">44</a> + <a href="#section-9.2.1">9.2.1</a>. Status Codes for Use in 'propstat' Element .........<a href="#page-44">44</a> + <a href="#section-9.2.2">9.2.2</a>. Example - PROPPATCH ................................<a href="#page-45">45</a> + <a href="#section-9.3">9.3</a>. MKCOL Method ..............................................<a href="#page-46">46</a> + <a href="#section-9.3.1">9.3.1</a>. MKCOL Status Codes .................................<a href="#page-47">47</a> + <a href="#section-9.3.2">9.3.2</a>. Example - MKCOL ....................................<a href="#page-47">47</a> + <a href="#section-9.4">9.4</a>. GET, HEAD for Collections .................................<a href="#page-48">48</a> + <a href="#section-9.5">9.5</a>. POST for Collections ......................................<a href="#page-48">48</a> + <a href="#section-9.6">9.6</a>. DELETE Requirements .......................................<a href="#page-48">48</a> + <a href="#section-9.6.1">9.6.1</a>. DELETE for Collections .............................<a href="#page-49">49</a> + <a href="#section-9.6.2">9.6.2</a>. Example - DELETE ...................................<a href="#page-49">49</a> + <a href="#section-9.7">9.7</a>. PUT Requirements ..........................................<a href="#page-50">50</a> + <a href="#section-9.7.1">9.7.1</a>. PUT for Non-Collection Resources ...................<a href="#page-50">50</a> + <a href="#section-9.7.2">9.7.2</a>. PUT for Collections ................................<a href="#page-51">51</a> + <a href="#section-9.8">9.8</a>. COPY Method ...............................................<a href="#page-51">51</a> + <a href="#section-9.8.1">9.8.1</a>. COPY for Non-collection Resources ..................<a href="#page-51">51</a> + <a href="#section-9.8.2">9.8.2</a>. COPY for Properties ................................<a href="#page-52">52</a> + <a href="#section-9.8.3">9.8.3</a>. COPY for Collections ...............................<a href="#page-52">52</a> + <a href="#section-9.8.4">9.8.4</a>. COPY and Overwriting Destination Resources .........<a href="#page-53">53</a> + <a href="#section-9.8.5">9.8.5</a>. Status Codes .......................................<a href="#page-54">54</a> + <a href="#section-9.8.6">9.8.6</a>. Example - COPY with Overwrite ......................<a href="#page-55">55</a> + <a href="#section-9.8.7">9.8.7</a>. Example - COPY with No Overwrite ...................<a href="#page-55">55</a> + <a href="#section-9.8.8">9.8.8</a>. Example - COPY of a Collection .....................<a href="#page-56">56</a> + <a href="#section-9.9">9.9</a>. MOVE Method ...............................................<a href="#page-56">56</a> + <a href="#section-9.9.1">9.9.1</a>. MOVE for Properties ................................<a href="#page-57">57</a> + <a href="#section-9.9.2">9.9.2</a>. MOVE for Collections ...............................<a href="#page-57">57</a> + <a href="#section-9.9.3">9.9.3</a>. MOVE and the Overwrite Header ......................<a href="#page-58">58</a> + <a href="#section-9.9.4">9.9.4</a>. Status Codes .......................................<a href="#page-59">59</a> + <a href="#section-9.9.5">9.9.5</a>. Example - MOVE of a Non-Collection .................<a href="#page-60">60</a> + <a href="#section-9.9.6">9.9.6</a>. Example - MOVE of a Collection .....................<a href="#page-60">60</a> + <a href="#section-9.10">9.10</a>. LOCK Method ..............................................<a href="#page-61">61</a> + <a href="#section-9.10.1">9.10.1</a>. Creating a Lock on an Existing Resource ...........<a href="#page-61">61</a> + <a href="#section-9.10.2">9.10.2</a>. Refreshing Locks ..................................<a href="#page-62">62</a> + <a href="#section-9.10.3">9.10.3</a>. Depth and Locking .................................<a href="#page-62">62</a> + <a href="#section-9.10.4">9.10.4</a>. Locking Unmapped URLs .............................<a href="#page-63">63</a> + <a href="#section-9.10.5">9.10.5</a>. Lock Compatibility Table ..........................<a href="#page-63">63</a> + <a href="#section-9.10.6">9.10.6</a>. LOCK Responses ....................................<a href="#page-63">63</a> + <a href="#section-9.10.7">9.10.7</a>. Example - Simple Lock Request .....................<a href="#page-64">64</a> + <a href="#section-9.10.8">9.10.8</a>. Example - Refreshing a Write Lock .................<a href="#page-65">65</a> + <a href="#section-9.10.9">9.10.9</a>. Example - Multi-Resource Lock Request .............<a href="#page-66">66</a> + <a href="#section-9.11">9.11</a>. UNLOCK Method ............................................<a href="#page-68">68</a> + <a href="#section-9.11.1">9.11.1</a>. Status Codes ......................................<a href="#page-68">68</a> + + + +<span class="grey">Dusseault Standards Track [Page 3]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-4" id="page-4" href="#page-4" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + <a href="#section-9.11.2">9.11.2</a>. Example - UNLOCK ..................................<a href="#page-69">69</a> + <a href="#section-10">10</a>. HTTP Headers for Distributed Authoring ........................<a href="#page-69">69</a> + <a href="#section-10.1">10.1</a>. DAV Header ...............................................<a href="#page-69">69</a> + <a href="#section-10.2">10.2</a>. Depth Header .............................................<a href="#page-70">70</a> + <a href="#section-10.3">10.3</a>. Destination Header .......................................<a href="#page-71">71</a> + <a href="#section-10.4">10.4</a>. If Header ................................................<a href="#page-72">72</a> + <a href="#section-10.4.1">10.4.1</a>. Purpose ...........................................<a href="#page-72">72</a> + <a href="#section-10.4.2">10.4.2</a>. Syntax ............................................<a href="#page-72">72</a> + <a href="#section-10.4.3">10.4.3</a>. List Evaluation ...................................<a href="#page-73">73</a> + <a href="#section-10.4.4">10.4.4</a>. Matching State Tokens and ETags ...................<a href="#page-74">74</a> + <a href="#section-10.4.5">10.4.5</a>. If Header and Non-DAV-Aware Proxies ...............<a href="#page-74">74</a> + <a href="#section-10.4.6">10.4.6</a>. Example - No-tag Production .......................<a href="#page-75">75</a> + <a href="#section-10.4.7">10.4.7</a>. Example - Using "Not" with No-tag Production ......<a href="#page-75">75</a> + 10.4.8. Example - Causing a Condition to Always + Evaluate to True ..................................<a href="#page-75">75</a> + <a href="#section-10.4.9">10.4.9</a>. Example - Tagged List If Header in COPY ...........<a href="#page-76">76</a> + 10.4.10. Example - Matching Lock Tokens with + Collection Locks .................................<a href="#page-76">76</a> + <a href="#section-10.4.11">10.4.11</a>. Example - Matching ETags on Unmapped URLs ........<a href="#page-76">76</a> + <a href="#section-10.5">10.5</a>. Lock-Token Header ........................................<a href="#page-77">77</a> + <a href="#section-10.6">10.6</a>. Overwrite Header .........................................<a href="#page-77">77</a> + <a href="#section-10.7">10.7</a>. Timeout Request Header ...................................<a href="#page-78">78</a> + <a href="#section-11">11</a>. Status Code Extensions to HTTP/1.1 ............................<a href="#page-78">78</a> + <a href="#section-11.1">11.1</a>. 207 Multi-Status .........................................<a href="#page-78">78</a> + <a href="#section-11.2">11.2</a>. 422 Unprocessable Entity .................................<a href="#page-78">78</a> + <a href="#section-11.3">11.3</a>. 423 Locked ...............................................<a href="#page-78">78</a> + <a href="#section-11.4">11.4</a>. 424 Failed Dependency ....................................<a href="#page-79">79</a> + <a href="#section-11.5">11.5</a>. 507 Insufficient Storage .................................<a href="#page-79">79</a> + <a href="#section-12">12</a>. Use of HTTP Status Codes ......................................<a href="#page-79">79</a> + <a href="#section-12.1">12.1</a>. 412 Precondition Failed ..................................<a href="#page-79">79</a> + <a href="#section-12.2">12.2</a>. 414 Request-URI Too Long .................................<a href="#page-79">79</a> + <a href="#section-13">13</a>. Multi-Status Response .........................................<a href="#page-80">80</a> + <a href="#section-13.1">13.1</a>. Response Headers .........................................<a href="#page-80">80</a> + <a href="#section-13.2">13.2</a>. Handling Redirected Child Resources ......................<a href="#page-81">81</a> + <a href="#section-13.3">13.3</a>. Internal Status Codes ....................................<a href="#page-81">81</a> + <a href="#section-14">14</a>. XML Element Definitions .......................................<a href="#page-81">81</a> + <a href="#section-14.1">14.1</a>. activelock XML Element ...................................<a href="#page-81">81</a> + <a href="#section-14.2">14.2</a>. allprop XML Element ......................................<a href="#page-82">82</a> + <a href="#section-14.3">14.3</a>. collection XML Element ...................................<a href="#page-82">82</a> + <a href="#section-14.4">14.4</a>. depth XML Element ........................................<a href="#page-82">82</a> + <a href="#section-14.5">14.5</a>. error XML Element ........................................<a href="#page-82">82</a> + <a href="#section-14.6">14.6</a>. exclusive XML Element ....................................<a href="#page-83">83</a> + <a href="#section-14.7">14.7</a>. href XML Element .........................................<a href="#page-83">83</a> + <a href="#section-14.8">14.8</a>. include XML Element ......................................<a href="#page-83">83</a> + <a href="#section-14.9">14.9</a>. location XML Element .....................................<a href="#page-83">83</a> + <a href="#section-14.10">14.10</a>. lockentry XML Element ...................................<a href="#page-84">84</a> + <a href="#section-14.11">14.11</a>. lockinfo XML Element ....................................<a href="#page-84">84</a> + <a href="#section-14.12">14.12</a>. lockroot XML Element ....................................<a href="#page-84">84</a> + + + +<span class="grey">Dusseault Standards Track [Page 4]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-5" id="page-5" href="#page-5" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + <a href="#section-14.13">14.13</a>. lockscope XML Element ...................................<a href="#page-84">84</a> + <a href="#section-14.14">14.14</a>. locktoken XML Element ...................................<a href="#page-85">85</a> + <a href="#section-14.15">14.15</a>. locktype XML Element ....................................<a href="#page-85">85</a> + <a href="#section-14.16">14.16</a>. multistatus XML Element .................................<a href="#page-85">85</a> + <a href="#section-14.17">14.17</a>. owner XML Element .......................................<a href="#page-85">85</a> + <a href="#section-14.18">14.18</a>. prop XML Element ........................................<a href="#page-86">86</a> + <a href="#section-14.19">14.19</a>. propertyupdate XML Element ..............................<a href="#page-86">86</a> + <a href="#section-14.20">14.20</a>. propfind XML Element ....................................<a href="#page-86">86</a> + <a href="#section-14.21">14.21</a>. propname XML Element ....................................<a href="#page-87">87</a> + <a href="#section-14.22">14.22</a>. propstat XML Element ....................................<a href="#page-87">87</a> + <a href="#section-14.23">14.23</a>. remove XML Element ......................................<a href="#page-87">87</a> + <a href="#section-14.24">14.24</a>. response XML Element ....................................<a href="#page-88">88</a> + <a href="#section-14.25">14.25</a>. responsedescription XML Element .........................<a href="#page-88">88</a> + <a href="#section-14.26">14.26</a>. set XML Element .........................................<a href="#page-88">88</a> + <a href="#section-14.27">14.27</a>. shared XML Element ......................................<a href="#page-89">89</a> + <a href="#section-14.28">14.28</a>. status XML Element ......................................<a href="#page-89">89</a> + <a href="#section-14.29">14.29</a>. timeout XML Element .....................................<a href="#page-89">89</a> + <a href="#section-14.30">14.30</a>. write XML Element .......................................<a href="#page-89">89</a> + <a href="#section-15">15</a>. DAV Properties ................................................<a href="#page-90">90</a> + <a href="#section-16">16</a>. Precondition/Postcondition XML Elements .......................<a href="#page-98">98</a> + <a href="#section-17">17</a>. XML Extensibility in DAV .....................................<a href="#page-101">101</a> + <a href="#section-18">18</a>. DAV Compliance Classes .......................................<a href="#page-103">103</a> + <a href="#section-18.1">18.1</a>. Class 1 .................................................<a href="#page-103">103</a> + <a href="#section-18.2">18.2</a>. Class 2 .................................................<a href="#page-103">103</a> + <a href="#section-18.3">18.3</a>. Class 3 .................................................<a href="#page-103">103</a> + <a href="#section-19">19</a>. Internationalization Considerations ..........................<a href="#page-104">104</a> + <a href="#section-20">20</a>. Security Considerations ......................................<a href="#page-105">105</a> + <a href="#section-20.1">20.1</a>. Authentication of Clients ...............................<a href="#page-105">105</a> + <a href="#section-20.2">20.2</a>. Denial of Service .......................................<a href="#page-106">106</a> + <a href="#section-20.3">20.3</a>. Security through Obscurity ..............................<a href="#page-106">106</a> + <a href="#section-20.4">20.4</a>. Privacy Issues Connected to Locks .......................<a href="#page-106">106</a> + <a href="#section-20.5">20.5</a>. Privacy Issues Connected to Properties ..................<a href="#page-107">107</a> + <a href="#section-20.6">20.6</a>. Implications of XML Entities ............................<a href="#page-107">107</a> + <a href="#section-20.7">20.7</a>. Risks Connected with Lock Tokens ........................<a href="#page-108">108</a> + <a href="#section-20.8">20.8</a>. Hosting Malicious Content ...............................<a href="#page-108">108</a> + <a href="#section-21">21</a>. IANA Considerations ..........................................<a href="#page-109">109</a> + <a href="#section-21.1">21.1</a>. New URI Schemes .........................................<a href="#page-109">109</a> + <a href="#section-21.2">21.2</a>. XML Namespaces ..........................................<a href="#page-109">109</a> + <a href="#section-21.3">21.3</a>. Message Header Fields ...................................<a href="#page-109">109</a> + <a href="#section-21.3.1">21.3.1</a>. DAV ..............................................<a href="#page-109">109</a> + <a href="#section-21.3.2">21.3.2</a>. Depth ............................................<a href="#page-110">110</a> + <a href="#section-21.3.3">21.3.3</a>. Destination ......................................<a href="#page-110">110</a> + <a href="#section-21.3.4">21.3.4</a>. If ...............................................<a href="#page-110">110</a> + <a href="#section-21.3.5">21.3.5</a>. Lock-Token .......................................<a href="#page-110">110</a> + <a href="#section-21.3.6">21.3.6</a>. Overwrite ........................................<a href="#page-111">111</a> + <a href="#section-21.3.7">21.3.7</a>. Timeout ..........................................<a href="#page-111">111</a> + <a href="#section-21.4">21.4</a>. HTTP Status Codes .......................................<a href="#page-111">111</a> + <a href="#section-22">22</a>. Acknowledgements .............................................<a href="#page-112">112</a> + + + +<span class="grey">Dusseault Standards Track [Page 5]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-6" id="page-6" href="#page-6" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + <a href="#section-23">23</a>. Contributors to This Specification ...........................<a href="#page-113">113</a> + <a href="#section-24">24</a>. Authors of <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a> ..........................................<a href="#page-113">113</a> + <a href="#section-25">25</a>. References ...................................................<a href="#page-114">114</a> + <a href="#section-25.1">25.1</a>. Normative References.....................................<a href="#page-114">114</a> + <a href="#section-25.2">25.2</a>. Informative References ..................................<a href="#page-115">115</a> + <a href="#appendix-A">Appendix A</a>. Notes on Processing XML Elements ....................<a href="#page-117">117</a> + <a href="#appendix-A.1">A.1</a>. Notes on Empty XML Elements ..............................<a href="#page-117">117</a> + <a href="#appendix-A.2">A.2</a>. Notes on Illegal XML Processing ..........................<a href="#page-117">117</a> + <a href="#appendix-A.3">A.3</a>. Example - XML Syntax Error ...............................<a href="#page-117">117</a> + <a href="#appendix-A.4">A.4</a>. Example - Unexpected XML Element .........................<a href="#page-118">118</a> + <a href="#appendix-B">Appendix B</a>. Notes on HTTP Client Compatibility ...................<a href="#page-119">119</a> + <a href="#appendix-C">Appendix C</a>. The 'opaquelocktoken' Scheme and URIs ................<a href="#page-120">120</a> + <a href="#appendix-D">Appendix D</a>. Lock-null Resources ..................................<a href="#page-120">120</a> + <a href="#appendix-D.1">D.1</a>. Guidance for Clients Using LOCK to Create Resources ......<a href="#page-121">121</a> + <a href="#appendix-E">Appendix E</a>. Guidance for Clients Desiring to Authenticate ........<a href="#page-121">121</a> + <a href="#appendix-F">Appendix F</a>. Summary of Changes from <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a> .....................<a href="#page-123">123</a> + <a href="#appendix-F.1">F.1</a>. Changes for Both Client and Server Implementations .......<a href="#page-123">123</a> + <a href="#appendix-F.2">F.2</a>. Changes for Server Implementations .......................<a href="#page-125">125</a> + <a href="#appendix-F.3">F.3</a>. Other Changes ............................................<a href="#page-126">126</a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 6]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-7" id="page-7" href="#page-7" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h2"><h2><a class="selflink" name="section-1" href="#section-1">1</a>. Introduction</h2></span> + + This document describes an extension to the HTTP/1.1 protocol that + allows clients to perform remote Web content authoring operations. + This extension provides a coherent set of methods, headers, request + entity body formats, and response entity body formats that provide + operations for: + + Properties: The ability to create, remove, and query information + about Web pages, such as their authors, creation dates, etc. + + Collections: The ability to create sets of documents and to retrieve + a hierarchical membership listing (like a directory listing in a file + system). + + Locking: The ability to keep more than one person from working on a + document at the same time. This prevents the "lost update problem", + in which modifications are lost as first one author, then another, + writes changes without merging the other author's changes. + + Namespace Operations: The ability to instruct the server to copy and + move Web resources, operations that change the mapping from URLs to + resources. + + Requirements and rationale for these operations are described in a + companion document, "Requirements for a Distributed Authoring and + Versioning Protocol for the World Wide Web" [<a href="http://tools.ietf.org/html/rfc2291" title="" requirements for a distributed authoring and versioning protocol the world wide web>RFC2291</a>]. + + This document does not specify the versioning operations suggested by + [<a href="http://tools.ietf.org/html/rfc2291" title="" requirements for a distributed authoring and versioning protocol the world wide web>RFC2291</a>]. That work was done in a separate document, "Versioning + Extensions to WebDAV" [<a href="http://tools.ietf.org/html/rfc3253" title="" versioning extensions to webdav distributed authoring and>RFC3253</a>]. + + The sections below provide a detailed introduction to various WebDAV + abstractions: resource properties (<a href="#section-4">Section 4</a>), collections of + resources (<a href="#section-5">Section 5</a>), locks (<a href="#section-6">Section 6</a>) in general, and write locks + (<a href="#section-7">Section 7</a>) specifically. + + These abstractions are manipulated by the WebDAV-specific HTTP + methods (<a href="#section-9">Section 9</a>) and the extra HTTP headers (<a href="#section-10">Section 10</a>) used with + WebDAV methods. General considerations for handling HTTP requests + and responses in WebDAV are found in <a href="#section-8">Section 8</a>. + + While the status codes provided by HTTP/1.1 are sufficient to + describe most error conditions encountered by WebDAV methods, there + are some errors that do not fall neatly into the existing categories. + This specification defines extra status codes developed for WebDAV + methods (<a href="#section-11">Section 11</a>) and describes existing HTTP status codes + (<a href="#section-12">Section 12</a>) as used in WebDAV. Since some WebDAV methods may + + + +<span class="grey">Dusseault Standards Track [Page 7]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-8" id="page-8" href="#page-8" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + operate over many resources, the Multi-Status response (<a href="#section-13">Section 13</a>) + has been introduced to return status information for multiple + resources. Finally, this version of WebDAV introduces precondition + and postcondition (<a href="#section-16">Section 16</a>) XML elements in error response bodies. + + WebDAV uses XML ([<a href="#ref-REC-XML" title="" extensible markup language edition>REC-XML</a>]) for property names and some values, and + also uses XML to marshal complicated requests and responses. This + specification contains DTD and text definitions of all properties + (<a href="#section-15">Section 15</a>) and all other XML elements (<a href="#section-14">Section 14</a>) used in + marshalling. WebDAV includes a few special rules on extending WebDAV + XML marshalling in backwards-compatible ways (<a href="#section-17">Section 17</a>). + + Finishing off the specification are sections on what it means for a + resource to be compliant with this specification (<a href="#section-18">Section 18</a>), on + internationalization support (<a href="#section-19">Section 19</a>), and on security + (<a href="#section-20">Section 20</a>). + +<span class="h2"><h2><a class="selflink" name="section-2" href="#section-2">2</a>. Notational Conventions</h2></span> + + Since this document describes a set of extensions to the HTTP/1.1 + protocol, the augmented BNF used herein to describe protocol elements + is exactly the same as described in <a href="http://tools.ietf.org/html/rfc2616#section-2.1">Section 2.1 of [RFC2616]</a>, + including the rules about implied linear whitespace. Since this + augmented BNF uses the basic production rules provided in <a href="http://tools.ietf.org/html/rfc2616#section-2.2">Section 2.2 + of [RFC2616]</a>, these rules apply to this document as well. Note this + is not the standard BNF syntax used in other RFCs. + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [<a href="http://tools.ietf.org/html/rfc2119" title="" key words for use in rfcs to indicate requirement levels>RFC2119</a>]. + + Note that in natural language, a property like the "creationdate" + property in the "DAV:" XML namespace is sometimes referred to as + "DAV:creationdate" for brevity. + +<span class="h2"><h2><a class="selflink" name="section-3" href="#section-3">3</a>. Terminology</h2></span> + + URI/URL - A Uniform Resource Identifier and Uniform Resource Locator, + respectively. These terms (and the distinction between them) are + defined in [<a href="http://tools.ietf.org/html/rfc3986" title="" uniform resource identifier generic syntax>RFC3986</a>]. + + URI/URL Mapping - A relation between an absolute URI and a resource. + Since a resource can represent items that are not network + retrievable, as well as those that are, it is possible for a resource + to have zero, one, or many URI mappings. Mapping a resource to an + "http" scheme URI makes it possible to submit HTTP protocol requests + to the resource using the URI. + + + + +<span class="grey">Dusseault Standards Track [Page 8]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-9" id="page-9" href="#page-9" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Path Segment - Informally, the characters found between slashes ("/") + in a URI. Formally, as defined in <a href="http://tools.ietf.org/html/rfc3986#section-3.3">Section 3.3 of [RFC3986]</a>. + + Collection - Informally, a resource that also acts as a container of + references to child resources. Formally, a resource that contains a + set of mappings between path segments and resources and meets the + requirements defined in <a href="#section-5">Section 5</a>. + + Internal Member (of a Collection) - Informally, a child resource of a + collection. Formally, a resource referenced by a path segment + mapping contained in the collection. + + Internal Member URL (of a Collection) - A URL of an internal member, + consisting of the URL of the collection (including trailing slash) + plus the path segment identifying the internal member. + + Member (of a Collection) - Informally, a "descendant" of a + collection. Formally, an internal member of the collection, or, + recursively, a member of an internal member. + + Member URL (of a Collection) - A URL that is either an internal + member URL of the collection itself, or is an internal member URL of + a member of that collection. + + Property - A name/value pair that contains descriptive information + about a resource. + + Live Property - A property whose semantics and syntax are enforced by + the server. For example, the live property DAV:getcontentlength has + its value, the length of the entity returned by a GET request, + automatically calculated by the server. + + Dead Property - A property whose semantics and syntax are not + enforced by the server. The server only records the value of a dead + property; the client is responsible for maintaining the consistency + of the syntax and semantics of a dead property. + + Principal - A distinct human or computational actor that initiates + access to network resources. + + State Token - A URI that represents a state of a resource. Lock + tokens are the only state tokens defined in this specification. + + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 9]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-10" id="page-10" href="#page-10" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h2"><h2><a class="selflink" name="section-4" href="#section-4">4</a>. Data Model for Resource Properties</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-4.1" href="#section-4.1">4.1</a>. The Resource Property Model</h3></span> + + Properties are pieces of data that describe the state of a resource. + Properties are data about data. + + Properties are used in distributed authoring environments to provide + for efficient discovery and management of resources. For example, a + 'subject' property might allow for the indexing of all resources by + their subject, and an 'author' property might allow for the discovery + of what authors have written which documents. + + The DAV property model consists of name/value pairs. The name of a + property identifies the property's syntax and semantics, and provides + an address by which to refer to its syntax and semantics. + + There are two categories of properties: "live" and "dead". A live + property has its syntax and semantics enforced by the server. Live + properties include cases where a) the value of a property is + protected and maintained by the server, and b) the value of the + property is maintained by the client, but the server performs syntax + checking on submitted values. All instances of a given live property + MUST comply with the definition associated with that property name. + A dead property has its syntax and semantics enforced by the client; + the server merely records the value of the property verbatim. + +<span class="h3"><h3><a class="selflink" name="section-4.2" href="#section-4.2">4.2</a>. Properties and HTTP Headers</h3></span> + + Properties already exist, in a limited sense, in HTTP message + headers. However, in distributed authoring environments, a + relatively large number of properties are needed to describe the + state of a resource, and setting/returning them all through HTTP + headers is inefficient. Thus, a mechanism is needed that allows a + principal to identify a set of properties in which the principal is + interested and to set or retrieve just those properties. + +<span class="h3"><h3><a class="selflink" name="section-4.3" href="#section-4.3">4.3</a>. Property Values</h3></span> + + The value of a property is always a (well-formed) XML fragment. + + XML has been chosen because it is a flexible, self-describing, + structured data format that supports rich schema definitions, and + because of its support for multiple character sets. XML's self- + describing nature allows any property's value to be extended by + adding elements. Clients will not break when they encounter + extensions because they will still have the data specified in the + original schema and MUST ignore elements they do not understand. + + + +<span class="grey">Dusseault Standards Track [Page 10]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-11" id="page-11" href="#page-11" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + XML's support for multiple character sets allows any human-readable + property to be encoded and read in a character set familiar to the + user. XML's support for multiple human languages, using the "xml: + lang" attribute, handles cases where the same character set is + employed by multiple human languages. Note that xml:lang scope is + recursive, so an xml:lang attribute on any element containing a + property name element applies to the property value unless it has + been overridden by a more locally scoped attribute. Note that a + property only has one value, in one language (or language MAY be left + undefined); a property does not have multiple values in different + languages or a single value in multiple languages. + + A property is always represented with an XML element consisting of + the property name, called the "property name element". The simplest + example is an empty property, which is different from a property that + does not exist: + + <R:title xmlns:R="http://www.example.com/ns/"></R:title> + + The value of the property appears inside the property name element. + The value may be any kind of well-formed XML content, including both + text-only and mixed content. Servers MUST preserve the following XML + Information Items (using the terminology from [<a href="#ref-REC-XML-INFOSET" title="" xml information set edition>REC-XML-INFOSET</a>]) in + storage and transmission of dead properties: + + For the property name Element Information Item itself: + + [namespace name] + + [local name] + + [<a name="ref-attributes" id="ref-attributes">attributes</a>] named "xml:lang" or any such attribute in scope + + [<a name="ref-children" id="ref-children">children</a>] of type element or character + + On all Element Information Items in the property value: + + [namespace name] + + [local name] + + [<a name="ref-attributes" id="ref-attributes">attributes</a>] + + [<a href="#ref-children">children</a>] of type element or character + + + + + + + +<span class="grey">Dusseault Standards Track [Page 11]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-12" id="page-12" href="#page-12" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + On Attribute Information Items in the property value: + + [namespace name] + + [local name] + + [normalized value] + + On Character Information Items in the property value: + + [character code] + + Since prefixes are used in some XML vocabularies (XPath and XML + Schema, for example), servers SHOULD preserve, for any Information + Item in the value: + + [<a name="ref-prefix" id="ref-prefix">prefix</a>] + + XML Infoset attributes not listed above MAY be preserved by the + server, but clients MUST NOT rely on them being preserved. The above + rules would also apply by default to live properties, unless defined + otherwise. + + Servers MUST ignore the XML attribute xml:space if present and never + use it to change whitespace handling. Whitespace in property values + is significant. + +<span class="h4"><h4><a class="selflink" name="section-4.3.1" href="#section-4.3.1">4.3.1</a>. Example - Property with Mixed Content</h4></span> + + Consider a dead property 'author' created by the client as follows: + + <D:prop xml:lang="en" xmlns:D="DAV:"> + <x:author xmlns:x='http://example.com/ns'> + <x:name>Jane Doe</x:name> + <!-- Jane's contact info --> + <x:uri type='email' + added='2005-11-26'>mailto:jane.doe@example.com</x:uri> + <x:uri type='web' + added='2005-11-27'>http://www.example.com</x:uri> + <x:notes xmlns:h='http://www.w3.org/1999/xhtml'> + Jane has been working way <h:em>too</h:em> long on the + long-awaited revision of <![CDATA[<<a href="http://tools.ietf.org/html/rfc2518">RFC2518</a>>]]>. + </x:notes> + </x:author> + </D:prop> + + + + + + +<span class="grey">Dusseault Standards Track [Page 12]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-13" id="page-13" href="#page-13" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + When this property is requested, a server might return: + + <D:prop xmlns:D='DAV:'><author + xml:lang='en' + xmlns:x='http://example.com/ns' + xmlns='http://example.com/ns' + xmlns:h='http://www.w3.org/1999/xhtml'> + <x:name>Jane Doe</x:name> + <x:uri added="2005-11-26" type="email" + >mailto:jane.doe@example.com</x:uri> + <x:uri added="2005-11-27" type="web" + >http://www.example.com</x:uri> + <x:notes> + Jane has been working way <h:em>too</h:em> long on the + long-awaited revision of &lt;<a href="http://tools.ietf.org/html/rfc2518">RFC2518</a>&gt;. + </x:notes> + </author> + </D:prop> + + Note in this example: + + o The [<a href="#ref-prefix">prefix</a>] for the property name itself was not preserved, being + non-significant, whereas all other [<a href="#ref-prefix">prefix</a>] values have been + preserved, + + o attribute values have been rewritten with double quotes instead of + single quotes (quoting style is not significant), and attribute + order has not been preserved, + + o the xml:lang attribute has been returned on the property name + element itself (it was in scope when the property was set, but the + exact position in the response is not considered significant as + long as it is in scope), + + o whitespace between tags has been preserved everywhere (whitespace + between attributes not so), + + o CDATA encapsulation was replaced with character escaping (the + reverse would also be legal), + + o the comment item was stripped (as would have been a processing + instruction item). + + Implementation note: there are cases such as editing scenarios where + clients may require that XML content is preserved character by + character (such as attribute ordering or quoting style). In this + case, clients should consider using a text-only property value by + escaping all characters that have a special meaning in XML parsing. + + + +<span class="grey">Dusseault Standards Track [Page 13]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-14" id="page-14" href="#page-14" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-4.4" href="#section-4.4">4.4</a>. Property Names</h3></span> + + A property name is a universally unique identifier that is associated + with a schema that provides information about the syntax and + semantics of the property. + + Because a property's name is universally unique, clients can depend + upon consistent behavior for a particular property across multiple + resources, on the same and across different servers, so long as that + property is "live" on the resources in question, and the + implementation of the live property is faithful to its definition. + + The XML namespace mechanism, which is based on URIs ([<a href="http://tools.ietf.org/html/rfc3986" title="" uniform resource identifier generic syntax>RFC3986</a>]), is + used to name properties because it prevents namespace collisions and + provides for varying degrees of administrative control. + + The property namespace is flat; that is, no hierarchy of properties + is explicitly recognized. Thus, if a property A and a property A/B + exist on a resource, there is no recognition of any relationship + between the two properties. It is expected that a separate + specification will eventually be produced that will address issues + relating to hierarchical properties. + + Finally, it is not possible to define the same property twice on a + single resource, as this would cause a collision in the resource's + property namespace. + +<span class="h3"><h3><a class="selflink" name="section-4.5" href="#section-4.5">4.5</a>. Source Resources and Output Resources</h3></span> + + Some HTTP resources are dynamically generated by the server. For + these resources, there presumably exists source code somewhere + governing how that resource is generated. The relationship of source + files to output HTTP resources may be one to one, one to many, many + to one, or many to many. There is no mechanism in HTTP to determine + whether a resource is even dynamic, let alone where its source files + exist or how to author them. Although this problem would usefully be + solved, interoperable WebDAV implementations have been widely + deployed without actually solving this problem, by dealing only with + static resources. Thus, the source vs. output problem is not solved + in this specification and has been deferred to a separate document. + +<span class="h2"><h2><a class="selflink" name="section-5" href="#section-5">5</a>. Collections of Web Resources</h2></span> + + This section provides a description of a type of Web resource, the + collection, and discusses its interactions with the HTTP URL + namespace and with HTTP methods. The purpose of a collection + resource is to model collection-like objects (e.g., file system + directories) within a server's namespace. + + + +<span class="grey">Dusseault Standards Track [Page 14]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-15" id="page-15" href="#page-15" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + All DAV-compliant resources MUST support the HTTP URL namespace model + specified herein. + +<span class="h3"><h3><a class="selflink" name="section-5.1" href="#section-5.1">5.1</a>. HTTP URL Namespace Model</h3></span> + + The HTTP URL namespace is a hierarchical namespace where the + hierarchy is delimited with the "/" character. + + An HTTP URL namespace is said to be consistent if it meets the + following conditions: for every URL in the HTTP hierarchy there + exists a collection that contains that URL as an internal member URL. + The root, or top-level collection of the namespace under + consideration, is exempt from the previous rule. The top-level + collection of the namespace under consideration is not necessarily + the collection identified by the absolute path '/' -- it may be + identified by one or more path segments (e.g., /servlets/webdav/...) + + Neither HTTP/1.1 nor WebDAV requires that the entire HTTP URL + namespace be consistent -- a WebDAV-compatible resource may not have + a parent collection. However, certain WebDAV methods are prohibited + from producing results that cause namespace inconsistencies. + + As is implicit in [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>] and [<a href="http://tools.ietf.org/html/rfc3986" title="" uniform resource identifier generic syntax>RFC3986</a>], any resource, including + collection resources, MAY be identified by more than one URI. For + example, a resource could be identified by multiple HTTP URLs. + +<span class="h3"><h3><a class="selflink" name="section-5.2" href="#section-5.2">5.2</a>. Collection Resources</h3></span> + + Collection resources differ from other resources in that they also + act as containers. Some HTTP methods apply only to a collection, but + some apply to some or all of the resources inside the container + defined by the collection. When the scope of a method is not clear, + the client can specify what depth to apply. Depth can be either zero + levels (only the collection), one level (the collection and directly + contained resources), or infinite levels (the collection and all + contained resources recursively). + + A collection's state consists of at least a set of mappings between + path segments and resources, and a set of properties on the + collection itself. In this document, a resource B will be said to be + contained in the collection resource A if there is a path segment + mapping that maps to B and that is contained in A. A collection MUST + contain at most one mapping for a given path segment, i.e., it is + illegal to have the same path segment mapped to more than one + resource. + + + + + + +<span class="grey">Dusseault Standards Track [Page 15]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-16" id="page-16" href="#page-16" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Properties defined on collections behave exactly as do properties on + non-collection resources. A collection MAY have additional state + such as entity bodies returned by GET. + + For all WebDAV-compliant resources A and B, identified by URLs "U" + and "V", respectively, such that "V" is equal to "U/SEGMENT", A MUST + be a collection that contains a mapping from "SEGMENT" to B. So, if + resource B with URL "http://example.com/bar/blah" is WebDAV compliant + and if resource A with URL "http://example.com/bar/" is WebDAV + compliant, then resource A must be a collection and must contain + exactly one mapping from "blah" to B. + + Although commonly a mapping consists of a single segment and a + resource, in general, a mapping consists of a set of segments and a + resource. This allows a server to treat a set of segments as + equivalent (i.e., either all of the segments are mapped to the same + resource, or none of the segments are mapped to a resource). For + example, a server that performs case-folding on segments will treat + the segments "ab", "Ab", "aB", and "AB" as equivalent. A client can + then use any of these segments to identify the resource. Note that a + PROPFIND result will select one of these equivalent segments to + identify the mapping, so there will be one PROPFIND response element + per mapping, not one per segment in the mapping. + + Collection resources MAY have mappings to non-WebDAV-compliant + resources in the HTTP URL namespace hierarchy but are not required to + do so. For example, if resource X with URL + "http://example.com/bar/blah" is not WebDAV compliant and resource A + with "URL http://example.com/bar/" identifies a WebDAV collection, + then A may or may not have a mapping from "blah" to X. + + If a WebDAV-compliant resource has no WebDAV-compliant internal + members in the HTTP URL namespace hierarchy, then the WebDAV- + compliant resource is not required to be a collection. + + There is a standing convention that when a collection is referred to + by its name without a trailing slash, the server MAY handle the + request as if the trailing slash were present. In this case, it + SHOULD return a Content-Location header in the response, pointing to + the URL ending with the "/". For example, if a client invokes a + method on http://example.com/blah (no trailing slash), the server may + respond as if the operation were invoked on http://example.com/blah/ + (trailing slash), and should return a Content-Location header with + the value http://example.com/blah/. Wherever a server produces a URL + referring to a collection, the server SHOULD include the trailing + slash. In general, clients SHOULD use the trailing slash form of + collection names. If clients do not use the trailing slash form the + client needs to be prepared to see a redirect response. Clients will + + + +<span class="grey">Dusseault Standards Track [Page 16]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-17" id="page-17" href="#page-17" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + find the DAV:resourcetype property more reliable than the URL to find + out if a resource is a collection. + + Clients MUST be able to support the case where WebDAV resources are + contained inside non-WebDAV resources. For example, if an OPTIONS + response from "http://example.com/servlet/dav/collection" indicates + WebDAV support, the client cannot assume that + "http://example.com/servlet/dav/" or its parent necessarily are + WebDAV collections. + + A typical scenario in which mapped URLs do not appear as members of + their parent collection is the case where a server allows links or + redirects to non-WebDAV resources. For instance, "/col/link" might + not appear as a member of "/col/", although the server would respond + with a 302 status to a GET request to "/col/link"; thus, the URL + "/col/link" would indeed be mapped. Similarly, a dynamically- + generated page might have a URL mapping from "/col/index.html", thus + this resource might respond with a 200 OK to a GET request yet not + appear as a member of "/col/". + + Some mappings to even WebDAV-compliant resources might not appear in + the parent collection. An example for this case are servers that + support multiple alias URLs for each WebDAV-compliant resource. A + server may implement case-insensitive URLs, thus "/col/a" and + "/col/A" identify the same resource, yet only either "a" or "A" is + reported upon listing the members of "/col". In cases where a server + treats a set of segments as equivalent, the server MUST expose only + one preferred segment per mapping, consistently chosen, in PROPFIND + responses. + +<span class="h2"><h2><a class="selflink" name="section-6" href="#section-6">6</a>. Locking</h2></span> + + The ability to lock a resource provides a mechanism for serializing + access to that resource. Using a lock, an authoring client can + provide a reasonable guarantee that another principal will not modify + a resource while it is being edited. In this way, a client can + prevent the "lost update" problem. + + This specification allows locks to vary over two client-specified + parameters, the number of principals involved (exclusive vs. shared) + and the type of access to be granted. This document defines locking + for only one access type, write. However, the syntax is extensible, + and permits the eventual specification of locking for other access + types. + + + + + + + +<span class="grey">Dusseault Standards Track [Page 17]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-18" id="page-18" href="#page-18" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-6.1" href="#section-6.1">6.1</a>. Lock Model</h3></span> + + This section provides a concise model for how locking behaves. Later + sections will provide more detail on some of the concepts and refer + back to these model statements. Normative statements related to LOCK + and UNLOCK method handling can be found in the sections on those + methods, whereas normative statements that cover any method are + gathered here. + + 1. A lock either directly or indirectly locks a resource. + + 2. A resource becomes directly locked when a LOCK request to a URL + of that resource creates a new lock. The "lock-root" of the new + lock is that URL. If at the time of the request, the URL is not + mapped to a resource, a new empty resource is created and + directly locked. + + 3. An exclusive lock (<a href="#section-6.2">Section 6.2</a>) conflicts with any other kind of + lock on the same resource, whether either lock is direct or + indirect. A server MUST NOT create conflicting locks on a + resource. + + 4. For a collection that is locked with a depth-infinity lock L, all + member resources are indirectly locked. Changes in membership of + such a collection affect the set of indirectly locked resources: + + * If a member resource is added to the collection, the new + member resource MUST NOT already have a conflicting lock, + because the new resource MUST become indirectly locked by L. + + * If a member resource stops being a member of the collection, + then the resource MUST no longer be indirectly locked by L. + + 5. Each lock is identified by a single globally unique lock token + (<a href="#section-6.5">Section 6.5</a>). + + 6. An UNLOCK request deletes the lock with the specified lock token. + After a lock is deleted, no resource is locked by that lock. + + 7. A lock token is "submitted" in a request when it appears in an + "If" header (<a href="#section-7">Section 7</a>, "Write Lock", discusses when token + submission is required for write locks). + + 8. If a request causes the lock-root of any lock to become an + unmapped URL, then the lock MUST also be deleted by that request. + + + + + + +<span class="grey">Dusseault Standards Track [Page 18]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-19" id="page-19" href="#page-19" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-6.2" href="#section-6.2">6.2</a>. Exclusive vs. Shared Locks</h3></span> + + The most basic form of lock is an exclusive lock. Exclusive locks + avoid having to deal with content change conflicts, without requiring + any coordination other than the methods described in this + specification. + + However, there are times when the goal of a lock is not to exclude + others from exercising an access right but rather to provide a + mechanism for principals to indicate that they intend to exercise + their access rights. Shared locks are provided for this case. A + shared lock allows multiple principals to receive a lock. Hence any + principal that has both access privileges and a valid lock can use + the locked resource. + + With shared locks, there are two trust sets that affect a resource. + The first trust set is created by access permissions. Principals who + are trusted, for example, may have permission to write to the + resource. Among those who have access permission to write to the + resource, the set of principals who have taken out a shared lock also + must trust each other, creating a (typically) smaller trust set + within the access permission write set. + + Starting with every possible principal on the Internet, in most + situations the vast majority of these principals will not have write + access to a given resource. Of the small number who do have write + access, some principals may decide to guarantee their edits are free + from overwrite conflicts by using exclusive write locks. Others may + decide they trust their collaborators will not overwrite their work + (the potential set of collaborators being the set of principals who + have write permission) and use a shared lock, which informs their + collaborators that a principal may be working on the resource. + + The WebDAV extensions to HTTP do not need to provide all of the + communications paths necessary for principals to coordinate their + activities. When using shared locks, principals may use any out-of- + band communication channel to coordinate their work (e.g., face-to- + face interaction, written notes, post-it notes on the screen, + telephone conversation, email, etc.) The intent of a shared lock is + to let collaborators know who else may be working on a resource. + + Shared locks are included because experience from Web-distributed + authoring systems has indicated that exclusive locks are often too + rigid. An exclusive lock is used to enforce a particular editing + process: take out an exclusive lock, read the resource, perform + edits, write the resource, release the lock. This editing process + has the problem that locks are not always properly released, for + example, when a program crashes or when a lock creator leaves without + + + +<span class="grey">Dusseault Standards Track [Page 19]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-20" id="page-20" href="#page-20" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + unlocking a resource. While both timeouts (<a href="#section-6.6">Section 6.6</a>) and + administrative action can be used to remove an offending lock, + neither mechanism may be available when needed; the timeout may be + long or the administrator may not be available. + + A successful request for a new shared lock MUST result in the + generation of a unique lock associated with the requesting principal. + Thus, if five principals have taken out shared write locks on the + same resource, there will be five locks and five lock tokens, one for + each principal. + +<span class="h3"><h3><a class="selflink" name="section-6.3" href="#section-6.3">6.3</a>. Required Support</h3></span> + + A WebDAV-compliant resource is not required to support locking in any + form. If the resource does support locking, it may choose to support + any combination of exclusive and shared locks for any access types. + + The reason for this flexibility is that locking policy strikes to the + very heart of the resource management and versioning systems employed + by various storage repositories. These repositories require control + over what sort of locking will be made available. For example, some + repositories only support shared write locks, while others only + provide support for exclusive write locks, while yet others use no + locking at all. As each system is sufficiently different to merit + exclusion of certain locking features, this specification leaves + locking as the sole axis of negotiation within WebDAV. + +<span class="h3"><h3><a class="selflink" name="section-6.4" href="#section-6.4">6.4</a>. Lock Creator and Privileges</h3></span> + + The creator of a lock has special privileges to use the lock to + modify the resource. When a locked resource is modified, a server + MUST check that the authenticated principal matches the lock creator + (in addition to checking for valid lock token submission). + + The server MAY allow privileged users other than the lock creator to + destroy a lock (for example, the resource owner or an administrator). + The 'unlock' privilege in [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>] was defined to provide that + permission. + + There is no requirement for servers to accept LOCK requests from all + users or from anonymous users. + + Note that having a lock does not confer full privilege to modify the + locked resource. Write access and other privileges MUST be enforced + through normal privilege or authentication mechanisms, not based on + the possible obscurity of lock token values. + + + + + +<span class="grey">Dusseault Standards Track [Page 20]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-21" id="page-21" href="#page-21" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-6.5" href="#section-6.5">6.5</a>. Lock Tokens</h3></span> + + A lock token is a type of state token that identifies a particular + lock. Each lock has exactly one unique lock token generated by the + server. Clients MUST NOT attempt to interpret lock tokens in any + way. + + Lock token URIs MUST be unique across all resources for all time. + This uniqueness constraint allows lock tokens to be submitted across + resources and servers without fear of confusion. Since lock tokens + are unique, a client MAY submit a lock token in an If header on a + resource other than the one that returned it. + + When a LOCK operation creates a new lock, the new lock token is + returned in the Lock-Token response header defined in <a href="#section-10.5">Section 10.5</a>, + and also in the body of the response. + + Servers MAY make lock tokens publicly readable (e.g., in the DAV: + lockdiscovery property). One use case for making lock tokens + readable is so that a long-lived lock can be removed by the resource + owner (the client that obtained the lock might have crashed or + disconnected before cleaning up the lock). Except for the case of + using UNLOCK under user guidance, a client SHOULD NOT use a lock + token created by another client instance. + + This specification encourages servers to create Universally Unique + Identifiers (UUIDs) for lock tokens, and to use the URI form defined + by "A Universally Unique Identifier (UUID) URN Namespace" + ([<a href="http://tools.ietf.org/html/rfc4122" title="" a universally unique identifier urn namespace>RFC4122</a>]). However, servers are free to use any URI (e.g., from + another scheme) so long as it meets the uniqueness requirements. For + example, a valid lock token might be constructed using the + "opaquelocktoken" scheme defined in <a href="#appendix-C">Appendix C</a>. + + Example: "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6" + +<span class="h3"><h3><a class="selflink" name="section-6.6" href="#section-6.6">6.6</a>. Lock Timeout</h3></span> + + A lock MAY have a limited lifetime. The lifetime is suggested by the + client when creating or refreshing the lock, but the server + ultimately chooses the timeout value. Timeout is measured in seconds + remaining until lock expiration. + + The timeout counter MUST be restarted if a refresh lock request is + successful (see <a href="#section-9.10.2">Section 9.10.2</a>). The timeout counter SHOULD NOT be + restarted at any other time. + + If the timeout expires, then the lock SHOULD be removed. In this + case the server SHOULD act as if an UNLOCK method was executed by the + + + +<span class="grey">Dusseault Standards Track [Page 21]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-22" id="page-22" href="#page-22" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + server on the resource using the lock token of the timed-out lock, + performed with its override authority. + + Servers are advised to pay close attention to the values submitted by + clients, as they will be indicative of the type of activity the + client intends to perform. For example, an applet running in a + browser may need to lock a resource, but because of the instability + of the environment within which the applet is running, the applet may + be turned off without warning. As a result, the applet is likely to + ask for a relatively small timeout value so that if the applet dies, + the lock can be quickly harvested. However, a document management + system is likely to ask for an extremely long timeout because its + user may be planning on going offline. + + A client MUST NOT assume that just because the timeout has expired, + the lock has immediately been removed. + + Likewise, a client MUST NOT assume that just because the timeout has + not expired, the lock still exists. Clients MUST assume that locks + can arbitrarily disappear at any time, regardless of the value given + in the Timeout header. The Timeout header only indicates the + behavior of the server if extraordinary circumstances do not occur. + For example, a sufficiently privileged user may remove a lock at any + time, or the system may crash in such a way that it loses the record + of the lock's existence. + +<span class="h3"><h3><a class="selflink" name="section-6.7" href="#section-6.7">6.7</a>. Lock Capability Discovery</h3></span> + + Since server lock support is optional, a client trying to lock a + resource on a server can either try the lock and hope for the best, + or perform some form of discovery to determine what lock capabilities + the server supports. This is known as lock capability discovery. A + client can determine what lock types the server supports by + retrieving the DAV:supportedlock property. + + Any DAV-compliant resource that supports the LOCK method MUST support + the DAV:supportedlock property. + +<span class="h3"><h3><a class="selflink" name="section-6.8" href="#section-6.8">6.8</a>. Active Lock Discovery</h3></span> + + If another principal locks a resource that a principal wishes to + access, it is useful for the second principal to be able to find out + who the first principal is. For this purpose the DAV:lockdiscovery + property is provided. This property lists all outstanding locks, + describes their type, and MAY even provide the lock tokens. + + Any DAV-compliant resource that supports the LOCK method MUST support + the DAV:lockdiscovery property. + + + +<span class="grey">Dusseault Standards Track [Page 22]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-23" id="page-23" href="#page-23" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h2"><h2><a class="selflink" name="section-7" href="#section-7">7</a>. Write Lock</h2></span> + + This section describes the semantics specific to the write lock type. + The write lock is a specific instance of a lock type, and is the only + lock type described in this specification. + + An exclusive write lock protects a resource: it prevents changes by + any principal other than the lock creator and in any case where the + lock token is not submitted (e.g., by a client process other than the + one holding the lock). + + Clients MUST submit a lock-token they are authorized to use in any + request that modifies a write-locked resource. The list of + modifications covered by a write-lock include: + + 1. A change to any of the following aspects of any write-locked + resource: + + * any variant, + + * any dead property, + + * any live property that is lockable (a live property is + lockable unless otherwise defined.) + + 2. For collections, any modification of an internal member URI. An + internal member URI of a collection is considered to be modified + if it is added, removed, or identifies a different resource. + More discussion on write locks and collections is found in + <a href="#section-7.4">Section 7.4</a>. + + 3. A modification of the mapping of the root of the write lock, + either to another resource or to no resource (e.g., DELETE). + + Of the methods defined in HTTP and WebDAV, PUT, POST, PROPPATCH, + LOCK, UNLOCK, MOVE, COPY (for the destination resource), DELETE, and + MKCOL are affected by write locks. All other HTTP/WebDAV methods + defined so far -- GET in particular -- function independently of a + write lock. + + The next few sections describe in more specific terms how write locks + interact with various operations. + + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 23]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-24" id="page-24" href="#page-24" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-7.1" href="#section-7.1">7.1</a>. Write Locks and Properties</h3></span> + + While those without a write lock may not alter a property on a + resource it is still possible for the values of live properties to + change, even while locked, due to the requirements of their schemas. + Only dead properties and live properties defined as lockable are + guaranteed not to change while write locked. + +<span class="h3"><h3><a class="selflink" name="section-7.2" href="#section-7.2">7.2</a>. Avoiding Lost Updates</h3></span> + + Although the write locks provide some help in preventing lost + updates, they cannot guarantee that updates will never be lost. + Consider the following scenario: + + Two clients A and B are interested in editing the resource + 'index.html'. Client A is an HTTP client rather than a WebDAV + client, and so does not know how to perform locking. + + Client A doesn't lock the document, but does a GET, and begins + editing. + + Client B does LOCK, performs a GET and begins editing. + + Client B finishes editing, performs a PUT, then an UNLOCK. + + Client A performs a PUT, overwriting and losing all of B's changes. + + There are several reasons why the WebDAV protocol itself cannot + prevent this situation. First, it cannot force all clients to use + locking because it must be compatible with HTTP clients that do not + comprehend locking. Second, it cannot require servers to support + locking because of the variety of repository implementations, some of + which rely on reservations and merging rather than on locking. + Finally, being stateless, it cannot enforce a sequence of operations + like LOCK / GET / PUT / UNLOCK. + + WebDAV servers that support locking can reduce the likelihood that + clients will accidentally overwrite each other's changes by requiring + clients to lock resources before modifying them. Such servers would + effectively prevent HTTP 1.0 and HTTP 1.1 clients from modifying + resources. + + WebDAV clients can be good citizens by using a lock / retrieve / + write /unlock sequence of operations (at least by default) whenever + they interact with a WebDAV server that supports locking. + + + + + + +<span class="grey">Dusseault Standards Track [Page 24]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-25" id="page-25" href="#page-25" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + HTTP 1.1 clients can be good citizens, avoiding overwriting other + clients' changes, by using entity tags in If-Match headers with any + requests that would modify resources. + + Information managers may attempt to prevent overwrites by + implementing client-side procedures requiring locking before + modifying WebDAV resources. + +<span class="h3"><h3><a class="selflink" name="section-7.3" href="#section-7.3">7.3</a>. Write Locks and Unmapped URLs</h3></span> + + WebDAV provides the ability to send a LOCK request to an unmapped URL + in order to reserve the name for use. This is a simple way to avoid + the lost-update problem on the creation of a new resource (another + way is to use If-None-Match header specified in <a href="http://tools.ietf.org/html/rfc2616#section-14.26">Section 14.26 of + [RFC2616]</a>). It has the side benefit of locking the new resource + immediately for use of the creator. + + Note that the lost-update problem is not an issue for collections + because MKCOL can only be used to create a collection, not to + overwrite an existing collection. When trying to lock a collection + upon creation, clients can attempt to increase the likelihood of + getting the lock by pipelining the MKCOL and LOCK requests together + (but because this doesn't convert two separate operations into one + atomic operation, there's no guarantee this will work). + + A successful lock request to an unmapped URL MUST result in the + creation of a locked (non-collection) resource with empty content. + Subsequently, a successful PUT request (with the correct lock token) + provides the content for the resource. Note that the LOCK request + has no mechanism for the client to provide Content-Type or Content- + Language, thus the server will use defaults or empty values and rely + on the subsequent PUT request for correct values. + + A resource created with a LOCK is empty but otherwise behaves in + every way as a normal resource. It behaves the same way as a + resource created by a PUT request with an empty body (and where a + Content-Type and Content-Language was not specified), followed by a + LOCK request to the same resource. Following from this model, a + locked empty resource: + + o Can be read, deleted, moved, and copied, and in all ways behaves + as a regular non-collection resource. + + o Appears as a member of its parent collection. + + o SHOULD NOT disappear when its lock goes away (clients must + therefore be responsible for cleaning up their own mess, as with + any other operation or any non-empty resource). + + + +<span class="grey">Dusseault Standards Track [Page 25]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-26" id="page-26" href="#page-26" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + o MAY NOT have values for properties like DAV:getcontentlanguage + that haven't been specified yet by the client. + + o Can be updated (have content added) with a PUT request. + + o MUST NOT be converted into a collection. The server MUST fail a + MKCOL request (as it would with a MKCOL request to any existing + non-collection resource). + + o MUST have defined values for DAV:lockdiscovery and DAV: + supportedlock properties. + + o The response MUST indicate that a resource was created, by use of + the "201 Created" response code (a LOCK request to an existing + resource instead will result in 200 OK). The body must still + include the DAV:lockdiscovery property, as with a LOCK request to + an existing resource. + + The client is expected to update the locked empty resource shortly + after locking it, using PUT and possibly PROPPATCH. + + Alternatively and for backwards compatibility to [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>], servers + MAY implement Lock-Null Resources (LNRs) instead (see definition in + <a href="#appendix-D">Appendix D</a>). Clients can easily interoperate both with servers that + support the old model LNRs and the recommended model of "locked empty + resources" by only attempting PUT after a LOCK to an unmapped URL, + not MKCOL or GET, and by not relying on specific properties of LNRs. + +<span class="h3"><h3><a class="selflink" name="section-7.4" href="#section-7.4">7.4</a>. Write Locks and Collections</h3></span> + + There are two kinds of collection write locks. A depth-0 write lock + on a collection protects the collection properties plus the internal + member URLs of that one collection, while not protecting the content + or properties of member resources (if the collection itself has any + entity bodies, those are also protected). A depth-infinity write + lock on a collection provides the same protection on that collection + and also provides write lock protection on every member resource. + + Expressed otherwise, a write lock of either kind protects any request + that would create a new resource in a write locked collection, any + request that would remove an internal member URL of a write locked + collection, and any request that would change the segment name of any + internal member. + + Thus, a collection write lock protects all the following actions: + + o DELETE a collection's direct internal member, + + + + +<span class="grey">Dusseault Standards Track [Page 26]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-27" id="page-27" href="#page-27" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + o MOVE an internal member out of the collection, + + o MOVE an internal member into the collection, + + o MOVE to rename an internal member within a collection, + + o COPY an internal member into a collection, and + + o PUT or MKCOL request that would create a new internal member. + + The collection's lock token is required in addition to the lock token + on the internal member itself, if it is locked separately. + + In addition, a depth-infinity lock affects all write operations to + all members of the locked collection. With a depth-infinity lock, + the resource identified by the root of the lock is directly locked, + and all its members are indirectly locked. + + o Any new resource added as a descendant of a depth-infinity locked + collection becomes indirectly locked. + + o Any indirectly locked resource moved out of the locked collection + into an unlocked collection is thereafter unlocked. + + o Any indirectly locked resource moved out of a locked source + collection into a depth-infinity locked target collection remains + indirectly locked but is now protected by the lock on the target + collection (the target collection's lock token will thereafter be + required to make further changes). + + If a depth-infinity write LOCK request is issued to a collection + containing member URLs identifying resources that are currently + locked in a manner that conflicts with the new lock (see <a href="#section-6.1">Section 6.1</a>, + point 3), the request MUST fail with a 423 (Locked) status code, and + the response SHOULD contain the 'no-conflicting-lock' precondition. + + If a lock request causes the URL of a resource to be added as an + internal member URL of a depth-infinity locked collection, then the + new resource MUST be automatically protected by the lock. For + example, if the collection /a/b/ is write locked and the resource /c + is moved to /a/b/c, then resource /a/b/c will be added to the write + lock. + + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 27]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-28" id="page-28" href="#page-28" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-7.5" href="#section-7.5">7.5</a>. Write Locks and the If Request Header</h3></span> + + A user agent has to demonstrate knowledge of a lock when requesting + an operation on a locked resource. Otherwise, the following scenario + might occur. In the scenario, program A, run by User A, takes out a + write lock on a resource. Program B, also run by User A, has no + knowledge of the lock taken out by program A, yet performs a PUT to + the locked resource. In this scenario, the PUT succeeds because + locks are associated with a principal, not a program, and thus + program B, because it is acting with principal A's credential, is + allowed to perform the PUT. However, had program B known about the + lock, it would not have overwritten the resource, preferring instead + to present a dialog box describing the conflict to the user. Due to + this scenario, a mechanism is needed to prevent different programs + from accidentally ignoring locks taken out by other programs with the + same authorization. + + In order to prevent these collisions, a lock token MUST be submitted + by an authorized principal for all locked resources that a method may + change or the method MUST fail. A lock token is submitted when it + appears in an If header. For example, if a resource is to be moved + and both the source and destination are locked, then two lock tokens + must be submitted in the If header, one for the source and the other + for the destination. + +<span class="h4"><h4><a class="selflink" name="section-7.5.1" href="#section-7.5.1">7.5.1</a>. Example - Write Lock and COPY</h4></span> + + >>Request + + COPY /~fielding/index.html HTTP/1.1 + Host: www.example.com + Destination: http://www.example.com/users/f/fielding/index.html + If: <http://www.example.com/users/f/fielding/index.html> + (<urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6>) + + >>Response + + HTTP/1.1 204 No Content + + In this example, even though both the source and destination are + locked, only one lock token must be submitted (the one for the lock + on the destination). This is because the source resource is not + modified by a COPY, and hence unaffected by the write lock. In this + example, user agent authentication has previously occurred via a + mechanism outside the scope of the HTTP protocol, in the underlying + transport layer. + + + + + +<span class="grey">Dusseault Standards Track [Page 28]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-29" id="page-29" href="#page-29" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-7.5.2" href="#section-7.5.2">7.5.2</a>. Example - Deleting a Member of a Locked Collection</h4></span> + + Consider a collection "/locked" with an exclusive, depth-infinity + write lock, and an attempt to delete an internal member "/locked/ + member": + + >>Request + + DELETE /locked/member HTTP/1.1 + Host: example.com + + >>Response + + HTTP/1.1 423 Locked + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:error xmlns:D="DAV:"> + <D:lock-token-submitted> + <D:href>/locked/</D:href> + </D:lock-token-submitted> + </D:error> + + Thus, the client would need to submit the lock token with the request + to make it succeed. To do that, various forms of the If header (see + <a href="#section-10.4">Section 10.4</a>) could be used. + + "No-Tag-List" format: + + If: (<urn:uuid:150852e2-3847-42d5-8cbe-0f4f296f26cf>) + + "Tagged-List" format, for "http://example.com/locked/": + + If: <http://example.com/locked/> + (<urn:uuid:150852e2-3847-42d5-8cbe-0f4f296f26cf>) + + "Tagged-List" format, for "http://example.com/locked/member": + + If: <http://example.com/locked/member> + (<urn:uuid:150852e2-3847-42d5-8cbe-0f4f296f26cf>) + + Note that, for the purpose of submitting the lock token, the actual + form doesn't matter; what's relevant is that the lock token appears + in the If header, and that the If header itself evaluates to true. + + + + + + +<span class="grey">Dusseault Standards Track [Page 29]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-30" id="page-30" href="#page-30" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-7.6" href="#section-7.6">7.6</a>. Write Locks and COPY/MOVE</h3></span> + + A COPY method invocation MUST NOT duplicate any write locks active on + the source. However, as previously noted, if the COPY copies the + resource into a collection that is locked with a depth-infinity lock, + then the resource will be added to the lock. + + A successful MOVE request on a write locked resource MUST NOT move + the write lock with the resource. However, if there is an existing + lock at the destination, the server MUST add the moved resource to + the destination lock scope. For example, if the MOVE makes the + resource a child of a collection that has a depth-infinity lock, then + the resource will be added to that collection's lock. Additionally, + if a resource with a depth-infinity lock is moved to a destination + that is within the scope of the same lock (e.g., within the URL + namespace tree covered by the lock), the moved resource will again be + added to the lock. In both these examples, as specified in + <a href="#section-7.5">Section 7.5</a>, an If header must be submitted containing a lock token + for both the source and destination. + +<span class="h3"><h3><a class="selflink" name="section-7.7" href="#section-7.7">7.7</a>. Refreshing Write Locks</h3></span> + + A client MUST NOT submit the same write lock request twice. Note + that a client is always aware it is resubmitting the same lock + request because it must include the lock token in the If header in + order to make the request for a resource that is already locked. + + However, a client may submit a LOCK request with an If header but + without a body. A server receiving a LOCK request with no body MUST + NOT create a new lock -- this form of the LOCK request is only to be + used to "refresh" an existing lock (meaning, at minimum, that any + timers associated with the lock MUST be reset). + + Clients may submit Timeout headers of arbitrary value with their lock + refresh requests. Servers, as always, may ignore Timeout headers + submitted by the client, and a server MAY refresh a lock with a + timeout period that is different than the previous timeout period + used for the lock, provided it advertises the new value in the LOCK + refresh response. + + If an error is received in response to a refresh LOCK request, the + client MUST NOT assume that the lock was refreshed. + + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 30]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-31" id="page-31" href="#page-31" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h2"><h2><a class="selflink" name="section-8" href="#section-8">8</a>. General Request and Response Handling</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-8.1" href="#section-8.1">8.1</a>. Precedence in Error Handling</h3></span> + + Servers MUST return authorization errors in preference to other + errors. This avoids leaking information about protected resources + (e.g., a client that finds that a hidden resource exists by seeing a + 423 Locked response to an anonymous request to the resource). + +<span class="h3"><h3><a class="selflink" name="section-8.2" href="#section-8.2">8.2</a>. Use of XML</h3></span> + + In HTTP/1.1, method parameter information was exclusively encoded in + HTTP headers. Unlike HTTP/1.1, WebDAV encodes method parameter + information either in an XML ([<a href="#ref-REC-XML" title="" extensible markup language edition>REC-XML</a>]) request entity body, or in + an HTTP header. The use of XML to encode method parameters was + motivated by the ability to add extra XML elements to existing + structures, providing extensibility; and by XML's ability to encode + information in ISO 10646 character sets, providing + internationalization support. + + In addition to encoding method parameters, XML is used in WebDAV to + encode the responses from methods, providing the extensibility and + internationalization advantages of XML for method output, as well as + input. + + When XML is used for a request or response body, the Content-Type + type SHOULD be application/xml. Implementations MUST accept both + text/xml and application/xml in request and response bodies. Use of + text/xml is deprecated. + + All DAV-compliant clients and resources MUST use XML parsers that are + compliant with [<a href="#ref-REC-XML" title="" extensible markup language edition>REC-XML</a>] and [<a href="#ref-REC-XML-NAMES" title="" namespaces in xml edition>REC-XML-NAMES</a>]. All XML used in either + requests or responses MUST be, at minimum, well formed and use + namespaces correctly. If a server receives XML that is not well- + formed, then the server MUST reject the entire request with a 400 + (Bad Request). If a client receives XML that is not well-formed in a + response, then the client MUST NOT assume anything about the outcome + of the executed method and SHOULD treat the server as malfunctioning. + + Note that processing XML submitted by an untrusted source may cause + risks connected to privacy, security, and service quality (see + <a href="#section-20">Section 20</a>). Servers MAY reject questionable requests (even though + they consist of well-formed XML), for instance, with a 400 (Bad + Request) status code and an optional response body explaining the + problem. + + + + + + +<span class="grey">Dusseault Standards Track [Page 31]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-32" id="page-32" href="#page-32" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-8.3" href="#section-8.3">8.3</a>. URL Handling</h3></span> + + URLs appear in many places in requests and responses. + Interoperability experience with [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>] showed that many clients + parsing Multi-Status responses did not fully implement the full + Reference Resolution defined in <a href="http://tools.ietf.org/html/rfc3986#section-5">Section 5 of [RFC3986]</a>. Thus, + servers in particular need to be careful in handling URLs in + responses, to ensure that clients have enough context to be able to + interpret all the URLs. The rules in this section apply not only to + resource URLs in the 'href' element in Multi-Status responses, but + also to the Destination and If header resource URLs. + + The sender has a choice between two approaches: using a relative + reference, which is resolved against the Request-URI, or a full URI. + A server MUST ensure that every 'href' value within a Multi-Status + response uses the same format. + + WebDAV only uses one form of relative reference in its extensions, + the absolute path. + + Simple-ref = absolute-URI | ( path-absolute [ "?" query ] ) + + The absolute-URI, path-absolute and query productions are defined in + Sections <a href="#section-4.3">4.3</a>, <a href="#section-3.3">3.3</a>, and <a href="#section-3.4">3.4</a> of [<a href="http://tools.ietf.org/html/rfc3986" title="" uniform resource identifier generic syntax>RFC3986</a>]. + + Within Simple-ref productions, senders MUST NOT: + + o use dot-segments ("." or ".."), or + + o have prefixes that do not match the Request-URI (using the + comparison rules defined in <a href="http://tools.ietf.org/html/rfc2616#section-3.2.3">Section 3.2.3 of [RFC2616]</a>). + + Identifiers for collections SHOULD end in a '/' character. + +<span class="h4"><h4><a class="selflink" name="section-8.3.1" href="#section-8.3.1">8.3.1</a>. Example - Correct URL Handling</h4></span> + + Consider the collection http://example.com/sample/ with the internal + member URL http://example.com/sample/a%20test and the PROPFIND + request below: + + >>Request: + + PROPFIND /sample/ HTTP/1.1 + Host: example.com + Depth: 1 + + + + + + +<span class="grey">Dusseault Standards Track [Page 32]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-33" id="page-33" href="#page-33" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + In this case, the server should return two 'href' elements containing + either + + o 'http://example.com/sample/' and + 'http://example.com/sample/a%20test', or + + o '/sample/' and '/sample/a%20test' + + Note that even though the server may be storing the member resource + internally as 'a test', it has to be percent-encoded when used inside + a URI reference (see <a href="http://tools.ietf.org/html/rfc3986#section-2.1">Section 2.1 of [RFC3986]</a>). Also note that a + legal URI may still contain characters that need to be escaped within + XML character data, such as the ampersand character. + +<span class="h3"><h3><a class="selflink" name="section-8.4" href="#section-8.4">8.4</a>. Required Bodies in Requests</h3></span> + + Some of these new methods do not define bodies. Servers MUST examine + all requests for a body, even when a body was not expected. In cases + where a request body is present but would be ignored by a server, the + server MUST reject the request with 415 (Unsupported Media Type). + This informs the client (which may have been attempting to use an + extension) that the body could not be processed as the client + intended. + +<span class="h3"><h3><a class="selflink" name="section-8.5" href="#section-8.5">8.5</a>. HTTP Headers for Use in WebDAV</h3></span> + + HTTP defines many headers that can be used in WebDAV requests and + responses. Not all of these are appropriate in all situations and + some interactions may be undefined. Note that HTTP 1.1 requires the + Date header in all responses if possible (see <a href="#section-14.18">Section 14.18</a>, + [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>]). + + The server MUST do authorization checks before checking any HTTP + conditional header. + +<span class="h3"><h3><a class="selflink" name="section-8.6" href="#section-8.6">8.6</a>. ETag</h3></span> + + HTTP 1.1 recommends the use of ETags rather than modification dates, + for cache control, and there are even stronger reasons to prefer + ETags for authoring. Correct use of ETags is even more important in + a distributed authoring environment, because ETags are necessary + along with locks to avoid the lost-update problem. A client might + fail to renew a lock, for example, when the lock times out and the + client is accidentally offline or in the middle of a long upload. + When a client fails to renew the lock, it's quite possible the + resource can still be relocked and the user can go on editing, as + long as no changes were made in the meantime. ETags are required for + the client to be able to distinguish this case. Otherwise, the + + + +<span class="grey">Dusseault Standards Track [Page 33]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-34" id="page-34" href="#page-34" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + client is forced to ask the user whether to overwrite the resource on + the server without even being able to tell the user if it has + changed. Timestamps do not solve this problem nearly as well as + ETags. + + Strong ETags are much more useful for authoring use cases than weak + ETags (see <a href="http://tools.ietf.org/html/rfc2616#section-13.3.3">Section 13.3.3 of [RFC2616]</a>). Semantic equivalence can be + a useful concept but that depends on the document type and the + application type, and interoperability might require some agreement + or standard outside the scope of this specification and HTTP. Note + also that weak ETags have certain restrictions in HTTP, e.g., these + cannot be used in If-Match headers. + + Note that the meaning of an ETag in a PUT response is not clearly + defined either in this document or in <a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a> (i.e., whether the + ETag means that the resource is octet-for-octet equivalent to the + body of the PUT request, or whether the server could have made minor + changes in the formatting or content of the document upon storage). + This is an HTTP issue, not purely a WebDAV issue. + + Because clients may be forced to prompt users or throw away changed + content if the ETag changes, a WebDAV server SHOULD NOT change the + ETag (or the Last-Modified time) for a resource that has an unchanged + body and location. The ETag represents the state of the body or + contents of the resource. There is no similar way to tell if + properties have changed. + +<span class="h3"><h3><a class="selflink" name="section-8.7" href="#section-8.7">8.7</a>. Including Error Response Bodies</h3></span> + + HTTP and WebDAV did not use the bodies of most error responses for + machine-parsable information until the specification for Versioning + Extensions to WebDAV introduced a mechanism to include more specific + information in the body of an error response (<a href="http://tools.ietf.org/html/rfc3253#section-1.6">Section 1.6 of + [RFC3253]</a>). The error body mechanism is appropriate to use with any + error response that may take a body but does not already have a body + defined. The mechanism is particularly appropriate when a status + code can mean many things (for example, 400 Bad Request can mean + required headers are missing, headers are incorrectly formatted, or + much more). This error body mechanism is covered in <a href="#section-16">Section 16</a>. + +<span class="h3"><h3><a class="selflink" name="section-8.8" href="#section-8.8">8.8</a>. Impact of Namespace Operations on Cache Validators</h3></span> + + Note that the HTTP response headers "Etag" and "Last-Modified" (see + [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>], Sections <a href="#section-14.19">14.19</a> and <a href="#section-14.29">14.29</a>) are defined per URL (not per + resource), and are used by clients for caching. Therefore servers + must ensure that executing any operation that affects the URL + namespace (such as COPY, MOVE, DELETE, PUT, or MKCOL) does preserve + their semantics, in particular: + + + +<span class="grey">Dusseault Standards Track [Page 34]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-35" id="page-35" href="#page-35" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + o For any given URL, the "Last-Modified" value MUST increment every + time the representation returned upon GET changes (within the + limits of timestamp resolution). + + o For any given URL, an "ETag" value MUST NOT be reused for + different representations returned by GET. + + In practice this means that servers + + o might have to increment "Last-Modified" timestamps for every + resource inside the destination namespace of a namespace operation + unless it can do so more selectively, and + + o similarly, might have to re-assign "ETag" values for these + resources (unless the server allocates entity tags in a way so + that they are unique across the whole URL namespace managed by the + server). + + Note that these considerations also apply to specific use cases, such + as using PUT to create a new resource at a URL that has been mapped + before, but has been deleted since then. + + Finally, WebDAV properties (such as DAV:getetag and DAV: + getlastmodified) that inherit their semantics from HTTP headers must + behave accordingly. + +<span class="h2"><h2><a class="selflink" name="section-9" href="#section-9">9</a>. HTTP Methods for Distributed Authoring</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-9.1" href="#section-9.1">9.1</a>. PROPFIND Method</h3></span> + + The PROPFIND method retrieves properties defined on the resource + identified by the Request-URI, if the resource does not have any + internal members, or on the resource identified by the Request-URI + and potentially its member resources, if the resource is a collection + that has internal member URLs. All DAV-compliant resources MUST + support the PROPFIND method and the propfind XML element + (<a href="#section-14.20">Section 14.20</a>) along with all XML elements defined for use with that + element. + + A client MUST submit a Depth header with a value of "0", "1", or + "infinity" with a PROPFIND request. Servers MUST support "0" and "1" + depth requests on WebDAV-compliant resources and SHOULD support + "infinity" requests. In practice, support for infinite-depth + requests MAY be disabled, due to the performance and security + concerns associated with this behavior. Servers SHOULD treat a + request without a Depth header as if a "Depth: infinity" header was + included. + + + + +<span class="grey">Dusseault Standards Track [Page 35]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-36" id="page-36" href="#page-36" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + A client may submit a 'propfind' XML element in the body of the + request method describing what information is being requested. It is + possible to: + + o Request particular property values, by naming the properties + desired within the 'prop' element (the ordering of properties in + here MAY be ignored by the server), + + o Request property values for those properties defined in this + specification (at a minimum) plus dead properties, by using the + 'allprop' element (the 'include' element can be used with + 'allprop' to instruct the server to also include additional live + properties that may not have been returned otherwise), + + o Request a list of names of all the properties defined on the + resource, by using the 'propname' element. + + A client may choose not to submit a request body. An empty PROPFIND + request body MUST be treated as if it were an 'allprop' request. + + Note that 'allprop' does not return values for all live properties. + WebDAV servers increasingly have expensively-calculated or lengthy + properties (see [<a href="http://tools.ietf.org/html/rfc3253" title="" versioning extensions to webdav distributed authoring and>RFC3253</a>] and [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>]) and do not return all + properties already. Instead, WebDAV clients can use propname + requests to discover what live properties exist, and request named + properties when retrieving values. For a live property defined + elsewhere, that definition can specify whether or not that live + property would be returned in 'allprop' requests. + + All servers MUST support returning a response of content type text/ + xml or application/xml that contains a multistatus XML element that + describes the results of the attempts to retrieve the various + properties. + + If there is an error retrieving a property, then a proper error + result MUST be included in the response. A request to retrieve the + value of a property that does not exist is an error and MUST be noted + with a 'response' XML element that contains a 404 (Not Found) status + value. + + Consequently, the 'multistatus' XML element for a collection resource + MUST include a 'response' XML element for each member URL of the + collection, to whatever depth was requested. It SHOULD NOT include + any 'response' elements for resources that are not WebDAV-compliant. + Each 'response' element MUST contain an 'href' element that contains + the URL of the resource on which the properties in the prop XML + element are defined. Results for a PROPFIND on a collection resource + are returned as a flat list whose order of entries is not + + + +<span class="grey">Dusseault Standards Track [Page 36]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-37" id="page-37" href="#page-37" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + significant. Note that a resource may have only one value for a + property of a given name, so the property may only show up once in + PROPFIND responses. + + Properties may be subject to access control. In the case of + 'allprop' and 'propname' requests, if a principal does not have the + right to know whether a particular property exists, then the property + MAY be silently excluded from the response. + + Some PROPFIND results MAY be cached, with care, as there is no cache + validation mechanism for most properties. This method is both safe + and idempotent (see <a href="http://tools.ietf.org/html/rfc2616#section-9.1">Section 9.1 of [RFC2616]</a>). + +<span class="h4"><h4><a class="selflink" name="section-9.1.1" href="#section-9.1.1">9.1.1</a>. PROPFIND Status Codes</h4></span> + + This section, as with similar sections for other methods, provides + some guidance on error codes and preconditions or postconditions + (defined in <a href="#section-16">Section 16</a>) that might be particularly useful with + PROPFIND. + + 403 Forbidden - A server MAY reject PROPFIND requests on collections + with depth header of "Infinity", in which case it SHOULD use this + error with the precondition code 'propfind-finite-depth' inside the + error body. + +<span class="h4"><h4><a class="selflink" name="section-9.1.2" href="#section-9.1.2">9.1.2</a>. Status Codes for Use in 'propstat' Element</h4></span> + + In PROPFIND responses, information about individual properties is + returned inside 'propstat' elements (see <a href="#section-14.22">Section 14.22</a>), each + containing an individual 'status' element containing information + about the properties appearing in it. The list below summarizes the + most common status codes used inside 'propstat'; however, clients + should be prepared to handle other 2/3/4/5xx series status codes as + well. + + 200 OK - A property exists and/or its value is successfully returned. + + 401 Unauthorized - The property cannot be viewed without appropriate + authorization. + + 403 Forbidden - The property cannot be viewed regardless of + authentication. + + 404 Not Found - The property does not exist. + + + + + + + +<span class="grey">Dusseault Standards Track [Page 37]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-38" id="page-38" href="#page-38" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.1.3" href="#section-9.1.3">9.1.3</a>. Example - Retrieving Named Properties</h4></span> + + >>Request + + PROPFIND /file HTTP/1.1 + Host: www.example.com + Content-type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:propfind xmlns:D="DAV:"> + <D:prop xmlns:R="http://ns.example.com/boxschema/"> + <R:bigbox/> + <R:author/> + <R:DingALing/> + <R:Random/> + </D:prop> + </D:propfind> + + + >>Response + + HTTP/1.1 207 Multi-Status + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:"> + <D:response xmlns:R="http://ns.example.com/boxschema/"> + <D:href>http://www.example.com/file</D:href> + <D:propstat> + <D:prop> + <R:bigbox> + <R:BoxType>Box type A</R:BoxType> + </R:bigbox> + <R:author> + <R:Name>J.J. Johnson</R:Name> + </R:author> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + <D:propstat> + <D:prop><R:DingALing/><R:Random/></D:prop> + <D:status>HTTP/1.1 403 Forbidden</D:status> + <D:responsedescription> The user does not have access to the + DingALing property. + </D:responsedescription> + </D:propstat> + + + +<span class="grey">Dusseault Standards Track [Page 38]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-39" id="page-39" href="#page-39" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + </D:response> + <D:responsedescription> There has been an access violation error. + </D:responsedescription> + </D:multistatus> + + + In this example, PROPFIND is executed on a non-collection resource + http://www.example.com/file. The propfind XML element specifies the + name of four properties whose values are being requested. In this + case, only two properties were returned, since the principal issuing + the request did not have sufficient access rights to see the third + and fourth properties. + +<span class="h4"><h4><a class="selflink" name="section-9.1.4" href="#section-9.1.4">9.1.4</a>. Example - Using 'propname' to Retrieve All Property Names</h4></span> + + >>Request + + PROPFIND /container/ HTTP/1.1 + Host: www.example.com + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <propfind xmlns="DAV:"> + <propname/> + </propfind> + + + >>Response + + HTTP/1.1 207 Multi-Status + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <multistatus xmlns="DAV:"> + <response> + <href>http://www.example.com/container/</href> + <propstat> + <prop xmlns:R="http://ns.example.com/boxschema/"> + <R:bigbox/> + <R:author/> + <creationdate/> + <displayname/> + <resourcetype/> + <supportedlock/> + </prop> + <status>HTTP/1.1 200 OK</status> + + + +<span class="grey">Dusseault Standards Track [Page 39]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-40" id="page-40" href="#page-40" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + </propstat> + </response> + <response> + <href>http://www.example.com/container/front.html</href> + <propstat> + <prop xmlns:R="http://ns.example.com/boxschema/"> + <R:bigbox/> + <creationdate/> + <displayname/> + <getcontentlength/> + <getcontenttype/> + <getetag/> + <getlastmodified/> + <resourcetype/> + <supportedlock/> + </prop> + <status>HTTP/1.1 200 OK</status> + </propstat> + </response> + </multistatus> + + In this example, PROPFIND is invoked on the collection resource + http://www.example.com/container/, with a propfind XML element + containing the propname XML element, meaning the name of all + properties should be returned. Since no Depth header is present, it + assumes its default value of "infinity", meaning the name of the + properties on the collection and all its descendants should be + returned. + + Consistent with the previous example, resource + http://www.example.com/container/ has six properties defined on it: + bigbox and author in the "http://ns.example.com/boxschema/" + namespace, and creationdate, displayname, resourcetype, and + supportedlock in the "DAV:" namespace. + + The resource http://www.example.com/container/index.html, a member of + the "container" collection, has nine properties defined on it, bigbox + in the "http://ns.example.com/boxschema/" namespace and creationdate, + displayname, getcontentlength, getcontenttype, getetag, + getlastmodified, resourcetype, and supportedlock in the "DAV:" + namespace. + + This example also demonstrates the use of XML namespace scoping and + the default namespace. Since the "xmlns" attribute does not contain + a prefix, the namespace applies by default to all enclosed elements. + Hence, all elements that do not explicitly state the namespace to + which they belong are members of the "DAV:" namespace. + + + + +<span class="grey">Dusseault Standards Track [Page 40]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-41" id="page-41" href="#page-41" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.1.5" href="#section-9.1.5">9.1.5</a>. Example - Using So-called 'allprop'</h4></span> + + Note that 'allprop', despite its name, which remains for backward- + compatibility, does not return every property, but only dead + properties and the live properties defined in this specification. + + >>Request + + PROPFIND /container/ HTTP/1.1 + Host: www.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:propfind xmlns:D="DAV:"> + <D:allprop/> + </D:propfind> + + + >>Response + + HTTP/1.1 207 Multi-Status + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:"> + <D:response> + <D:href>/container/</D:href> + <D:propstat> + <D:prop xmlns:R="http://ns.example.com/boxschema/"> + <R:bigbox><R:BoxType>Box type A</R:BoxType></R:bigbox> + <R:author><R:Name>Hadrian</R:Name></R:author> + <D:creationdate>1997-12-01T17:42:21-08:00</D:creationdate> + <D:displayname>Example collection</D:displayname> + <D:resourcetype><D:collection/></D:resourcetype> + <D:supportedlock> + <D:lockentry> + <D:lockscope><D:exclusive/></D:lockscope> + <D:locktype><D:write/></D:locktype> + </D:lockentry> + <D:lockentry> + <D:lockscope><D:shared/></D:lockscope> + <D:locktype><D:write/></D:locktype> + </D:lockentry> + </D:supportedlock> + </D:prop> + + + +<span class="grey">Dusseault Standards Track [Page 41]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-42" id="page-42" href="#page-42" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + <D:response> + <D:href>/container/front.html</D:href> + <D:propstat> + <D:prop xmlns:R="http://ns.example.com/boxschema/"> + <R:bigbox><R:BoxType>Box type B</R:BoxType> + </R:bigbox> + <D:creationdate>1997-12-01T18:27:21-08:00</D:creationdate> + <D:displayname>Example HTML resource</D:displayname> + <D:getcontentlength>4525</D:getcontentlength> + <D:getcontenttype>text/html</D:getcontenttype> + <D:getetag>"zzyzx"</D:getetag> + <D:getlastmodified + >Mon, 12 Jan 1998 09:25:56 GMT</D:getlastmodified> + <D:resourcetype/> + <D:supportedlock> + <D:lockentry> + <D:lockscope><D:exclusive/></D:lockscope> + <D:locktype><D:write/></D:locktype> + </D:lockentry> + <D:lockentry> + <D:lockscope><D:shared/></D:lockscope> + <D:locktype><D:write/></D:locktype> + </D:lockentry> + </D:supportedlock> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + + In this example, PROPFIND was invoked on the resource + http://www.example.com/container/ with a Depth header of 1, meaning + the request applies to the resource and its children, and a propfind + XML element containing the allprop XML element, meaning the request + should return the name and value of all the dead properties defined + on the resources, plus the name and value of all the properties + defined in this specification. This example illustrates the use of + relative references in the 'href' elements of the response. + + The resource http://www.example.com/container/ has six properties + defined on it: 'bigbox' and 'author in the + "http://ns.example.com/boxschema/" namespace, DAV:creationdate, DAV: + displayname, DAV:resourcetype, and DAV:supportedlock. + + + + + +<span class="grey">Dusseault Standards Track [Page 42]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-43" id="page-43" href="#page-43" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + The last four properties are WebDAV-specific, defined in <a href="#section-15">Section 15</a>. + Since GET is not supported on this resource, the get* properties + (e.g., DAV:getcontentlength) are not defined on this resource. The + WebDAV-specific properties assert that "container" was created on + December 1, 1997, at 5:42:21PM, in a time zone 8 hours west of GMT + (DAV:creationdate), has a name of "Example collection" (DAV: + displayname), a collection resource type (DAV:resourcetype), and + supports exclusive write and shared write locks (DAV:supportedlock). + + The resource http://www.example.com/container/front.html has nine + properties defined on it: + + 'bigbox' in the "http://ns.example.com/boxschema/" namespace (another + instance of the "bigbox" property type), DAV:creationdate, DAV: + displayname, DAV:getcontentlength, DAV:getcontenttype, DAV:getetag, + DAV:getlastmodified, DAV:resourcetype, and DAV:supportedlock. + + The DAV-specific properties assert that "front.html" was created on + December 1, 1997, at 6:27:21PM, in a time zone 8 hours west of GMT + (DAV:creationdate), has a name of "Example HTML resource" (DAV: + displayname), a content length of 4525 bytes (DAV:getcontentlength), + a MIME type of "text/html" (DAV:getcontenttype), an entity tag of + "zzyzx" (DAV:getetag), was last modified on Monday, January 12, 1998, + at 09:25:56 GMT (DAV:getlastmodified), has an empty resource type, + meaning that it is not a collection (DAV:resourcetype), and supports + both exclusive write and shared write locks (DAV:supportedlock). + +<span class="h4"><h4><a class="selflink" name="section-9.1.6" href="#section-9.1.6">9.1.6</a>. Example - Using 'allprop' with 'include'</h4></span> + + >>Request + + PROPFIND /mycol/ HTTP/1.1 + Host: www.example.com + Depth: 1 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:propfind xmlns:D="DAV:"> + <D:allprop/> + <D:include> + <D:supported-live-property-set/> + <D:supported-report-set/> + </D:include> + </D:propfind> + + + + + + +<span class="grey">Dusseault Standards Track [Page 43]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-44" id="page-44" href="#page-44" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + In this example, PROPFIND is executed on the resource + http://www.example.com/mycol/ and its internal member resources. The + client requests the values of all live properties defined in this + specification, plus all dead properties, plus two more live + properties defined in [<a href="http://tools.ietf.org/html/rfc3253" title="" versioning extensions to webdav distributed authoring and>RFC3253</a>]. The response is not shown. + +<span class="h3"><h3><a class="selflink" name="section-9.2" href="#section-9.2">9.2</a>. PROPPATCH Method</h3></span> + + The PROPPATCH method processes instructions specified in the request + body to set and/or remove properties defined on the resource + identified by the Request-URI. + + All DAV-compliant resources MUST support the PROPPATCH method and + MUST process instructions that are specified using the + propertyupdate, set, and remove XML elements. Execution of the + directives in this method is, of course, subject to access control + constraints. DAV-compliant resources SHOULD support the setting of + arbitrary dead properties. + + The request message body of a PROPPATCH method MUST contain the + propertyupdate XML element. + + Servers MUST process PROPPATCH instructions in document order (an + exception to the normal rule that ordering is irrelevant). + Instructions MUST either all be executed or none executed. Thus, if + any error occurs during processing, all executed instructions MUST be + undone and a proper error result returned. Instruction processing + details can be found in the definition of the set and remove + instructions in Sections <a href="#section-14.23">14.23</a> and <a href="#section-14.26">14.26</a>. + + If a server attempts to make any of the property changes in a + PROPPATCH request (i.e., the request is not rejected for high-level + errors before processing the body), the response MUST be a Multi- + Status response as described in <a href="#section-9.2.1">Section 9.2.1</a>. + + This method is idempotent, but not safe (see <a href="http://tools.ietf.org/html/rfc2616#section-9.1">Section 9.1 of + [RFC2616]</a>). Responses to this method MUST NOT be cached. + +<span class="h4"><h4><a class="selflink" name="section-9.2.1" href="#section-9.2.1">9.2.1</a>. Status Codes for Use in 'propstat' Element</h4></span> + + In PROPPATCH responses, information about individual properties is + returned inside 'propstat' elements (see <a href="#section-14.22">Section 14.22</a>), each + containing an individual 'status' element containing information + about the properties appearing in it. The list below summarizes the + most common status codes used inside 'propstat'; however, clients + should be prepared to handle other 2/3/4/5xx series status codes as + well. + + + + +<span class="grey">Dusseault Standards Track [Page 44]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-45" id="page-45" href="#page-45" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + 200 (OK) - The property set or change succeeded. Note that if this + appears for one property, it appears for every property in the + response, due to the atomicity of PROPPATCH. + + 403 (Forbidden) - The client, for reasons the server chooses not to + specify, cannot alter one of the properties. + + 403 (Forbidden): The client has attempted to set a protected + property, such as DAV:getetag. If returning this error, the server + SHOULD use the precondition code 'cannot-modify-protected-property' + inside the response body. + + 409 (Conflict) - The client has provided a value whose semantics are + not appropriate for the property. + + 424 (Failed Dependency) - The property change could not be made + because of another property change that failed. + + 507 (Insufficient Storage) - The server did not have sufficient space + to record the property. + +<span class="h4"><h4><a class="selflink" name="section-9.2.2" href="#section-9.2.2">9.2.2</a>. Example - PROPPATCH</h4></span> + + >>Request + + PROPPATCH /bar.html HTTP/1.1 + Host: www.example.com + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:propertyupdate xmlns:D="DAV:" + xmlns:Z="http://ns.example.com/standards/z39.50/"> + <D:set> + <D:prop> + <Z:Authors> + <Z:Author>Jim Whitehead</Z:Author> + <Z:Author>Roy Fielding</Z:Author> + </Z:Authors> + </D:prop> + </D:set> + <D:remove> + <D:prop><Z:Copyright-Owner/></D:prop> + </D:remove> + </D:propertyupdate> + + + + + + +<span class="grey">Dusseault Standards Track [Page 45]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-46" id="page-46" href="#page-46" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + >>Response + + HTTP/1.1 207 Multi-Status + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:Z="http://ns.example.com/standards/z39.50/"> + <D:response> + <D:href>http://www.example.com/bar.html</D:href> + <D:propstat> + <D:prop><Z:Authors/></D:prop> + <D:status>HTTP/1.1 424 Failed Dependency</D:status> + </D:propstat> + <D:propstat> + <D:prop><Z:Copyright-Owner/></D:prop> + <D:status>HTTP/1.1 409 Conflict</D:status> + </D:propstat> + <D:responsedescription> Copyright Owner cannot be deleted or + altered.</D:responsedescription> + </D:response> + </D:multistatus> + + In this example, the client requests the server to set the value of + the "Authors" property in the + "http://ns.example.com/standards/z39.50/" namespace, and to remove + the property "Copyright-Owner" in the same namespace. Since the + Copyright-Owner property could not be removed, no property + modifications occur. The 424 (Failed Dependency) status code for the + Authors property indicates this action would have succeeded if it + were not for the conflict with removing the Copyright-Owner property. + +<span class="h3"><h3><a class="selflink" name="section-9.3" href="#section-9.3">9.3</a>. MKCOL Method</h3></span> + + MKCOL creates a new collection resource at the location specified by + the Request-URI. If the Request-URI is already mapped to a resource, + then the MKCOL MUST fail. During MKCOL processing, a server MUST + make the Request-URI an internal member of its parent collection, + unless the Request-URI is "/". If no such ancestor exists, the + method MUST fail. When the MKCOL operation creates a new collection + resource, all ancestors MUST already exist, or the method MUST fail + with a 409 (Conflict) status code. For example, if a request to + create collection /a/b/c/d/ is made, and /a/b/c/ does not exist, the + request must fail. + + When MKCOL is invoked without a request body, the newly created + collection SHOULD have no members. + + + +<span class="grey">Dusseault Standards Track [Page 46]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-47" id="page-47" href="#page-47" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + A MKCOL request message may contain a message body. The precise + behavior of a MKCOL request when the body is present is undefined, + but limited to creating collections, members of a collection, bodies + of members, and properties on the collections or members. If the + server receives a MKCOL request entity type it does not support or + understand, it MUST respond with a 415 (Unsupported Media Type) + status code. If the server decides to reject the request based on + the presence of an entity or the type of an entity, it should use the + 415 (Unsupported Media Type) status code. + + This method is idempotent, but not safe (see <a href="http://tools.ietf.org/html/rfc2616#section-9.1">Section 9.1 of + [RFC2616]</a>). Responses to this method MUST NOT be cached. + +<span class="h4"><h4><a class="selflink" name="section-9.3.1" href="#section-9.3.1">9.3.1</a>. MKCOL Status Codes</h4></span> + + In addition to the general status codes possible, the following + status codes have specific applicability to MKCOL: + + 201 (Created) - The collection was created. + + 403 (Forbidden) - This indicates at least one of two conditions: 1) + the server does not allow the creation of collections at the given + location in its URL namespace, or 2) the parent collection of the + Request-URI exists but cannot accept members. + + 405 (Method Not Allowed) - MKCOL can only be executed on an unmapped + URL. + + 409 (Conflict) - A collection cannot be made at the Request-URI until + one or more intermediate collections have been created. The server + MUST NOT create those intermediate collections automatically. + + 415 (Unsupported Media Type) - The server does not support the + request body type (although bodies are legal on MKCOL requests, since + this specification doesn't define any, the server is likely not to + support any given body type). + + 507 (Insufficient Storage) - The resource does not have sufficient + space to record the state of the resource after the execution of this + method. + +<span class="h4"><h4><a class="selflink" name="section-9.3.2" href="#section-9.3.2">9.3.2</a>. Example - MKCOL</h4></span> + + This example creates a collection called /webdisc/xfiles/ on the + server www.example.com. + + + + + + +<span class="grey">Dusseault Standards Track [Page 47]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-48" id="page-48" href="#page-48" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + >>Request + + MKCOL /webdisc/xfiles/ HTTP/1.1 + Host: www.example.com + + + >>Response + + HTTP/1.1 201 Created + +<span class="h3"><h3><a class="selflink" name="section-9.4" href="#section-9.4">9.4</a>. GET, HEAD for Collections</h3></span> + + The semantics of GET are unchanged when applied to a collection, + since GET is defined as, "retrieve whatever information (in the form + of an entity) is identified by the Request-URI" [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>]. GET, when + applied to a collection, may return the contents of an "index.html" + resource, a human-readable view of the contents of the collection, or + something else altogether. Hence, it is possible that the result of + a GET on a collection will bear no correlation to the membership of + the collection. + + Similarly, since the definition of HEAD is a GET without a response + message body, the semantics of HEAD are unmodified when applied to + collection resources. + +<span class="h3"><h3><a class="selflink" name="section-9.5" href="#section-9.5">9.5</a>. POST for Collections</h3></span> + + Since by definition the actual function performed by POST is + determined by the server and often depends on the particular + resource, the behavior of POST when applied to collections cannot be + meaningfully modified because it is largely undefined. Thus, the + semantics of POST are unmodified when applied to a collection. + +<span class="h3"><h3><a class="selflink" name="section-9.6" href="#section-9.6">9.6</a>. DELETE Requirements</h3></span> + + DELETE is defined in <a href="http://tools.ietf.org/html/rfc2616#section-9.7">[RFC2616], Section 9.7</a>, to "delete the resource + identified by the Request-URI". However, WebDAV changes some DELETE + handling requirements. + + A server processing a successful DELETE request: + + MUST destroy locks rooted on the deleted resource + + MUST remove the mapping from the Request-URI to any resource. + + Thus, after a successful DELETE operation (and in the absence of + other actions), a subsequent GET/HEAD/PROPFIND request to the target + Request-URI MUST return 404 (Not Found). + + + +<span class="grey">Dusseault Standards Track [Page 48]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-49" id="page-49" href="#page-49" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.6.1" href="#section-9.6.1">9.6.1</a>. DELETE for Collections</h4></span> + + The DELETE method on a collection MUST act as if a "Depth: infinity" + header was used on it. A client MUST NOT submit a Depth header with + a DELETE on a collection with any value but infinity. + + DELETE instructs that the collection specified in the Request-URI and + all resources identified by its internal member URLs are to be + deleted. + + If any resource identified by a member URL cannot be deleted, then + all of the member's ancestors MUST NOT be deleted, so as to maintain + URL namespace consistency. + + Any headers included with DELETE MUST be applied in processing every + resource to be deleted. + + When the DELETE method has completed processing, it MUST result in a + consistent URL namespace. + + If an error occurs deleting a member resource (a resource other than + the resource identified in the Request-URI), then the response can be + a 207 (Multi-Status). Multi-Status is used here to indicate which + internal resources could NOT be deleted, including an error code, + which should help the client understand which resources caused the + failure. For example, the Multi-Status body could include a response + with status 423 (Locked) if an internal resource was locked. + + The server MAY return a 4xx status response, rather than a 207, if + the request failed completely. + + 424 (Failed Dependency) status codes SHOULD NOT be in the 207 (Multi- + Status) response for DELETE. They can be safely left out because the + client will know that the ancestors of a resource could not be + deleted when the client receives an error for the ancestor's progeny. + Additionally, 204 (No Content) errors SHOULD NOT be returned in the + 207 (Multi-Status). The reason for this prohibition is that 204 (No + Content) is the default success code. + +<span class="h4"><h4><a class="selflink" name="section-9.6.2" href="#section-9.6.2">9.6.2</a>. Example - DELETE</h4></span> + + >>Request + + DELETE /container/ HTTP/1.1 + Host: www.example.com + + + + + + +<span class="grey">Dusseault Standards Track [Page 49]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-50" id="page-50" href="#page-50" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + >>Response + + HTTP/1.1 207 Multi-Status + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <d:multistatus xmlns:d="DAV:"> + <d:response> + <d:href>http://www.example.com/container/resource3</d:href> + <d:status>HTTP/1.1 423 Locked</d:status> + <d:error><d:lock-token-submitted/></d:error> + </d:response> + </d:multistatus> + + In this example, the attempt to delete + http://www.example.com/container/resource3 failed because it is + locked, and no lock token was submitted with the request. + Consequently, the attempt to delete http://www.example.com/container/ + also failed. Thus, the client knows that the attempt to delete + http://www.example.com/container/ must have also failed since the + parent cannot be deleted unless its child has also been deleted. + Even though a Depth header has not been included, a depth of infinity + is assumed because the method is on a collection. + +<span class="h3"><h3><a class="selflink" name="section-9.7" href="#section-9.7">9.7</a>. PUT Requirements</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-9.7.1" href="#section-9.7.1">9.7.1</a>. PUT for Non-Collection Resources</h4></span> + + A PUT performed on an existing resource replaces the GET response + entity of the resource. Properties defined on the resource may be + recomputed during PUT processing but are not otherwise affected. For + example, if a server recognizes the content type of the request body, + it may be able to automatically extract information that could be + profitably exposed as properties. + + A PUT that would result in the creation of a resource without an + appropriately scoped parent collection MUST fail with a 409 + (Conflict). + + A PUT request allows a client to indicate what media type an entity + body has, and whether it should change if overwritten. Thus, a + client SHOULD provide a Content-Type for a new resource if any is + known. If the client does not provide a Content-Type for a new + resource, the server MAY create a resource with no Content-Type + assigned, or it MAY attempt to assign a Content-Type. + + + + + +<span class="grey">Dusseault Standards Track [Page 50]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-51" id="page-51" href="#page-51" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Note that although a recipient ought generally to treat metadata + supplied with an HTTP request as authoritative, in practice there's + no guarantee that a server will accept client-supplied metadata + (e.g., any request header beginning with "Content-"). Many servers + do not allow configuring the Content-Type on a per-resource basis in + the first place. Thus, clients can't always rely on the ability to + directly influence the content type by including a Content-Type + request header. + +<span class="h4"><h4><a class="selflink" name="section-9.7.2" href="#section-9.7.2">9.7.2</a>. PUT for Collections</h4></span> + + This specification does not define the behavior of the PUT method for + existing collections. A PUT request to an existing collection MAY be + treated as an error (405 Method Not Allowed). + + The MKCOL method is defined to create collections. + +<span class="h3"><h3><a class="selflink" name="section-9.8" href="#section-9.8">9.8</a>. COPY Method</h3></span> + + The COPY method creates a duplicate of the source resource identified + by the Request-URI, in the destination resource identified by the URI + in the Destination header. The Destination header MUST be present. + The exact behavior of the COPY method depends on the type of the + source resource. + + All WebDAV-compliant resources MUST support the COPY method. + However, support for the COPY method does not guarantee the ability + to copy a resource. For example, separate programs may control + resources on the same server. As a result, it may not be possible to + copy a resource to a location that appears to be on the same server. + + This method is idempotent, but not safe (see <a href="http://tools.ietf.org/html/rfc2616#section-9.1">Section 9.1 of + [RFC2616]</a>). Responses to this method MUST NOT be cached. + +<span class="h4"><h4><a class="selflink" name="section-9.8.1" href="#section-9.8.1">9.8.1</a>. COPY for Non-collection Resources</h4></span> + + When the source resource is not a collection, the result of the COPY + method is the creation of a new resource at the destination whose + state and behavior match that of the source resource as closely as + possible. Since the environment at the destination may be different + than at the source due to factors outside the scope of control of the + server, such as the absence of resources required for correct + operation, it may not be possible to completely duplicate the + behavior of the resource at the destination. Subsequent alterations + to the destination resource will not modify the source resource. + Subsequent alterations to the source resource will not modify the + destination resource. + + + + +<span class="grey">Dusseault Standards Track [Page 51]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-52" id="page-52" href="#page-52" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.8.2" href="#section-9.8.2">9.8.2</a>. COPY for Properties</h4></span> + + After a successful COPY invocation, all dead properties on the source + resource SHOULD be duplicated on the destination resource. Live + properties described in this document SHOULD be duplicated as + identically behaving live properties at the destination resource, but + not necessarily with the same values. Servers SHOULD NOT convert + live properties into dead properties on the destination resource, + because clients may then draw incorrect conclusions about the state + or functionality of a resource. Note that some live properties are + defined such that the absence of the property has a specific meaning + (e.g., a flag with one meaning if present, and the opposite if + absent), and in these cases, a successful COPY might result in the + property being reported as "Not Found" in subsequent requests. + + When the destination is an unmapped URL, a COPY operation creates a + new resource much like a PUT operation does. Live properties that + are related to resource creation (such as DAV:creationdate) should + have their values set accordingly. + +<span class="h4"><h4><a class="selflink" name="section-9.8.3" href="#section-9.8.3">9.8.3</a>. COPY for Collections</h4></span> + + The COPY method on a collection without a Depth header MUST act as if + a Depth header with value "infinity" was included. A client may + submit a Depth header on a COPY on a collection with a value of "0" + or "infinity". Servers MUST support the "0" and "infinity" Depth + header behaviors on WebDAV-compliant resources. + + An infinite-depth COPY instructs that the collection resource + identified by the Request-URI is to be copied to the location + identified by the URI in the Destination header, and all its internal + member resources are to be copied to a location relative to it, + recursively through all levels of the collection hierarchy. Note + that an infinite-depth COPY of /A/ into /A/B/ could lead to infinite + recursion if not handled correctly. + + A COPY of "Depth: 0" only instructs that the collection and its + properties, but not resources identified by its internal member URLs, + are to be copied. + + Any headers included with a COPY MUST be applied in processing every + resource to be copied with the exception of the Destination header. + + The Destination header only specifies the destination URI for the + Request-URI. When applied to members of the collection identified by + the Request-URI, the value of Destination is to be modified to + reflect the current location in the hierarchy. So, if the Request- + URI is /a/ with Host header value http://example.com/ and the + + + +<span class="grey">Dusseault Standards Track [Page 52]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-53" id="page-53" href="#page-53" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Destination is http://example.com/b/, then when + http://example.com/a/c/d is processed, it must use a Destination of + http://example.com/b/c/d. + + When the COPY method has completed processing, it MUST have created a + consistent URL namespace at the destination (see <a href="#section-5.1">Section 5.1</a> for the + definition of namespace consistency). However, if an error occurs + while copying an internal collection, the server MUST NOT copy any + resources identified by members of this collection (i.e., the server + must skip this subtree), as this would create an inconsistent + namespace. After detecting an error, the COPY operation SHOULD try + to finish as much of the original copy operation as possible (i.e., + the server should still attempt to copy other subtrees and their + members that are not descendants of an error-causing collection). + + So, for example, if an infinite-depth copy operation is performed on + collection /a/, which contains collections /a/b/ and /a/c/, and an + error occurs copying /a/b/, an attempt should still be made to copy + /a/c/. Similarly, after encountering an error copying a non- + collection resource as part of an infinite-depth copy, the server + SHOULD try to finish as much of the original copy operation as + possible. + + If an error in executing the COPY method occurs with a resource other + than the resource identified in the Request-URI, then the response + MUST be a 207 (Multi-Status), and the URL of the resource causing the + failure MUST appear with the specific error. + + The 424 (Failed Dependency) status code SHOULD NOT be returned in the + 207 (Multi-Status) response from a COPY method. These responses can + be safely omitted because the client will know that the progeny of a + resource could not be copied when the client receives an error for + the parent. Additionally, 201 (Created)/204 (No Content) status + codes SHOULD NOT be returned as values in 207 (Multi-Status) + responses from COPY methods. They, too, can be safely omitted + because they are the default success codes. + +<span class="h4"><h4><a class="selflink" name="section-9.8.4" href="#section-9.8.4">9.8.4</a>. COPY and Overwriting Destination Resources</h4></span> + + If a COPY request has an Overwrite header with a value of "F", and a + resource exists at the Destination URL, the server MUST fail the + request. + + When a server executes a COPY request and overwrites a destination + resource, the exact behavior MAY depend on many factors, including + WebDAV extension capabilities (see particularly [<a href="http://tools.ietf.org/html/rfc3253" title="" versioning extensions to webdav distributed authoring and>RFC3253</a>]). For + + + + + +<span class="grey">Dusseault Standards Track [Page 53]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-54" id="page-54" href="#page-54" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + example, when an ordinary resource is overwritten, the server could + delete the target resource before doing the copy, or could do an in- + place overwrite to preserve live properties. + + When a collection is overwritten, the membership of the destination + collection after the successful COPY request MUST be the same + membership as the source collection immediately before the COPY. + Thus, merging the membership of the source and destination + collections together in the destination is not a compliant behavior. + + In general, if clients require the state of the destination URL to be + wiped out prior to a COPY (e.g., to force live properties to be + reset), then the client could send a DELETE to the destination before + the COPY request to ensure this reset. + +<span class="h4"><h4><a class="selflink" name="section-9.8.5" href="#section-9.8.5">9.8.5</a>. Status Codes</h4></span> + + In addition to the general status codes possible, the following + status codes have specific applicability to COPY: + + 201 (Created) - The source resource was successfully copied. The + COPY operation resulted in the creation of a new resource. + + 204 (No Content) - The source resource was successfully copied to a + preexisting destination resource. + + 207 (Multi-Status) - Multiple resources were to be affected by the + COPY, but errors on some of them prevented the operation from taking + place. Specific error messages, together with the most appropriate + of the source and destination URLs, appear in the body of the multi- + status response. For example, if a destination resource was locked + and could not be overwritten, then the destination resource URL + appears with the 423 (Locked) status. + + 403 (Forbidden) - The operation is forbidden. A special case for + COPY could be that the source and destination resources are the same + resource. + + 409 (Conflict) - A resource cannot be created at the destination + until one or more intermediate collections have been created. The + server MUST NOT create those intermediate collections automatically. + + 412 (Precondition Failed) - A precondition header check failed, e.g., + the Overwrite header is "F" and the destination URL is already mapped + to a resource. + + + + + + +<span class="grey">Dusseault Standards Track [Page 54]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-55" id="page-55" href="#page-55" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + 423 (Locked) - The destination resource, or resource within the + destination collection, was locked. This response SHOULD contain the + 'lock-token-submitted' precondition element. + + 502 (Bad Gateway) - This may occur when the destination is on another + server, repository, or URL namespace. Either the source namespace + does not support copying to the destination namespace, or the + destination namespace refuses to accept the resource. The client may + wish to try GET/PUT and PROPFIND/PROPPATCH instead. + + 507 (Insufficient Storage) - The destination resource does not have + sufficient space to record the state of the resource after the + execution of this method. + +<span class="h4"><h4><a class="selflink" name="section-9.8.6" href="#section-9.8.6">9.8.6</a>. Example - COPY with Overwrite</h4></span> + + This example shows resource + http://www.example.com/~fielding/index.html being copied to the + location http://www.example.com/users/f/fielding/index.html. The 204 + (No Content) status code indicates that the existing resource at the + destination was overwritten. + + >>Request + + COPY /~fielding/index.html HTTP/1.1 + Host: www.example.com + Destination: http://www.example.com/users/f/fielding/index.html + + >>Response + + HTTP/1.1 204 No Content + +<span class="h4"><h4><a class="selflink" name="section-9.8.7" href="#section-9.8.7">9.8.7</a>. Example - COPY with No Overwrite</h4></span> + + The following example shows the same copy operation being performed, + but with the Overwrite header set to "F." A response of 412 + (Precondition Failed) is returned because the destination URL is + already mapped to a resource. + + >>Request + + COPY /~fielding/index.html HTTP/1.1 + Host: www.example.com + Destination: http://www.example.com/users/f/fielding/index.html + Overwrite: F + + + + + + +<span class="grey">Dusseault Standards Track [Page 55]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-56" id="page-56" href="#page-56" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + >>Response + + HTTP/1.1 412 Precondition Failed + +<span class="h4"><h4><a class="selflink" name="section-9.8.8" href="#section-9.8.8">9.8.8</a>. Example - COPY of a Collection</h4></span> + + >>Request + + COPY /container/ HTTP/1.1 + Host: www.example.com + Destination: http://www.example.com/othercontainer/ + Depth: infinity + + >>Response + + HTTP/1.1 207 Multi-Status + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + + <d:multistatus xmlns:d="DAV:"> + <d:response> + <d:href>http://www.example.com/othercontainer/R2/</d:href> + <d:status>HTTP/1.1 423 Locked</d:status> + <d:error><d:lock-token-submitted/></d:error> + </d:response> + </d:multistatus> + + The Depth header is unnecessary as the default behavior of COPY on a + collection is to act as if a "Depth: infinity" header had been + submitted. In this example, most of the resources, along with the + collection, were copied successfully. However, the collection R2 + failed because the destination R2 is locked. Because there was an + error copying R2, none of R2's members were copied. However, no + errors were listed for those members due to the error minimization + rules. + +<span class="h3"><h3><a class="selflink" name="section-9.9" href="#section-9.9">9.9</a>. MOVE Method</h3></span> + + The MOVE operation on a non-collection resource is the logical + equivalent of a copy (COPY), followed by consistency maintenance + processing, followed by a delete of the source, where all three + actions are performed in a single operation. The consistency + maintenance step allows the server to perform updates caused by the + move, such as updating all URLs, other than the Request-URI that + identifies the source resource, to point to the new destination + resource. + + + +<span class="grey">Dusseault Standards Track [Page 56]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-57" id="page-57" href="#page-57" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + The Destination header MUST be present on all MOVE methods and MUST + follow all COPY requirements for the COPY part of the MOVE method. + All WebDAV-compliant resources MUST support the MOVE method. + + Support for the MOVE method does not guarantee the ability to move a + resource to a particular destination. For example, separate programs + may actually control different sets of resources on the same server. + Therefore, it may not be possible to move a resource within a + namespace that appears to belong to the same server. + + If a resource exists at the destination, the destination resource + will be deleted as a side-effect of the MOVE operation, subject to + the restrictions of the Overwrite header. + + This method is idempotent, but not safe (see <a href="http://tools.ietf.org/html/rfc2616#section-9.1">Section 9.1 of + [RFC2616]</a>). Responses to this method MUST NOT be cached. + +<span class="h4"><h4><a class="selflink" name="section-9.9.1" href="#section-9.9.1">9.9.1</a>. MOVE for Properties</h4></span> + + Live properties described in this document SHOULD be moved along with + the resource, such that the resource has identically behaving live + properties at the destination resource, but not necessarily with the + same values. Note that some live properties are defined such that + the absence of the property has a specific meaning (e.g., a flag with + one meaning if present, and the opposite if absent), and in these + cases, a successful MOVE might result in the property being reported + as "Not Found" in subsequent requests. If the live properties will + not work the same way at the destination, the server MAY fail the + request. + + MOVE is frequently used by clients to rename a file without changing + its parent collection, so it's not appropriate to reset all live + properties that are set at resource creation. For example, the DAV: + creationdate property value SHOULD remain the same after a MOVE. + + Dead properties MUST be moved along with the resource. + +<span class="h4"><h4><a class="selflink" name="section-9.9.2" href="#section-9.9.2">9.9.2</a>. MOVE for Collections</h4></span> + + A MOVE with "Depth: infinity" instructs that the collection + identified by the Request-URI be moved to the address specified in + the Destination header, and all resources identified by its internal + member URLs are to be moved to locations relative to it, recursively + through all levels of the collection hierarchy. + + The MOVE method on a collection MUST act as if a "Depth: infinity" + header was used on it. A client MUST NOT submit a Depth header on a + MOVE on a collection with any value but "infinity". + + + +<span class="grey">Dusseault Standards Track [Page 57]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-58" id="page-58" href="#page-58" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Any headers included with MOVE MUST be applied in processing every + resource to be moved with the exception of the Destination header. + The behavior of the Destination header is the same as given for COPY + on collections. + + When the MOVE method has completed processing, it MUST have created a + consistent URL namespace at both the source and destination (see + <a href="#section-5.1">Section 5.1</a> for the definition of namespace consistency). However, + if an error occurs while moving an internal collection, the server + MUST NOT move any resources identified by members of the failed + collection (i.e., the server must skip the error-causing subtree), as + this would create an inconsistent namespace. In this case, after + detecting the error, the move operation SHOULD try to finish as much + of the original move as possible (i.e., the server should still + attempt to move other subtrees and the resources identified by their + members that are not descendants of an error-causing collection). + So, for example, if an infinite-depth move is performed on collection + /a/, which contains collections /a/b/ and /a/c/, and an error occurs + moving /a/b/, an attempt should still be made to try moving /a/c/. + Similarly, after encountering an error moving a non-collection + resource as part of an infinite-depth move, the server SHOULD try to + finish as much of the original move operation as possible. + + If an error occurs with a resource other than the resource identified + in the Request-URI, then the response MUST be a 207 (Multi-Status), + and the errored resource's URL MUST appear with the specific error. + + The 424 (Failed Dependency) status code SHOULD NOT be returned in the + 207 (Multi-Status) response from a MOVE method. These errors can be + safely omitted because the client will know that the progeny of a + resource could not be moved when the client receives an error for the + parent. Additionally, 201 (Created)/204 (No Content) responses + SHOULD NOT be returned as values in 207 (Multi-Status) responses from + a MOVE. These responses can be safely omitted because they are the + default success codes. + +<span class="h4"><h4><a class="selflink" name="section-9.9.3" href="#section-9.9.3">9.9.3</a>. MOVE and the Overwrite Header</h4></span> + + If a resource exists at the destination and the Overwrite header is + "T", then prior to performing the move, the server MUST perform a + DELETE with "Depth: infinity" on the destination resource. If the + Overwrite header is set to "F", then the operation will fail. + + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 58]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-59" id="page-59" href="#page-59" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.9.4" href="#section-9.9.4">9.9.4</a>. Status Codes</h4></span> + + In addition to the general status codes possible, the following + status codes have specific applicability to MOVE: + + 201 (Created) - The source resource was successfully moved, and a new + URL mapping was created at the destination. + + 204 (No Content) - The source resource was successfully moved to a + URL that was already mapped. + + 207 (Multi-Status) - Multiple resources were to be affected by the + MOVE, but errors on some of them prevented the operation from taking + place. Specific error messages, together with the most appropriate + of the source and destination URLs, appear in the body of the multi- + status response. For example, if a source resource was locked and + could not be moved, then the source resource URL appears with the 423 + (Locked) status. + + 403 (Forbidden) - Among many possible reasons for forbidding a MOVE + operation, this status code is recommended for use when the source + and destination resources are the same. + + 409 (Conflict) - A resource cannot be created at the destination + until one or more intermediate collections have been created. The + server MUST NOT create those intermediate collections automatically. + Or, the server was unable to preserve the behavior of the live + properties and still move the resource to the destination (see + 'preserved-live-properties' postcondition). + + 412 (Precondition Failed) - A condition header failed. Specific to + MOVE, this could mean that the Overwrite header is "F" and the + destination URL is already mapped to a resource. + + 423 (Locked) - The source or the destination resource, the source or + destination resource parent, or some resource within the source or + destination collection, was locked. This response SHOULD contain the + 'lock-token-submitted' precondition element. + + 502 (Bad Gateway) - This may occur when the destination is on another + server and the destination server refuses to accept the resource. + This could also occur when the destination is on another sub-section + of the same server namespace. + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 59]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-60" id="page-60" href="#page-60" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.9.5" href="#section-9.9.5">9.9.5</a>. Example - MOVE of a Non-Collection</h4></span> + + This example shows resource + http://www.example.com/~fielding/index.html being moved to the + location http://www.example.com/users/f/fielding/index.html. The + contents of the destination resource would have been overwritten if + the destination URL was already mapped to a resource. In this case, + since there was nothing at the destination resource, the response + code is 201 (Created). + + >>Request + + MOVE /~fielding/index.html HTTP/1.1 + Host: www.example.com + Destination: http://www.example/users/f/fielding/index.html + + >>Response + + HTTP/1.1 201 Created + Location: http://www.example.com/users/f/fielding/index.html + +<span class="h4"><h4><a class="selflink" name="section-9.9.6" href="#section-9.9.6">9.9.6</a>. Example - MOVE of a Collection</h4></span> + + >>Request + + MOVE /container/ HTTP/1.1 + Host: www.example.com + Destination: http://www.example.com/othercontainer/ + Overwrite: F + If: (<urn:uuid:fe184f2e-6eec-41d0-c765-01adc56e6bb4>) + (<urn:uuid:e454f3f3-acdc-452a-56c7-00a5c91e4b77>) + + >>Response + + HTTP/1.1 207 Multi-Status + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <d:multistatus xmlns:d='DAV:'> + <d:response> + <d:href>http://www.example.com/othercontainer/C2/</d:href> + <d:status>HTTP/1.1 423 Locked</d:status> + <d:error><d:lock-token-submitted/></d:error> + </d:response> + </d:multistatus> + + + + + +<span class="grey">Dusseault Standards Track [Page 60]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-61" id="page-61" href="#page-61" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + In this example, the client has submitted a number of lock tokens + with the request. A lock token will need to be submitted for every + resource, both source and destination, anywhere in the scope of the + method, that is locked. In this case, the proper lock token was not + submitted for the destination + http://www.example.com/othercontainer/C2/. This means that the + resource /container/C2/ could not be moved. Because there was an + error moving /container/C2/, none of /container/C2's members were + moved. However, no errors were listed for those members due to the + error minimization rules. User agent authentication has previously + occurred via a mechanism outside the scope of the HTTP protocol, in + an underlying transport layer. + +<span class="h3"><h3><a class="selflink" name="section-9.10" href="#section-9.10">9.10</a>. LOCK Method</h3></span> + + The following sections describe the LOCK method, which is used to + take out a lock of any access type and to refresh an existing lock. + These sections on the LOCK method describe only those semantics that + are specific to the LOCK method and are independent of the access + type of the lock being requested. + + Any resource that supports the LOCK method MUST, at minimum, support + the XML request and response formats defined herein. + + This method is neither idempotent nor safe (see <a href="http://tools.ietf.org/html/rfc2616#section-9.1">Section 9.1 of + [RFC2616]</a>). Responses to this method MUST NOT be cached. + +<span class="h4"><h4><a class="selflink" name="section-9.10.1" href="#section-9.10.1">9.10.1</a>. Creating a Lock on an Existing Resource</h4></span> + + A LOCK request to an existing resource will create a lock on the + resource identified by the Request-URI, provided the resource is not + already locked with a conflicting lock. The resource identified in + the Request-URI becomes the root of the lock. LOCK method requests + to create a new lock MUST have an XML request body. The server MUST + preserve the information provided by the client in the 'owner' + element in the LOCK request. The LOCK request MAY have a Timeout + header. + + When a new lock is created, the LOCK response: + + o MUST contain a body with the value of the DAV:lockdiscovery + property in a prop XML element. This MUST contain the full + information about the lock just granted, while information about + other (shared) locks is OPTIONAL. + + o MUST include the Lock-Token response header with the token + associated with the new lock. + + + + +<span class="grey">Dusseault Standards Track [Page 61]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-62" id="page-62" href="#page-62" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.10.2" href="#section-9.10.2">9.10.2</a>. Refreshing Locks</h4></span> + + A lock is refreshed by sending a LOCK request to the URL of a + resource within the scope of the lock. This request MUST NOT have a + body and it MUST specify which lock to refresh by using the 'If' + header with a single lock token (only one lock may be refreshed at a + time). The request MAY contain a Timeout header, which a server MAY + accept to change the duration remaining on the lock to the new value. + A server MUST ignore the Depth header on a LOCK refresh. + + If the resource has other (shared) locks, those locks are unaffected + by a lock refresh. Additionally, those locks do not prevent the + named lock from being refreshed. + + The Lock-Token header is not returned in the response for a + successful refresh LOCK request, but the LOCK response body MUST + contain the new value for the DAV:lockdiscovery property. + +<span class="h4"><h4><a class="selflink" name="section-9.10.3" href="#section-9.10.3">9.10.3</a>. Depth and Locking</h4></span> + + The Depth header may be used with the LOCK method. Values other than + 0 or infinity MUST NOT be used with the Depth header on a LOCK + method. All resources that support the LOCK method MUST support the + Depth header. + + A Depth header of value 0 means to just lock the resource specified + by the Request-URI. + + If the Depth header is set to infinity, then the resource specified + in the Request-URI along with all its members, all the way down the + hierarchy, are to be locked. A successful result MUST return a + single lock token. Similarly, if an UNLOCK is successfully executed + on this token, all associated resources are unlocked. Hence, partial + success is not an option for LOCK or UNLOCK. Either the entire + hierarchy is locked or no resources are locked. + + If the lock cannot be granted to all resources, the server MUST + return a Multi-Status response with a 'response' element for at least + one resource that prevented the lock from being granted, along with a + suitable status code for that failure (e.g., 403 (Forbidden) or 423 + (Locked)). Additionally, if the resource causing the failure was not + the resource requested, then the server SHOULD include a 'response' + element for the Request-URI as well, with a 'status' element + containing 424 Failed Dependency. + + If no Depth header is submitted on a LOCK request, then the request + MUST act as if a "Depth:infinity" had been submitted. + + + + +<span class="grey">Dusseault Standards Track [Page 62]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-63" id="page-63" href="#page-63" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.10.4" href="#section-9.10.4">9.10.4</a>. Locking Unmapped URLs</h4></span> + + A successful LOCK method MUST result in the creation of an empty + resource that is locked (and that is not a collection) when a + resource did not previously exist at that URL. Later on, the lock + may go away but the empty resource remains. Empty resources MUST + then appear in PROPFIND responses including that URL in the response + scope. A server MUST respond successfully to a GET request to an + empty resource, either by using a 204 No Content response, or by + using 200 OK with a Content-Length header indicating zero length + +<span class="h4"><h4><a class="selflink" name="section-9.10.5" href="#section-9.10.5">9.10.5</a>. Lock Compatibility Table</h4></span> + + The table below describes the behavior that occurs when a lock + request is made on a resource. + + +--------------------------+----------------+-------------------+ + | Current State | Shared Lock OK | Exclusive Lock OK | + +--------------------------+----------------+-------------------+ + | None | True | True | + | Shared Lock | True | False | + | Exclusive Lock | False | False* | + +--------------------------+----------------+-------------------+ + + Legend: True = lock may be granted. False = lock MUST NOT be + granted. *=It is illegal for a principal to request the same lock + twice. + + The current lock state of a resource is given in the leftmost column, + and lock requests are listed in the first row. The intersection of a + row and column gives the result of a lock request. For example, if a + shared lock is held on a resource, and an exclusive lock is + requested, the table entry is "false", indicating that the lock must + not be granted. + +<span class="h4"><h4><a class="selflink" name="section-9.10.6" href="#section-9.10.6">9.10.6</a>. LOCK Responses</h4></span> + + In addition to the general status codes possible, the following + status codes have specific applicability to LOCK: + + 200 (OK) - The LOCK request succeeded and the value of the DAV: + lockdiscovery property is included in the response body. + + 201 (Created) - The LOCK request was to an unmapped URL, the request + succeeded and resulted in the creation of a new resource, and the + value of the DAV:lockdiscovery property is included in the response + body. + + + + +<span class="grey">Dusseault Standards Track [Page 63]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-64" id="page-64" href="#page-64" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + 409 (Conflict) - A resource cannot be created at the destination + until one or more intermediate collections have been created. The + server MUST NOT create those intermediate collections automatically. + + 423 (Locked), potentially with 'no-conflicting-lock' precondition + code - There is already a lock on the resource that is not compatible + with the requested lock (see lock compatibility table above). + + 412 (Precondition Failed), with 'lock-token-matches-request-uri' + precondition code - The LOCK request was made with an If header, + indicating that the client wishes to refresh the given lock. + However, the Request-URI did not fall within the scope of the lock + identified by the token. The lock may have a scope that does not + include the Request-URI, or the lock could have disappeared, or the + token may be invalid. + +<span class="h4"><h4><a class="selflink" name="section-9.10.7" href="#section-9.10.7">9.10.7</a>. Example - Simple Lock Request</h4></span> + + >>Request + + LOCK /workspace/webdav/proposal.doc HTTP/1.1 + Host: example.com + Timeout: Infinite, Second-4100000000 + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + Authorization: Digest username="ejw", + realm="ejw@example.com", nonce="...", + uri="/workspace/webdav/proposal.doc", + response="...", opaque="..." + + <?xml version="1.0" encoding="utf-8" ?> + <D:lockinfo xmlns:D='DAV:'> + <D:lockscope><D:exclusive/></D:lockscope> + <D:locktype><D:write/></D:locktype> + <D:owner> + <D:href>http://example.org/~ejw/contact.html</D:href> + </D:owner> + </D:lockinfo> + + >>Response + + HTTP/1.1 200 OK + Lock-Token: <urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4> + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:prop xmlns:D="DAV:"> + + + +<span class="grey">Dusseault Standards Track [Page 64]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-65" id="page-65" href="#page-65" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + <D:lockdiscovery> + <D:activelock> + <D:locktype><D:write/></D:locktype> + <D:lockscope><D:exclusive/></D:lockscope> + <D:depth>infinity</D:depth> + <D:owner> + <D:href>http://example.org/~ejw/contact.html</D:href> + </D:owner> + <D:timeout>Second-604800</D:timeout> + <D:locktoken> + <D:href + >urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4</D:href> + </D:locktoken> + <D:lockroot> + <D:href + >http://example.com/workspace/webdav/proposal.doc</D:href> + </D:lockroot> + </D:activelock> + </D:lockdiscovery> + </D:prop> + + + This example shows the successful creation of an exclusive write lock + on resource http://example.com/workspace/webdav/proposal.doc. The + resource http://example.org/~ejw/contact.html contains contact + information for the creator of the lock. The server has an activity- + based timeout policy in place on this resource, which causes the lock + to automatically be removed after 1 week (604800 seconds). Note that + the nonce, response, and opaque fields have not been calculated in + the Authorization request header. + +<span class="h4"><h4><a class="selflink" name="section-9.10.8" href="#section-9.10.8">9.10.8</a>. Example - Refreshing a Write Lock</h4></span> + + >>Request + + LOCK /workspace/webdav/proposal.doc HTTP/1.1 + Host: example.com + Timeout: Infinite, Second-4100000000 + If: (<urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4>) + Authorization: Digest username="ejw", + realm="ejw@example.com", nonce="...", + uri="/workspace/webdav/proposal.doc", + response="...", opaque="..." + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 65]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-66" id="page-66" href="#page-66" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + >>Response + + HTTP/1.1 200 OK + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:prop xmlns:D="DAV:"> + <D:lockdiscovery> + <D:activelock> + <D:locktype><D:write/></D:locktype> + <D:lockscope><D:exclusive/></D:lockscope> + <D:depth>infinity</D:depth> + <D:owner> + <D:href>http://example.org/~ejw/contact.html</D:href> + </D:owner> + <D:timeout>Second-604800</D:timeout> + <D:locktoken> + <D:href + >urn:uuid:e71d4fae-5dec-22d6-fea5-00a0c91e6be4</D:href> + </D:locktoken> + <D:lockroot> + <D:href + >http://example.com/workspace/webdav/proposal.doc</D:href> + </D:lockroot> + </D:activelock> + </D:lockdiscovery> + </D:prop> + + + This request would refresh the lock, attempting to reset the timeout + to the new value specified in the timeout header. Notice that the + client asked for an infinite time out but the server choose to ignore + the request. In this example, the nonce, response, and opaque fields + have not been calculated in the Authorization request header. + +<span class="h4"><h4><a class="selflink" name="section-9.10.9" href="#section-9.10.9">9.10.9</a>. Example - Multi-Resource Lock Request</h4></span> + + >>Request + + LOCK /webdav/ HTTP/1.1 + Host: example.com + Timeout: Infinite, Second-4100000000 + Depth: infinity + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + Authorization: Digest username="ejw", + realm="ejw@example.com", nonce="...", + + + +<span class="grey">Dusseault Standards Track [Page 66]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-67" id="page-67" href="#page-67" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + uri="/workspace/webdav/proposal.doc", + response="...", opaque="..." + + <?xml version="1.0" encoding="utf-8" ?> + <D:lockinfo xmlns:D="DAV:"> + <D:locktype><D:write/></D:locktype> + <D:lockscope><D:exclusive/></D:lockscope> + <D:owner> + <D:href>http://example.org/~ejw/contact.html</D:href> + </D:owner> + </D:lockinfo> + + >>Response + + HTTP/1.1 207 Multi-Status + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:"> + <D:response> + <D:href>http://example.com/webdav/secret</D:href> + <D:status>HTTP/1.1 403 Forbidden</D:status> + </D:response> + <D:response> + <D:href>http://example.com/webdav/</D:href> + <D:status>HTTP/1.1 424 Failed Dependency</D:status> + </D:response> + </D:multistatus> + + + This example shows a request for an exclusive write lock on a + collection and all its children. In this request, the client has + specified that it desires an infinite-length lock, if available, + otherwise a timeout of 4.1 billion seconds, if available. The + request entity body contains the contact information for the + principal taking out the lock -- in this case, a Web page URL. + + The error is a 403 (Forbidden) response on the resource + http://example.com/webdav/secret. Because this resource could not be + locked, none of the resources were locked. Note also that the a + 'response' element for the Request-URI itself has been included as + required. + + In this example, the nonce, response, and opaque fields have not been + calculated in the Authorization request header. + + + + + +<span class="grey">Dusseault Standards Track [Page 67]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-68" id="page-68" href="#page-68" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-9.11" href="#section-9.11">9.11</a>. UNLOCK Method</h3></span> + + The UNLOCK method removes the lock identified by the lock token in + the Lock-Token request header. The Request-URI MUST identify a + resource within the scope of the lock. + + Note that use of the Lock-Token header to provide the lock token is + not consistent with other state-changing methods, which all require + an If header with the lock token. Thus, the If header is not needed + to provide the lock token. Naturally, when the If header is present, + it has its normal meaning as a conditional header. + + For a successful response to this method, the server MUST delete the + lock entirely. + + If all resources that have been locked under the submitted lock token + cannot be unlocked, then the UNLOCK request MUST fail. + + A successful response to an UNLOCK method does not mean that the + resource is necessarily unlocked. It means that the specific lock + corresponding to the specified token no longer exists. + + Any DAV-compliant resource that supports the LOCK method MUST support + the UNLOCK method. + + This method is idempotent, but not safe (see <a href="http://tools.ietf.org/html/rfc2616#section-9.1">Section 9.1 of + [RFC2616]</a>). Responses to this method MUST NOT be cached. + +<span class="h4"><h4><a class="selflink" name="section-9.11.1" href="#section-9.11.1">9.11.1</a>. Status Codes</h4></span> + + In addition to the general status codes possible, the following + status codes have specific applicability to UNLOCK: + + 204 (No Content) - Normal success response (rather than 200 OK, since + 200 OK would imply a response body, and an UNLOCK success response + does not normally contain a body). + + 400 (Bad Request) - No lock token was provided. + + 403 (Forbidden) - The currently authenticated principal does not have + permission to remove the lock. + + 409 (Conflict), with 'lock-token-matches-request-uri' precondition - + The resource was not locked, or the request was made to a Request-URI + that was not within the scope of the lock. + + + + + + +<span class="grey">Dusseault Standards Track [Page 68]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-69" id="page-69" href="#page-69" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.11.2" href="#section-9.11.2">9.11.2</a>. Example - UNLOCK</h4></span> + + >>Request + + UNLOCK /workspace/webdav/info.doc HTTP/1.1 + Host: example.com + Lock-Token: <urn:uuid:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7> + Authorization: Digest username="ejw" + realm="ejw@example.com", nonce="...", + uri="/workspace/webdav/proposal.doc", + response="...", opaque="..." + + >>Response + + HTTP/1.1 204 No Content + + In this example, the lock identified by the lock token + "urn:uuid:a515cfa4-5da4-22e1-f5b5-00a0451e6bf7" is successfully + removed from the resource + http://example.com/workspace/webdav/info.doc. If this lock included + more than just one resource, the lock is removed from all resources + included in the lock. + + In this example, the nonce, response, and opaque fields have not been + calculated in the Authorization request header. + +<span class="h2"><h2><a class="selflink" name="section-10" href="#section-10">10</a>. HTTP Headers for Distributed Authoring</h2></span> + + All DAV headers follow the same basic formatting rules as HTTP + headers. This includes rules like line continuation and how to + combine (or separate) multiple instances of the same header using + commas. + + WebDAV adds two new conditional headers to the set defined in HTTP: + the If and Overwrite headers. + +<span class="h3"><h3><a class="selflink" name="section-10.1" href="#section-10.1">10.1</a>. DAV Header</h3></span> + + DAV = "DAV" ":" #( compliance-class ) + compliance-class = ( "1" | "2" | "3" | extend ) + extend = Coded-URL | token + ; token is defined in <a href="http://tools.ietf.org/html/rfc2616#section-2.2">RFC 2616, Section 2.2</a> + Coded-URL = "<" absolute-URI ">" + ; No linear whitespace (LWS) allowed in Coded-URL + ; absolute-URI defined in <a href="http://tools.ietf.org/html/rfc3986#section-4.3">RFC 3986, Section 4.3</a> + + + + + + +<span class="grey">Dusseault Standards Track [Page 69]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-70" id="page-70" href="#page-70" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + This general-header appearing in the response indicates that the + resource supports the DAV schema and protocol as specified. All DAV- + compliant resources MUST return the DAV header with compliance-class + "1" on all OPTIONS responses. In cases where WebDAV is only + supported in part of the server namespace, an OPTIONS request to non- + WebDAV resources (including "/") SHOULD NOT advertise WebDAV support. + + The value is a comma-separated list of all compliance class + identifiers that the resource supports. Class identifiers may be + Coded-URLs or tokens (as defined by [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>]). Identifiers can + appear in any order. Identifiers that are standardized through the + IETF RFC process are tokens, but other identifiers SHOULD be Coded- + URLs to encourage uniqueness. + + A resource must show class 1 compliance if it shows class 2 or 3 + compliance. In general, support for one compliance class does not + entail support for any other, and in particular, support for + compliance class 3 does not require support for compliance class 2. + Please refer to <a href="#section-18">Section 18</a> for more details on compliance classes + defined in this specification. + + Note that many WebDAV servers do not advertise WebDAV support in + response to "OPTIONS *". + + As a request header, this header allows the client to advertise + compliance with named features when the server needs that + information. Clients SHOULD NOT send this header unless a standards + track specification requires it. Any extension that makes use of + this as a request header will need to carefully consider caching + implications. + +<span class="h3"><h3><a class="selflink" name="section-10.2" href="#section-10.2">10.2</a>. Depth Header</h3></span> + + Depth = "Depth" ":" ("0" | "1" | "infinity") + + The Depth request header is used with methods executed on resources + that could potentially have internal members to indicate whether the + method is to be applied only to the resource ("Depth: 0"), to the + resource and its internal members only ("Depth: 1"), or the resource + and all its members ("Depth: infinity"). + + The Depth header is only supported if a method's definition + explicitly provides for such support. + + The following rules are the default behavior for any method that + supports the Depth header. A method may override these defaults by + defining different behavior in its definition. + + + + +<span class="grey">Dusseault Standards Track [Page 70]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-71" id="page-71" href="#page-71" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Methods that support the Depth header may choose not to support all + of the header's values and may define, on a case-by-case basis, the + behavior of the method if a Depth header is not present. For + example, the MOVE method only supports "Depth: infinity", and if a + Depth header is not present, it will act as if a "Depth: infinity" + header had been applied. + + Clients MUST NOT rely upon methods executing on members of their + hierarchies in any particular order or on the execution being atomic + unless the particular method explicitly provides such guarantees. + + Upon execution, a method with a Depth header will perform as much of + its assigned task as possible and then return a response specifying + what it was able to accomplish and what it failed to do. + + So, for example, an attempt to COPY a hierarchy may result in some of + the members being copied and some not. + + By default, the Depth header does not interact with other headers. + That is, each header on a request with a Depth header MUST be applied + only to the Request-URI if it applies to any resource, unless + specific Depth behavior is defined for that header. + + If a source or destination resource within the scope of the Depth + header is locked in such a way as to prevent the successful execution + of the method, then the lock token for that resource MUST be + submitted with the request in the If request header. + + The Depth header only specifies the behavior of the method with + regards to internal members. If a resource does not have internal + members, then the Depth header MUST be ignored. + +<span class="h3"><h3><a class="selflink" name="section-10.3" href="#section-10.3">10.3</a>. Destination Header</h3></span> + + The Destination request header specifies the URI that identifies a + destination resource for methods such as COPY and MOVE, which take + two URIs as parameters. + + Destination = "Destination" ":" Simple-ref + + + If the Destination value is an absolute-URI (<a href="http://tools.ietf.org/html/rfc3986#section-4.3">Section 4.3 of + [RFC3986]</a>), it may name a different server (or different port or + scheme). If the source server cannot attempt a copy to the remote + server, it MUST fail the request. Note that copying and moving + resources to remote servers is not fully defined in this + specification (e.g., specific error conditions). + + + + +<span class="grey">Dusseault Standards Track [Page 71]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-72" id="page-72" href="#page-72" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + If the Destination value is too long or otherwise unacceptable, the + server SHOULD return 400 (Bad Request), ideally with helpful + information in an error body. + +<span class="h3"><h3><a class="selflink" name="section-10.4" href="#section-10.4">10.4</a>. If Header</h3></span> + + The If request header is intended to have similar functionality to + the If-Match header defined in <a href="http://tools.ietf.org/html/rfc2616#section-14.24">Section 14.24 of [RFC2616]</a>. However, + the If header handles any state token as well as ETags. A typical + example of a state token is a lock token, and lock tokens are the + only state tokens defined in this specification. + +<span class="h4"><h4><a class="selflink" name="section-10.4.1" href="#section-10.4.1">10.4.1</a>. Purpose</h4></span> + + The If header has two distinct purposes: + + o The first purpose is to make a request conditional by supplying a + series of state lists with conditions that match tokens and ETags + to a specific resource. If this header is evaluated and all state + lists fail, then the request MUST fail with a 412 (Precondition + Failed) status. On the other hand, the request can succeed only + if one of the described state lists succeeds. The success + criteria for state lists and matching functions are defined in + Sections <a href="#section-10.4.3">10.4.3</a> and <a href="#section-10.4.4">10.4.4</a>. + + o Additionally, the mere fact that a state token appears in an If + header means that it has been "submitted" with the request. In + general, this is used to indicate that the client has knowledge of + that state token. The semantics for submitting a state token + depend on its type (for lock tokens, please refer to <a href="#section-6">Section 6</a>). + + Note that these two purposes need to be treated distinctly: a state + token counts as being submitted independently of whether the server + actually has evaluated the state list it appears in, and also + independently of whether or not the condition it expressed was found + to be true. + +<span class="h4"><h4><a class="selflink" name="section-10.4.2" href="#section-10.4.2">10.4.2</a>. Syntax</h4></span> + + If = "If" ":" ( 1*No-tag-list | 1*Tagged-list ) + + No-tag-list = List + Tagged-list = Resource-Tag 1*List + + List = "(" 1*Condition ")" + Condition = ["Not"] (State-token | "[" entity-tag "]") + ; entity-tag: see <a href="http://tools.ietf.org/html/rfc2616#section-3.11">Section 3.11 of [RFC2616]</a> + ; No LWS allowed between "[", entity-tag and "]" + + + +<span class="grey">Dusseault Standards Track [Page 72]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-73" id="page-73" href="#page-73" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + State-token = Coded-URL + + Resource-Tag = "<" Simple-ref ">" + ; Simple-ref: see <a href="#section-8.3">Section 8.3</a> + ; No LWS allowed in Resource-Tag + + The syntax distinguishes between untagged lists ("No-tag-list") and + tagged lists ("Tagged-list"). Untagged lists apply to the resource + identified by the Request-URI, while tagged lists apply to the + resource identified by the preceding Resource-Tag. + + A Resource-Tag applies to all subsequent Lists, up to the next + Resource-Tag. + + Note that the two list types cannot be mixed within an If header. + This is not a functional restriction because the No-tag-list syntax + is just a shorthand notation for a Tagged-list production with a + Resource-Tag referring to the Request-URI. + + Each List consists of one or more Conditions. Each Condition is + defined in terms of an entity-tag or state-token, potentially negated + by the prefix "Not". + + Note that the If header syntax does not allow multiple instances of + If headers in a single request. However, the HTTP header syntax + allows extending single header values across multiple lines, by + inserting a line break followed by whitespace (see [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>], <a href="#section-4.2">Section</a> + <a href="#section-4.2">4.2</a>). + +<span class="h4"><h4><a class="selflink" name="section-10.4.3" href="#section-10.4.3">10.4.3</a>. List Evaluation</h4></span> + + A Condition that consists of a single entity-tag or state-token + evaluates to true if the resource matches the described state (where + the individual matching functions are defined below in + <a href="#section-10.4.4">Section 10.4.4</a>). Prefixing it with "Not" reverses the result of the + evaluation (thus, the "Not" applies only to the subsequent entity-tag + or state-token). + + Each List production describes a series of conditions. The whole + list evaluates to true if and only if each condition evaluates to + true (that is, the list represents a logical conjunction of + Conditions). + + Each No-tag-list and Tagged-list production may contain one or more + Lists. They evaluate to true if and only if any of the contained + lists evaluates to true (that is, if there's more than one List, that + List sequence represents a logical disjunction of the Lists). + + + + +<span class="grey">Dusseault Standards Track [Page 73]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-74" id="page-74" href="#page-74" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Finally, the whole If header evaluates to true if and only if at + least one of the No-tag-list or Tagged-list productions evaluates to + true. If the header evaluates to false, the server MUST reject the + request with a 412 (Precondition Failed) status. Otherwise, + execution of the request can proceed as if the header wasn't present. + +<span class="h4"><h4><a class="selflink" name="section-10.4.4" href="#section-10.4.4">10.4.4</a>. Matching State Tokens and ETags</h4></span> + + When performing If header processing, the definition of a matching + state token or entity tag is as follows: + + Identifying a resource: The resource is identified by the URI along + with the token, in tagged list production, or by the Request-URI in + untagged list production. + + Matching entity tag: Where the entity tag matches an entity tag + associated with the identified resource. Servers MUST use either the + weak or the strong comparison function defined in <a href="http://tools.ietf.org/html/rfc2616#section-13.3.3">Section 13.3.3 of + [RFC2616]</a>. + + Matching state token: Where there is an exact match between the state + token in the If header and any state token on the identified + resource. A lock state token is considered to match if the resource + is anywhere in the scope of the lock. + + Handling unmapped URLs: For both ETags and state tokens, treat as if + the URL identified a resource that exists but does not have the + specified state. + +<span class="h4"><h4><a class="selflink" name="section-10.4.5" href="#section-10.4.5">10.4.5</a>. If Header and Non-DAV-Aware Proxies</h4></span> + + Non-DAV-aware proxies will not honor the If header, since they will + not understand the If header, and HTTP requires non-understood + headers to be ignored. When communicating with HTTP/1.1 proxies, the + client MUST use the "Cache-Control: no-cache" request header so as to + prevent the proxy from improperly trying to service the request from + its cache. When dealing with HTTP/1.0 proxies, the "Pragma: no- + cache" request header MUST be used for the same reason. + + Because in general clients may not be able to reliably detect non- + DAV-aware intermediates, they are advised to always prevent caching + using the request directives mentioned above. + + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 74]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-75" id="page-75" href="#page-75" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-10.4.6" href="#section-10.4.6">10.4.6</a>. Example - No-tag Production</h4></span> + + If: (<urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2> + ["I am an ETag"]) + (["I am another ETag"]) + + The previous header would require that the resource identified in the + Request-URI be locked with the specified lock token and be in the + state identified by the "I am an ETag" ETag or in the state + identified by the second ETag "I am another ETag". + + To put the matter more plainly one can think of the previous If + header as expressing the condition below: + + ( + is-locked-with(urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2) AND + matches-etag("I am an ETag") + ) + OR + ( + matches-etag("I am another ETag") + ) + +<span class="h4"><h4><a class="selflink" name="section-10.4.7" href="#section-10.4.7">10.4.7</a>. Example - Using "Not" with No-tag Production</h4></span> + + If: (Not <urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2> + <urn:uuid:58f202ac-22cf-11d1-b12d-002035b29092>) + + This If header requires that the resource must not be locked with a + lock having the lock token + urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2 and must be locked by a + lock with the lock token + urn:uuid:58f202ac-22cf-11d1-b12d-002035b29092. + +<span class="h4"><h4><a class="selflink" name="section-10.4.8" href="#section-10.4.8">10.4.8</a>. Example - Causing a Condition to Always Evaluate to True</h4></span> + + There may be cases where a client wishes to submit state tokens, but + doesn't want the request to fail just because the state token isn't + current anymore. One simple way to do this is to include a Condition + that is known to always evaluate to true, such as in: + + If: (<urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2>) + (Not <DAV:no-lock>) + + "DAV:no-lock" is known to never represent a current lock token. Lock + tokens are assigned by the server, following the uniqueness + requirements described in <a href="#section-6.5">Section 6.5</a>, therefore cannot use the + "DAV:" scheme. Thus, by applying "Not" to a state token that is + + + +<span class="grey">Dusseault Standards Track [Page 75]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-76" id="page-76" href="#page-76" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + known not to be current, the Condition always evaluates to true. + Consequently, the whole If header will always evaluate to true, and + the lock token urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2 will be + submitted in any case. + +<span class="h4"><h4><a class="selflink" name="section-10.4.9" href="#section-10.4.9">10.4.9</a>. Example - Tagged List If Header in COPY</h4></span> + + >>Request + + COPY /resource1 HTTP/1.1 + Host: www.example.com + Destination: /resource2 + If: </resource1> + (<urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2> + [W/"A weak ETag"]) (["strong ETag"]) + + In this example, http://www.example.com/resource1 is being copied to + http://www.example.com/resource2. When the method is first applied + to http://www.example.com/resource1, resource1 must be in the state + specified by "(<urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2> [W/"A + weak ETag"]) (["strong ETag"])". That is, either it must be locked + with a lock token of "urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2" + and have a weak entity tag W/"A weak ETag" or it must have a strong + entity tag "strong ETag". + +<span class="h4"><h4><a class="selflink" name="section-10.4.10" href="#section-10.4.10">10.4.10</a>. Example - Matching Lock Tokens with Collection Locks</h4></span> + + DELETE /specs/rfc2518.txt HTTP/1.1 + Host: www.example.com + If: <http://www.example.com/specs/> + (<urn:uuid:181d4fae-7d8c-11d0-a765-00a0c91e6bf2>) + + For this example, the lock token must be compared to the identified + resource, which is the 'specs' collection identified by the URL in + the tagged list production. If the 'specs' collection is not locked + by a lock with the specified lock token, the request MUST fail. + Otherwise, this request could succeed, because the If header + evaluates to true, and because the lock token for the lock affecting + the affected resource has been submitted. + +<span class="h4"><h4><a class="selflink" name="section-10.4.11" href="#section-10.4.11">10.4.11</a>. Example - Matching ETags on Unmapped URLs</h4></span> + + Consider a collection "/specs" that does not contain the member + "/specs/rfc2518.doc". In this case, the If header + + If: </specs/rfc2518.doc> (["4217"]) + + + + + +<span class="grey">Dusseault Standards Track [Page 76]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-77" id="page-77" href="#page-77" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + will evaluate to false (the URI isn't mapped, thus the resource + identified by the URI doesn't have an entity matching the ETag + "4217"). + + On the other hand, an If header of + + If: </specs/rfc2518.doc> (Not ["4217"]) + + will consequently evaluate to true. + + Note that, as defined above in <a href="#section-10.4.4">Section 10.4.4</a>, the same + considerations apply to matching state tokens. + +<span class="h3"><h3><a class="selflink" name="section-10.5" href="#section-10.5">10.5</a>. Lock-Token Header</h3></span> + + Lock-Token = "Lock-Token" ":" Coded-URL + + The Lock-Token request header is used with the UNLOCK method to + identify the lock to be removed. The lock token in the Lock-Token + request header MUST identify a lock that contains the resource + identified by Request-URI as a member. + + The Lock-Token response header is used with the LOCK method to + indicate the lock token created as a result of a successful LOCK + request to create a new lock. + +<span class="h3"><h3><a class="selflink" name="section-10.6" href="#section-10.6">10.6</a>. Overwrite Header</h3></span> + + Overwrite = "Overwrite" ":" ("T" | "F") + + The Overwrite request header specifies whether the server should + overwrite a resource mapped to the destination URL during a COPY or + MOVE. A value of "F" states that the server must not perform the + COPY or MOVE operation if the destination URL does map to a resource. + If the overwrite header is not included in a COPY or MOVE request, + then the resource MUST treat the request as if it has an overwrite + header of value "T". While the Overwrite header appears to duplicate + the functionality of using an "If-Match: *" header (see [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>]), + If-Match applies only to the Request-URI, and not to the Destination + of a COPY or MOVE. + + If a COPY or MOVE is not performed due to the value of the Overwrite + header, the method MUST fail with a 412 (Precondition Failed) status + code. The server MUST do authorization checks before checking this + or any conditional header. + + All DAV-compliant resources MUST support the Overwrite header. + + + + +<span class="grey">Dusseault Standards Track [Page 77]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-78" id="page-78" href="#page-78" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-10.7" href="#section-10.7">10.7</a>. Timeout Request Header</h3></span> + + TimeOut = "Timeout" ":" 1#TimeType + TimeType = ("Second-" DAVTimeOutVal | "Infinite") + ; No LWS allowed within TimeType + DAVTimeOutVal = 1*DIGIT + + Clients MAY include Timeout request headers in their LOCK requests. + However, the server is not required to honor or even consider these + requests. Clients MUST NOT submit a Timeout request header with any + method other than a LOCK method. + + The "Second" TimeType specifies the number of seconds that will + elapse between granting of the lock at the server, and the automatic + removal of the lock. The timeout value for TimeType "Second" MUST + NOT be greater than 2^32-1. + + See <a href="#section-6.6">Section 6.6</a> for a description of lock timeout behavior. + +<span class="h2"><h2><a class="selflink" name="section-11" href="#section-11">11</a>. Status Code Extensions to HTTP/1.1</h2></span> + + The following status codes are added to those defined in HTTP/1.1 + [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>]. + +<span class="h3"><h3><a class="selflink" name="section-11.1" href="#section-11.1">11.1</a>. 207 Multi-Status</h3></span> + + The 207 (Multi-Status) status code provides status for multiple + independent operations (see <a href="#section-13">Section 13</a> for more information). + +<span class="h3"><h3><a class="selflink" name="section-11.2" href="#section-11.2">11.2</a>. 422 Unprocessable Entity</h3></span> + + The 422 (Unprocessable Entity) status code means the server + understands the content type of the request entity (hence a + 415(Unsupported Media Type) status code is inappropriate), and the + syntax of the request entity is correct (thus a 400 (Bad Request) + status code is inappropriate) but was unable to process the contained + instructions. For example, this error condition may occur if an XML + request body contains well-formed (i.e., syntactically correct), but + semantically erroneous, XML instructions. + +<span class="h3"><h3><a class="selflink" name="section-11.3" href="#section-11.3">11.3</a>. 423 Locked</h3></span> + + The 423 (Locked) status code means the source or destination resource + of a method is locked. This response SHOULD contain an appropriate + precondition or postcondition code, such as 'lock-token-submitted' or + 'no-conflicting-lock'. + + + + + +<span class="grey">Dusseault Standards Track [Page 78]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-79" id="page-79" href="#page-79" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-11.4" href="#section-11.4">11.4</a>. 424 Failed Dependency</h3></span> + + The 424 (Failed Dependency) status code means that the method could + not be performed on the resource because the requested action + depended on another action and that action failed. For example, if a + command in a PROPPATCH method fails, then, at minimum, the rest of + the commands will also fail with 424 (Failed Dependency). + +<span class="h3"><h3><a class="selflink" name="section-11.5" href="#section-11.5">11.5</a>. 507 Insufficient Storage</h3></span> + + The 507 (Insufficient Storage) status code means the method could not + be performed on the resource because the server is unable to store + the representation needed to successfully complete the request. This + condition is considered to be temporary. If the request that + received this status code was the result of a user action, the + request MUST NOT be repeated until it is requested by a separate user + action. + +<span class="h2"><h2><a class="selflink" name="section-12" href="#section-12">12</a>. Use of HTTP Status Codes</h2></span> + + These HTTP codes are not redefined, but their use is somewhat + extended by WebDAV methods and requirements. In general, many HTTP + status codes can be used in response to any request, not just in + cases described in this document. Note also that WebDAV servers are + known to use 300-level redirect responses (and early interoperability + tests found clients unprepared to see those responses). A 300-level + response MUST NOT be used when the server has created a new resource + in response to the request. + +<span class="h3"><h3><a class="selflink" name="section-12.1" href="#section-12.1">12.1</a>. 412 Precondition Failed</h3></span> + + Any request can contain a conditional header defined in HTTP (If- + Match, If-Modified-Since, etc.) or the "If" or "Overwrite" + conditional headers defined in this specification. If the server + evaluates a conditional header, and if that condition fails to hold, + then this error code MUST be returned. On the other hand, if the + client did not include a conditional header in the request, then the + server MUST NOT use this status code. + +<span class="h3"><h3><a class="selflink" name="section-12.2" href="#section-12.2">12.2</a>. 414 Request-URI Too Long</h3></span> + + This status code is used in HTTP 1.1 only for Request-URIs, not URIs + in other locations. + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 79]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-80" id="page-80" href="#page-80" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h2"><h2><a class="selflink" name="section-13" href="#section-13">13</a>. Multi-Status Response</h2></span> + + A Multi-Status response conveys information about multiple resources + in situations where multiple status codes might be appropriate. The + default Multi-Status response body is a text/xml or application/xml + HTTP entity with a 'multistatus' root element. Further elements + contain 200, 300, 400, and 500 series status codes generated during + the method invocation. 100 series status codes SHOULD NOT be recorded + in a 'response' XML element. + + Although '207' is used as the overall response status code, the + recipient needs to consult the contents of the multistatus response + body for further information about the success or failure of the + method execution. The response MAY be used in success, partial + success and also in failure situations. + + The 'multistatus' root element holds zero or more 'response' elements + in any order, each with information about an individual resource. + Each 'response' element MUST have an 'href' element to identify the + resource. + + A Multi-Status response uses one out of two distinct formats for + representing the status: + + 1. A 'status' element as child of the 'response' element indicates + the status of the message execution for the identified resource + as a whole (for instance, see <a href="#section-9.6.2">Section 9.6.2</a>). Some method + definitions provide information about specific status codes + clients should be prepared to see in a response. However, + clients MUST be able to handle other status codes, using the + generic rules defined in <a href="http://tools.ietf.org/html/rfc2616#section-10">Section 10 of [RFC2616]</a>. + + 2. For PROPFIND and PROPPATCH, the format has been extended using + the 'propstat' element instead of 'status', providing information + about individual properties of a resource. This format is + specific to PROPFIND and PROPPATCH, and is described in detail in + Sections <a href="#section-9.1">9.1</a> and <a href="#section-9.2">9.2</a>. + +<span class="h3"><h3><a class="selflink" name="section-13.1" href="#section-13.1">13.1</a>. Response Headers</h3></span> + + HTTP defines the Location header to indicate a preferred URL for the + resource that was addressed in the Request-URI (e.g., in response to + successful PUT requests or in redirect responses). However, use of + this header creates ambiguity when there are URLs in the body of the + response, as with Multi-Status. Thus, use of the Location header + with the Multi-Status response is intentionally undefined. + + + + + +<span class="grey">Dusseault Standards Track [Page 80]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-81" id="page-81" href="#page-81" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-13.2" href="#section-13.2">13.2</a>. Handling Redirected Child Resources</h3></span> + + Redirect responses (300-303, 305, and 307) defined in HTTP 1.1 + normally take a Location header to indicate the new URI for the + single resource redirected from the Request-URI. Multi-Status + responses contain many resource addresses, but the original + definition in [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>] did not have any place for the server to + provide the new URI for redirected resources. This specification + does define a 'location' element for this information (see + <a href="#section-14.9">Section 14.9</a>). Servers MUST use this new element with redirect + responses in Multi-Status. + + Clients encountering redirected resources in Multi-Status MUST NOT + rely on the 'location' element being present with a new URI. If the + element is not present, the client MAY reissue the request to the + individual redirected resource, because the response to that request + can be redirected with a Location header containing the new URI. + +<span class="h3"><h3><a class="selflink" name="section-13.3" href="#section-13.3">13.3</a>. Internal Status Codes</h3></span> + + Sections <a href="#section-9.2.1">9.2.1</a>, <a href="#section-9.1.2">9.1.2</a>, <a href="#section-9.6.1">9.6.1</a>, <a href="#section-9.8.3">9.8.3</a>, and <a href="#section-9.9.2">9.9.2</a> define various status + codes used in Multi-Status responses. This specification does not + define the meaning of other status codes that could appear in these + responses. + +<span class="h2"><h2><a class="selflink" name="section-14" href="#section-14">14</a>. XML Element Definitions</h2></span> + + In this section, the final line of each section gives the element + type declaration using the format defined in [<a href="#ref-REC-XML" title="" extensible markup language edition>REC-XML</a>]. The "Value" + field, where present, specifies further restrictions on the allowable + contents of the XML element using BNF (i.e., to further restrict the + values of a PCDATA element). Note that all of the elements defined + here may be extended according to the rules defined in <a href="#section-17">Section 17</a>. + All elements defined here are in the "DAV:" namespace. + +<span class="h3"><h3><a class="selflink" name="section-14.1" href="#section-14.1">14.1</a>. activelock XML Element</h3></span> + + Name: activelock + + Purpose: Describes a lock on a resource. + + + <!ELEMENT activelock (lockscope, locktype, depth, owner?, timeout?, + locktoken?, lockroot)> + + + + + + + +<span class="grey">Dusseault Standards Track [Page 81]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-82" id="page-82" href="#page-82" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-14.2" href="#section-14.2">14.2</a>. allprop XML Element</h3></span> + + Name: allprop + + Purpose: Specifies that all names and values of dead properties and + the live properties defined by this document existing on the + resource are to be returned. + + <!ELEMENT allprop EMPTY > + +<span class="h3"><h3><a class="selflink" name="section-14.3" href="#section-14.3">14.3</a>. collection XML Element</h3></span> + + Name: collection + + Purpose: Identifies the associated resource as a collection. The + DAV:resourcetype property of a collection resource MUST contain + this element. It is normally empty but extensions may add sub- + elements. + + <!ELEMENT collection EMPTY > + +<span class="h3"><h3><a class="selflink" name="section-14.4" href="#section-14.4">14.4</a>. depth XML Element</h3></span> + + Name: depth + + Purpose: Used for representing depth values in XML content (e.g., + in lock information). + + Value: "0" | "1" | "infinity" + + <!ELEMENT depth (#PCDATA) > + +<span class="h3"><h3><a class="selflink" name="section-14.5" href="#section-14.5">14.5</a>. error XML Element</h3></span> + + Name: error + + Purpose: Error responses, particularly 403 Forbidden and 409 + Conflict, sometimes need more information to indicate what went + wrong. In these cases, servers MAY return an XML response body + with a document element of 'error', containing child elements + identifying particular condition codes. + + Description: Contains at least one XML element, and MUST NOT + contain text or mixed content. Any element that is a child of the + 'error' element is considered to be a precondition or + postcondition code. Unrecognized elements MUST be ignored. + + <!ELEMENT error ANY > + + + +<span class="grey">Dusseault Standards Track [Page 82]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-83" id="page-83" href="#page-83" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-14.6" href="#section-14.6">14.6</a>. exclusive XML Element</h3></span> + + Name: exclusive + + Purpose: Specifies an exclusive lock. + + + <!ELEMENT exclusive EMPTY > + + +<span class="h3"><h3><a class="selflink" name="section-14.7" href="#section-14.7">14.7</a>. href XML Element</h3></span> + + Name: href + + Purpose: MUST contain a URI or a relative reference. + + Description: There may be limits on the value of 'href' depending + on the context of its use. Refer to the specification text where + 'href' is used to see what limitations apply in each case. + + Value: Simple-ref + + + <!ELEMENT href (#PCDATA)> + +<span class="h3"><h3><a class="selflink" name="section-14.8" href="#section-14.8">14.8</a>. include XML Element</h3></span> + + Name: include + + Purpose: Any child element represents the name of a property to be + included in the PROPFIND response. All elements inside an + 'include' XML element MUST define properties related to the + resource, although possible property names are in no way limited + to those property names defined in this document or other + standards. This element MUST NOT contain text or mixed content. + + <!ELEMENT include ANY > + +<span class="h3"><h3><a class="selflink" name="section-14.9" href="#section-14.9">14.9</a>. location XML Element</h3></span> + + Name: location + + Purpose: HTTP defines the "Location" header (see [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>], <a href="#section-14.30">Section</a> + <a href="#section-14.30">14.30</a>) for use with some status codes (such as 201 and the 300 + series codes). When these codes are used inside a 'multistatus' + element, the 'location' element can be used to provide the + accompanying Location header value. + + + + +<span class="grey">Dusseault Standards Track [Page 83]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-84" id="page-84" href="#page-84" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Description: Contains a single href element with the same value + that would be used in a Location header. + + + <!ELEMENT location (href)> + +<span class="h3"><h3><a class="selflink" name="section-14.10" href="#section-14.10">14.10</a>. lockentry XML Element</h3></span> + + Name: lockentry + + Purpose: Defines the types of locks that can be used with the + resource. + + <!ELEMENT lockentry (lockscope, locktype) > + +<span class="h3"><h3><a class="selflink" name="section-14.11" href="#section-14.11">14.11</a>. lockinfo XML Element</h3></span> + + Name: lockinfo + + Purpose: The 'lockinfo' XML element is used with a LOCK method to + specify the type of lock the client wishes to have created. + + + <!ELEMENT lockinfo (lockscope, locktype, owner?) > + +<span class="h3"><h3><a class="selflink" name="section-14.12" href="#section-14.12">14.12</a>. lockroot XML Element</h3></span> + + Name: lockroot + + Purpose: Contains the root URL of the lock, which is the URL + through which the resource was addressed in the LOCK request. + + Description: The href element contains the root of the lock. The + server SHOULD include this in all DAV:lockdiscovery property + values and the response to LOCK requests. + + <!ELEMENT lockroot (href) > + +<span class="h3"><h3><a class="selflink" name="section-14.13" href="#section-14.13">14.13</a>. lockscope XML Element</h3></span> + + Name: lockscope + + Purpose: Specifies whether a lock is an exclusive lock, or a shared + lock. + + + <!ELEMENT lockscope (exclusive | shared) > + + + + +<span class="grey">Dusseault Standards Track [Page 84]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-85" id="page-85" href="#page-85" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-14.14" href="#section-14.14">14.14</a>. locktoken XML Element</h3></span> + + Name: locktoken + + Purpose: The lock token associated with a lock. + + Description: The href contains a single lock token URI, which + refers to the lock. + + <!ELEMENT locktoken (href) > + +<span class="h3"><h3><a class="selflink" name="section-14.15" href="#section-14.15">14.15</a>. locktype XML Element</h3></span> + + Name: locktype + + Purpose: Specifies the access type of a lock. At present, this + specification only defines one lock type, the write lock. + + + <!ELEMENT locktype (write) > + + +<span class="h3"><h3><a class="selflink" name="section-14.16" href="#section-14.16">14.16</a>. multistatus XML Element</h3></span> + + Name: multistatus + + Purpose: Contains multiple response messages. + + Description: The 'responsedescription' element at the top level is + used to provide a general message describing the overarching + nature of the response. If this value is available, an + application may use it instead of presenting the individual + response descriptions contained within the responses. + + + <!ELEMENT multistatus (response*, responsedescription?) > + + +<span class="h3"><h3><a class="selflink" name="section-14.17" href="#section-14.17">14.17</a>. owner XML Element</h3></span> + + Name: owner + + Purpose: Holds client-supplied information about the creator of a + lock. + + Description: Allows a client to provide information sufficient for + either directly contacting a principal (such as a telephone number + or Email URI), or for discovering the principal (such as the URL + + + +<span class="grey">Dusseault Standards Track [Page 85]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-86" id="page-86" href="#page-86" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + of a homepage) who created a lock. The value provided MUST be + treated as a dead property in terms of XML Information Item + preservation. The server MUST NOT alter the value unless the + owner value provided by the client is empty. For a certain amount + of interoperability between different client implementations, if + clients have URI-formatted contact information for the lock + creator suitable for user display, then clients SHOULD put those + URIs in 'href' child elements of the 'owner' element. + + Extensibility: MAY be extended with child elements, mixed content, + text content or attributes. + + <!ELEMENT owner ANY > + +<span class="h3"><h3><a class="selflink" name="section-14.18" href="#section-14.18">14.18</a>. prop XML Element</h3></span> + + Name: prop + + Purpose: Contains properties related to a resource. + + Description: A generic container for properties defined on + resources. All elements inside a 'prop' XML element MUST define + properties related to the resource, although possible property + names are in no way limited to those property names defined in + this document or other standards. This element MUST NOT contain + text or mixed content. + + <!ELEMENT prop ANY > + +<span class="h3"><h3><a class="selflink" name="section-14.19" href="#section-14.19">14.19</a>. propertyupdate XML Element</h3></span> + + Name: propertyupdate + + Purpose: Contains a request to alter the properties on a resource. + + Description: This XML element is a container for the information + required to modify the properties on the resource. + + <!ELEMENT propertyupdate (remove | set)+ > + +<span class="h3"><h3><a class="selflink" name="section-14.20" href="#section-14.20">14.20</a>. propfind XML Element</h3></span> + + Name: propfind + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 86]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-87" id="page-87" href="#page-87" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Purpose: Specifies the properties to be returned from a PROPFIND + method. Four special elements are specified for use with + 'propfind': 'prop', 'allprop', 'include', and 'propname'. If + 'prop' is used inside 'propfind', it MUST NOT contain property + values. + + <!ELEMENT propfind ( propname | (allprop, include?) | prop ) > + +<span class="h3"><h3><a class="selflink" name="section-14.21" href="#section-14.21">14.21</a>. propname XML Element</h3></span> + + Name: propname + + Purpose: Specifies that only a list of property names on the + resource is to be returned. + + <!ELEMENT propname EMPTY > + +<span class="h3"><h3><a class="selflink" name="section-14.22" href="#section-14.22">14.22</a>. propstat XML Element</h3></span> + + Name: propstat + + Purpose: Groups together a prop and status element that is + associated with a particular 'href' element. + + Description: The propstat XML element MUST contain one prop XML + element and one status XML element. The contents of the prop XML + element MUST only list the names of properties to which the result + in the status element applies. The optional precondition/ + postcondition element and 'responsedescription' text also apply to + the properties named in 'prop'. + + <!ELEMENT propstat (prop, status, error?, responsedescription?) > + +<span class="h3"><h3><a class="selflink" name="section-14.23" href="#section-14.23">14.23</a>. remove XML Element</h3></span> + + Name: remove + + Purpose: Lists the properties to be removed from a resource. + + Description: Remove instructs that the properties specified in prop + should be removed. Specifying the removal of a property that does + not exist is not an error. All the XML elements in a 'prop' XML + element inside of a 'remove' XML element MUST be empty, as only + the names of properties to be removed are required. + + <!ELEMENT remove (prop) > + + + + + +<span class="grey">Dusseault Standards Track [Page 87]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-88" id="page-88" href="#page-88" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h3"><h3><a class="selflink" name="section-14.24" href="#section-14.24">14.24</a>. response XML Element</h3></span> + + Name: response + + Purpose: Holds a single response describing the effect of a method + on resource and/or its properties. + + Description: The 'href' element contains an HTTP URL pointing to a + WebDAV resource when used in the 'response' container. A + particular 'href' value MUST NOT appear more than once as the + child of a 'response' XML element under a 'multistatus' XML + element. This requirement is necessary in order to keep + processing costs for a response to linear time. Essentially, this + prevents having to search in order to group together all the + responses by 'href'. There are, however, no requirements + regarding ordering based on 'href' values. The optional + precondition/postcondition element and 'responsedescription' text + can provide additional information about this resource relative to + the request or result. + + + <!ELEMENT response (href, ((href*, status)|(propstat+)), + error?, responsedescription? , location?) > + +<span class="h3"><h3><a class="selflink" name="section-14.25" href="#section-14.25">14.25</a>. responsedescription XML Element</h3></span> + + Name: responsedescription + + Purpose: Contains information about a status response within a + Multi-Status. + + Description: Provides information suitable to be presented to a + user. + + <!ELEMENT responsedescription (#PCDATA) > + +<span class="h3"><h3><a class="selflink" name="section-14.26" href="#section-14.26">14.26</a>. set XML Element</h3></span> + + Name: set + + Purpose: Lists the property values to be set for a resource. + + Description: The 'set' element MUST contain only a 'prop' element. + The elements contained by the 'prop' element inside the 'set' + element MUST specify the name and value of properties that are set + on the resource identified by Request-URI. If a property already + exists, then its value is replaced. Language tagging information + appearing in the scope of the 'prop' element (in the "xml:lang" + + + +<span class="grey">Dusseault Standards Track [Page 88]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-89" id="page-89" href="#page-89" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + attribute, if present) MUST be persistently stored along with the + property, and MUST be subsequently retrievable using PROPFIND. + + <!ELEMENT set (prop) > + +<span class="h3"><h3><a class="selflink" name="section-14.27" href="#section-14.27">14.27</a>. shared XML Element</h3></span> + + Name: shared + + Purpose: Specifies a shared lock. + + + <!ELEMENT shared EMPTY > + + +<span class="h3"><h3><a class="selflink" name="section-14.28" href="#section-14.28">14.28</a>. status XML Element</h3></span> + + Name: status + + Purpose: Holds a single HTTP status-line. + + Value: status-line (defined in <a href="http://tools.ietf.org/html/rfc2616#section-6.1">Section 6.1 of [RFC2616]</a>) + + <!ELEMENT status (#PCDATA) > + +<span class="h3"><h3><a class="selflink" name="section-14.29" href="#section-14.29">14.29</a>. timeout XML Element</h3></span> + + Name: timeout + + Purpose: The number of seconds remaining before a lock expires. + + Value: TimeType (defined in <a href="#section-10.7">Section 10.7</a>) + + + <!ELEMENT timeout (#PCDATA) > + +<span class="h3"><h3><a class="selflink" name="section-14.30" href="#section-14.30">14.30</a>. write XML Element</h3></span> + + Name: write + + Purpose: Specifies a write lock. + + + <!ELEMENT write EMPTY > + + + + + + + +<span class="grey">Dusseault Standards Track [Page 89]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-90" id="page-90" href="#page-90" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h2"><h2><a class="selflink" name="section-15" href="#section-15">15</a>. DAV Properties</h2></span> + + For DAV properties, the name of the property is also the same as the + name of the XML element that contains its value. In the section + below, the final line of each section gives the element type + declaration using the format defined in [<a href="#ref-REC-XML" title="" extensible markup language edition>REC-XML</a>]. The "Value" + field, where present, specifies further restrictions on the allowable + contents of the XML element using BNF (i.e., to further restrict the + values of a PCDATA element). + + A protected property is one that cannot be changed with a PROPPATCH + request. There may be other requests that would result in a change + to a protected property (as when a LOCK request affects the value of + DAV:lockdiscovery). Note that a given property could be protected on + one type of resource, but not protected on another type of resource. + + A computed property is one with a value defined in terms of a + computation (based on the content and other properties of that + resource, or even of some other resource). A computed property is + always a protected property. + + COPY and MOVE behavior refers to local COPY and MOVE operations. + + For properties defined based on HTTP GET response headers (DAV:get*), + the header value could include LWS as defined in [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>], <a href="#section-4.2">Section</a> + <a href="#section-4.2">4.2</a>. Server implementors SHOULD strip LWS from these values before + using as WebDAV property values. + +<span class="h3"><h3><a class="selflink" name="section-15.1" href="#section-15.1">15.1</a>. creationdate Property</h3></span> + + Name: creationdate + + Purpose: Records the time and date the resource was created. + + Value: date-time (defined in [<a href="http://tools.ietf.org/html/rfc3339" title="" date and time on the internet: timestamps>RFC3339</a>], see the ABNF in <a href="#section-5.6">Section</a> + <a href="#section-5.6">5.6</a>.) + + Protected: MAY be protected. Some servers allow DAV:creationdate + to be changed to reflect the time the document was created if that + is more meaningful to the user (rather than the time it was + uploaded). Thus, clients SHOULD NOT use this property in + synchronization logic (use DAV:getetag instead). + + COPY/MOVE behavior: This property value SHOULD be kept during a + MOVE operation, but is normally re-initialized when a resource is + created with a COPY. It should not be set in a COPY. + + + + + +<span class="grey">Dusseault Standards Track [Page 90]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-91" id="page-91" href="#page-91" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Description: The DAV:creationdate property SHOULD be defined on all + DAV compliant resources. If present, it contains a timestamp of + the moment when the resource was created. Servers that are + incapable of persistently recording the creation date SHOULD + instead leave it undefined (i.e. report "Not Found"). + + <!ELEMENT creationdate (#PCDATA) > + +<span class="h3"><h3><a class="selflink" name="section-15.2" href="#section-15.2">15.2</a>. displayname Property</h3></span> + + Name: displayname + + Purpose: Provides a name for the resource that is suitable for + presentation to a user. + + Value: Any text. + + Protected: SHOULD NOT be protected. Note that servers implementing + [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>] might have made this a protected property as this is a + new requirement. + + COPY/MOVE behavior: This property value SHOULD be preserved in COPY + and MOVE operations. + + Description: Contains a description of the resource that is + suitable for presentation to a user. This property is defined on + the resource, and hence SHOULD have the same value independent of + the Request-URI used to retrieve it (thus, computing this property + based on the Request-URI is deprecated). While generic clients + might display the property value to end users, client UI designers + must understand that the method for identifying resources is still + the URL. Changes to DAV:displayname do not issue moves or copies + to the server, but simply change a piece of meta-data on the + individual resource. Two resources can have the same DAV: + displayname value even within the same collection. + + <!ELEMENT displayname (#PCDATA) > + +<span class="h3"><h3><a class="selflink" name="section-15.3" href="#section-15.3">15.3</a>. getcontentlanguage Property</h3></span> + + Name: getcontentlanguage + + Purpose: Contains the Content-Language header value (from <a href="#section-14.12">Section</a> + <a href="#section-14.12">14.12</a> of [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>]) as it would be returned by a GET without + accept headers. + + Value: language-tag (language-tag is defined in <a href="http://tools.ietf.org/html/rfc2616#section-3.10">Section 3.10 of + [RFC2616]</a>) + + + +<span class="grey">Dusseault Standards Track [Page 91]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-92" id="page-92" href="#page-92" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Protected: SHOULD NOT be protected, so that clients can reset the + language. Note that servers implementing [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>] might have + made this a protected property as this is a new requirement. + + COPY/MOVE behavior: This property value SHOULD be preserved in COPY + and MOVE operations. + + Description: The DAV:getcontentlanguage property MUST be defined on + any DAV-compliant resource that returns the Content-Language + header on a GET. + + <!ELEMENT getcontentlanguage (#PCDATA) > + +<span class="h3"><h3><a class="selflink" name="section-15.4" href="#section-15.4">15.4</a>. getcontentlength Property</h3></span> + + Name: getcontentlength + + Purpose: Contains the Content-Length header returned by a GET + without accept headers. + + Value: See <a href="http://tools.ietf.org/html/rfc2616#section-14.13">Section 14.13 of [RFC2616]</a>. + + Protected: This property is computed, therefore protected. + + Description: The DAV:getcontentlength property MUST be defined on + any DAV-compliant resource that returns the Content-Length header + in response to a GET. + + COPY/MOVE behavior: This property value is dependent on the size of + the destination resource, not the value of the property on the + source resource. + + <!ELEMENT getcontentlength (#PCDATA) > + +<span class="h3"><h3><a class="selflink" name="section-15.5" href="#section-15.5">15.5</a>. getcontenttype Property</h3></span> + + Name: getcontenttype + + Purpose: Contains the Content-Type header value (from <a href="http://tools.ietf.org/html/rfc2616#section-14.17">Section 14.17 + of [RFC2616]</a>) as it would be returned by a GET without accept + headers. + + Value: media-type (defined in <a href="http://tools.ietf.org/html/rfc2616#section-3.7">Section 3.7 of [RFC2616]</a>) + + Protected: Potentially protected if the server prefers to assign + content types on its own (see also discussion in <a href="#section-9.7.1">Section 9.7.1</a>). + + + + + +<span class="grey">Dusseault Standards Track [Page 92]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-93" id="page-93" href="#page-93" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + COPY/MOVE behavior: This property value SHOULD be preserved in COPY + and MOVE operations. + + Description: This property MUST be defined on any DAV-compliant + resource that returns the Content-Type header in response to a + GET. + + <!ELEMENT getcontenttype (#PCDATA) > + +<span class="h3"><h3><a class="selflink" name="section-15.6" href="#section-15.6">15.6</a>. getetag Property</h3></span> + + Name: getetag + + Purpose: Contains the ETag header value (from <a href="http://tools.ietf.org/html/rfc2616#section-14.19">Section 14.19 of + [RFC2616]</a>) as it would be returned by a GET without accept + headers. + + Value: entity-tag (defined in <a href="http://tools.ietf.org/html/rfc2616#section-3.11">Section 3.11 of [RFC2616]</a>) + + Protected: MUST be protected because this value is created and + controlled by the server. + + COPY/MOVE behavior: This property value is dependent on the final + state of the destination resource, not the value of the property + on the source resource. Also note the considerations in + <a href="#section-8.8">Section 8.8</a>. + + Description: The getetag property MUST be defined on any DAV- + compliant resource that returns the Etag header. Refer to <a href="#section-3.11">Section</a> + <a href="#section-3.11">3.11</a> of <a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a> for a complete definition of the semantics of an + ETag, and to <a href="#section-8.6">Section 8.6</a> for a discussion of ETags in WebDAV. + + <!ELEMENT getetag (#PCDATA) > + +<span class="h3"><h3><a class="selflink" name="section-15.7" href="#section-15.7">15.7</a>. getlastmodified Property</h3></span> + + Name: getlastmodified + + Purpose: Contains the Last-Modified header value (from <a href="#section-14.29">Section</a> + <a href="#section-14.29">14.29</a> of [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>]) as it would be returned by a GET method + without accept headers. + + Value: <a href="http://tools.ietf.org/html/rfc1123">rfc1123</a>-date (defined in <a href="http://tools.ietf.org/html/rfc2616#section-3.3.1">Section 3.3.1 of [RFC2616]</a>) + + Protected: SHOULD be protected because some clients may rely on the + value for appropriate caching behavior, or on the value of the + Last-Modified header to which this property is linked. + + + + +<span class="grey">Dusseault Standards Track [Page 93]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-94" id="page-94" href="#page-94" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + COPY/MOVE behavior: This property value is dependent on the last + modified date of the destination resource, not the value of the + property on the source resource. Note that some server + implementations use the file system date modified value for the + DAV:getlastmodified value, and this can be preserved in a MOVE + even when the HTTP Last-Modified value SHOULD change. Note that + since [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>] requires clients to use ETags where provided, a + server implementing ETags can count on clients using a much better + mechanism than modification dates for offline synchronization or + cache control. Also note the considerations in <a href="#section-8.8">Section 8.8</a>. + + Description: The last-modified date on a resource SHOULD only + reflect changes in the body (the GET responses) of the resource. + A change in a property only SHOULD NOT cause the last-modified + date to change, because clients MAY rely on the last-modified date + to know when to overwrite the existing body. The DAV: + getlastmodified property MUST be defined on any DAV-compliant + resource that returns the Last-Modified header in response to a + GET. + + <!ELEMENT getlastmodified (#PCDATA) > + +<span class="h3"><h3><a class="selflink" name="section-15.8" href="#section-15.8">15.8</a>. lockdiscovery Property</h3></span> + + Name: lockdiscovery + + Purpose: Describes the active locks on a resource + + Protected: MUST be protected. Clients change the list of locks + through LOCK and UNLOCK, not through PROPPATCH. + + COPY/MOVE behavior: The value of this property depends on the lock + state of the destination, not on the locks of the source resource. + Recall that locks are not moved in a MOVE operation. + + Description: Returns a listing of who has a lock, what type of lock + he has, the timeout type and the time remaining on the timeout, + and the associated lock token. Owner information MAY be omitted + if it is considered sensitive. If there are no locks, but the + server supports locks, the property will be present but contain + zero 'activelock' elements. If there are one or more locks, an + 'activelock' element appears for each lock on the resource. This + property is NOT lockable with respect to write locks (<a href="#section-7">Section 7</a>). + + <!ELEMENT lockdiscovery (activelock)* > + + + + + + +<span class="grey">Dusseault Standards Track [Page 94]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-95" id="page-95" href="#page-95" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h4"><h4><a class="selflink" name="section-15.8.1" href="#section-15.8.1">15.8.1</a>. Example - Retrieving DAV:lockdiscovery</h4></span> + + >>Request + + PROPFIND /container/ HTTP/1.1 + Host: www.example.com + Content-Length: xxxx + Content-Type: application/xml; charset="utf-8" + + <?xml version="1.0" encoding="utf-8" ?> + <D:propfind xmlns:D='DAV:'> + <D:prop><D:lockdiscovery/></D:prop> + </D:propfind> + + >>Response + + HTTP/1.1 207 Multi-Status + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D='DAV:'> + <D:response> + <D:href>http://www.example.com/container/</D:href> + <D:propstat> + <D:prop> + <D:lockdiscovery> + <D:activelock> + <D:locktype><D:write/></D:locktype> + <D:lockscope><D:exclusive/></D:lockscope> + <D:depth>0</D:depth> + <D:owner>Jane Smith</D:owner> + <D:timeout>Infinite</D:timeout> + <D:locktoken> + <D:href + >urn:uuid:f81de2ad-7f3d-a1b2-4f3c-00a0c91a9d76</D:href> + </D:locktoken> + <D:lockroot> + <D:href>http://www.example.com/container/</D:href> + </D:lockroot> + </D:activelock> + </D:lockdiscovery> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + + + + +<span class="grey">Dusseault Standards Track [Page 95]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-96" id="page-96" href="#page-96" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + This resource has a single exclusive write lock on it, with an + infinite timeout. + +<span class="h3"><h3><a class="selflink" name="section-15.9" href="#section-15.9">15.9</a>. resourcetype Property</h3></span> + + Name: resourcetype + + Purpose: Specifies the nature of the resource. + + Protected: SHOULD be protected. Resource type is generally decided + through the operation creating the resource (MKCOL vs PUT), not by + PROPPATCH. + + COPY/MOVE behavior: Generally a COPY/MOVE of a resource results in + the same type of resource at the destination. + + Description: MUST be defined on all DAV-compliant resources. Each + child element identifies a specific type the resource belongs to, + such as 'collection', which is the only resource type defined by + this specification (see <a href="#section-14.3">Section 14.3</a>). If the element contains + the 'collection' child element plus additional unrecognized + elements, it should generally be treated as a collection. If the + element contains no recognized child elements, it should be + treated as a non-collection resource. The default value is empty. + This element MUST NOT contain text or mixed content. Any custom + child element is considered to be an identifier for a resource + type. + + Example: (fictional example to show extensibility) + + <x:resourcetype xmlns:x="DAV:"> + <x:collection/> + <f:search-results xmlns:f="http://www.example.com/ns"/> + </x:resourcetype> + +<span class="h3"><h3><a class="selflink" name="section-15.10" href="#section-15.10">15.10</a>. supportedlock Property</h3></span> + + Name: supportedlock + + Purpose: To provide a listing of the lock capabilities supported by + the resource. + + Protected: MUST be protected. Servers, not clients, determine what + lock mechanisms are supported. + + + + + + + +<span class="grey">Dusseault Standards Track [Page 96]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-97" id="page-97" href="#page-97" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + COPY/MOVE behavior: This property value is dependent on the kind of + locks supported at the destination, not on the value of the + property at the source resource. Servers attempting to COPY to a + destination should not attempt to set this property at the + destination. + + Description: Returns a listing of the combinations of scope and + access types that may be specified in a lock request on the + resource. Note that the actual contents are themselves controlled + by access controls, so a server is not required to provide + information the client is not authorized to see. This property is + NOT lockable with respect to write locks (<a href="#section-7">Section 7</a>). + + <!ELEMENT supportedlock (lockentry)* > + +<span class="h4"><h4><a class="selflink" name="section-15.10.1" href="#section-15.10.1">15.10.1</a>. Example - Retrieving DAV:supportedlock</h4></span> + + >>Request + + PROPFIND /container/ HTTP/1.1 + Host: www.example.com + Content-Length: xxxx + Content-Type: application/xml; charset="utf-8" + + <?xml version="1.0" encoding="utf-8" ?> + <D:propfind xmlns:D="DAV:"> + <D:prop><D:supportedlock/></D:prop> + </D:propfind> + + >>Response + + HTTP/1.1 207 Multi-Status + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:"> + <D:response> + <D:href>http://www.example.com/container/</D:href> + <D:propstat> + <D:prop> + <D:supportedlock> + <D:lockentry> + <D:lockscope><D:exclusive/></D:lockscope> + <D:locktype><D:write/></D:locktype> + </D:lockentry> + <D:lockentry> + <D:lockscope><D:shared/></D:lockscope> + + + +<span class="grey">Dusseault Standards Track [Page 97]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-98" id="page-98" href="#page-98" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + <D:locktype><D:write/></D:locktype> + </D:lockentry> + </D:supportedlock> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + +<span class="h2"><h2><a class="selflink" name="section-16" href="#section-16">16</a>. Precondition/Postcondition XML Elements</h2></span> + + As introduced in <a href="#section-8.7">Section 8.7</a>, extra information on error conditions + can be included in the body of many status responses. This section + makes requirements on the use of the error body mechanism and + introduces a number of precondition and postcondition codes. + + A "precondition" of a method describes the state of the server that + must be true for that method to be performed. A "postcondition" of a + method describes the state of the server that must be true after that + method has been completed. + + Each precondition and postcondition has a unique XML element + associated with it. In a 207 Multi-Status response, the XML element + MUST appear inside an 'error' element in the appropriate 'propstat or + 'response' element depending on whether the condition applies to one + or more properties or to the resource as a whole. In all other error + responses where this specification's 'error' body is used, the + precondition/postcondition XML element MUST be returned as the child + of a top-level 'error' element in the response body, unless otherwise + negotiated by the request, along with an appropriate response status. + The most common response status codes are 403 (Forbidden) if the + request should not be repeated because it will always fail, and 409 + (Conflict) if it is expected that the user might be able to resolve + the conflict and resubmit the request. The 'error' element MAY + contain child elements with specific error information and MAY be + extended with any custom child elements. + + This mechanism does not take the place of using a correct numeric + status code as defined here or in HTTP, because the client must + always be able to take a reasonable course of action based only on + the numeric code. However, it does remove the need to define new + numeric codes. The new machine-readable codes used for this purpose + are XML elements classified as preconditions and postconditions, so + naturally, any group defining a new condition code can use their own + namespace. As always, the "DAV:" namespace is reserved for use by + IETF-chartered WebDAV working groups. + + + + + +<span class="grey">Dusseault Standards Track [Page 98]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-99" id="page-99" href="#page-99" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + A server supporting this specification SHOULD use the XML error + whenever a precondition or postcondition defined in this document is + violated. For error conditions not specified in this document, the + server MAY simply choose an appropriate numeric status and leave the + response body blank. However, a server MAY instead use a custom + condition code and other supporting text, because even when clients + do not automatically recognize condition codes, they can be quite + useful in interoperability testing and debugging. + + Example - Response with precondition code + + >>Response + + HTTP/1.1 423 Locked + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:error xmlns:D="DAV:"> + <D:lock-token-submitted> + <D:href>/workspace/webdav/</D:href> + </D:lock-token-submitted> + </D:error> + + In this example, a client unaware of a depth-infinity lock on the + parent collection "/workspace/webdav/" attempted to modify the + collection member "/workspace/webdav/proposal.doc". + + Some other useful preconditions and postconditions have been defined + in other specifications extending WebDAV, such as [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>] (see + particularly <a href="#section-7.1.1">Section 7.1.1</a>), [<a href="http://tools.ietf.org/html/rfc3253" title="" versioning extensions to webdav distributed authoring and>RFC3253</a>], and [<a href="http://tools.ietf.org/html/rfc3648" title="" web distributed authoring and versioning ordered collections protocol>RFC3648</a>]. + + All these elements are in the "DAV:" namespace. If not specified + otherwise, the content for each condition's XML element is defined to + be empty. + + + Name: lock-token-matches-request-uri + + Use with: 409 Conflict + + Purpose: (precondition) -- A request may include a Lock-Token header + to identify a lock for the UNLOCK method. However, if the + Request-URI does not fall within the scope of the lock identified + by the token, the server SHOULD use this error. The lock may have + a scope that does not include the Request-URI, or the lock could + have disappeared, or the token may be invalid. + + + + +<span class="grey">Dusseault Standards Track [Page 99]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-100" id="page-100" href="#page-100" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Name: lock-token-submitted (precondition) + + Use with: 423 Locked + + Purpose: The request could not succeed because a lock token should + have been submitted. This element, if present, MUST contain at + least one URL of a locked resource that prevented the request. In + cases of MOVE, COPY, and DELETE where collection locks are + involved, it can be difficult for the client to find out which + locked resource made the request fail -- but the server is only + responsible for returning one such locked resource. The server + MAY return every locked resource that prevented the request from + succeeding if it knows them all. + + <!ELEMENT lock-token-submitted (href+) > + + + Name: no-conflicting-lock (precondition) + + Use with: Typically 423 Locked + + Purpose: A LOCK request failed due the presence of an already + existing conflicting lock. Note that a lock can be in conflict + although the resource to which the request was directed is only + indirectly locked. In this case, the precondition code can be + used to inform the client about the resource that is the root of + the conflicting lock, avoiding a separate lookup of the + "lockdiscovery" property. + + <!ELEMENT no-conflicting-lock (href)* > + + + Name: no-external-entities + + Use with: 403 Forbidden + + Purpose: (precondition) -- If the server rejects a client request + because the request body contains an external entity, the server + SHOULD use this error. + + + Name: preserved-live-properties + + Use with: 409 Conflict + + Purpose: (postcondition) -- The server received an otherwise-valid + MOVE or COPY request, but cannot maintain the live properties with + the same behavior at the destination. It may be that the server + + + +<span class="grey">Dusseault Standards Track [Page 100]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-101" id="page-101" href="#page-101" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + only supports some live properties in some parts of the + repository, or simply has an internal error. + + + Name: propfind-finite-depth + + Use with: 403 Forbidden + + Purpose: (precondition) -- This server does not allow infinite-depth + PROPFIND requests on collections. + + + Name: cannot-modify-protected-property + + Use with: 403 Forbidden + + Purpose: (precondition) -- The client attempted to set a protected + property in a PROPPATCH (such as DAV:getetag). See also + <a href="http://tools.ietf.org/html/rfc3253#section-3.12">[RFC3253], Section 3.12</a>. + +<span class="h2"><h2><a class="selflink" name="section-17" href="#section-17">17</a>. XML Extensibility in DAV</h2></span> + + The XML namespace extension ([<a href="#ref-REC-XML-NAMES" title="" namespaces in xml edition>REC-XML-NAMES</a>]) is used in this + specification in order to allow for new XML elements to be added + without fear of colliding with other element names. Although WebDAV + request and response bodies can be extended by arbitrary XML + elements, which can be ignored by the message recipient, an XML + element in the "DAV:" namespace SHOULD NOT be used in the request or + response body unless that XML element is explicitly defined in an + IETF RFC reviewed by a WebDAV working group. + + For WebDAV to be both extensible and backwards-compatible, both + clients and servers need to know how to behave when unexpected or + unrecognized command extensions are received. For XML processing, + this means that clients and servers MUST process received XML + documents as if unexpected elements and attributes (and all children + of unrecognized elements) were not there. An unexpected element or + attribute includes one that may be used in another context but is not + expected here. Ignoring such items for purposes of processing can of + course be consistent with logging all information or presenting for + debugging. + + This restriction also applies to the processing, by clients, of DAV + property values where unexpected XML elements SHOULD be ignored + unless the property's schema declares otherwise. + + This restriction does not apply to setting dead DAV properties on the + server where the server MUST record all XML elements. + + + +<span class="grey">Dusseault Standards Track [Page 101]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-102" id="page-102" href="#page-102" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Additionally, this restriction does not apply to the use of XML where + XML happens to be the content type of the entity body, for example, + when used as the body of a PUT. + + Processing instructions in XML SHOULD be ignored by recipients. + Thus, specifications extending WebDAV SHOULD NOT use processing + instructions to define normative behavior. + + XML DTD fragments are included for all the XML elements defined in + this specification. However, correct XML will not be valid according + to any DTD due to namespace usage and extension rules. In + particular: + + o Elements (from this specification) are in the "DAV:" namespace, + + o Element ordering is irrelevant unless otherwise stated, + + o Extension attributes MAY be added, + + o For element type definitions of "ANY", the normative text + definition for that element defines what can be in it and what + that means. + + o For element type definitions of "#PCDATA", extension elements MUST + NOT be added. + + o For other element type definitions, including "EMPTY", extension + elements MAY be added. + + Note that this means that elements containing elements cannot be + extended to contain text, and vice versa. + + With DTD validation relaxed by the rules above, the constraints + described by the DTD fragments are normative (see for example + <a href="#appendix-A">Appendix A</a>). A recipient of a WebDAV message with an XML body MUST + NOT validate the XML document according to any hard-coded or + dynamically-declared DTD. + + Note that this section describes backwards-compatible extensibility + rules. There might also be times when an extension is designed not + to be backwards-compatible, for example, defining an extension that + reuses an XML element defined in this document but omitting one of + the child elements required by the DTDs in this specification. + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 102]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-103" id="page-103" href="#page-103" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h2"><h2><a class="selflink" name="section-18" href="#section-18">18</a>. DAV Compliance Classes</h2></span> + + A DAV-compliant resource can advertise several classes of compliance. + A client can discover the compliance classes of a resource by + executing OPTIONS on the resource and examining the "DAV" header + which is returned. Note particularly that resources, rather than + servers, are spoken of as being compliant. That is because + theoretically some resources on a server could support different + feature sets. For example, a server could have a sub-repository + where an advanced feature like versioning was supported, even if that + feature was not supported on all sub-repositories. + + Since this document describes extensions to the HTTP/1.1 protocol, + minimally all DAV-compliant resources, clients, and proxies MUST be + compliant with [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>]. + + A resource that is class 2 or class 3 compliant must also be class 1 + compliant. + +<span class="h3"><h3><a class="selflink" name="section-18.1" href="#section-18.1">18.1</a>. Class 1</h3></span> + + A class 1 compliant resource MUST meet all "MUST" requirements in all + sections of this document. + + Class 1 compliant resources MUST return, at minimum, the value "1" in + the DAV header on all responses to the OPTIONS method. + +<span class="h3"><h3><a class="selflink" name="section-18.2" href="#section-18.2">18.2</a>. Class 2</h3></span> + + A class 2 compliant resource MUST meet all class 1 requirements and + support the LOCK method, the DAV:supportedlock property, the DAV: + lockdiscovery property, the Time-Out response header and the Lock- + Token request header. A class 2 compliant resource SHOULD also + support the Timeout request header and the 'owner' XML element. + + Class 2 compliant resources MUST return, at minimum, the values "1" + and "2" in the DAV header on all responses to the OPTIONS method. + +<span class="h3"><h3><a class="selflink" name="section-18.3" href="#section-18.3">18.3</a>. Class 3</h3></span> + + A resource can explicitly advertise its support for the revisions to + [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>] made in this document. Class 1 MUST be supported as well. + Class 2 MAY be supported. Advertising class 3 support in addition to + class 1 and 2 means that the server supports all the requirements in + this specification. Advertising class 3 and class 1 support, but not + class 2, means that the server supports all the requirements in this + specification except possibly those that involve locking support. + + + + +<span class="grey">Dusseault Standards Track [Page 103]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-104" id="page-104" href="#page-104" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Example: + + DAV: 1, 3 + +<span class="h2"><h2><a class="selflink" name="section-19" href="#section-19">19</a>. Internationalization Considerations</h2></span> + + In the realm of internationalization, this specification complies + with the IETF Character Set Policy [<a href="http://tools.ietf.org/html/rfc2277" title="" ietf policy on character sets and languages>RFC2277</a>]. In this specification, + human-readable fields can be found either in the value of a property, + or in an error message returned in a response entity body. In both + cases, the human-readable content is encoded using XML, which has + explicit provisions for character set tagging and encoding, and + requires that XML processors read XML elements encoded, at minimum, + using the UTF-8 [<a href="http://tools.ietf.org/html/rfc3629" title="" utf-8 a transformation format of iso>RFC3629</a>] and UTF-16 [<a href="http://tools.ietf.org/html/rfc2781" title="" utf-16 an encoding of iso>RFC2781</a>] encodings of the ISO + 10646 multilingual plane. XML examples in this specification + demonstrate use of the charset parameter of the Content-Type header + (defined in [<a href="http://tools.ietf.org/html/rfc3023" title="" xml media types>RFC3023</a>]), as well as XML charset declarations. + + XML also provides a language tagging capability for specifying the + language of the contents of a particular XML element. The "xml:lang" + attribute appears on an XML element to identify the language of its + content and attributes. See [<a href="#ref-REC-XML" title="" extensible markup language edition>REC-XML</a>] for definitions of values and + scoping. + + WebDAV applications MUST support the character set tagging, character + set encoding, and the language tagging functionality of the XML + specification. Implementors of WebDAV applications are strongly + encouraged to read "XML Media Types" [<a href="http://tools.ietf.org/html/rfc3023" title="" xml media types>RFC3023</a>] for instruction on + which MIME media type to use for XML transport, and on use of the + charset parameter of the Content-Type header. + + Names used within this specification fall into four categories: names + of protocol elements such as methods and headers, names of XML + elements, names of properties, and names of conditions. Naming of + protocol elements follows the precedent of HTTP, using English names + encoded in US-ASCII for methods and headers. Since these protocol + elements are not visible to users, and are simply long token + identifiers, they do not need to support multiple languages. + Similarly, the names of XML elements used in this specification are + not visible to the user and hence do not need to support multiple + languages. + + WebDAV property names are qualified XML names (pairs of XML namespace + name and local name). Although some applications (e.g., a generic + property viewer) will display property names directly to their users, + it is expected that the typical application will use a fixed set of + properties, and will provide a mapping from the property name and + namespace to a human-readable field when displaying the property name + + + +<span class="grey">Dusseault Standards Track [Page 104]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-105" id="page-105" href="#page-105" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + to a user. It is only in the case where the set of properties is not + known ahead of time that an application need display a property name + to a user. We recommend that applications provide human-readable + property names wherever feasible. + + For error reporting, we follow the convention of HTTP/1.1 status + codes, including with each status code a short, English description + of the code (e.g., 423 (Locked)). While the possibility exists that + a poorly crafted user agent would display this message to a user, + internationalized applications will ignore this message, and display + an appropriate message in the user's language and character set. + + Since interoperation of clients and servers does not require locale + information, this specification does not specify any mechanism for + transmission of this information. + +<span class="h2"><h2><a class="selflink" name="section-20" href="#section-20">20</a>. Security Considerations</h2></span> + + This section is provided to detail issues concerning security + implications of which WebDAV applications need to be aware. + + All of the security considerations of HTTP/1.1 (discussed in + [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>]) and XML (discussed in [<a href="http://tools.ietf.org/html/rfc3023" title="" xml media types>RFC3023</a>]) also apply to WebDAV. In + addition, the security risks inherent in remote authoring require + stronger authentication technology, introduce several new privacy + concerns, and may increase the hazards from poor server design. + These issues are detailed below. + +<span class="h3"><h3><a class="selflink" name="section-20.1" href="#section-20.1">20.1</a>. Authentication of Clients</h3></span> + + Due to their emphasis on authoring, WebDAV servers need to use + authentication technology to protect not just access to a network + resource, but the integrity of the resource as well. Furthermore, + the introduction of locking functionality requires support for + authentication. + + A password sent in the clear over an insecure channel is an + inadequate means for protecting the accessibility and integrity of a + resource as the password may be intercepted. Since Basic + authentication for HTTP/1.1 performs essentially clear text + transmission of a password, Basic authentication MUST NOT be used to + authenticate a WebDAV client to a server unless the connection is + secure. Furthermore, a WebDAV server MUST NOT send a Basic + authentication challenge in a WWW-Authenticate header unless the + connection is secure. An example of a secure connection would be a + Transport Layer Security (TLS) connection employing a strong cipher + suite and server authentication. + + + + +<span class="grey">Dusseault Standards Track [Page 105]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-106" id="page-106" href="#page-106" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + WebDAV applications MUST support the Digest authentication scheme + [<a href="http://tools.ietf.org/html/rfc2617" title="" http authentication: basic and digest access authentication>RFC2617</a>]. Since Digest authentication verifies that both parties to + a communication know a shared secret, a password, without having to + send that secret in the clear, Digest authentication avoids the + security problems inherent in Basic authentication while providing a + level of authentication that is useful in a wide range of scenarios. + +<span class="h3"><h3><a class="selflink" name="section-20.2" href="#section-20.2">20.2</a>. Denial of Service</h3></span> + + Denial-of-service attacks are of special concern to WebDAV servers. + WebDAV plus HTTP enables denial-of-service attacks on every part of a + system's resources. + + o The underlying storage can be attacked by PUTting extremely large + files. + + o Asking for recursive operations on large collections can attack + processing time. + + o Making multiple pipelined requests on multiple connections can + attack network connections. + + WebDAV servers need to be aware of the possibility of a denial-of- + service attack at all levels. The proper response to such an attack + MAY be to simply drop the connection. Or, if the server is able to + make a response, the server MAY use a 400-level status request such + as 400 (Bad Request) and indicate why the request was refused (a 500- + level status response would indicate that the problem is with the + server, whereas unintentional DoS attacks are something the client is + capable of remedying). + +<span class="h3"><h3><a class="selflink" name="section-20.3" href="#section-20.3">20.3</a>. Security through Obscurity</h3></span> + + WebDAV provides, through the PROPFIND method, a mechanism for listing + the member resources of a collection. This greatly diminishes the + effectiveness of security or privacy techniques that rely only on the + difficulty of discovering the names of network resources. Users of + WebDAV servers are encouraged to use access control techniques to + prevent unwanted access to resources, rather than depending on the + relative obscurity of their resource names. + +<span class="h3"><h3><a class="selflink" name="section-20.4" href="#section-20.4">20.4</a>. Privacy Issues Connected to Locks</h3></span> + + When submitting a lock request, a user agent may also submit an + 'owner' XML field giving contact information for the person taking + out the lock (for those cases where a person, rather than a robot, is + taking out the lock). This contact information is stored in a DAV: + lockdiscovery property on the resource, and can be used by other + + + +<span class="grey">Dusseault Standards Track [Page 106]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-107" id="page-107" href="#page-107" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + collaborators to begin negotiation over access to the resource. + However, in many cases, this contact information can be very private, + and should not be widely disseminated. Servers SHOULD limit read + access to the DAV:lockdiscovery property as appropriate. + Furthermore, user agents SHOULD provide control over whether contact + information is sent at all, and if contact information is sent, + control over exactly what information is sent. + +<span class="h3"><h3><a class="selflink" name="section-20.5" href="#section-20.5">20.5</a>. Privacy Issues Connected to Properties</h3></span> + + Since property values are typically used to hold information such as + the author of a document, there is the possibility that privacy + concerns could arise stemming from widespread access to a resource's + property data. To reduce the risk of inadvertent release of private + information via properties, servers are encouraged to develop access + control mechanisms that separate read access to the resource body and + read access to the resource's properties. This allows a user to + control the dissemination of their property data without overly + restricting access to the resource's contents. + +<span class="h3"><h3><a class="selflink" name="section-20.6" href="#section-20.6">20.6</a>. Implications of XML Entities</h3></span> + + XML supports a facility known as "external entities", defined in + Section 4.2.2 of [<a href="#ref-REC-XML" title="" extensible markup language edition>REC-XML</a>], which instructs an XML processor to + retrieve and include additional XML. An external XML entity can be + used to append or modify the document type declaration (DTD) + associated with an XML document. An external XML entity can also be + used to include XML within the content of an XML document. For non- + validating XML, such as the XML used in this specification, including + an external XML entity is not required by XML. However, XML does + state that an XML processor may, at its discretion, include the + external XML entity. + + External XML entities have no inherent trustworthiness and are + subject to all the attacks that are endemic to any HTTP GET request. + Furthermore, it is possible for an external XML entity to modify the + DTD, and hence affect the final form of an XML document, in the worst + case, significantly modifying its semantics or exposing the XML + processor to the security risks discussed in [<a href="http://tools.ietf.org/html/rfc3023" title="" xml media types>RFC3023</a>]. Therefore, + implementers must be aware that external XML entities should be + treated as untrustworthy. If a server chooses not to handle external + XML entities, it SHOULD respond to requests containing external + entities with the 'no-external-entities' condition code. + + There is also the scalability risk that would accompany a widely + deployed application that made use of external XML entities. In this + situation, it is possible that there would be significant numbers of + requests for one external XML entity, potentially overloading any + + + +<span class="grey">Dusseault Standards Track [Page 107]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-108" id="page-108" href="#page-108" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + server that fields requests for the resource containing the external + XML entity. + + Furthermore, there's also a risk based on the evaluation of "internal + entities" as defined in Section 4.2.2 of [<a href="#ref-REC-XML" title="" extensible markup language edition>REC-XML</a>]. A small, + carefully crafted request using nested internal entities may require + enormous amounts of memory and/or processing time to process. Server + implementers should be aware of this risk and configure their XML + parsers so that requests like these can be detected and rejected as + early as possible. + +<span class="h3"><h3><a class="selflink" name="section-20.7" href="#section-20.7">20.7</a>. Risks Connected with Lock Tokens</h3></span> + + This specification encourages the use of "A Universally Unique + Identifier (UUID) URN Namespace" ([<a href="http://tools.ietf.org/html/rfc4122" title="" a universally unique identifier urn namespace>RFC4122</a>]) for lock tokens + (<a href="#section-6.5">Section 6.5</a>), in order to guarantee their uniqueness across space + and time. Version 1 UUIDs (defined in <a href="#section-4">Section 4</a>) MAY contain a + "node" field that "consists of an IEEE 802 MAC address, usually the + host address. For systems with multiple IEEE addresses, any + available one can be used". Since a WebDAV server will issue many + locks over its lifetime, the implication is that it may also be + publicly exposing its IEEE 802 address. + + There are several risks associated with exposure of IEEE 802 + addresses. Using the IEEE 802 address: + + o It is possible to track the movement of hardware from subnet to + subnet. + + o It may be possible to identify the manufacturer of the hardware + running a WebDAV server. + + o It may be possible to determine the number of each type of + computer running WebDAV. + + This risk only applies to host-address-based UUID versions. <a href="#section-4">Section</a> + <a href="#section-4">4</a> of [<a href="http://tools.ietf.org/html/rfc4122" title="" a universally unique identifier urn namespace>RFC4122</a>] describes several other mechanisms for generating + UUIDs that do not involve the host address and therefore do not + suffer from this risk. + +<span class="h3"><h3><a class="selflink" name="section-20.8" href="#section-20.8">20.8</a>. Hosting Malicious Content</h3></span> + + HTTP has the ability to host programs that are executed on client + machines. These programs can take many forms including Web scripts, + executables, plug-in modules, and macros in documents. WebDAV does + not change any of the security concerns around these programs, yet + often WebDAV is used in contexts where a wide range of users can + publish documents on a server. The server might not have a close + + + +<span class="grey">Dusseault Standards Track [Page 108]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-109" id="page-109" href="#page-109" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + trust relationship with the author that is publishing the document. + Servers that allow clients to publish arbitrary content can usefully + implement precautions to check that content published to the server + is not harmful to other clients. Servers could do this by techniques + such as restricting the types of content that is allowed to be + published and running virus and malware detection software on + published content. Servers can also mitigate the risk by having + appropriate access restriction and authentication of users that are + allowed to publish content to the server. + +<span class="h2"><h2><a class="selflink" name="section-21" href="#section-21">21</a>. IANA Considerations</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-21.1" href="#section-21.1">21.1</a>. New URI Schemes</h3></span> + + This specification defines two URI schemes: + + 1. the "opaquelocktoken" scheme defined in <a href="#appendix-C">Appendix C</a>, and + + 2. the "DAV" URI scheme, which historically was used in [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>] to + disambiguate WebDAV property and XML element names and which + continues to be used for that purpose in this specification and + others extending WebDAV. Creation of identifiers in the "DAV:" + namespace is controlled by the IETF. + + Note that defining new URI schemes for XML namespaces is now + discouraged. "DAV:" was defined before standard best practices + emerged. + +<span class="h3"><h3><a class="selflink" name="section-21.2" href="#section-21.2">21.2</a>. XML Namespaces</h3></span> + + XML namespaces disambiguate WebDAV property names and XML elements. + Any WebDAV user or application can define a new namespace in order to + create custom properties or extend WebDAV XML syntax. IANA does not + need to manage such namespaces, property names, or element names. + +<span class="h3"><h3><a class="selflink" name="section-21.3" href="#section-21.3">21.3</a>. Message Header Fields</h3></span> + + The message header fields below should be added to the permanent + registry (see [<a href="http://tools.ietf.org/html/rfc3864" title="" registration procedures for message header fields>RFC3864</a>]). + +<span class="h4"><h4><a class="selflink" name="section-21.3.1" href="#section-21.3.1">21.3.1</a>. DAV</h4></span> + + Header field name: DAV + + Applicable protocol: http + + Status: standard + + + + +<span class="grey">Dusseault Standards Track [Page 109]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-110" id="page-110" href="#page-110" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Author/Change controller: IETF + + Specification document: this specification (<a href="#section-10.1">Section 10.1</a>) + +<span class="h4"><h4><a class="selflink" name="section-21.3.2" href="#section-21.3.2">21.3.2</a>. Depth</h4></span> + + Header field name: Depth + + Applicable protocol: http + + Status: standard + + Author/Change controller: IETF + + Specification document: this specification (<a href="#section-10.2">Section 10.2</a>) + +<span class="h4"><h4><a class="selflink" name="section-21.3.3" href="#section-21.3.3">21.3.3</a>. Destination</h4></span> + + Header field name: Destination + + Applicable protocol: http + + Status: standard + + Author/Change controller: IETF + + Specification document: this specification (<a href="#section-10.3">Section 10.3</a>) + +<span class="h4"><h4><a class="selflink" name="section-21.3.4" href="#section-21.3.4">21.3.4</a>. If</h4></span> + + Header field name: If + + Applicable protocol: http + + Status: standard + + Author/Change controller: IETF + + Specification document: this specification (<a href="#section-10.4">Section 10.4</a>) + +<span class="h4"><h4><a class="selflink" name="section-21.3.5" href="#section-21.3.5">21.3.5</a>. Lock-Token</h4></span> + + Header field name: Lock-Token + + Applicable protocol: http + + Status: standard + + + + +<span class="grey">Dusseault Standards Track [Page 110]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-111" id="page-111" href="#page-111" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + Author/Change controller: IETF + + Specification document: this specification (<a href="#section-10.5">Section 10.5</a>) + +<span class="h4"><h4><a class="selflink" name="section-21.3.6" href="#section-21.3.6">21.3.6</a>. Overwrite</h4></span> + + Header field name: Overwrite + + Applicable protocol: http + + Status: standard + + Author/Change controller: IETF + + Specification document: this specification (<a href="#section-10.6">Section 10.6</a>) + +<span class="h4"><h4><a class="selflink" name="section-21.3.7" href="#section-21.3.7">21.3.7</a>. Timeout</h4></span> + + Header field name: Timeout + + Applicable protocol: http + + Status: standard + + Author/Change controller: IETF + + Specification document: this specification (<a href="#section-10.7">Section 10.7</a>) + +<span class="h3"><h3><a class="selflink" name="section-21.4" href="#section-21.4">21.4</a>. HTTP Status Codes</h3></span> + + This specification defines the HTTP status codes + + o 207 Multi-Status (<a href="#section-11.1">Section 11.1</a>) + + o 422 Unprocessable Entity (<a href="#section-11.2">Section 11.2</a>), + + o 423 Locked (<a href="#section-11.3">Section 11.3</a>), + + o 424 Failed Dependency (<a href="#section-11.4">Section 11.4</a>) and + + o 507 Insufficient Storage (<a href="#section-11.5">Section 11.5</a>), + + to be updated in the registry at + <<a href="http://www.iana.org/assignments/http-status-codes">http://www.iana.org/assignments/http-status-codes</a>>. + + Note: the HTTP status code 102 (Processing) has been removed in this + specification; its IANA registration should continue to reference <a href="http://tools.ietf.org/html/rfc2518">RFC</a> + <a href="http://tools.ietf.org/html/rfc2518">2518</a>. + + + +<span class="grey">Dusseault Standards Track [Page 111]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-112" id="page-112" href="#page-112" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h2"><h2><a class="selflink" name="section-22" href="#section-22">22</a>. Acknowledgements</h2></span> + + A specification such as this thrives on piercing critical review and + withers from apathetic neglect. The authors gratefully acknowledge + the contributions of the following people, whose insights were so + valuable at every stage of our work. + + Contributors to <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a> + + Terry Allen, Harald Alvestrand, Jim Amsden, Becky Anderson, Alan + Babich, Sanford Barr, Dylan Barrell, Bernard Chester, Tim Berners- + Lee, Dan Connolly, Jim Cunningham, Ron Daniel, Jr., Jim Davis, Keith + Dawson, Mark Day, Brian Deen, Martin Duerst, David Durand, Lee + Farrell, Chuck Fay, Wesley Felter, Roy Fielding, Mark Fisher, Alan + Freier, George Florentine, Jim Gettys, Phill Hallam-Baker, Dennis + Hamilton, Steve Henning, Mead Himelstein, Alex Hopmann, Andre van der + Hoek, Ben Laurie, Paul Leach, Ora Lassila, Karen MacArthur, Steven + Martin, Larry Masinter, Michael Mealling, Keith Moore, Thomas Narten, + Henrik Nielsen, Kenji Ota, Bob Parker, Glenn Peterson, Jon Radoff, + Saveen Reddy, Henry Sanders, Christopher Seiwald, Judith Slein, Mike + Spreitzer, Einar Stefferud, Greg Stein, Ralph Swick, Kenji Takahashi, + Richard N. Taylor, Robert Thau, John Turner, Sankar Virdhagriswaran, + Fabio Vitali, Gregory Woodhouse, and Lauren Wood. + + Two from this list deserve special mention. The contributions by + Larry Masinter have been invaluable; he both helped the formation of + the working group and patiently coached the authors along the way. + In so many ways he has set high standards that we have toiled to + meet. The contributions of Judith Slein were also invaluable; by + clarifying the requirements and in patiently reviewing version after + version, she both improved this specification and expanded our minds + on document management. + + We would also like to thank John Turner for developing the XML DTD. + + The authors of <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a> were Yaron Goland, Jim Whitehead, A. Faizi, + Steve Carter, and D. Jensen. Although their names had to be removed + due to IETF author count restrictions, they can take credit for the + majority of the design of WebDAV. + + Additional Acknowledgements for This Specification + + Significant contributors of text for this specification are listed as + contributors in the section below. We must also gratefully + acknowledge Geoff Clemm, Joel Soderberg, and Dan Brotsky for hashing + out specific text on the list or in meetings. Joe Hildebrand and + Cullen Jennings helped close many issues. Barry Lind described an + additional security consideration and Cullen Jennings provided text + + + +<span class="grey">Dusseault Standards Track [Page 112]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-113" id="page-113" href="#page-113" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + for that consideration. Jason Crawford tracked issue status for this + document for a period of years, followed by Elias Sinderson. + +<span class="h2"><h2><a class="selflink" name="section-23" href="#section-23">23</a>. Contributors to This Specification</h2></span> + + Julian Reschke + <green/>bytes GmbH + Hafenweg 16, 48155 Muenster, Germany + EMail: julian.reschke@greenbytes.de + + + Elias Sinderson + University of California, Santa Cruz + 1156 High Street, Santa Cruz, CA 95064 + EMail: elias@cse.ucsc.edu + + + Jim Whitehead + University of California, Santa Cruz + 1156 High Street, Santa Cruz, CA 95064 + EMail: ejw@soe.ucsc.edu + +<span class="h2"><h2><a class="selflink" name="section-24" href="#section-24">24</a>. Authors of <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a></h2></span> + + Y. Y. Goland + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + EMail: yarong@microsoft.com + + + E. J. Whitehead, Jr. + Dept. Of Information and Computer Science + University of California, Irvine + Irvine, CA 92697-3425 + EMail: ejw@ics.uci.edu + + + A. Faizi + Netscape + 685 East Middlefield Road + Mountain View, CA 94043 + EMail: asad@netscape.com + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 113]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-114" id="page-114" href="#page-114" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + S. R. Carter + Novell + 1555 N. Technology Way + M/S ORM F111 + Orem, UT 84097-2399 + EMail: srcarter@novell.com + + + D. Jensen + Novell + 1555 N. Technology Way + M/S ORM F111 + Orem, UT 84097-2399 + EMail: dcjensen@novell.com + +<span class="h2"><h2><a class="selflink" name="section-25" href="#section-25">25</a>. References</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-25.1" href="#section-25.1">25.1</a>. Normative References</h3></span> + + [<a name="ref-REC-XML" id="ref-REC-XML">REC-XML</a>] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, + E., and F. Yergeau, "Extensible Markup Language + (XML) 1.0 (Fourth Edition)", W3C REC-xml-20060816, + August 2006, + <<a href="http://www.w3.org/TR/2006/REC-xml-20060816/">http://www.w3.org/TR/2006/REC-xml-20060816/</a>>. + + [<a name="ref-REC-XML-INFOSET" id="ref-REC-XML-INFOSET">REC-XML-INFOSET</a>] Cowan, J. and R. Tobin, "XML Information Set + (Second Edition)", W3C REC-xml-infoset-20040204, + February 2004, <<a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/">http://www.w3.org/TR/2004/</a> + <a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/">REC-xml-infoset-20040204/</a>>. + + [<a name="ref-REC-XML-NAMES" id="ref-REC-XML-NAMES">REC-XML-NAMES</a>] Bray, T., Hollander, D., Layman, A., and R. Tobin, + "Namespaces in XML 1.0 (Second Edition)", W3C REC- + xml-names-20060816, August 2006, <<a href="http://www.w3.org/TR/2006/REC-xml-names-20060816/">http://</a> + <a href="http://www.w3.org/TR/2006/REC-xml-names-20060816/">www.w3.org/TR/2006/REC-xml-names-20060816/</a>>. + + [<a name="ref-RFC2119" id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to + Indicate Requirement Levels", <a href="http://tools.ietf.org/html/bcp14">BCP 14</a>, <a href="http://tools.ietf.org/html/rfc2119">RFC 2119</a>, + March 1997. + + [<a name="ref-RFC2277" id="ref-RFC2277">RFC2277</a>] Alvestrand, H., "IETF Policy on Character Sets and + Languages", <a href="http://tools.ietf.org/html/bcp18">BCP 18</a>, <a href="http://tools.ietf.org/html/rfc2277">RFC 2277</a>, January 1998. + + [<a name="ref-RFC2616" id="ref-RFC2616">RFC2616</a>] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., + Masinter, L., Leach, P., and T. Berners-Lee, + "Hypertext Transfer Protocol -- HTTP/1.1", + <a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a>, June 1999. + + + + + +<span class="grey">Dusseault Standards Track [Page 114]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-115" id="page-115" href="#page-115" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + [<a name="ref-RFC2617" id="ref-RFC2617">RFC2617</a>] Franks, J., Hallam-Baker, P., Hostetler, J., + Lawrence, S., Leach, P., Luotonen, A., and L. + Stewart, "HTTP Authentication: Basic and Digest + Access Authentication", <a href="http://tools.ietf.org/html/rfc2617">RFC 2617</a>, June 1999. + + [<a name="ref-RFC3339" id="ref-RFC3339">RFC3339</a>] Klyne, G., Ed. and C. Newman, "Date and Time on + the Internet: Timestamps", <a href="http://tools.ietf.org/html/rfc3339">RFC 3339</a>, July 2002. + + [<a name="ref-RFC3629" id="ref-RFC3629">RFC3629</a>] Yergeau, F., "UTF-8, a transformation format of + ISO 10646", STD 63, <a href="http://tools.ietf.org/html/rfc3629">RFC 3629</a>, November 2003. + + [<a name="ref-RFC3986" id="ref-RFC3986">RFC3986</a>] Berners-Lee, T., Fielding, R., and L. Masinter, + "Uniform Resource Identifier (URI): Generic + Syntax", STD 66, <a href="http://tools.ietf.org/html/rfc3986">RFC 3986</a>, January 2005. + + [<a name="ref-RFC4122" id="ref-RFC4122">RFC4122</a>] Leach, P., Mealling, M., and R. Salz, "A + Universally Unique IDentifier (UUID) URN + Namespace", <a href="http://tools.ietf.org/html/rfc4122">RFC 4122</a>, July 2005. + +<span class="h3"><h3><a class="selflink" name="section-25.2" href="#section-25.2">25.2</a>. Informative References</h3></span> + + [<a name="ref-RFC2291" id="ref-RFC2291">RFC2291</a>] Slein, J., Vitali, F., Whitehead, E., and D. + Durand, "Requirements for a Distributed Authoring + and Versioning Protocol for the World Wide Web", + <a href="http://tools.ietf.org/html/rfc2291">RFC 2291</a>, February 1998. + + [<a name="ref-RFC2518" id="ref-RFC2518">RFC2518</a>] Goland, Y., Whitehead, E., Faizi, A., Carter, S., + and D. Jensen, "HTTP Extensions for Distributed + Authoring -- WEBDAV", <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a>, February 1999. + + [<a name="ref-RFC2781" id="ref-RFC2781">RFC2781</a>] Hoffman, P. and F. Yergeau, "UTF-16, an encoding + of ISO 10646", <a href="http://tools.ietf.org/html/rfc2781">RFC 2781</a>, February 2000. + + [<a name="ref-RFC3023" id="ref-RFC3023">RFC3023</a>] Murata, M., St. Laurent, S., and D. Kohn, "XML + Media Types", <a href="http://tools.ietf.org/html/rfc3023">RFC 3023</a>, January 2001. + + [<a name="ref-RFC3253" id="ref-RFC3253">RFC3253</a>] Clemm, G., Amsden, J., Ellison, T., Kaler, C., and + J. Whitehead, "Versioning Extensions to WebDAV + (Web Distributed Authoring and Versioning)", + <a href="http://tools.ietf.org/html/rfc3253">RFC 3253</a>, March 2002. + + [<a name="ref-RFC3648" id="ref-RFC3648">RFC3648</a>] Whitehead, J. and J. Reschke, Ed., "Web + Distributed Authoring and Versioning (WebDAV) + Ordered Collections Protocol", <a href="http://tools.ietf.org/html/rfc3648">RFC 3648</a>, + December 2003. + + + + + + +<span class="grey">Dusseault Standards Track [Page 115]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-116" id="page-116" href="#page-116" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + [<a name="ref-RFC3744" id="ref-RFC3744">RFC3744</a>] Clemm, G., Reschke, J., Sedlar, E., and J. + Whitehead, "Web Distributed Authoring and + Versioning (WebDAV) Access Control Protocol", + <a href="http://tools.ietf.org/html/rfc3744">RFC 3744</a>, May 2004. + + [<a name="ref-RFC3864" id="ref-RFC3864">RFC3864</a>] Klyne, G., Nottingham, M., and J. Mogul, + "Registration Procedures for Message Header + Fields", <a href="http://tools.ietf.org/html/bcp90">BCP 90</a>, <a href="http://tools.ietf.org/html/rfc3864">RFC 3864</a>, September 2004. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 116]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-117" id="page-117" href="#page-117" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h2"><h2><a class="selflink" name="appendix-A" href="#appendix-A">Appendix A</a>. Notes on Processing XML Elements</h2></span> + +<span class="h1"><h1><a class="selflink" name="appendix-A.1" href="#appendix-A.1">A.1</a>. Notes on Empty XML Elements</h1></span> + + XML supports two mechanisms for indicating that an XML element does + not have any content. The first is to declare an XML element of the + form <A></A>. The second is to declare an XML element of the form + <A/>. The two XML elements are semantically identical. + +<span class="h1"><h1><a class="selflink" name="appendix-A.2" href="#appendix-A.2">A.2</a>. Notes on Illegal XML Processing</h1></span> + + XML is a flexible data format that makes it easy to submit data that + appears legal but in fact is not. The philosophy of "Be flexible in + what you accept and strict in what you send" still applies, but it + must not be applied inappropriately. XML is extremely flexible in + dealing with issues of whitespace, element ordering, inserting new + elements, etc. This flexibility does not require extension, + especially not in the area of the meaning of elements. + + There is no kindness in accepting illegal combinations of XML + elements. At best, it will cause an unwanted result and at worst it + can cause real damage. + +<span class="h1"><h1><a class="selflink" name="appendix-A.3" href="#appendix-A.3">A.3</a>. Example - XML Syntax Error</h1></span> + + The following request body for a PROPFIND method is illegal. + + <?xml version="1.0" encoding="utf-8" ?> + <D:propfind xmlns:D="DAV:"> + <D:allprop/> + <D:propname/> + </D:propfind> + + The definition of the propfind element only allows for the allprop or + the propname element, not both. Thus, the above is an error and must + be responded to with a 400 (Bad Request). + + Imagine, however, that a server wanted to be "kind" and decided to + pick the allprop element as the true element and respond to it. A + client running over a bandwidth limited line who intended to execute + a propname would be in for a big surprise if the server treated the + command as an allprop. + + Additionally, if a server were lenient and decided to reply to this + request, the results would vary randomly from server to server, with + some servers executing the allprop directive, and others executing + the propname directive. This reduces interoperability rather than + increasing it. + + + +<span class="grey">Dusseault Standards Track [Page 117]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-118" id="page-118" href="#page-118" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h1"><h1><a class="selflink" name="appendix-A.4" href="#appendix-A.4">A.4</a>. Example - Unexpected XML Element</h1></span> + + The previous example was illegal because it contained two elements + that were explicitly banned from appearing together in the propfind + element. However, XML is an extensible language, so one can imagine + new elements being defined for use with propfind. Below is the + request body of a PROPFIND and, like the previous example, must be + rejected with a 400 (Bad Request) by a server that does not + understand the expired-props element. + + <?xml version="1.0" encoding="utf-8" ?> + <D:propfind xmlns:D="DAV:" + xmlns:E="http://www.example.com/standards/props/"> + <E:expired-props/> + </D:propfind> + + To understand why a 400 (Bad Request) is returned, let us look at the + request body as the server unfamiliar with expired-props sees it. + + <?xml version="1.0" encoding="utf-8" ?> + <D:propfind xmlns:D="DAV:" + xmlns:E="http://www.example.com/standards/props/"> + </D:propfind> + + As the server does not understand the 'expired-props' element, + according to the WebDAV-specific XML processing rules specified in + <a href="#section-17">Section 17</a>, it must process the request as if the element were not + there. Thus, the server sees an empty propfind, which by the + definition of the propfind element is illegal. + + Please note that had the extension been additive, it would not + necessarily have resulted in a 400 (Bad Request). For example, + imagine the following request body for a PROPFIND: + + + <?xml version="1.0" encoding="utf-8" ?> + <D:propfind xmlns:D="DAV:" + xmlns:E="http://www.example.com/standards/props/"> + <D:propname/> + <E:leave-out>*boss*</E:leave-out> + </D:propfind> + + The previous example contains the fictitious element leave-out. Its + purpose is to prevent the return of any property whose name matches + the submitted pattern. If the previous example were submitted to a + server unfamiliar with 'leave-out', the only result would be that the + 'leave-out' element would be ignored and a propname would be + executed. + + + +<span class="grey">Dusseault Standards Track [Page 118]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-119" id="page-119" href="#page-119" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h2"><h2><a class="selflink" name="appendix-B" href="#appendix-B">Appendix B</a>. Notes on HTTP Client Compatibility</h2></span> + + WebDAV was designed to be, and has been found to be, backward- + compatible with HTTP 1.1. The PUT and DELETE methods are defined in + HTTP and thus may be used by HTTP clients as well as WebDAV-aware + clients, but the responses to PUT and DELETE have been extended in + this specification in ways that only a WebDAV client would be + entirely prepared for. Some theoretical concerns were raised about + whether those responses would cause interoperability problems with + HTTP-only clients, and this section addresses those concerns. + + Since any HTTP client ought to handle unrecognized 400-level and 500- + level status codes as errors, the following new status codes should + not present any issues: 422, 423, and 507 (424 is also a new status + code but it appears only in the body of a Multistatus response.) So, + for example, if an HTTP client attempted to PUT or DELETE a locked + resource, the 423 Locked response ought to result in a generic error + presented to the user. + + The 207 Multistatus response is interesting because an HTTP client + issuing a DELETE request to a collection might interpret a 207 + response as a success, even though it does not realize the resource + is a collection and cannot understand that the DELETE operation might + have been a complete or partial failure. That interpretation isn't + entirely justified, because a 200-level response indicates that the + server "received, understood, and accepted" the request, not that the + request resulted in complete success. + + One option is that a server could treat a DELETE of a collection as + an atomic operation, and use either 204 No Content in case of + success, or some appropriate error response (400 or 500 level) for an + error. This approach would indeed maximize backward compatibility. + However, since interoperability tests and working group discussions + have not turned up any instances of HTTP clients issuing a DELETE + request against a WebDAV collection, this concern is more theoretical + than practical. Thus, servers are likely to be completely successful + at interoperating with HTTP clients even if they treat any collection + DELETE request as a WebDAV request and send a 207 Multi-Status + response. + + In general, server implementations are encouraged to use the detailed + responses and other mechanisms defined in this document rather than + make changes for theoretical interoperability concerns. + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 119]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-120" id="page-120" href="#page-120" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +<span class="h2"><h2><a class="selflink" name="appendix-C" href="#appendix-C">Appendix C</a>. The 'opaquelocktoken' Scheme and URIs</h2></span> + + The 'opaquelocktoken' URI scheme was defined in [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>] (and + registered by IANA) in order to create syntactically correct and + easy-to-generate URIs out of UUIDs, intended to be used as lock + tokens and to be unique across all resources for all time. + + An opaquelocktoken URI is constructed by concatenating the + 'opaquelocktoken' scheme with a UUID, along with an optional + extension. Servers can create new UUIDs for each new lock token. If + a server wishes to reuse UUIDs, the server MUST add an extension, and + the algorithm generating the extension MUST guarantee that the same + extension will never be used twice with the associated UUID. + + OpaqueLockToken-URI = "opaquelocktoken:" UUID [Extension] + ; UUID is defined in <a href="http://tools.ietf.org/html/rfc4122#section-3">Section 3 of [RFC4122]</a>. Note that LWS + ; is not allowed between elements of + ; this production. + + Extension = path + ; path is defined in <a href="http://tools.ietf.org/html/rfc3986#section-3.3">Section 3.3 of [RFC3986]</a> + + +<span class="h2"><h2><a class="selflink" name="appendix-D" href="#appendix-D">Appendix D</a>. Lock-null Resources</h2></span> + + The original WebDAV model for locking unmapped URLs created "lock- + null resources". This model was over-complicated and some + interoperability and implementation problems were discovered. The + new WebDAV model for locking unmapped URLs (see <a href="#section-7.3">Section 7.3</a>) creates + "locked empty resources". Lock-null resources are deprecated. This + section discusses the original model briefly because clients MUST be + able to handle either model. + + In the original "lock-null resource" model, which is no longer + recommended for implementation: + + o A lock-null resource sometimes appeared as "Not Found". The + server responds with a 404 or 405 to any method except for PUT, + MKCOL, OPTIONS, PROPFIND, LOCK, UNLOCK. + + o A lock-null resource does however show up as a member of its + parent collection. + + o The server removes the lock-null resource entirely (its URI + becomes unmapped) if its lock goes away before it is converted to + a regular resource. Recall that locks go away not only when they + expire or are unlocked, but are also removed if a resource is + renamed or moved, or if any parent collection is renamed or moved. + + + +<span class="grey">Dusseault Standards Track [Page 120]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-121" id="page-121" href="#page-121" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + o The server converts the lock-null resource into a regular resource + if a PUT request to the URL is successful. + + o The server converts the lock-null resource into a collection if a + MKCOL request to the URL is successful (though interoperability + experience showed that not all servers followed this requirement). + + o Property values were defined for DAV:lockdiscovery and DAV: + supportedlock properties but not necessarily for other properties + like DAV:getcontenttype. + + Clients can easily interoperate both with servers that support the + old model "lock-null resources" and the recommended model of "locked + empty resources" by only attempting PUT after a LOCK to an unmapped + URL, not MKCOL or GET. + +<span class="h1"><h1><a class="selflink" name="appendix-D.1" href="#appendix-D.1">D.1</a>. Guidance for Clients Using LOCK to Create Resources</h1></span> + + A WebDAV client implemented to this specification might find servers + that create lock-null resources (implemented before this + specification using [<a href="http://tools.ietf.org/html/rfc2518" title="" http extensions for distributed authoring webdav>RFC2518</a>]) as well as servers that create locked + empty resources. The response to the LOCK request will not indicate + what kind of resource was created. There are a few techniques that + help the client deal with either type. + + If the client wishes to avoid accidentally creating either lock- + null or empty locked resources, an "If-Match: *" header can be + included with LOCK requests to prevent the server from creating a + new resource. + + If a LOCK request creates a resource and the client subsequently + wants to overwrite that resource using a COPY or MOVE request, the + client should include an "Overwrite: T" header. + + If a LOCK request creates a resource and the client then decides + to get rid of that resource, a DELETE request is supposed to fail + on a lock-null resource and UNLOCK should be used instead. But + with a locked empty resource, UNLOCK doesn't make the resource + disappear. Therefore, the client might have to try both requests + and ignore an error in one of the two requests. + +<span class="h2"><h2><a class="selflink" name="appendix-E" href="#appendix-E">Appendix E</a>. Guidance for Clients Desiring to Authenticate</h2></span> + + Many WebDAV clients that have already been implemented have account + settings (similar to the way email clients store IMAP account + settings). Thus, the WebDAV client would be able to authenticate + with its first couple requests to the server, provided it had a way + to get the authentication challenge from the server with realm name, + + + +<span class="grey">Dusseault Standards Track [Page 121]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-122" id="page-122" href="#page-122" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + nonce, and other challenge information. Note that the results of + some requests might vary according to whether or not the client is + authenticated -- a PROPFIND might return more visible resources if + the client is authenticated, yet not fail if the client is anonymous. + + There are a number of ways the client might be able to trigger the + server to provide an authentication challenge. This appendix + describes a couple approaches that seem particularly likely to work. + + The first approach is to perform a request that ought to require + authentication. However, it's possible that a server might handle + any request even without authentication, so to be entirely safe, the + client could add a conditional header to ensure that even if the + request passes permissions checks, it's not actually handled by the + server. An example of following this approach would be to use a PUT + request with an "If-Match" header with a made-up ETag value. This + approach might fail to result in an authentication challenge if the + server does not test authorization before testing conditionals as is + required (see <a href="#section-8.5">Section 8.5</a>), or if the server does not need to test + authorization. + + Example - forcing auth challenge with write request + + >>Request + + PUT /forceauth.txt HTTP/1.1 + Host: www.example.com + If-Match: "xxx" + Content-Type: text/plain + Content-Length: 0 + + + The second approach is to use an Authorization header (defined in + [<a href="http://tools.ietf.org/html/rfc2617" title="" http authentication: basic and digest access authentication>RFC2617</a>]), which is likely to be rejected by the server but which + will then prompt a proper authentication challenge. For example, the + client could start with a PROPFIND request containing an + Authorization header containing a made-up Basic userid:password + string or with actual plausible credentials. This approach relies on + the server responding with a "401 Unauthorized" along with a + challenge if it receives an Authorization header with an unrecognized + username, invalid password, or if it doesn't even handle Basic + authentication. This seems likely to work because of the + requirements of <a href="http://tools.ietf.org/html/rfc2617">RFC 2617</a>: + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 122]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-123" id="page-123" href="#page-123" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + "If the origin server does not wish to accept the credentials sent + with a request, it SHOULD return a 401 (Unauthorized) response. The + response MUST include a WWW-Authenticate header field containing at + least one (possibly new) challenge applicable to the requested + resource." + + There's a slight problem with implementing that recommendation in + some cases, because some servers do not even have challenge + information for certain resources. Thus, when there's no way to + authenticate to a resource or the resource is entirely publicly + available over all accepted methods, the server MAY ignore the + Authorization header, and the client will presumably try again later. + + Example - forcing auth challenge with Authorization header + + >>Request + + PROPFIND /docs/ HTTP/1.1 + Host: www.example.com + Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== + Content-type: application/xml; charset="utf-8" + Content-Length: xxxx + + [body omitted] + + +<span class="h2"><h2><a class="selflink" name="appendix-F" href="#appendix-F">Appendix F</a>. Summary of Changes from <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a></h2></span> + + This section lists major changes between this document and <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a>, + starting with those that are likely to result in implementation + changes. Servers will advertise support for all changes in this + specification by returning the compliance class "3" in the DAV + response header (see Sections <a href="#section-10.1">10.1</a> and <a href="#section-18.3">18.3</a>). + +<span class="h1"><h1><a class="selflink" name="appendix-F.1" href="#appendix-F.1">F.1</a>. Changes for Both Client and Server Implementations</h1></span> + + Collections and Namespace Operations + + o The semantics of PROPFIND 'allprop' (<a href="#section-9.1">Section 9.1</a>) have been + relaxed so that servers return results including, at a minimum, + the live properties defined in this specification, but not + necessarily return other live properties. The 'allprop' directive + therefore means something more like "return all properties that + are supposed to be returned when 'allprop' is requested" -- a set + of properties that may include custom properties and properties + defined in other specifications if those other specifications so + require. Related to this, 'allprop' requests can now be extended + with the 'include' syntax to include specific named properties, + + + +<span class="grey">Dusseault Standards Track [Page 123]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-124" id="page-124" href="#page-124" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + thereby avoiding additional requests due to changed 'allprop' + semantics. + + o Servers are now allowed to reject PROPFIND requests with Depth: + Infinity. Clients that used this will need to be able to do a + series of Depth:1 requests instead. + + o Multi-Status response bodies now can transport the value of HTTP's + Location response header in the new 'location' element. Clients + may use this to avoid additional roundtrips to the server when + there is a 'response' element with a 3xx status (see + <a href="#section-14.24">Section 14.24</a>). + + o The definition of COPY has been relaxed so that it doesn't require + servers to first delete the target resources anymore (this was a + known incompatibility with [<a href="http://tools.ietf.org/html/rfc3253" title="" versioning extensions to webdav distributed authoring and>RFC3253</a>]). See <a href="#section-9.8">Section 9.8</a>. + + Headers and Marshalling + + o The Destination and If request headers now allow absolute paths in + addition to full URIs (see <a href="#section-8.3">Section 8.3</a>). This may be useful for + clients operating through a reverse proxy that does rewrite the + Host request header, but not WebDAV-specific headers. + + o This specification adopts the error marshalling extensions and the + "precondition/postcondition" terminology defined in [<a href="http://tools.ietf.org/html/rfc3253" title="" versioning extensions to webdav distributed authoring and>RFC3253</a>] (see + <a href="#section-16">Section 16</a>). Related to that, it adds the "error" XML element + inside multistatus response bodies (see <a href="#section-14.5">Section 14.5</a>, however note + that it uses a format different from the one recommended in <a href="http://tools.ietf.org/html/rfc3253">RFC</a> + <a href="http://tools.ietf.org/html/rfc3253">3253</a>). + + o Senders and recipients are now required to support the UTF-16 + character encoding in XML message bodies (see <a href="#section-19">Section 19</a>). + + o Clients are now required to send the Depth header on PROPFIND + requests, although servers are still encouraged to support clients + that don't. + + Locking + + o <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a>'s concept of "lock-null resources" (LNRs) has been + replaced by a simplified approach, the "locked empty resources" + (see <a href="#section-7.3">Section 7.3</a>). There are some aspects of lock-null resources + clients cannot rely on anymore, namely, the ability to use them to + create a locked collection or the fact that they disappear upon + UNLOCK when no PUT or MKCOL request was issued. Note that servers + are still allowed to implement LNRs as per <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a>. + + + + +<span class="grey">Dusseault Standards Track [Page 124]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-125" id="page-125" href="#page-125" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + o There is no implicit refresh of locks anymore. Locks are only + refreshed upon explicit request (see <a href="#section-9.10.2">Section 9.10.2</a>). + + o Clarified that the DAV:owner value supplied in the LOCK request + must be preserved by the server just like a dead property + (<a href="#section-14.17">Section 14.17</a>). Also added the DAV:lockroot element + (<a href="#section-14.12">Section 14.12</a>), which allows clients to discover the root of + lock. + +<span class="h1"><h1><a class="selflink" name="appendix-F.2" href="#appendix-F.2">F.2</a>. Changes for Server Implementations</h1></span> + + Collections and Namespace Operations + + o Due to interoperability problems, allowable formats for contents + of 'href' elements in multistatus responses have been limited (see + <a href="#section-8.3">Section 8.3</a>). + + o Due to lack of implementation, support for the 'propertybehavior' + request body for COPY and MOVE has been removed. Instead, + requirements for property preservation have been clarified (see + Sections <a href="#section-9.8">9.8</a> and <a href="#section-9.9">9.9</a>). + + Properties + + o Strengthened server requirements for storage of property values, + in particular persistence of language information (xml:lang), + whitespace, and XML namespace information (see <a href="#section-4.3">Section 4.3</a>). + + o Clarified requirements on which properties should be writable by + the client; in particular, setting "DAV:displayname" should be + supported by servers (see <a href="#section-15">Section 15</a>). + + o Only '<a href="http://tools.ietf.org/html/rfc1123">rfc1123</a>-date' productions are legal as values for DAV: + getlastmodified (see <a href="#section-15.7">Section 15.7</a>). + + Headers and Marshalling + + o Servers are now required to do authorization checks before + processing conditional headers (see <a href="#section-8.5">Section 8.5</a>). + + Locking + + o Strengthened requirement to check identity of lock creator when + accessing locked resources (see <a href="#section-6.4">Section 6.4</a>). Clients should be + aware that lock tokens returned to other principals can only be + used to break a lock, if at all. + + + + + +<span class="grey">Dusseault Standards Track [Page 125]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-126" id="page-126" href="#page-126" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + + o <a href="http://tools.ietf.org/html/rfc2518#section-8.10.4">Section 8.10.4 of [RFC2518]</a> incorrectly required servers to return + a 409 status where a 207 status was really appropriate. This has + been corrected (<a href="#section-9.10">Section 9.10</a>). + +<span class="h1"><h1><a class="selflink" name="appendix-F.3" href="#appendix-F.3">F.3</a>. Other Changes</h1></span> + + The definition of collection state has been fixed so it doesn't vary + anymore depending on the Request-URI (see <a href="#section-5.2">Section 5.2</a>). + + The DAV:source property introduced in <a href="http://tools.ietf.org/html/rfc2518#section-4.6">Section 4.6 of [RFC2518]</a> was + removed due to lack of implementation experience. + + The DAV header now allows non-IETF extensions through URIs in + addition to compliance class tokens. It also can now be used in + requests, although this specification does not define any associated + semantics for the compliance classes defined in here (see + <a href="#section-10.1">Section 10.1</a>). + + In <a href="http://tools.ietf.org/html/rfc2518">RFC 2518</a>, the definition of the Depth header (<a href="#section-9.2">Section 9.2</a>) + required that, by default, request headers would be applied to each + resource in scope. Based on implementation experience, the default + has now been reversed (see <a href="#section-10.2">Section 10.2</a>). + + The definitions of HTTP status code 102 (<a href="http://tools.ietf.org/html/rfc2518#section-10.1">[RFC2518], Section 10.1</a>) and + the Status-URI response header (<a href="#section-9.7">Section 9.7</a>) have been removed due to + lack of implementation. + + The TimeType format used in the Timeout request header and the + "timeout" XML element used to be extensible. Now, only the two + formats defined by this specification are allowed (see <a href="#section-10.7">Section 10.7</a>). + +Author's Address + + Lisa Dusseault (editor) + CommerceNet + 2064 Edgewood Dr. + Palo Alto, CA 94303 + US + + EMail: ldusseault@commerce.net + + + + + + + + + + + +<span class="grey">Dusseault Standards Track [Page 126]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-127" id="page-127" href="#page-127" class="invisible"> </a> +<span class="grey"><a href="#">RFC 4918</a> WebDAV June 2007</span> + + +Full Copyright Statement + + Copyright (C) The IETF Trust (2007). + + This document is subject to the rights, licenses and restrictions + contained in <a href="http://tools.ietf.org/html/bcp78">BCP 78</a>, and except as set forth therein, the authors + retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND + THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF + THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in <a href="http://tools.ietf.org/html/bcp78">BCP 78</a> and <a href="http://tools.ietf.org/html/bcp79">BCP 79</a>. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + <a href="http://www.ietf.org/ipr">http://www.ietf.org/ipr</a>. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at + ietf-ipr@ietf.org. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + +Dusseault Standards Track [Page 127] + +</pre><br> +<span class="noprint"><small><small>Html markup produced by rfcmarkup 1.109, available from +<a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a> +</small></small></span> + +</body></html>
\ No newline at end of file diff --git a/rfcs/RFC 6352 - CardDAV: vCard Extensions to Web Distributed Authoring and Versioning (WebDAV).html b/rfcs/RFC 6352 - CardDAV: vCard Extensions to Web Distributed Authoring and Versioning (WebDAV).html new file mode 100644 index 0000000..7c05956 --- /dev/null +++ b/rfcs/RFC 6352 - CardDAV: vCard Extensions to Web Distributed Authoring and Versioning (WebDAV).html @@ -0,0 +1,2758 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head profile="http://dublincore.org/documents/2008/08/04/dc-html/"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta name="robots" content="index,follow"> + <meta name="creator" content="rfcmarkup version 1.111"> + <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"> +<meta name="DC.Identifier" content="urn:ietf:rfc:6352"> +<meta name="DC.Description.Abstract" content="This document defines extensions to the Web Distributed Authoring and +Versioning (WebDAV) protocol to specify a standard way of accessing, +managing, and sharing contact information based on the vCard format. +[STANDARDS-TRACK]"> +<meta name="DC.Creator" content="Cyrus Daboo <cyrus@daboo.name>"> +<meta name="DC.Date.Issued" content="August, 2011"> +<meta name="DC.Title" content="CardDAV: vCard Extensions to Web Distributed Authoring and Versioning (WebDAV)"> + + <link rel="icon" href="index_files/rfc.png" type="image/png"> + <link rel="shortcut icon" href="index_files/rfc.png" type="image/png"> + <title>RFC 6352 - CardDAV: vCard Extensions to Web Distributed Authoring and Versioning (WebDAV)</title> + + + <style type="text/css"><!--
+/* Effective stylesheet produced by snapshot save */
+body { margin: 0px 8px; font-size: 1em; }
+h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { line-height: 0pt; display: inline; white-space: pre; font-family: monospace; font-size: 1em; font-weight: bold; }
+pre { font-size: 1em; margin-top: 0px; margin-bottom: 0px; }
+.pre { white-space: pre; font-family: monospace; }
+.newpage { page-break-before: always; }
+.invisible { text-decoration: none; color: white; }
+a.selflink { color: black; text-decoration: none; }
+@media print {
+ body { font-family: monospace; font-size: 10.5pt; }
+ h1, h2, h3, h4, h5, h6 { font-size: 1em; }
+ a:link, a:visited { color: inherit; text-decoration: none; }
+ .noprint { display: none; }
+}
+@media screen {
+ .grey, .grey a:link, .grey a:visited { color: rgb(119, 119, 119); }
+ .docinfo { background-color: rgb(238, 238, 238); }
+ .top { border-top: 7px solid rgb(238, 238, 238); }
+ .bgblue { background-color: rgb(102, 102, 255); }
+ .legend { font-size: 90%; }
+}
+--></style> + <!--[if IE]> + <style> + body { + font-size: 13px; + margin: 10px 10px; + } + </style> + <![endif]--> + + <script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script> +</head> +<body onload=""> + <div style="height: 13px;"> + <div onmouseover="" onclick="" onmouseout="" style="height: 6px; position: absolute;" class="pre noprint docinfo bgblue" title="Click for colour legend."> </div> + <div id="legend" class="docinfo noprint pre legend" style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; " onmouseover="" onmouseout=""> + </div> + </div> +<span class="pre noprint docinfo top">[<a href="http://tools.ietf.org/html/" title="Document search and retrieval page">Docs</a>] [<a href="http://tools.ietf.org/rfc/rfc6352.txt" title="Plaintext version of this document">txt</a>|<a href="http://tools.ietf.org/pdf/rfc6352" title="PDF version of this document">pdf</a>] [<a href="http://tools.ietf.org/html/draft-ietf-vcarddav-carddav" title="draft-ietf-vcarddav-carddav">draft-ietf-vcardd...</a>] [<a href="http://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=rfc6352" title="Inline diff (wdiff)">Diff1</a>] [<a href="http://tools.ietf.org/rfcdiff?url2=rfc6352" title="Side-by-side diff">Diff2</a>] </span><br> +<span class="pre noprint docinfo"> </span><br> +<span class="pre noprint docinfo">Updated by: <a href="http://tools.ietf.org/html/rfc6764">6764</a> PROPOSED STANDARD</span><br> +<span class="pre noprint docinfo"> </span><br> +<pre>Internet Engineering Task Force (IETF) C. Daboo +Request for Comments: 6352 Apple +Category: Standards Track August 2011 +ISSN: 2070-1721 + + + <span class="h1"><h1>CardDAV: vCard Extensions to</h1></span> + <span class="h1"><h1>Web Distributed Authoring and Versioning (WebDAV)</h1></span> + +Abstract + + This document defines extensions to the Web Distributed Authoring and + Versioning (WebDAV) protocol to specify a standard way of accessing, + managing, and sharing contact information based on the vCard format. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in <a href="http://tools.ietf.org/html/rfc5741#section-2">Section 2 of RFC 5741</a>. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + <a href="http://www.rfc-editor.org/info/rfc6352">http://www.rfc-editor.org/info/rfc6352</a>. + +Copyright Notice + + Copyright (c) 2011 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to <a href="http://tools.ietf.org/html/bcp78">BCP 78</a> and the IETF Trust's Legal + Provisions Relating to IETF Documents + (<a href="http://trustee.ietf.org/license-info">http://trustee.ietf.org/license-info</a>) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in <a href="#section-4">Section 4</a>.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + This document may contain material from IETF Documents or IETF + Contributions published or made publicly available before November + 10, 2008. The person(s) controlling the copyright in some of this + material may not have granted the IETF Trust the right to allow + + + +<span class="grey">Daboo Standards Track [Page 1]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-2" id="page-2" href="#page-2" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + modifications of such material outside the IETF Standards Process. + Without obtaining an adequate license from the person(s) controlling + the copyright in such materials, this document may not be modified + outside the IETF Standards Process, and derivative works of it may + not be created outside the IETF Standards Process, except to format + it for publication as an RFC or to translate it into languages other + than English. + +Table of Contents + + <a href="#section-1">1</a>. Introduction and Overview . . . . . . . . . . . . . . . . . . <a href="#page-4">4</a> + <a href="#section-2">2</a>. Conventions . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-5">5</a> + <a href="#section-3">3</a>. Requirements Overview . . . . . . . . . . . . . . . . . . . . <a href="#page-6">6</a> + <a href="#section-4">4</a>. Address Book Data Model . . . . . . . . . . . . . . . . . . . <a href="#page-7">7</a> + <a href="#section-4.1">4.1</a>. Address Book Server . . . . . . . . . . . . . . . . . . . <a href="#page-7">7</a> + <a href="#section-5">5</a>. Address Book Resources . . . . . . . . . . . . . . . . . . . . <a href="#page-7">7</a> + <a href="#section-5.1">5.1</a>. Address Object Resources . . . . . . . . . . . . . . . . . <a href="#page-7">7</a> + <a href="#section-5.1.1">5.1.1</a>. Data Type Conversion . . . . . . . . . . . . . . . . . <a href="#page-8">8</a> + <a href="#section-5.1.1.1">5.1.1.1</a>. Additional Precondition for GET . . . . . . . . . <a href="#page-8">8</a> + <a href="#section-5.2">5.2</a>. Address Book Collections . . . . . . . . . . . . . . . . . <a href="#page-9">9</a> + <a href="#section-6">6</a>. Address Book Feature . . . . . . . . . . . . . . . . . . . . . <a href="#page-10">10</a> + <a href="#section-6.1">6.1</a>. Address Book Support . . . . . . . . . . . . . . . . . . . <a href="#page-10">10</a> + 6.1.1. Example: Using OPTIONS for the Discovery of + Support for CardDAV . . . . . . . . . . . . . . . . . <a href="#page-10">10</a> + <a href="#section-6.2">6.2</a>. Address Book Properties . . . . . . . . . . . . . . . . . <a href="#page-10">10</a> + <a href="#section-6.2.1">6.2.1</a>. CARDDAV:addressbook-description Property . . . . . . . <a href="#page-10">10</a> + <a href="#section-6.2.2">6.2.2</a>. CARDDAV:supported-address-data Property . . . . . . . <a href="#page-11">11</a> + <a href="#section-6.2.3">6.2.3</a>. CARDDAV:max-resource-size Property . . . . . . . . . . <a href="#page-12">12</a> + <a href="#section-6.3">6.3</a>. Creating Resources . . . . . . . . . . . . . . . . . . . . <a href="#page-13">13</a> + <a href="#section-6.3.1">6.3.1</a>. Extended MKCOL Method . . . . . . . . . . . . . . . . <a href="#page-13">13</a> + <a href="#section-6.3.1.1">6.3.1.1</a>. Example - Successful MKCOL Request . . . . . . . . <a href="#page-14">14</a> + <a href="#section-6.3.2">6.3.2</a>. Creating Address Object Resources . . . . . . . . . . <a href="#page-15">15</a> + 6.3.2.1. Additional Preconditions for PUT, COPY, and + MOVE . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-16">16</a> + <a href="#section-6.3.2.2">6.3.2.2</a>. Non-Standard vCard Properties and Parameters . . . <a href="#page-17">17</a> + <a href="#section-6.3.2.3">6.3.2.3</a>. Address Object Resource Entity Tag . . . . . . . . <a href="#page-18">18</a> + <a href="#section-7">7</a>. Address Book Access Control . . . . . . . . . . . . . . . . . <a href="#page-18">18</a> + <a href="#section-7.1">7.1</a>. Additional Principal Properties . . . . . . . . . . . . . <a href="#page-18">18</a> + <a href="#section-7.1.1">7.1.1</a>. CARDDAV:addressbook-home-set Property . . . . . . . . <a href="#page-19">19</a> + <a href="#section-7.1.2">7.1.2</a>. CARDDAV:principal-address Property . . . . . . . . . . <a href="#page-19">19</a> + <a href="#section-8">8</a>. Address Book Reports . . . . . . . . . . . . . . . . . . . . . <a href="#page-20">20</a> + <a href="#section-8.1">8.1</a>. REPORT Method . . . . . . . . . . . . . . . . . . . . . . <a href="#page-20">20</a> + <a href="#section-8.2">8.2</a>. Ordinary Collections . . . . . . . . . . . . . . . . . . . <a href="#page-21">21</a> + <a href="#section-8.3">8.3</a>. Searching Text: Collations . . . . . . . . . . . . . . . . <a href="#page-21">21</a> + <a href="#section-8.3.1">8.3.1</a>. CARDDAV:supported-collation-set Property . . . . . . . <a href="#page-22">22</a> + <a href="#section-8.4">8.4</a>. Partial Retrieval . . . . . . . . . . . . . . . . . . . . <a href="#page-23">23</a> + <a href="#section-8.5">8.5</a>. Non-Standard Properties and Parameters . . . . . . . . . . <a href="#page-23">23</a> + + + + +<span class="grey">Daboo Standards Track [Page 2]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-3" id="page-3" href="#page-3" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + <a href="#section-8.6">8.6</a>. CARDDAV:addressbook-query Report . . . . . . . . . . . . . <a href="#page-23">23</a> + <a href="#section-8.6.1">8.6.1</a>. Limiting Results . . . . . . . . . . . . . . . . . . . <a href="#page-25">25</a> + <a href="#section-8.6.2">8.6.2</a>. Truncation of Results . . . . . . . . . . . . . . . . <a href="#page-25">25</a> + 8.6.3. Example: Partial Retrieval of vCards Matching + NICKNAME . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-26">26</a> + 8.6.4. Example: Partial Retrieval of vCards Matching a + Full Name or Email Address . . . . . . . . . . . . . . <a href="#page-27">27</a> + <a href="#section-8.6.5">8.6.5</a>. Example: Truncated Results . . . . . . . . . . . . . . <a href="#page-29">29</a> + <a href="#section-8.7">8.7</a>. CARDDAV:addressbook-multiget Report . . . . . . . . . . . <a href="#page-31">31</a> + <a href="#section-8.7.1">8.7.1</a>. Example: CARDDAV:addressbook-multiget Report . . . . . <a href="#page-32">32</a> + <a href="#section-8.7.2">8.7.2</a>. Example: CARDDAV:addressbook-multiget Report . . . . . <a href="#page-33">33</a> + <a href="#section-9">9</a>. Client Guidelines . . . . . . . . . . . . . . . . . . . . . . <a href="#page-34">34</a> + <a href="#section-9.1">9.1</a>. Restrict the Properties Returned . . . . . . . . . . . . . <a href="#page-34">34</a> + <a href="#section-9.2">9.2</a>. Avoiding Lost Updates . . . . . . . . . . . . . . . . . . <a href="#page-35">35</a> + <a href="#section-9.3">9.3</a>. Client Configuration . . . . . . . . . . . . . . . . . . . <a href="#page-35">35</a> + <a href="#section-9.4">9.4</a>. Finding Other Users' Address Books . . . . . . . . . . . . <a href="#page-35">35</a> + <a href="#section-10">10</a>. XML Element Definitions . . . . . . . . . . . . . . . . . . . <a href="#page-36">36</a> + <a href="#section-10.1">10.1</a>. CARDDAV:addressbook XML Element . . . . . . . . . . . . . <a href="#page-36">36</a> + <a href="#section-10.2">10.2</a>. CARDDAV:supported-collation XML Element . . . . . . . . . <a href="#page-36">36</a> + <a href="#section-10.3">10.3</a>. CARDDAV:addressbook-query XML Element . . . . . . . . . . <a href="#page-37">37</a> + <a href="#section-10.4">10.4</a>. CARDDAV:address-data XML Element . . . . . . . . . . . . . <a href="#page-37">37</a> + <a href="#section-10.4.1">10.4.1</a>. CARDDAV:allprop XML Element . . . . . . . . . . . . . <a href="#page-39">39</a> + <a href="#section-10.4.2">10.4.2</a>. CARDDAV:prop XML Element . . . . . . . . . . . . . . . <a href="#page-39">39</a> + <a href="#section-10.5">10.5</a>. CARDDAV:filter XML Element . . . . . . . . . . . . . . . . <a href="#page-40">40</a> + <a href="#section-10.5.1">10.5.1</a>. CARDDAV:prop-filter XML Element . . . . . . . . . . . <a href="#page-40">40</a> + <a href="#section-10.5.2">10.5.2</a>. CARDDAV:param-filter XML Element . . . . . . . . . . . <a href="#page-41">41</a> + <a href="#section-10.5.3">10.5.3</a>. CARDDAV:is-not-defined XML Element . . . . . . . . . . <a href="#page-42">42</a> + <a href="#section-10.5.4">10.5.4</a>. CARDDAV:text-match XML Element . . . . . . . . . . . . <a href="#page-42">42</a> + <a href="#section-10.6">10.6</a>. CARDDAV:limit XML Element . . . . . . . . . . . . . . . . <a href="#page-43">43</a> + <a href="#section-10.6.1">10.6.1</a>. CARDDAV:nresults XML Element . . . . . . . . . . . . . <a href="#page-44">44</a> + <a href="#section-10.7">10.7</a>. CARDDAV:addressbook-multiget XML Element . . . . . . . . . <a href="#page-44">44</a> + <a href="#section-11">11</a>. Service Discovery via SRV Records . . . . . . . . . . . . . . <a href="#page-45">45</a> + <a href="#section-12">12</a>. Internationalization Considerations . . . . . . . . . . . . . <a href="#page-45">45</a> + <a href="#section-13">13</a>. Security Considerations . . . . . . . . . . . . . . . . . . . <a href="#page-45">45</a> + <a href="#section-14">14</a>. IANA Consideration . . . . . . . . . . . . . . . . . . . . . . <a href="#page-46">46</a> + <a href="#section-14.1">14.1</a>. Namespace Registration . . . . . . . . . . . . . . . . . . <a href="#page-46">46</a> + <a href="#section-15">15</a>. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-46">46</a> + <a href="#section-16">16</a>. References . . . . . . . . . . . . . . . . . . . . . . . . . . <a href="#page-47">47</a> + <a href="#section-16.1">16.1</a>. Normative References . . . . . . . . . . . . . . . . . . . <a href="#page-47">47</a> + <a href="#section-16.2">16.2</a>. Informative References . . . . . . . . . . . . . . . . . . <a href="#page-48">48</a> + + + + + + + + + + + +<span class="grey">Daboo Standards Track [Page 3]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-4" id="page-4" href="#page-4" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + +<span class="h2"><h2><a class="selflink" name="section-1" href="#section-1">1</a>. Introduction and Overview</h2></span> + + Address books containing contact information are a key component of + personal information management tools, such as email, calendaring and + scheduling, and instant messaging clients. To date several protocols + have been used for remote access to contact data, including the + Lightweight Directory Access Protocol (LDAP) [<a href="http://tools.ietf.org/html/rfc4510" title="" lightweight directory access protocol technical specification road map>RFC4510</a>], Internet + Message Support Protocol [<a href="#ref-IMSP" title="" imsp internet message support protocol>IMSP</a>], and Application Configuration Access + Protocol (ACAP) [<a href="http://tools.ietf.org/html/rfc2244" title="" acap application configuration access protocol>RFC2244</a>], together with SyncML used for + synchronization of such data. + + WebDAV [<a href="http://tools.ietf.org/html/rfc4918" title="" http extensions for web distributed authoring and versioning>RFC4918</a>] offers a number of advantages as a framework or + basis for address book access and management. Most of these + advantages boil down to a significant reduction in the costs of + design, implementation, interoperability testing, and deployment. + + The key features of address book support with WebDAV are: + + 1. Ability to use multiple address books with hierarchical layout. + + 2. Ability to control access to individual address books and address + entries as per WebDAV Access Control List (ACL) [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>]. + + 3. Principal collections can be used to enumerate and query other + users on the system as per WebDAV ACL [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>]. + + 4. Server-side searching of address data, avoiding the need for + clients to download an entire address book in order to do a quick + address 'expansion' operation. + + 5. Well-defined internationalization support through WebDAV's use of + XML. + + 6. Use of vCards [<a href="http://tools.ietf.org/html/rfc2426" title="" vcard mime directory profile>RFC2426</a>] for well-defined address schema to + enhance client interoperability. + + 7. Many limited clients (e.g., mobile devices) contain an HTTP stack + that makes implementing WebDAV much easier than other protocols. + + The key disadvantage of address book support in WebDAV is: + + 1. Lack of change notification. Many of the alternative protocols + also lack this ability. However, an extension for push + notifications could easily be developed. + + vCard is a MIME directory profile aimed at encapsulating personal + addressing and contact information about people. The specification + of vCard was originally done by the Versit consortium, with a + + + +<span class="grey">Daboo Standards Track [Page 4]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-5" id="page-5" href="#page-5" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + subsequent 3.0 version standardized by the IETF [<a href="http://tools.ietf.org/html/rfc2426" title="" vcard mime directory profile>RFC2426</a>]. vCard is + in widespread use in email clients and mobile devices as a means of + encapsulating address information for transport via email or for + import/export and synchronization operations. + + An update to vCard -- vCard v4 -- is currently being developed + [<a href="http://tools.ietf.org/html/rfc6350" title="" vcard format specification>RFC6350</a>] and is compatible with this specification. + +<span class="h2"><h2><a class="selflink" name="section-2" href="#section-2">2</a>. Conventions</h2></span> + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [<a href="http://tools.ietf.org/html/rfc2119" title="" key words for use in rfcs to indicate requirement levels>RFC2119</a>]. + + The term "protected" is used in the Conformance field of property + definitions as defined in <a href="http://tools.ietf.org/html/rfc4918#section-15">Section 15 of [RFC4918]</a>. + + This document uses XML DTD fragments ([<a href="#ref-W3C.REC-xml-20081126">W3C.REC-xml-20081126</a>], <a href="#section-3.2">Section</a> + <a href="#section-3.2">3.2</a>) as a purely notational convention. WebDAV request and response + bodies cannot be validated by a DTD due to the specific extensibility + rules defined in <a href="http://tools.ietf.org/html/rfc4918#section-17">Section 17 of [RFC4918]</a> and due to the fact that all + XML elements defined by that specification use the XML namespace name + "DAV:". In particular: + + 1. Element names use the "DAV:" namespace. + + 2. Element ordering is irrelevant unless explicitly stated. + + 3. Extension elements (elements not already defined as valid child + elements) may be added anywhere, except when explicitly stated + otherwise. + + 4. Extension attributes (attributes not already defined as valid for + this element) may be added anywhere, except when explicitly + stated otherwise. + + The namespace "urn:ietf:params:xml:ns:carddav" is reserved for the + XML elements defined in this specification, its revisions, and + related CardDAV specifications. XML elements defined by individual + implementations MUST NOT use the "urn:ietf:params:xml:ns:carddav" + namespace, and instead should use a namespace that they control. + + When XML element types in the namespaces "DAV:" and + "urn:ietf:params:xml:ns:carddav" are referenced in this document + outside of the context of an XML fragment, the strings "DAV:" and + "CARDDAV:" will be prefixed to the element types, respectively. + + + + + +<span class="grey">Daboo Standards Track [Page 5]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-6" id="page-6" href="#page-6" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + This document inherits, and sometimes extends, DTD productions from + <a href="http://tools.ietf.org/html/rfc4918#section-14">Section 14 of [RFC4918]</a>. + + Also, note that some CardDAV XML element names are identical to + WebDAV XML element names, though their namespace differs. Care must + be taken not to confuse the two sets of names. + +<span class="h2"><h2><a class="selflink" name="section-3" href="#section-3">3</a>. Requirements Overview</h2></span> + + This section lists what functionality is required of a CardDAV + server. To advertise support for CardDAV, a server: + + o MUST support vCard v3 [<a href="http://tools.ietf.org/html/rfc2426" title="" vcard mime directory profile>RFC2426</a>] as a media type for the address + object resource format; + + o MUST support WebDAV Class 3 [<a href="http://tools.ietf.org/html/rfc4918" title="" http extensions for web distributed authoring and versioning>RFC4918</a>]; + + o MUST support WebDAV ACL [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>]; + + o MUST support secure transport as defined in [<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>] using + Transport Layer Security (TLS) [<a href="http://tools.ietf.org/html/rfc5246" title="" the transport layer security protocol version>RFC5246</a>] and using the certificate + validation procedures described in [<a href="http://tools.ietf.org/html/rfc5280" title="" internet x.509 public key infrastructure certificate and revocation list profile>RFC5280</a>]; + + o MUST support ETags [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>] with additional requirements + specified in <a href="#section-6.3.2.3">Section 6.3.2.3</a> of this document; + + o MUST support all address book reports defined in <a href="#section-8">Section 8</a> of this + document; and + + o MUST advertise support on all address book collections and address + object resources for the address book reports in the + DAV:supported-report-set property, as defined in Versioning + Extensions to WebDAV [<a href="http://tools.ietf.org/html/rfc3253" title="" versioning extensions to webdav distributed authoring and>RFC3253</a>]. + + In addition, a server: + + o SHOULD support vCard v4 [<a href="http://tools.ietf.org/html/rfc6350" title="" vcard format specification>RFC6350</a>] as a media type for the address + object resource format; + + o SHOULD support the extended MKCOL method [<a href="http://tools.ietf.org/html/rfc5689" title="" extended mkcol for web distributed authoring and versioning>RFC5689</a>] to create + address book collections as defined in <a href="#section-6.3.1">Section 6.3.1</a> of this + document. + + o SHOULD support the DAV:current-user-principal-URL property as + defined in [<a href="http://tools.ietf.org/html/rfc5397" title="" webdav current principal extension>RFC5397</a>] to give clients a fast way to locate user + principals. + + + + + +<span class="grey">Daboo Standards Track [Page 6]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-7" id="page-7" href="#page-7" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + +<span class="h2"><h2><a class="selflink" name="section-4" href="#section-4">4</a>. Address Book Data Model</h2></span> + + As a brief overview, a CardDAV address book is modeled as a WebDAV + collection with a well-defined structure; each of these address book + collections contains a number of resources representing address + objects as their direct child resources. Each resource representing + an address object is called an "address object resource". Each + address object resource and each address book collection can be + individually locked and have individual WebDAV properties. + Requirements derived from this model are provided in Sections <a href="#section-5.1">5.1</a> and + 5.2. + +<span class="h3"><h3><a class="selflink" name="section-4.1" href="#section-4.1">4.1</a>. Address Book Server</h3></span> + + A CardDAV server is an address-aware engine combined with a WebDAV + server. The server may include address data in some parts of its URL + namespace and non-address data in other parts. + + A WebDAV server can advertise itself as a CardDAV server if it + supports the functionality defined in this specification at any point + within the root of its repository. That might mean that address data + is spread throughout the repository and mixed with non-address data + in nearby collections (e.g., address data may be found in /lisa/ + addressbook/ as well as in /bernard/addressbook/, and non-address + data in /lisa/calendars/). Or, it might mean that address data can + be found only in certain sections of the repository (e.g., + /addressbooks/user/). Address book features are only required in the + repository sections that are or contain address objects. So, a + repository confining address data to the /carddav/ collection would + only need to support the CardDAV required features within that + collection. + + The CardDAV server is the canonical location for address data and + state information. Clients may submit requests to change data or + download data. Clients may store address objects offline and attempt + to synchronize at a later time. Address data on the server can + change between the time of last synchronization and when attempting + an update, as address book collections may be shared and accessible + via multiple clients. Entity tags and locking help this work. + +<span class="h2"><h2><a class="selflink" name="section-5" href="#section-5">5</a>. Address Book Resources</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-5.1" href="#section-5.1">5.1</a>. Address Object Resources</h3></span> + + This specification uses vCard as the default format for address or + contact information being stored on the server. However, this + specification does allow other formats for address data provided that + the server advertises support for those additional formats as + + + +<span class="grey">Daboo Standards Track [Page 7]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-8" id="page-8" href="#page-8" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + described below. The requirements in this section pertain to vCard + address data or formats that follow the semantics of vCard data. + + Address object resources contained in address book collections MUST + contain a single vCard component only. + + vCard components in an address book collection MUST have a UID + property value that MUST be unique in the scope of the address book + collection in which it is contained. + +<span class="h4"><h4><a class="selflink" name="section-5.1.1" href="#section-5.1.1">5.1.1</a>. Data Type Conversion</h4></span> + + Servers might support more than one primary media type for address + object resources, for example, vCard v3.0 and vCard v4.0. In such + cases, servers have to accept all media types that they advertise via + the CARDDAV:supported-address-data WebDAV property (see + <a href="#section-6.2.2">Section 6.2.2</a>). + + However, clients can use standard HTTP content negotiation behavior + (the Accept request header defined in <a href="http://tools.ietf.org/html/rfc2616#section-14.1">Section 14.1 of [RFC2616]</a>) to + request that an address object resource's data be returned in a + specific media type format. For example, a client merely capable of + handling vCard v3.0 would only want to have address object resources + returned in v3.0 format. + + Additionally, REPORT requests, defined later in this specification, + allow for the return of address object resource data within an XML + response body. Again, the client can use content negotiation to + request that data be returned in a specific media type by specifying + appropriate attributes on the CARDDAV:address-data XML element used + in the request body (see <a href="#section-10.4">Section 10.4</a>). + + In some cases, it might not be possible for a server to convert from + one media type to another. When that happens, the server MUST return + the CARDDAV:supported-address-data-conversion precondition (see + below) in the response body (when the failure to convert applies to + the entire response) or use that same precondition code in the + DAV:response XML element in the response for the targeted address + object resource when one of the REPORTs defined below is used. See + <a href="#section-8.7.2">Section 8.7.2</a> for an example of this. + +<span class="h5"><h5><a class="selflink" name="section-5.1.1.1" href="#section-5.1.1.1">5.1.1.1</a>. Additional Precondition for GET</h5></span> + + This specification creates additional preconditions for the GET + method. + + + + + + +<span class="grey">Daboo Standards Track [Page 8]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-9" id="page-9" href="#page-9" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + The new precondition is: + + (CARDDAV:supported-address-data-conversion): The resource targeted + by the GET request can be converted to the media type specified in + the Accept request header included with the request. + +<span class="h3"><h3><a class="selflink" name="section-5.2" href="#section-5.2">5.2</a>. Address Book Collections</h3></span> + + Address book collections appear to clients as a WebDAV collection + resource, identified by a URL. An address book collection MUST + report the DAV:collection and CARDDAV:addressbook XML elements in the + value of the DAV:resourcetype property. The element type declaration + for CARDDAV:addressbook is: + + <!ELEMENT addressbook EMPTY> + + An address book collection can be created through provisioning (e.g., + automatically created when a user's account is provisioned), or it + can be created with the extended MKCOL method (see <a href="#section-6.3.1">Section 6.3.1</a>). + This can be used by a user to create additional address books (e.g., + "soccer team members") or for users to share an address book (e.g., + "sales team contacts"). However, note that this document doesn't + define what extra address book collections are for. Users must rely + on non-standard cues to find out what an address book collection is + for, or use the CARDDAV:addressbook-description property defined in + <a href="#section-6.2.1">Section 6.2.1</a> to provide such a cue. + + The following restrictions are applied to the resources within an + address book collection: + + a. Address book collections MUST only contain address object + resources and collections that are not address book collections. + That is, the only "top-level" non-collection resources allowed in + an address book collection are address object resources. This + ensures that address book clients do not have to deal with non- + address data in an address book collection, though they do have + to distinguish between address object resources and collections + when using standard WebDAV techniques to examine the contents of + a collection. + + b. Collections contained in address book collections MUST NOT + contain address book collections at any depth. That is, + "nesting" of address book collections within other address book + collections at any depth is not allowed. This specification does + not define how collections contained in an address book + collection are used or how they relate to any address object + resources contained in the address book collection. + + + + +<span class="grey">Daboo Standards Track [Page 9]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-10" id="page-10" href="#page-10" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Multiple address book collections MAY be children of the same + collection. + +<span class="h2"><h2><a class="selflink" name="section-6" href="#section-6">6</a>. Address Book Feature</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-6.1" href="#section-6.1">6.1</a>. Address Book Support</h3></span> + + A server supporting the features described in this document MUST + include "addressbook" as a field in the DAV response header from an + OPTIONS request on any resource that supports any address book + properties, reports, or methods. A value of "addressbook" in the DAV + response header MUST indicate that the server supports all MUST level + requirements and REQUIRED features specified in this document. + +<span class="h4"><h4><a class="selflink" name="section-6.1.1" href="#section-6.1.1">6.1.1</a>. Example: Using OPTIONS for the Discovery of Support for CardDAV</h4></span> + + >> Request << + + OPTIONS /addressbooks/users/ HTTP/1.1 + Host: addressbook.example.com + + >> Response << + + HTTP/1.1 200 OK + Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, COPY, MOVE + Allow: MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, REPORT, ACL + DAV: 1, 2, 3, access-control, addressbook + DAV: extended-mkcol + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Length: 0 + + In this example, the OPTIONS response indicates that the server + supports CardDAV in this namespace; therefore, the '/addressbooks/ + users/' collection may be used as a parent for address book + collections as the extended MKCOL method is available and as a + possible target for REPORT requests for address book reports. + +<span class="h3"><h3><a class="selflink" name="section-6.2" href="#section-6.2">6.2</a>. Address Book Properties</h3></span> + +<span class="h4"><h4><a class="selflink" name="section-6.2.1" href="#section-6.2.1">6.2.1</a>. CARDDAV:addressbook-description Property</h4></span> + + Name: addressbook-description + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Provides a human-readable description of the address book + collection. + + + + +<span class="grey">Daboo Standards Track [Page 10]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-11" id="page-11" href="#page-11" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Value: Any text. + + Protected: SHOULD NOT be protected so that users can specify a + description. + + COPY/MOVE behavior: This property value SHOULD be preserved in COPY + and MOVE operations. + + allprop behavior: SHOULD NOT be returned by a PROPFIND DAV:allprop + request. + + Description: This property contains a description of the address + book collection that is suitable for presentation to a user. The + xml:lang attribute can be used to add a language tag for the value + of this property. + + Definition: + + <!ELEMENT addressbook-description (#PCDATA)> + <!-- PCDATA value: string --> + + Example: + + <C:addressbook-description xml:lang="fr-CA" + xmlns:C="urn:ietf:params:xml:ns:carddav" + >Adresses de Oliver Daboo</C:addressbook-description> + +<span class="h4"><h4><a class="selflink" name="section-6.2.2" href="#section-6.2.2">6.2.2</a>. CARDDAV:supported-address-data Property</h4></span> + + Name: supported-address-data + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Specifies what media types are allowed for address object + resources in an address book collection. + + Protected: MUST be protected as it indicates the level of support + provided by the server. + + COPY/MOVE behavior: This property value MUST be preserved in COPY + and MOVE operations. + + allprop behavior: SHOULD NOT be returned by a PROPFIND DAV:allprop + request. + + Description: The CARDDAV:supported-address-data property is used to + specify the media type supported for the address object resources + contained in a given address book collection (e.g., vCard version + + + +<span class="grey">Daboo Standards Track [Page 11]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-12" id="page-12" href="#page-12" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + 3.0). Any attempt by the client to store address object resources + with a media type not listed in this property MUST result in an + error, with the CARDDAV:supported-address-data precondition + (<a href="#section-6.3.2.1">Section 6.3.2.1</a>) being violated. In the absence of this + property, the server MUST only accept data with the media type + "text/vcard" and vCard version 3.0, and clients can assume that is + all the server will accept. + + Definition: + + <!ELEMENT supported-address-data (address-data-type+)> + + <!ELEMENT address-data-type EMPTY> + <!ATTLIST address-data-type content-type CDATA "text/vcard" + version CDATA "3.0"> + <!-- content-type value: a MIME media type --> + <!-- version value: a version string --> + + Example: + + <C:supported-address-data + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <C:address-data-type content-type="text/vcard" version="3.0"/> + </C:supported-address-data> + +<span class="h4"><h4><a class="selflink" name="section-6.2.3" href="#section-6.2.3">6.2.3</a>. CARDDAV:max-resource-size Property</h4></span> + + Name: max-resource-size + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Provides a numeric value indicating the maximum size in + octets of a resource that the server is willing to accept when an + address object resource is stored in an address book collection. + + Value: Any text representing a numeric value. + + Protected: MUST be protected as it indicates limits provided by the + server. + + COPY/MOVE behavior: This property value MUST be preserved in COPY + and MOVE operations. + + allprop behavior: SHOULD NOT be returned by a PROPFIND DAV:allprop + request. + + + + + + +<span class="grey">Daboo Standards Track [Page 12]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-13" id="page-13" href="#page-13" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Description: The CARDDAV:max-resource-size is used to specify a + numeric value that represents the maximum size in octets that the + server is willing to accept when an address object resource is + stored in an address book collection. Any attempt to store an + address book object resource exceeding this size MUST result in an + error, with the CARDDAV:max-resource-size precondition + (<a href="#section-6.3.2.1">Section 6.3.2.1</a>) being violated. In the absence of this + property, the client can assume that the server will allow storing + a resource of any reasonable size. + + Definition: + + <!ELEMENT max-resource-size (#PCDATA)> + <!-- PCDATA value: a numeric value (positive decimal integer) --> + + Example: + + <C:max-resource-size xmlns:C="urn:ietf:params:xml:ns:carddav" + >102400</C:max-resource-size> + +<span class="h3"><h3><a class="selflink" name="section-6.3" href="#section-6.3">6.3</a>. Creating Resources</h3></span> + + Address book collections and address object resources may be created + by either a CardDAV client or the CardDAV server. This specification + defines restrictions and a data model that both clients and servers + MUST adhere to when manipulating such address data. + +<span class="h4"><h4><a class="selflink" name="section-6.3.1" href="#section-6.3.1">6.3.1</a>. Extended MKCOL Method</h4></span> + + An HTTP request using the extended MKCOL method [<a href="http://tools.ietf.org/html/rfc5689" title="" extended mkcol for web distributed authoring and versioning>RFC5689</a>] can be used + to create a new address book collection resource. A server MAY + restrict address book collection creation to particular collections. + + To create an address book, the client sends an extended MKCOL request + to the server and in the body of the request sets the + DAV:resourcetype property to the resource type for an address book + collection as defined in <a href="#section-5.2">Section 5.2</a>. + + Support for creating address books on the server is only RECOMMENDED + and not REQUIRED because some address book stores only support one + address book per user (or principal), and those are typically pre- + created for each account. However, servers and clients are strongly + encouraged to support address book creation whenever possible to + allow users to create multiple address book collections to help + organize their data better. + + + + + + +<span class="grey">Daboo Standards Track [Page 13]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-14" id="page-14" href="#page-14" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + The DAV:displayname property can be used for a human-readable name of + the address book. Clients can either specify the value of the + DAV:displayname property in the request body of the extended MKCOL + request or, alternatively, issue a PROPPATCH request to change the + DAV:displayname property to the appropriate value immediately after + using the extended MKCOL request. When displaying address book + collections to users, clients SHOULD check the DAV:displayname + property and use that value as the name of the address book. In the + event that the DAV:displayname property is not set, the client MAY + use the last part of the address book collection URI as the name; + however, that path segment may be "opaque" and not represent any + meaningful human-readable text. + +<span class="h5"><h5><a class="selflink" name="section-6.3.1.1" href="#section-6.3.1.1">6.3.1.1</a>. Example - Successful MKCOL Request</h5></span> + + This example creates an address book collection called /home/lisa/ + addressbook/ on the server addressbook.example.com with specific + values for the properties DAV:resourcetype, DAV:displayname, and + CARDDAV:addressbook-description. + + >> Request << + + MKCOL /home/lisa/addressbook/ HTTP/1.1 + Host: addressbook.example.com + Content-Type: text/xml; charset="utf-8" + Content-Length: xxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:mkcol xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:set> + <D:prop> + <D:resourcetype> + <D:collection/> + <C:addressbook/> + </D:resourcetype> + <D:displayname>Lisa's Contacts</D:displayname> + <C:addressbook-description xml:lang="en" + >My primary address book.</C:addressbook-description> + </D:prop> + </D:set> + </D:mkcol> + + + + + + + + + +<span class="grey">Daboo Standards Track [Page 14]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-15" id="page-15" href="#page-15" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + >> Response << + + HTTP/1.1 201 Created + Cache-Control: no-cache + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: application/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:mkcol-response xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:propstat> + <D:prop> + <D:resourcetype/> + <D:displayname/> + <C:addressbook-description/> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:mkcol-response> + +<span class="h4"><h4><a class="selflink" name="section-6.3.2" href="#section-6.3.2">6.3.2</a>. Creating Address Object Resources</h4></span> + + Clients populate address book collections with address object + resources. The URL for each address object resource is entirely + arbitrary and does not need to bear a specific relationship (but + might) to the address object resource's vCard properties or other + metadata. New address object resources MUST be created with a PUT + request targeted at an unmapped URI. A PUT request targeted at a + mapped URI updates an existing address object resource. + + When servers create new resources, it's not hard for the server to + choose a unique URL. It's slightly tougher for clients, because a + client might not want to examine all resources in the collection and + might not want to lock the entire collection to ensure that a new one + isn't created with a name collision. However, there is an HTTP + feature to mitigate this. If the client intends to create a new + address resource, the client SHOULD use the HTTP header "If-None- + Match: *" on the PUT request. The Request-URI on the PUT request + MUST include the target collection, where the resource is to be + created, plus the name of the resource in the last path segment. The + "If-None-Match" header ensures that the client will not inadvertently + overwrite an existing resource even if the last path segment turned + out to already be used. + + + + + + + +<span class="grey">Daboo Standards Track [Page 15]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-16" id="page-16" href="#page-16" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + >> Request << + + PUT /lisa/addressbook/newvcard.vcf HTTP/1.1 + If-None-Match: * + Host: addressbook.example.com + Content-Type: text/vcard + Content-Length: xxx + + BEGIN:VCARD + VERSION:3.0 + FN:Cyrus Daboo + N:Daboo;Cyrus + ADR;TYPE=POSTAL:;2822 Email HQ;Suite 2821;RFCVille;PA;15213;USA + EMAIL;TYPE=INTERNET,PREF:cyrus@example.com + NICKNAME:me + NOTE:Example VCard. + ORG:Self Employed + TEL;TYPE=WORK,VOICE:412 605 0499 + TEL;TYPE=FAX:412 605 0705 + URL:http://www.example.com + UID:1234-5678-9000-1 + END:VCARD + + >> Response << + + HTTP/1.1 201 Created + Date: Thu, 02 Sep 2004 16:53:32 GMT + Content-Length: 0 + ETag: "123456789-000-111" + + The request to change an existing address object resource without + overwriting a change made on the server uses a specific ETag in an + "If-Match" header, rather than the "If-None-Match" header. + + File names for vCards are commonly suffixed by ".vcf", and clients + may choose to use the same convention for URLs. + +<span class="h5"><h5><a class="selflink" name="section-6.3.2.1" href="#section-6.3.2.1">6.3.2.1</a>. Additional Preconditions for PUT, COPY, and MOVE</h5></span> + + This specification creates additional preconditions for the PUT, + COPY, and MOVE methods. These preconditions apply: + + o When a PUT operation of an address object resource into an address + book collection occurs. + + o When a COPY or MOVE operation of an address object resource into + an address book collection occurs. + + + + +<span class="grey">Daboo Standards Track [Page 16]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-17" id="page-17" href="#page-17" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + The new preconditions are: + + (CARDDAV:supported-address-data): The resource submitted in the + PUT request, or targeted by a COPY or MOVE request, MUST be a + supported media type (i.e., vCard) for address object resources. + + (CARDDAV:valid-address-data): The resource submitted in the PUT + request, or targeted by a COPY or MOVE request, MUST be valid data + for the media type being specified (i.e., MUST contain valid vCard + data). + + (CARDDAV:no-uid-conflict): The resource submitted in the PUT + request, or targeted by a COPY or MOVE request, MUST NOT specify a + vCard UID property value already in use in the targeted address + book collection or overwrite an existing address object resource + with one that has a different UID property value. Servers SHOULD + report the URL of the resource that is already making use of the + same UID property value in the DAV:href element. + + <!ELEMENT no-uid-conflict (DAV:href)> + + (CARDDAV:addressbook-collection-location-ok): In a COPY or MOVE + request, when the Request-URI is an address book collection, the + URI targeted by the Destination HTTP Request header MUST identify + a location where an address book collection can be created. + + (CARDDAV:max-resource-size): The resource submitted in the PUT + request, or targeted by a COPY or MOVE request, MUST have a size + in octets less than or equal to the value of the + CARDDAV:max-resource-size property value (<a href="#section-6.2.3">Section 6.2.3</a>) on the + address book collection where the resource will be stored. + +<span class="h5"><h5><a class="selflink" name="section-6.3.2.2" href="#section-6.3.2.2">6.3.2.2</a>. Non-Standard vCard Properties and Parameters</h5></span> + + vCard provides a "standard mechanism for doing non-standard things". + This extension support allows implementers to make use of non- + standard vCard properties and parameters whose names are prefixed + with the text "X-". + + Servers MUST support the use of non-standard properties and + parameters in address object resources stored via the PUT method. + + Servers may need to enforce rules for their own "private" properties + or parameters, so servers MAY reject any attempt by the client to + change those or use values for those outside of any restrictions the + server may have. A server SHOULD ensure that any "private" + + + + + +<span class="grey">Daboo Standards Track [Page 17]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-18" id="page-18" href="#page-18" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + properties or parameters it uses follow the convention of including a + vendor ID in the "X-" name, as described in <a href="http://tools.ietf.org/html/rfc2426#section-3.8">Section 3.8 of [RFC2426]</a>, + e.g., "X-ABC-PRIVATE". + +<span class="h5"><h5><a class="selflink" name="section-6.3.2.3" href="#section-6.3.2.3">6.3.2.3</a>. Address Object Resource Entity Tag</h5></span> + + The DAV:getetag property MUST be defined and set to a strong entity + tag on all address object resources. + + A response to a GET request targeted at an address object resource + MUST contain an ETag response header field indicating the current + value of the strong entity tag of the address object resource. + + Servers SHOULD return a strong entity tag (ETag header) in a PUT + response when the stored address object resource is equivalent by + octet equality to the address object resource submitted in the body + of the PUT request. This allows clients to reliably use the returned + strong entity tag for data synchronization purposes. For instance, + the client can do a PROPFIND request on the stored address object + resource, have the DAV:getetag property returned, compare that value + with the strong entity tag it received on the PUT response, and know + that if they are equal, then the address object resource on the + server has not been changed. + + In the case where the data stored by a server as a result of a PUT + request is not equivalent by octet equality to the submitted address + object resource, the behavior of the ETag response header is not + specified here, with the exception that a strong entity tag MUST NOT + be returned in the response. As a result, a client may need to + retrieve the modified address object resource (and ETag) as a basis + for further changes, rather than use the address object resource it + had sent with the PUT request. + +<span class="h2"><h2><a class="selflink" name="section-7" href="#section-7">7</a>. Address Book Access Control</h2></span> + + CardDAV servers MUST support and adhere to the requirements of WebDAV + ACL [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>]. WebDAV ACL provides a framework for an extensible set + of privileges that can be applied to WebDAV collections and ordinary + resources. + +<span class="h3"><h3><a class="selflink" name="section-7.1" href="#section-7.1">7.1</a>. Additional Principal Properties</h3></span> + + This section defines additional properties for WebDAV principal + resources as defined in [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>]. + + + + + + + +<span class="grey">Daboo Standards Track [Page 18]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-19" id="page-19" href="#page-19" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + +<span class="h4"><h4><a class="selflink" name="section-7.1.1" href="#section-7.1.1">7.1.1</a>. CARDDAV:addressbook-home-set Property</h4></span> + + Name: addressbook-home-set + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Identifies the URL of any WebDAV collections that contain + address book collections owned by the associated principal + resource. + + Protected: MAY be protected if the server has fixed locations in + which address books are created. + + COPY/MOVE behavior: This property value MUST be preserved in COPY + and MOVE operations. + + allprop behavior: SHOULD NOT be returned by a PROPFIND DAV:allprop + request. + + Description: The CARDDAV:addressbook-home-set property is meant to + allow users to easily find the address book collections owned by + the principal. Typically, users will group all the address book + collections that they own under a common collection. This + property specifies the URL of collections that are either address + book collections or ordinary collections that have child or + descendant address book collections owned by the principal. + + Definition: + + <!ELEMENT addressbook-home-set (DAV:href*)> + + Example: + + <C:addressbook-home-set xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:href>/bernard/addresses/</D:href> + </C:addressbook-home-set> + +<span class="h4"><h4><a class="selflink" name="section-7.1.2" href="#section-7.1.2">7.1.2</a>. CARDDAV:principal-address Property</h4></span> + + Name: principal-address + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Identifies the URL of an address object resource that + corresponds to the user represented by the principal. + + + + + +<span class="grey">Daboo Standards Track [Page 19]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-20" id="page-20" href="#page-20" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Protected: MAY be protected if the server provides a fixed location + for principal addresses. + + COPY/MOVE behavior: This property value MUST be preserved in COPY + and MOVE operations. + + allprop behavior: SHOULD NOT be returned by a PROPFIND DAV:allprop + request. + + Description: The CARDDAV:principal-address property is meant to + allow users to easily find contact information for users + represented by principals on the system. This property specifies + the URL of the resource containing the corresponding contact + information. The resource could be an address object resource in + an address book collection, or it could be a resource in a + "regular" collection. + + Definition: + + <!ELEMENT principal-address (DAV:href)> + + Example: + + <C:principal-address xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:href>/system/cyrus.vcf</D:href> + </C:principal-address> + +<span class="h2"><h2><a class="selflink" name="section-8" href="#section-8">8</a>. Address Book Reports</h2></span> + + This section defines the reports that CardDAV servers MUST support on + address book collections and address object resources. + + CardDAV servers MUST advertise support for these reports on all + address book collections and address object resources with the + DAV:supported-report-set property defined in <a href="http://tools.ietf.org/html/rfc3253#section-3.1.5">Section 3.1.5 of + [RFC3253]</a>. CardDAV servers MAY also advertise support for these + reports on ordinary collections. + + Some of these reports allow address data (from possibly multiple + resources) to be returned. + +<span class="h3"><h3><a class="selflink" name="section-8.1" href="#section-8.1">8.1</a>. REPORT Method</h3></span> + + The REPORT method (defined in <a href="http://tools.ietf.org/html/rfc3253#section-3.6">Section 3.6 of [RFC3253]</a>) provides an + extensible mechanism for obtaining information about a resource. + Unlike the PROPFIND method, which returns the value of one or more + named properties, the REPORT method can involve more complex + + + +<span class="grey">Daboo Standards Track [Page 20]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-21" id="page-21" href="#page-21" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + processing. REPORT is valuable in cases where the server has access + to all of the information needed to perform the complex request (such + as a query), and where it would require multiple requests for the + client to retrieve the information needed to perform the same + request. + + A server that supports this specification MUST support the + DAV:expand-property report (defined in <a href="http://tools.ietf.org/html/rfc3253#section-3.8">Section 3.8 of [RFC3253]</a>). + +<span class="h3"><h3><a class="selflink" name="section-8.2" href="#section-8.2">8.2</a>. Ordinary Collections</h3></span> + + Servers MAY support the reports defined in this document on ordinary + collections (collections that are not address book collections) in + addition to address book collections or address object resources. In + computing responses to the reports on ordinary collections, servers + MUST only consider address object resources contained in address book + collections that are targeted by the REPORT based on the value of the + Depth request header. + +<span class="h3"><h3><a class="selflink" name="section-8.3" href="#section-8.3">8.3</a>. Searching Text: Collations</h3></span> + + Some of the reports defined in this section do text matches of + character strings provided by the client and compared to stored + address data. Since vCard data is by default encoded in the UTF-8 + charset and may include characters outside of the US-ASCII charset + range in some property and parameter values, there is a need to + ensure that text matching follows well-defined rules. + + To deal with this, this specification makes use of the IANA Collation + Registry defined in [<a href="http://tools.ietf.org/html/rfc4790" title="" internet application protocol collation registry>RFC4790</a>] to specify collations that may be used + to carry out the text comparison operations with a well-defined rule. + + Collations supported by the server MUST support "equality" and + "substring" match operations as per <a href="http://tools.ietf.org/html/rfc4790#section-4.2">[RFC4790], Section 4.2</a>, including + the "prefix" and "suffix" options for "substring" matching. CardDAV + uses these match options for "equals", "contains", "starts-with", and + "ends-with" match operations. + + CardDAV servers are REQUIRED to support the "i;ascii-casemap" + [<a href="http://tools.ietf.org/html/rfc4790" title="" internet application protocol collation registry>RFC4790</a>] and "i;unicode-casemap" [<a href="http://tools.ietf.org/html/rfc5051" title="" i simple unicode collation algorithm>RFC5051</a>] collations and MAY + support other collations. + + Servers MUST advertise the set of collations that they support via + the CARDDAV:supported-collation-set property defined on any resource + that supports reports that use collations. + + + + + + +<span class="grey">Daboo Standards Track [Page 21]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-22" id="page-22" href="#page-22" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + In the absence of a collation explicitly specified by the client, or + if the client specifies the "default" collation identifier (as + defined in <a href="http://tools.ietf.org/html/rfc4790#section-3.1">[RFC4790], Section 3.1</a>), the server MUST default to using + "i;unicode-casemap" as the collation. + + Wildcards (as defined in <a href="http://tools.ietf.org/html/rfc4790#section-3.2">[RFC4790], Section 3.2</a>) MUST NOT be used in + the collation identifier. + + If the client chooses a collation not supported by the server, the + server MUST respond with a CARDDAV:supported-collation precondition + error response. + +<span class="h4"><h4><a class="selflink" name="section-8.3.1" href="#section-8.3.1">8.3.1</a>. CARDDAV:supported-collation-set Property</h4></span> + + Name: supported-collation-set + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Identifies the set of collations supported by the server + for text matching operations. + + Protected: MUST be protected as it indicates support provided by the + server. + + COPY/MOVE behavior: This property value MUST be preserved in COPY + and MOVE operations. + + allprop behavior: SHOULD NOT be returned by a PROPFIND DAV:allprop + request. + + Description: The CARDDAV:supported-collation-set property contains + two or more CARDDAV:supported-collation elements that specify the + identifiers of the collations supported by the server. + + Definition: + + <!ELEMENT supported-collation-set ( + supported-collation + supported-collation + supported-collation*)> + <!-- Both "i;ascii-casemap" and "i;unicode-casemap" + will be present --> + + <!ELEMENT supported-collation (#PCDATA)> + + + + + + + +<span class="grey">Daboo Standards Track [Page 22]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-23" id="page-23" href="#page-23" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Example: + + <C:supported-collation-set + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <C:supported-collation>i;ascii-casemap</C:supported-collation> + <C:supported-collation>i;octet</C:supported-collation> + <C:supported-collation>i;unicode-casemap</C:supported-collation> + </C:supported-collation-set> + +<span class="h3"><h3><a class="selflink" name="section-8.4" href="#section-8.4">8.4</a>. Partial Retrieval</h3></span> + + Some address book reports defined in this document allow partial + retrieval of address object resources. A CardDAV client can specify + what information to return in the body of an address book REPORT + request. + + A CardDAV client can request particular WebDAV property values, all + WebDAV property values, or a list of the names of the resource's + WebDAV properties. A CardDAV client can also request address data to + be returned and whether all vCard properties should be returned or + only particular ones. See CARDDAV:address-data in <a href="#section-10.4">Section 10.4</a>. + +<span class="h3"><h3><a class="selflink" name="section-8.5" href="#section-8.5">8.5</a>. Non-Standard Properties and Parameters</h3></span> + + Servers MUST support the use of non-standard vCard property or + parameter names in the CARDDAV:address-data XML element in address + book REPORT requests to allow clients to request that non-standard + properties and parameters be returned in the address data provided in + the response. + + Servers MAY support the use of non-standard vCard property or + parameter names in the CARDDAV:prop-filter and CARDDAV:param-filter + XML elements specified in the CARDDAV:filter XML element of address + book REPORT requests. + + Servers MUST fail with the CARDDAV:supported-filter precondition if + an address book REPORT request uses a CARDDAV:prop-filter or + CARDDAV:param-filter XML element that makes reference to a non- + standard vCard property or parameter name on which the server does + not support queries. + +<span class="h3"><h3><a class="selflink" name="section-8.6" href="#section-8.6">8.6</a>. CARDDAV:addressbook-query Report</h3></span> + + The CARDDAV:addressbook-query REPORT performs a search for all + address object resources that match a specified filter. The response + of this report will contain all the WebDAV properties and address + object resource data specified in the request. In the case of the + + + + +<span class="grey">Daboo Standards Track [Page 23]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-24" id="page-24" href="#page-24" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + CARDDAV:address-data XML element, one can explicitly specify the + vCard properties that should be returned in the address object + resource data that matches the filter. + + The format of this report is modeled on the PROPFIND method. The + request and response bodies of the CARDDAV:addressbook-query report + use XML elements that are also used by PROPFIND. In particular, the + request can include XML elements to request WebDAV properties to be + returned. When that occurs, the response should follow the same + behavior as PROPFIND with respect to the DAV:multistatus response + elements used to return specific WebDAV property results. For + instance, a request to retrieve the value of a WebDAV property that + does not exist is an error and MUST be noted with a response XML + element that contains a 404 (Not Found) status value. + + Support for the CARDDAV:addressbook-query REPORT is REQUIRED. + + Marshalling: + + The request body MUST be a CARDDAV:addressbook-query XML element + as defined in <a href="#section-10.3">Section 10.3</a>. + + The request MUST include a Depth header. The scope of the query + is determined by the value of the Depth header. For example, to + query all address object resources in an address book collection, + the REPORT would use the address book collection as the Request- + URI and specify a Depth of 1 or infinity. + + The response body for a successful request MUST be a + DAV:multistatus XML element (i.e., the response uses the same + format as the response for PROPFIND). In the case where there are + no response elements, the returned DAV:multistatus XML element is + empty. + + The response body for a successful CARDDAV:addressbook-query + REPORT request MUST contain a DAV:response element for each + address object that matched the search filter. Address data is + returned in the CARDDAV:address-data XML element inside the + DAV:propstat XML element. + + Preconditions: + + (CARDDAV:supported-address-data): The attributes "content-type" + and "version" of the CARDDAV:address-data XML element (see + <a href="#section-10.4">Section 10.4</a>) specify a media type supported by the server for + address object resources. + + + + + +<span class="grey">Daboo Standards Track [Page 24]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-25" id="page-25" href="#page-25" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + (CARDDAV:supported-filter): The CARDDAV:prop-filter (see + <a href="#section-10.5.1">Section 10.5.1</a>) and CARDDAV:param-filter (see <a href="#section-10.5.2">Section 10.5.2</a>) XML + elements used in the CARDDAV:filter XML element (see <a href="#section-10.5">Section 10.5</a>) + in the REPORT request only make reference to vCard properties and + parameters for which queries are supported by the server. That + is, if the CARDDAV:filter element attempts to reference an + unsupported vCard property or parameter, this precondition is + violated. A server SHOULD report the CARDDAV:prop-filter or + CARDDAV:param-filter for which it does not provide support. + + <!ELEMENT supported-filter (prop-filter*, + param-filter*)> + + (CARDDAV:supported-collation): Any XML attribute specifying a + collation MUST specify a collation supported by the server as + described in <a href="#section-8.3">Section 8.3</a>. + + Postconditions: + + (DAV:number-of-matches-within-limits): The number of matching + address object resources must fall within server-specific, + predefined limits. For example, this condition might be triggered + if a search specification would cause the return of an extremely + large number of responses. + +<span class="h4"><h4><a class="selflink" name="section-8.6.1" href="#section-8.6.1">8.6.1</a>. Limiting Results</h4></span> + + A client can limit the number of results returned by the server + through use of the CARDDAV:limit element in the request body. This + is useful when clients are only interested in a few matches or only + have limited space to display results to users and thus don't need + the overhead of receiving more than that. When the results are + truncated by the server, the server MUST follow the rules below for + indicating a result set truncation to the client. + +<span class="h4"><h4><a class="selflink" name="section-8.6.2" href="#section-8.6.2">8.6.2</a>. Truncation of Results</h4></span> + + A server MAY limit the number of resources in a response, for + example, to limit the amount of work expended in processing a query, + or as the result of an explicit limit set by the client. If the + result set is truncated because of such a limit, the response MUST + use status code 207 (Multi-Status), return a DAV:multistatus response + body, and indicate a status of 507 (Insufficient Storage) for the + Request-URI. That DAV:response element SHOULD include a DAV:error + element with the DAV:number-of-matches-within-limits precondition, as + defined in <a href="http://tools.ietf.org/html/rfc3744#section-9.2">[RFC3744], Section 9.2</a>. + + + + + +<span class="grey">Daboo Standards Track [Page 25]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-26" id="page-26" href="#page-26" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + The server SHOULD also include the partial results in additional + DAV:response elements. If a client-requested limit is being applied, + the 507 response for the Request-URI MUST NOT be included in + calculating the limit (e.g., if the client requests that only a + single result be returned, and multiple matches are present, then the + DAV:multistatus response will include one DAV:response for the + matching resource and one DAV:response for the 507 status on the + Request-URI). + +<span class="h4"><h4><a class="selflink" name="section-8.6.3" href="#section-8.6.3">8.6.3</a>. Example: Partial Retrieval of vCards Matching NICKNAME</h4></span> + + In this example, the client requests that the server search for + address object resources that contain a NICKNAME property whose value + equals some specific text and return specific vCard properties for + those vCards found. In addition, the DAV:getetag property is also + requested and returned as part of the response. + + >> Request << + + REPORT /home/bernard/addressbook/ HTTP/1.1 + Host: addressbook.example.com + Depth: 1 + Content-Type: text/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:addressbook-query xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:prop> + <D:getetag/> + <C:address-data> + <C:prop name="VERSION"/> + <C:prop name="UID"/> + <C:prop name="NICKNAME"/> + <C:prop name="EMAIL"/> + <C:prop name="FN"/> + </C:address-data> + </D:prop> + <C:filter> + <C:prop-filter name="NICKNAME"> + <C:text-match collation="i;unicode-casemap" + match-type="equals" + >me</C:text-match> + </C:prop-filter> + </C:filter> + </C:addressbook-query> + + + + + +<span class="grey">Daboo Standards Track [Page 26]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-27" id="page-27" href="#page-27" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: text/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:response> + <D:href>/home/bernard/addressbook/v102.vcf</D:href> + <D:propstat> + <D:prop> + <D:getetag>"23ba4d-ff11fb"</D:getetag> + <C:address-data>BEGIN:VCARD + VERSION:3.0 + NICKNAME:me + UID:34222-232@example.com + FN:Cyrus Daboo + EMAIL:daboo@example.com + END:VCARD + </C:address-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + +<span class="h4"><h4><a class="selflink" name="section-8.6.4" href="#section-8.6.4">8.6.4</a>. Example: Partial Retrieval of vCards Matching a Full Name or</h4></span> +<span class="h4"><h4> Email Address</h4></span> + + In this example, the client requests that the server search for + address object resources that contain a FN property whose value + contains some specific text or that contain an EMAIL property whose + value contains other text and return specific vCard properties for + those vCards found. In addition, the DAV:getetag property is also + requested and returned as part of the response. + + >> Request << + + REPORT /home/bernard/addressbook/ HTTP/1.1 + Host: addressbook.example.com + Depth: 1 + Content-Type: text/xml; charset="utf-8" + Content-Length: xxxx + + + + + +<span class="grey">Daboo Standards Track [Page 27]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-28" id="page-28" href="#page-28" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + <?xml version="1.0" encoding="utf-8" ?> + <C:addressbook-query xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:prop> + <D:getetag/> + <C:address-data> + <C:prop name="VERSION"/> + <C:prop name="UID"/> + <C:prop name="NICKNAME"/> + <C:prop name="EMAIL"/> + <C:prop name="FN"/> + </C:address-data> + </D:prop> + <C:filter test="anyof"> + <C:prop-filter name="FN"> + <C:text-match collation="i;unicode-casemap" + match-type="contains" + >daboo</C:text-match> + </C:prop-filter> + <C:prop-filter name="EMAIL"> + <C:text-match collation="i;unicode-casemap" + match-type="contains" + >daboo</C:text-match> + </C:prop-filter> + </C:filter> + </C:addressbook-query> + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: text/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:response> + <D:href>/home/bernard/addressbook/v102.vcf</D:href> + <D:propstat> + <D:prop> + <D:getetag>"23ba4d-ff11fb"</D:getetag> + <C:address-data>BEGIN:VCARD + VERSION:3.0 + NICKNAME:me + UID:34222-232@example.com + FN:David Boo + EMAIL:daboo@example.com + + + +<span class="grey">Daboo Standards Track [Page 28]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-29" id="page-29" href="#page-29" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + END:VCARD + </C:address-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + <D:response> + <D:href>/home/bernard/addressbook/v104.vcf</D:href> + <D:propstat> + <D:prop> + <D:getetag>"23ba4d-ff11fc"</D:getetag> + <C:address-data>BEGIN:VCARD + VERSION:3.0 + NICKNAME:oliver + UID:34222-23222@example.com + FN:Oliver Daboo + EMAIL:oliver@example.com + END:VCARD + </C:address-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + +<span class="h4"><h4><a class="selflink" name="section-8.6.5" href="#section-8.6.5">8.6.5</a>. Example: Truncated Results</h4></span> + + In this example, the client requests that the server search for + address object resources that contain a FN property whose value + contains some specific text and return the DAV:getetag property for + two results only. The server response includes a 507 status for the + Request-URI indicating that there were more than two resources that + matched the query, but that the server truncated the result set as + requested by the client. + + >> Request << + + REPORT /home/bernard/addressbook/ HTTP/1.1 + Host: addressbook.example.com + Depth: 1 + Content-Type: text/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:addressbook-query xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + + + + + +<span class="grey">Daboo Standards Track [Page 29]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-30" id="page-30" href="#page-30" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + <D:prop> + <D:getetag/> + </D:prop> + <C:filter test="anyof"> + <C:prop-filter name="FN"> + <C:text-match collation="i;unicode-casemap" + match-type="contains" + >daboo</C:text-match> + </C:prop-filter> + </C:filter> + <C:limit> + <C:nresults>2</C:nresults> + </C:limit> + </C:addressbook-query> + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: text/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:response> + <D:href>/home/bernard/addressbook/</D:href> + <D:status>HTTP/1.1 507 Insufficient Storage</D:status> + <D:error><D:number-of-matches-within-limits/></D:error> + <D:responsedescription xml:lang="en"> + Only two matching records were returned + </D:responsedescription> + </D:response> + <D:response> + <D:href>/home/bernard/addressbook/v102.vcf</D:href> + <D:propstat> + <D:prop> + <D:getetag>"23ba4d-ff11fb"</D:getetag> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + <D:response> + <D:href>/home/bernard/addressbook/v104.vcf</D:href> + <D:propstat> + <D:prop> + <D:getetag>"23ba4d-ff11fc"</D:getetag> + </D:prop> + + + +<span class="grey">Daboo Standards Track [Page 30]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-31" id="page-31" href="#page-31" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + </D:multistatus> + +<span class="h3"><h3><a class="selflink" name="section-8.7" href="#section-8.7">8.7</a>. CARDDAV:addressbook-multiget Report</h3></span> + + The CARDDAV:addressbook-multiget REPORT is used to retrieve specific + address object resources from within a collection, if the Request-URI + is a collection, or to retrieve a specific address object resource, + if the Request-URI is an address object resource. This report is + similar to the CARDDAV:addressbook-query REPORT (see <a href="#section-8.6">Section 8.6</a>), + except that it takes a list of DAV:href elements instead of a + CARDDAV:filter element to determine which address object resources to + return. + + Support for the addressbook-multiget REPORT is REQUIRED. + + Marshalling: + + The request body MUST be a CARDDAV:addressbook-multiget XML + element (see <a href="#section-10.7">Section 10.7</a>), which MUST contain at least one + DAV:href XML element and one optional CARDDAV:address-data element + as defined in <a href="#section-10.4">Section 10.4</a>. If DAV:href elements are present, the + scope of the request is the set of resources identified by these + elements, which all need to be members (not necessarily internal + members) of the resource identified by the Request-URI. + Otherwise, the scope is the resource identified by the Request-URI + itself. + + The request MUST include a Depth: 0 header; however, the actual + scope of the REPORT is determined as described above. + + The response body for a successful request MUST be a + DAV:multistatus XML element. + + The response body for a successful CARDDAV:addressbook-multiget + REPORT request MUST contain a DAV:response element for each + address object resource referenced by the provided set of DAV:href + elements. Address data is returned in the CARDDAV:address-data + element inside the DAV:prop element. + + In the case of an error accessing any of the provided DAV:href + resources, the server MUST return the appropriate error status + code in the DAV:status element of the corresponding DAV:response + element. + + + + + +<span class="grey">Daboo Standards Track [Page 31]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-32" id="page-32" href="#page-32" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Preconditions: + + (CARDDAV:supported-address-data): The attributes "content-type" + and "version" of the CARDDAV:address-data XML elements (see + <a href="#section-10.4">Section 10.4</a>) specify a media type supported by the server for + address object resources. + + Postconditions: + + None. + +<span class="h4"><h4><a class="selflink" name="section-8.7.1" href="#section-8.7.1">8.7.1</a>. Example: CARDDAV:addressbook-multiget Report</h4></span> + + In this example, the client requests the server to return specific + vCard properties of the address components referenced by specific + URIs. In addition, the DAV:getetag property is also requested and + returned as part of the response. Note that, in this example, the + resource at + http://addressbook.example.com/home/bernard/addressbook/vcf1.vcf does + not exist, resulting in an error status response. + + >> Request << + + REPORT /home/bernard/addressbook/ HTTP/1.1 + Host: addressbook.example.com + Depth: 1 + Content-Type: text/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:addressbook-multiget xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:prop> + <D:getetag/> + <C:address-data> + <C:prop name="VERSION"/> + <C:prop name="UID"/> + <C:prop name="NICKNAME"/> + <C:prop name="EMAIL"/> + <C:prop name="FN"/> + </C:address-data> + </D:prop> + <D:href>/home/bernard/addressbook/vcf102.vcf</D:href> + <D:href>/home/bernard/addressbook/vcf1.vcf</D:href> + </C:addressbook-multiget> + + + + + + +<span class="grey">Daboo Standards Track [Page 32]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-33" id="page-33" href="#page-33" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: text/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:response> + <D:href>/home/bernard/addressbook/vcf102.vcf</D:href> + <D:propstat> + <D:prop> + <D:getetag>"23ba4d-ff11fb"</D:getetag> + <C:address-data>BEGIN:VCARD + VERSION:3.0 + NICKNAME:me + UID:34222-232@example.com + FN:Cyrus Daboo + EMAIL:daboo@example.com + END:VCARD + </C:address-data> + </D:prop> + <D:status>HTTP/1.1 200 OK</D:status> + </D:propstat> + </D:response> + <D:response> + <D:href>/home/bernard/addressbook/vcf1.vcf</D:href> + <D:status>HTTP/1.1 404 Resource not found</D:status> + </D:response> + </D:multistatus> + +<span class="h4"><h4><a class="selflink" name="section-8.7.2" href="#section-8.7.2">8.7.2</a>. Example: CARDDAV:addressbook-multiget Report</h4></span> + + In this example, the client requests the server to return vCard v4.0 + data of the address components referenced by specific URIs. In + addition, the DAV:getetag property is also requested and returned as + part of the response. Note that, in this example, the resource at + http://addressbook.example.com/home/bernard/addressbook/vcf3.vcf + exists but in a media type format that the server is unable to + convert, resulting in an error status response. + + + + + + + + + +<span class="grey">Daboo Standards Track [Page 33]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-34" id="page-34" href="#page-34" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + >> Request << + + REPORT /home/bernard/addressbook/ HTTP/1.1 + Host: addressbook.example.com + Depth: 1 + Content-Type: text/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <C:addressbook-multiget xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:prop> + <D:getetag/> + <C:address-data content-type='text/vcard' version='4.0'/> + </D:prop> + <D:href>/home/bernard/addressbook/vcf3.vcf</D:href> + </C:addressbook-multiget> + + >> Response << + + HTTP/1.1 207 Multi-Status + Date: Sat, 11 Nov 2006 09:32:12 GMT + Content-Type: text/xml; charset="utf-8" + Content-Length: xxxx + + <?xml version="1.0" encoding="utf-8" ?> + <D:multistatus xmlns:D="DAV:" + xmlns:C="urn:ietf:params:xml:ns:carddav"> + <D:response> + <D:href>/home/bernard/addressbook/vcf3.vcf</D:href> + <D:status>HTTP/1.1 415 Unsupported Media Type</D:status> + <D:error><C:supported-address-data-conversion/></D:error> + <D:responsedescription>Unable to convert from vCard v3.0 + to vCard v4.0</D:responsedescription> + </D:response> + </D:multistatus> + +<span class="h2"><h2><a class="selflink" name="section-9" href="#section-9">9</a>. Client Guidelines</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-9.1" href="#section-9.1">9.1</a>. Restrict the Properties Returned</h3></span> + + Clients may not need all the properties in a vCard object when + presenting information to the user, or looking up specific items for + their email address, for example. Since some property data can be + large (e.g., PHOTO or SOUND with in-line content) clients can choose + to ignore those by only requesting the specific items it knows it + will use, through use of the CARDDAV:address-data XML element in the + relevant reports. + + + +<span class="grey">Daboo Standards Track [Page 34]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-35" id="page-35" href="#page-35" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + However, if a client needs to make a change to a vCard, it can only + change the entire vCard data via a PUT request. There is no way to + incrementally make a change to a set of properties within a vCard + object resource. As a result, the client will have to cache the + entire set of properties on a resource that is being changed. + +<span class="h3"><h3><a class="selflink" name="section-9.2" href="#section-9.2">9.2</a>. Avoiding Lost Updates</h3></span> + + When resources are accessed by multiple clients, the possibility of + clients overwriting each other's changes exists. To alleviate this, + clients SHOULD use the If-Match request header on PUT requests with + the ETag of the previously retrieved resource data to check whether + the resource was modified since it was previously retrieved. If a + precondition failure occurs, clients need to reload the resource and + go through their own merge or conflict resolution process before + writing back the data (again using the If-Match check). + +<span class="h3"><h3><a class="selflink" name="section-9.3" href="#section-9.3">9.3</a>. Client Configuration</h3></span> + + When CardDAV clients need to be configured, the key piece of + information that they require is the principal-URL of the user whose + address book information is desired. Servers SHOULD support the + DAV:current-user-principal-URL property as defined in [<a href="http://tools.ietf.org/html/rfc5397" title="" webdav current principal extension>RFC5397</a>] to + give clients a fast way to locate user principals. + + Given support for SRV records (<a href="#section-11">Section 11</a>) and DAV:current-user- + principal-URL [<a href="http://tools.ietf.org/html/rfc5397" title="" webdav current principal extension>RFC5397</a>], users only need enter a user identifier, + host name, and password to configure their client. The client would + take the host name and do an SRV lookup to locate the CardDAV server, + then execute an authenticated PROPFIND on the root/resource looking + for the DAV:current-user-principal-URL property. The value returned + gives the client direct access to the user's principal-URL and from + there all the related CardDAV properties needed to locate address + books. + +<span class="h3"><h3><a class="selflink" name="section-9.4" href="#section-9.4">9.4</a>. Finding Other Users' Address Books</h3></span> + + For use cases of address book sharing, one might wish to find the + address book belonging to another user. To find other users' address + books on the same server, the DAV:principal-property-search REPORT + [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>] can be used to search principals for matching properties + and return specified properties for the matching principal resources. + To search for an address book owned by a user named "Laurie", the + REPORT request body would look like this: + + + + + + + +<span class="grey">Daboo Standards Track [Page 35]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-36" id="page-36" href="#page-36" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + <?xml version="1.0" encoding="utf-8" ?> + <D:principal-property-search xmlns:D="DAV:"> + <D:property-search> + <D:prop> + <D:displayname/> + </D:prop> + <D:match>Laurie</D:match> + </D:property-search> + <D:prop> + <C:addressbook-home-set + xmlns:C="urn:ietf:params:xml:ns:carddav"/> + <D:displayname/> + </D:prop> + </D:principal-property-search> + + The server performs a case-sensitive or caseless search for a + matching string subset of "Laurie" within the DAV:displayname + property. Thus, the server might return "Laurie Dusseault", "Laurier + Desruisseaux", or "Wilfrid Laurier" all as matching DAV:displayname + values, and the address books for each of these. + +<span class="h2"><h2><a class="selflink" name="section-10" href="#section-10">10</a>. XML Element Definitions</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-10.1" href="#section-10.1">10.1</a>. CARDDAV:addressbook XML Element</h3></span> + + Name: addressbook + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Specifies the resource type of an address book collection. + + Description: See <a href="#section-5.2">Section 5.2</a>. + + Definition: + + <!ELEMENT addressbook EMPTY> + +<span class="h3"><h3><a class="selflink" name="section-10.2" href="#section-10.2">10.2</a>. CARDDAV:supported-collation XML Element</h3></span> + + Name: supported-collation + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Identifies a single collation via its collation identifier + as defined by [<a href="http://tools.ietf.org/html/rfc4790" title="" internet application protocol collation registry>RFC4790</a>]. + + Description: The CARDDAV:supported-collation contains the text of a + collation identifier as described in <a href="#section-8.3.1">Section 8.3.1</a>. + + + +<span class="grey">Daboo Standards Track [Page 36]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-37" id="page-37" href="#page-37" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Definition: + + <!ELEMENT supported-collation (#PCDATA)> + <!-- PCDATA value: collation identifier --> + +<span class="h3"><h3><a class="selflink" name="section-10.3" href="#section-10.3">10.3</a>. CARDDAV:addressbook-query XML Element</h3></span> + + Name: addressbook-query + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Defines a report for querying address book data + + Description: See <a href="#section-8.6">Section 8.6</a>. + + Definition: + + <!ELEMENT addressbook-query ((DAV:allprop | + DAV:propname | + DAV:prop)?, filter, limit?)> + +<span class="h3"><h3><a class="selflink" name="section-10.4" href="#section-10.4">10.4</a>. CARDDAV:address-data XML Element</h3></span> + + Name: address-data + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Specifies one of the following: + + 1. The parts of an address object resource that should be + returned by a given address book REPORT request, and the media + type and version for the returned data; or + + 2. The content of an address object resource in a response to an + address book REPORT request. + + Description: When used in an address book REPORT request, the + CARDDAV:address-data XML element specifies which parts of address + object resources need to be returned in the response. If the + CARDDAV:address-data XML element doesn't contain any CARDDAV:prop + elements, address object resources will be returned in their + entirety. Additionally, a media type and version can be specified + to request that the server return the data in that format if + possible. + + Finally, when used in an address book REPORT response, the + CARDDAV:address-data XML element specifies the content of an + address object resource. Given that XML parsers normalize the + + + +<span class="grey">Daboo Standards Track [Page 37]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-38" id="page-38" href="#page-38" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + two-character sequence CRLF (US-ASCII decimal 13 and US-ASCII + decimal 10) to a single LF character (US-ASCII decimal 10), the CR + character (US-ASCII decimal 13) MAY be omitted in address object + resources specified in the CARDDAV:address-data XML element. + Furthermore, address object resources specified in the + CARDDAV:address-data XML element MAY be invalid per their media + type specification if the CARDDAV:address-data XML element part of + the address book REPORT request did not specify required vCard + properties (e.g., UID, etc.) or specified a CARDDAV:prop XML + element with the "novalue" attribute set to "yes". + + Note: The CARDDAV:address-data XML element is specified in requests + and responses inside the DAV:prop XML element as if it were a + WebDAV property. However, the CARDDAV:address-data XML element is + not a WebDAV property and as such it is not returned in PROPFIND + responses nor used in PROPPATCH requests. + + Note: The address data embedded within the CARDDAV:address-data XML + element MUST follow the standard XML character data encoding + rules, including use of &lt;, &gt;, &amp; etc., entity encoding or + the use of a <![CDATA[ ... ]]> construct. In the latter case, the + vCard data cannot contain the character sequence "]]>", which is + the end delimiter for the CDATA section. + + Definition: + + <!ELEMENT address-data (allprop | prop*)> + + when nested in the DAV:prop XML element in an address book + REPORT request to specify which parts of address object + resources should be returned in the response; + + <!ELEMENT address-data (#PCDATA)> + <!-- PCDATA value: address data --> + + when nested in the DAV:prop XML element in an address book + REPORT response to specify the content of a returned + address object resource. + + <!ATTLIST address-data content-type CDATA "text/vcard" + version CDATA "3.0"> + <!-- content-type value: a MIME media type --> + <!-- version value: a version string --> + + attributes can be used on each variant of the + CALDAV:address-data XML element. + + + + + +<span class="grey">Daboo Standards Track [Page 38]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-39" id="page-39" href="#page-39" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + +<span class="h4"><h4><a class="selflink" name="section-10.4.1" href="#section-10.4.1">10.4.1</a>. CARDDAV:allprop XML Element</h4></span> + + Name: allprop + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Specifies that all vCard properties shall be returned. + + Description: This element can be used when the client wants all + vCard properties of components returned by a report. + + Definition: + + <!ELEMENT allprop EMPTY> + + Note: The CARDDAV:allprop element defined here has the same name as + the DAV:allprop element defined in WebDAV. However, the + CARDDAV:allprop element defined here uses the + "urn:ietf:params:xml:ns:carddav" namespace, as opposed to the "DAV:" + namespace used for the DAV:allprop element defined in WebDAV. + +<span class="h4"><h4><a class="selflink" name="section-10.4.2" href="#section-10.4.2">10.4.2</a>. CARDDAV:prop XML Element</h4></span> + + Name: prop + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Defines which vCard properties to return in the response. + + Description: The "name" attribute specifies the name of the vCard + property to return (e.g., "NICKNAME"). The "novalue" attribute + can be used by clients to request that the actual value of the + property not be returned (if the "novalue" attribute is set to + "yes"). In that case, the server will return just the vCard + property name and any vCard parameters and a trailing ":" without + the subsequent value data. + + vCard allows a "group" prefix to appear before a property name in + the vCard data. When the "name" attribute does not specify a + group prefix, it MUST match properties in the vCard data without a + group prefix or with any group prefix. When the "name" attribute + includes a group prefix, it MUST match properties that have + exactly the same group prefix and name. For example, a "name" set + to "TEL" will match "TEL", "X-ABC.TEL", and "X-ABC-1.TEL" vCard + properties. A "name" set to "X-ABC.TEL" will match an "X-ABC.TEL" + vCard property only; it will not match "TEL" or "X-ABC-1.TEL". + + + + + +<span class="grey">Daboo Standards Track [Page 39]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-40" id="page-40" href="#page-40" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Definition: + + <!ELEMENT prop EMPTY> + + <!ATTLIST prop name CDATA #REQUIRED + novalue (yes | no) "no"> + <!-- name value: a vCard property name --> + <!-- novalue value: "yes" or "no" --> + + Note: The CARDDAV:prop element defined here has the same name as the + DAV:prop element defined in WebDAV. However, the CARDDAV:prop + element defined here uses the "urn:ietf:params:xml:ns:carddav" + namespace, as opposed to the "DAV:" namespace used for the DAV:prop + element defined in WebDAV. + +<span class="h3"><h3><a class="selflink" name="section-10.5" href="#section-10.5">10.5</a>. CARDDAV:filter XML Element</h3></span> + + Name: filter + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Determines which matching objects are returned. + + Description: The "filter" element specifies the search filter used + to match address objects that should be returned by a report. The + "test" attribute specifies whether any (logical OR) or all + (logical AND) of the prop-filter tests need to match in order for + the overall filter to match. + + Definition: + + <!ELEMENT filter (prop-filter*)> + + <!ATTLIST filter test (anyof | allof) "anyof"> + <!-- test value: + anyof logical OR for prop-filter matches + allof logical AND for prop-filter matches --> + +<span class="h4"><h4><a class="selflink" name="section-10.5.1" href="#section-10.5.1">10.5.1</a>. CARDDAV:prop-filter XML Element</h4></span> + + Name: prop-filter + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Limits the search to specific vCard properties. + + + + + + +<span class="grey">Daboo Standards Track [Page 40]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-41" id="page-41" href="#page-41" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Description: The CARDDAV:prop-filter XML element specifies search + criteria on a specific vCard property (e.g., "NICKNAME"). An + address object is said to match a CARDDAV:prop-filter if: + + * A vCard property of the type specified by the "name" attribute + exists, and the CARDDAV:prop-filter is empty, or it matches any + specified CARDDAV:text-match or CARDDAV:param-filter + conditions. The "test" attribute specifies whether any + (logical OR) or all (logical AND) of the text-filter and param- + filter tests need to match in order for the overall filter to + match. + + or: + + * A vCard property of the type specified by the "name" attribute + does not exist, and the CARDDAV:is-not-defined element is + specified. + + vCard allows a "group" prefix to appear before a property name in + the vCard data. When the "name" attribute does not specify a + group prefix, it MUST match properties in the vCard data without a + group prefix or with any group prefix. When the "name" attribute + includes a group prefix, it MUST match properties that have + exactly the same group prefix and name. For example, a "name" set + to "TEL" will match "TEL", "X-ABC.TEL", "X-ABC-1.TEL" vCard + properties. A "name" set to "X-ABC.TEL" will match an "X-ABC.TEL" + vCard property only, it will not match "TEL" or "X-ABC-1.TEL". + + Definition: + + <!ELEMENT prop-filter (is-not-defined | + (text-match*, param-filter*))> + + <!ATTLIST prop-filter name CDATA #REQUIRED + test (anyof | allof) "anyof"> + <!-- name value: a vCard property name (e.g., "NICKNAME") + test value: + anyof logical OR for text-match/param-filter matches + allof logical AND for text-match/param-filter matches --> + +<span class="h4"><h4><a class="selflink" name="section-10.5.2" href="#section-10.5.2">10.5.2</a>. CARDDAV:param-filter XML Element</h4></span> + + Name: param-filter + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Limits the search to specific parameter values. + + + + +<span class="grey">Daboo Standards Track [Page 41]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-42" id="page-42" href="#page-42" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Description: The CARDDAV:param-filter XML element specifies search + criteria on a specific vCard property parameter (e.g., TYPE) in + the scope of a given CARDDAV:prop-filter. A vCard property is + said to match a CARDDAV:param-filter if: + + * A parameter of the type specified by the "name" attribute + exists, and the CARDDAV:param-filter is empty, or it matches + the CARDDAV:text-match conditions if specified. + + or: + + * A parameter of the type specified by the "name" attribute does + not exist, and the CARDDAV:is-not-defined element is specified. + + Definition: + + <!ELEMENT param-filter (is-not-defined | text-match)?> + + <!ATTLIST param-filter name CDATA #REQUIRED> + <!-- name value: a property parameter name (e.g., "TYPE") --> + +<span class="h4"><h4><a class="selflink" name="section-10.5.3" href="#section-10.5.3">10.5.3</a>. CARDDAV:is-not-defined XML Element</h4></span> + + Name: is-not-defined + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Specifies that a match should occur if the enclosing vCard + property or parameter does not exist. + + Description: The CARDDAV:is-not-defined XML element specifies that a + match occurs if the enclosing vCard property or parameter value + specified in an address book REPORT request does not exist in the + address data being tested. + + Definition: + + <!ELEMENT is-not-defined EMPTY> + +<span class="h4"><h4><a class="selflink" name="section-10.5.4" href="#section-10.5.4">10.5.4</a>. CARDDAV:text-match XML Element</h4></span> + + Name: text-match + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Specifies a substring match on a vCard property or + parameter value. + + + + +<span class="grey">Daboo Standards Track [Page 42]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-43" id="page-43" href="#page-43" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Description: The CARDDAV:text-match XML element specifies text used + for a substring match against the vCard property or parameter + value specified in an address book REPORT request. + + The "collation" attribute is used to select the collation that the + server MUST use for character string matching. In the absence of + this attribute, the server MUST use the "i;unicode-casemap" + collation. + + The "negate-condition" attribute is used to indicate that this + test returns a match if the text matches, when the attribute value + is set to "no", or return a match if the text does not match, if + the attribute value is set to "yes". For example, this can be + used to match components with a CATEGORIES property not set to + PERSON. + + The "match-type" attribute is used to indicate the type of match + operation to use. Possible choices are: + + "equals" - an exact match to the target string + + "contains" - a substring match, matching anywhere within the + target string + + "starts-with" - a substring match, matching only at the start + of the target string + + "ends-with" - a substring match, matching only at the end of + the target string + + Definition: + + <!ELEMENT text-match (#PCDATA)> + <!-- PCDATA value: string --> + + <!ATTLIST text-match + collation CDATA "i;unicode-casemap" + negate-condition (yes | no) "no" + match-type (equals|contains|starts-with|ends-with) "contains"> + +<span class="h3"><h3><a class="selflink" name="section-10.6" href="#section-10.6">10.6</a>. CARDDAV:limit XML Element</h3></span> + + Name: limit + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Specifies different types of limits that can be applied to + the results returned by the server. + + + +<span class="grey">Daboo Standards Track [Page 43]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-44" id="page-44" href="#page-44" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + Description: The CARDDAV:limit XML element can be used to specify + different types of limits that the client can request the server + to apply to the results returned by the server. Currently, only + the CARDDAV:nresults limit can be used; other types of limit could + be defined in the future. + + Definition: + + <!ELEMENT limit (nresults)> + +<span class="h4"><h4><a class="selflink" name="section-10.6.1" href="#section-10.6.1">10.6.1</a>. CARDDAV:nresults XML Element</h4></span> + + Name: nresults + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: Specifies a limit on the number of results returned by the + server. + + Description: The CARDDAV:nresults XML element contains a requested + maximum number of DAV:response elements to be returned in the + response body of a query. The server MAY disregard this limit. + The value of this element is an unsigned integer. + + Definition: + + <!ELEMENT nresults (#PCDATA)> + <!-- nresults value: unsigned integer, must be digits --> + +<span class="h3"><h3><a class="selflink" name="section-10.7" href="#section-10.7">10.7</a>. CARDDAV:addressbook-multiget XML Element</h3></span> + + Name: addressbook-multiget + + Namespace: urn:ietf:params:xml:ns:carddav + + Purpose: CardDAV report used to retrieve specific address objects + via their URIs. + + Description: See <a href="#section-8.7">Section 8.7</a>. + + Definition: + + <!ELEMENT addressbook-multiget ((DAV:allprop | + DAV:propname | + DAV:prop)?, + DAV:href+)> + + + + + +<span class="grey">Daboo Standards Track [Page 44]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-45" id="page-45" href="#page-45" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + +<span class="h2"><h2><a class="selflink" name="section-11" href="#section-11">11</a>. Service Discovery via SRV Records</h2></span> + + [<a name="ref-RFC2782" id="ref-RFC2782">RFC2782</a>] defines a DNS-based service discovery protocol that has + been widely adopted as a means of locating particular services within + a local area network and beyond, using SRV RRs. + + This specification adds two service types for use with SRV records: + + carddav: Identifies a CardDAV server that uses HTTP without TLS + [<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>]. + + carddavs: Identifies a CardDAV server that uses HTTP with TLS + [<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>]. + + Example: non-TLS service record + + _carddav._tcp SRV 0 1 80 addressbook.example.com. + + Example: TLS service + + _carddavs._tcp SRV 0 1 443 addressbook.example.com. + +<span class="h2"><h2><a class="selflink" name="section-12" href="#section-12">12</a>. Internationalization Considerations</h2></span> + + CardDAV allows internationalized strings to be stored and retrieved + for the description of address book collections (see <a href="#section-6.2.1">Section 6.2.1</a>). + + The CARDDAV:addressbook-query REPORT (<a href="#section-8.6">Section 8.6</a>) includes a text + searching option controlled by the CARDDAV:text-match element and + details of character handling are covered in the description of that + element (see <a href="#section-10.5.4">Section 10.5.4</a>). + +<span class="h2"><h2><a class="selflink" name="section-13" href="#section-13">13</a>. Security Considerations</h2></span> + + HTTP protocol transactions are sent in the clear over the network + unless protection from snooping is negotiated. This can be + accomplished by use of TLS as defined in [<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>]. In particular, + if HTTP Basic authentication [<a href="http://tools.ietf.org/html/rfc2617" title="" http authentication: basic and digest access authentication>RFC2617</a>] is available, the server MUST + allow TLS to be used at the same time, and it SHOULD prevent use of + Basic authentication when TLS is not in use. Clients SHOULD use TLS + whenever possible. + + With the ACL extension [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>] present, WebDAV allows control over + who can access (read or write) any resource on the WebDAV server. In + addition, WebDAV ACL provides for an "inheritance" mechanism, whereby + resources may inherit access privileges from other resources. Often, + the "other" resource is a parent collection of the resource itself. + Servers are able to support address books that are "private" + + + +<span class="grey">Daboo Standards Track [Page 45]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-46" id="page-46" href="#page-46" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + (accessible only to the "owner"), "shared" (accessible to the owner + and other specified authenticated users), and "public" (accessible to + any authenticated or unauthenticated users). When provisioning + address books of a particular type, servers MUST ensure that the + correct privileges are applied on creation. In particular, private + and shared address books MUST NOT be accessible by unauthenticated + users (to prevent data from being automatically searched or indexed + by web "crawlers"). + + Clients SHOULD warn users in an appropriate fashion when they copy or + move address data from a private address book to a shared address + book or public address book. Clients SHOULD provide a clear + indication as to which address books are private, shared, or public. + Clients SHOULD provide an appropriate warning when changing access + privileges for a private or shared address book with data so as to + allow unauthenticated users access. + + This specification currently relies on standard HTTP authentication + mechanisms for identifying users. These comprise Basic and Digest + authentication [<a href="http://tools.ietf.org/html/rfc2617" title="" http authentication: basic and digest access authentication>RFC2617</a>] as well as TLS [<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>] using client-side + certificates. + +<span class="h2"><h2><a class="selflink" name="section-14" href="#section-14">14</a>. IANA Consideration</h2></span> + + This document uses a URN to describe a new XML namespace conforming + to the registry mechanism described in [<a href="http://tools.ietf.org/html/rfc3688" title="" the ietf xml registry>RFC3688</a>]. + +<span class="h3"><h3><a class="selflink" name="section-14.1" href="#section-14.1">14.1</a>. Namespace Registration</h3></span> + + Registration request for the carddav namespace: + + URI: urn:ietf:params:xml:ns:carddav + + Registrant Contact: The IESG <iesg@ietf.org> + + XML: None - not applicable for namespace registrations. + +<span class="h2"><h2><a class="selflink" name="section-15" href="#section-15">15</a>. Acknowledgments</h2></span> + + Thanks go to Lisa Dusseault and Bernard Desruisseaux for their work + on CalDAV, on which CardDAV is heavily based. The following + individuals contributed their ideas and support for writing this + specification: Mike Douglass, Stefan Eissing, Helge Hess, Arnaud + Quillaud, Julian Reschke, Elias Sinderson, Greg Stein, Wilfredo + Sanchez, and Simon Vaillancourt. + + + + + + +<span class="grey">Daboo Standards Track [Page 46]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-47" id="page-47" href="#page-47" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + +<span class="h2"><h2><a class="selflink" name="section-16" href="#section-16">16</a>. References</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-16.1" href="#section-16.1">16.1</a>. Normative References</h3></span> + + [<a name="ref-RFC2119" id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", <a href="http://tools.ietf.org/html/bcp14">BCP 14</a>, <a href="http://tools.ietf.org/html/rfc2119">RFC 2119</a>, March 1997. + + [<a name="ref-RFC2426" id="ref-RFC2426">RFC2426</a>] Dawson, F. and T. Howes, "vCard MIME Directory Profile", + <a href="http://tools.ietf.org/html/rfc2426">RFC 2426</a>, September 1998. + + [<a name="ref-RFC2616" id="ref-RFC2616">RFC2616</a>] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., + Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext + Transfer Protocol -- HTTP/1.1", <a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a>, June 1999. + + [<a name="ref-RFC2617" id="ref-RFC2617">RFC2617</a>] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., + Leach, P., Luotonen, A., and L. Stewart, "HTTP + Authentication: Basic and Digest Access Authentication", + <a href="http://tools.ietf.org/html/rfc2617">RFC 2617</a>, June 1999. + + [<a name="ref-RFC2782" id="ref-RFC2782">RFC2782</a>] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for + specifying the location of services (DNS SRV)", <a href="http://tools.ietf.org/html/rfc2782">RFC 2782</a>, + February 2000. + + [<a name="ref-RFC2818" id="ref-RFC2818">RFC2818</a>] Rescorla, E., "HTTP Over TLS", <a href="http://tools.ietf.org/html/rfc2818">RFC 2818</a>, May 2000. + + [<a name="ref-RFC3253" id="ref-RFC3253">RFC3253</a>] Clemm, G., Amsden, J., Ellison, T., Kaler, C., and J. + Whitehead, "Versioning Extensions to WebDAV + (Web Distributed Authoring and Versioning)", <a href="http://tools.ietf.org/html/rfc3253">RFC 3253</a>, + March 2002. + + [<a name="ref-RFC3688" id="ref-RFC3688">RFC3688</a>] Mealling, M., "The IETF XML Registry", <a href="http://tools.ietf.org/html/bcp81">BCP 81</a>, <a href="http://tools.ietf.org/html/rfc3688">RFC 3688</a>, + January 2004. + + [<a name="ref-RFC3744" id="ref-RFC3744">RFC3744</a>] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web + Distributed Authoring and Versioning (WebDAV) + Access Control Protocol", <a href="http://tools.ietf.org/html/rfc3744">RFC 3744</a>, May 2004. + + [<a name="ref-RFC4790" id="ref-RFC4790">RFC4790</a>] Newman, C., Duerst, M., and A. Gulbrandsen, "Internet + Application Protocol Collation Registry", <a href="http://tools.ietf.org/html/rfc4790">RFC 4790</a>, + March 2007. + + [<a name="ref-RFC4918" id="ref-RFC4918">RFC4918</a>] Dusseault, L., "HTTP Extensions for Web Distributed + Authoring and Versioning (WebDAV)", <a href="http://tools.ietf.org/html/rfc4918">RFC 4918</a>, June 2007. + + [<a name="ref-RFC5051" id="ref-RFC5051">RFC5051</a>] Crispin, M., "i;unicode-casemap - Simple Unicode Collation + Algorithm", <a href="http://tools.ietf.org/html/rfc5051">RFC 5051</a>, October 2007. + + + + + +<span class="grey">Daboo Standards Track [Page 47]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-48" id="page-48" href="#page-48" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6352</a> CardDAV August 2011</span> + + + [<a name="ref-RFC5246" id="ref-RFC5246">RFC5246</a>] Dierks, T. and E. Rescorla, "The Transport Layer Security + (TLS) Protocol Version 1.2", <a href="http://tools.ietf.org/html/rfc5246">RFC 5246</a>, August 2008. + + [<a name="ref-RFC5280" id="ref-RFC5280">RFC5280</a>] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., + Housley, R., and W. Polk, "Internet X.509 Public Key + Infrastructure Certificate and Certificate Revocation List + (CRL) Profile", <a href="http://tools.ietf.org/html/rfc5280">RFC 5280</a>, May 2008. + + [<a name="ref-RFC5397" id="ref-RFC5397">RFC5397</a>] Sanchez, W. and C. Daboo, "WebDAV Current Principal + Extension", <a href="http://tools.ietf.org/html/rfc5397">RFC 5397</a>, December 2008. + + [<a name="ref-RFC5689" id="ref-RFC5689">RFC5689</a>] Daboo, C., "Extended MKCOL for Web Distributed Authoring + and Versioning (WebDAV)", <a href="http://tools.ietf.org/html/rfc5689">RFC 5689</a>, September 2009. + + [<a name="ref-RFC6350" id="ref-RFC6350">RFC6350</a>] Perreault, S., "vCard Format Specification", <a href="http://tools.ietf.org/html/rfc6350">RFC 6350</a>, + August 2011. + + [<a name="ref-W3C.REC-xml-20081126" id="ref-W3C.REC-xml-20081126">W3C.REC-xml-20081126</a>] + Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and + F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth + Edition)", World Wide Web Consortium Recommendation REC- + xml-20081126, November 2008, + <<a href="http://www.w3.org/TR/2008/REC-xml-20081126">http://www.w3.org/TR/2008/REC-xml-20081126</a>>. + +<span class="h3"><h3><a class="selflink" name="section-16.2" href="#section-16.2">16.2</a>. Informative References</h3></span> + + [<a name="ref-IMSP" id="ref-IMSP">IMSP</a>] Myers, J., <a style="text-decoration: none" href="https://www.google.com/search?sitesearch=tools.ietf.org%2Fhtml%2F&q=inurl:draft-+%22IMSP+-+Internet+Message+Support+Protocol%22">"IMSP - Internet Message Support Protocol"</a>, + Work in Progress, June 1995. + + [<a name="ref-RFC2244" id="ref-RFC2244">RFC2244</a>] Newman, C. and J. Myers, "ACAP -- Application + Configuration Access Protocol", <a href="http://tools.ietf.org/html/rfc2244">RFC 2244</a>, November 1997. + + [<a name="ref-RFC4510" id="ref-RFC4510">RFC4510</a>] Zeilenga, K., "Lightweight Directory Access Protocol + (LDAP): Technical Specification Road Map", <a href="http://tools.ietf.org/html/rfc4510">RFC 4510</a>, + June 2006. + +Author's Address + + Cyrus Daboo + Apple, Inc. + 1 Infinite Loop + Cupertino, CA 95014 + USA + + EMail: cyrus@daboo.name + URI: <a href="http://www.apple.com/">http://www.apple.com/</a> + + + + + +Daboo Standards Track [Page 48] + +</pre><br> +<span class="noprint"><small><small>Html markup produced by rfcmarkup 1.111, available from +<a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a> +</small></small></span> + +</body></html>
\ No newline at end of file diff --git a/rfcs/RFC 6764 - Locating Services for Calendaring Extensions to WebDAV (CalDAV) and vCard Extensions to WebDAV (CardDAV).html.html b/rfcs/RFC 6764 - Locating Services for Calendaring Extensions to WebDAV (CalDAV) and vCard Extensions to WebDAV (CardDAV).html.html new file mode 100644 index 0000000..15610d7 --- /dev/null +++ b/rfcs/RFC 6764 - Locating Services for Calendaring Extensions to WebDAV (CalDAV) and vCard Extensions to WebDAV (CardDAV).html.html @@ -0,0 +1,854 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head profile="http://dublincore.org/documents/2008/08/04/dc-html/"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta name="robots" content="index,follow"> + <meta name="creator" content="rfcmarkup version 1.111"> + <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/"> +<meta name="DC.Identifier" content="urn:ietf:rfc:6764"> +<meta name="DC.Description.Abstract" content="This specification describes how DNS SRV records, DNS TXT records, and +well-known URIs can be used together or separately to locate CalDAV +(Calendaring Extensions to Web Distributed Authoring and Versioning +(WebDAV)) or CardDAV (vCard Extensions to WebDAV) services."> +<meta name="DC.Creator" content="Cyrus Daboo <cyrus@daboo.name>"> +<meta name="DC.Date.Issued" content="February, 2013"> +<meta name="DC.Title" content="Locating Services for Calendaring Extensions to WebDAV (CalDAV) and vCard Extensions to WebDAV (CardDAV)"> + + <link rel="icon" href="index_files/rfc.png" type="image/png"> + <link rel="shortcut icon" href="index_files/rfc.png" type="image/png"> + <title>RFC 6764 - Locating Services for Calendaring Extensions to WebDAV (CalDAV) and vCard Extensions to WebDAV (CardDAV)</title> + + + <style type="text/css"><!--
+/* Effective stylesheet produced by snapshot save */
+body { margin: 0px 8px; font-size: 1em; }
+h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { line-height: 0pt; display: inline; white-space: pre; font-family: monospace; font-size: 1em; font-weight: bold; }
+pre { font-size: 1em; margin-top: 0px; margin-bottom: 0px; }
+.pre { white-space: pre; font-family: monospace; }
+.newpage { page-break-before: always; }
+.invisible { text-decoration: none; color: white; }
+a.selflink { color: black; text-decoration: none; }
+@media print {
+ body { font-family: monospace; font-size: 10.5pt; }
+ h1, h2, h3, h4, h5, h6 { font-size: 1em; }
+ a:link, a:visited { color: inherit; text-decoration: none; }
+ .noprint { display: none; }
+}
+@media screen {
+ .grey, .grey a:link, .grey a:visited { color: rgb(119, 119, 119); }
+ .docinfo { background-color: rgb(238, 238, 238); }
+ .top { border-top: 7px solid rgb(238, 238, 238); }
+ .bgblue { background-color: rgb(102, 102, 255); }
+ .legend { font-size: 90%; }
+}
+--></style> + <!--[if IE]> + <style> + body { + font-size: 13px; + margin: 10px 10px; + } + </style> + <![endif]--> + + <script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script> +</head> +<body onload=""> + <div style="height: 13px;"> + <div onmouseover="" onclick="" onmouseout="" style="height: 6px; position: absolute;" class="pre noprint docinfo bgblue" title="Click for colour legend."> </div> + <div id="legend" class="docinfo noprint pre legend" style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; " onmouseover="" onmouseout=""> + </div> + </div> +<span class="pre noprint docinfo top">[<a href="http://tools.ietf.org/html/" title="Document search and retrieval page">Docs</a>] [<a href="http://tools.ietf.org/rfc/rfc6764.txt" title="Plaintext version of this document">txt</a>|<a href="http://tools.ietf.org/pdf/rfc6764" title="PDF version of this document">pdf</a>] [<a href="http://tools.ietf.org/html/draft-daboo-srv-caldav" title="draft-daboo-srv-caldav">draft-daboo-srv-c...</a>] [<a href="http://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=rfc6764" title="Inline diff (wdiff)">Diff1</a>] [<a href="http://tools.ietf.org/rfcdiff?url2=rfc6764" title="Side-by-side diff">Diff2</a>] </span><br> +<span class="pre noprint docinfo"> </span><br> +<span class="pre noprint docinfo"> PROPOSED STANDARD</span><br> +<span class="pre noprint docinfo"> </span><br> +<pre>Internet Engineering Task Force (IETF) C. Daboo +Request for Comments: 6764 Apple Inc. +Updates: <a href="http://tools.ietf.org/html/rfc4791">4791</a>, <a href="http://tools.ietf.org/html/rfc6352">6352</a> February 2013 +Category: Standards Track +ISSN: 2070-1721 + + + <span class="h1"><h1>Locating Services for Calendaring Extensions to</h1></span> + <span class="h1"><h1>WebDAV (CalDAV) and vCard Extensions to WebDAV (CardDAV)</h1></span> + +Abstract + + This specification describes how DNS SRV records, DNS TXT records, + and well-known URIs can be used together or separately to locate + CalDAV (Calendaring Extensions to Web Distributed Authoring and + Versioning (WebDAV)) or CardDAV (vCard Extensions to WebDAV) + services. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in <a href="http://tools.ietf.org/html/rfc5741#section-2">Section 2 of RFC 5741</a>. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + <a href="http://www.rfc-editor.org/info/rfc6764">http://www.rfc-editor.org/info/rfc6764</a>. + +Copyright Notice + + Copyright (c) 2013 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to <a href="http://tools.ietf.org/html/bcp78">BCP 78</a> and the IETF Trust's Legal + Provisions Relating to IETF Documents + (<a href="http://trustee.ietf.org/license-info">http://trustee.ietf.org/license-info</a>) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in <a href="#section-4">Section 4</a>.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + + + + +<span class="grey">Daboo Standards Track [Page 1]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-2" id="page-2" href="#page-2" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + +Table of Contents + + <a href="#section-1">1</a>. Introduction ....................................................<a href="#page-2">2</a> + <a href="#section-2">2</a>. Conventions Used in This Document ...............................<a href="#page-3">3</a> + <a href="#section-3">3</a>. CalDAV SRV Service Labels .......................................<a href="#page-3">3</a> + <a href="#section-4">4</a>. CalDAV and CardDAV Service TXT Records ..........................<a href="#page-4">4</a> + <a href="#section-5">5</a>. CalDAV and CardDAV Service Well-Known URI .......................<a href="#page-4">4</a> + 5.1. Example: Well-Known URI Redirects to Actual + "Context Path" .............................................<a href="#page-5">5</a> + <a href="#section-6">6</a>. Client "Bootstrapping" Procedures ...............................<a href="#page-5">5</a> + <a href="#section-7">7</a>. Guidance for Service Providers ..................................<a href="#page-8">8</a> + <a href="#section-8">8</a>. Security Considerations .........................................<a href="#page-9">9</a> + <a href="#section-9">9</a>. IANA Considerations .............................................<a href="#page-9">9</a> + <a href="#section-9.1">9.1</a>. Well-Known URI Registrations ...............................<a href="#page-9">9</a> + <a href="#section-9.1.1">9.1.1</a>. caldav Well-Known URI Registration .................<a href="#page-10">10</a> + <a href="#section-9.1.2">9.1.2</a>. carddav Well-Known URI Registration ................<a href="#page-10">10</a> + <a href="#section-9.2">9.2</a>. Service Name Registrations ................................<a href="#page-10">10</a> + <a href="#section-9.2.1">9.2.1</a>. caldav Service Name Registration ...................<a href="#page-10">10</a> + <a href="#section-9.2.2">9.2.2</a>. caldavs Service Name Registration ..................<a href="#page-11">11</a> + <a href="#section-9.2.3">9.2.3</a>. carddav Service Name Registration ..................<a href="#page-11">11</a> + <a href="#section-9.2.4">9.2.4</a>. carddavs Service Name Registration .................<a href="#page-12">12</a> + <a href="#section-10">10</a>. Acknowledgments ...............................................<a href="#page-12">12</a> + <a href="#section-11">11</a>. References ....................................................<a href="#page-12">12</a> + <a href="#section-11.1">11.1</a>. Normative References .....................................<a href="#page-12">12</a> + <a href="#section-11.2">11.2</a>. Informative References ...................................<a href="#page-14">14</a> + +<span class="h2"><h2><a class="selflink" name="section-1" href="#section-1">1</a>. Introduction</h2></span> + + [<a name="ref-RFC4791" id="ref-RFC4791">RFC4791</a>] defines the CalDAV calendar access protocol, based on HTTP + [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>], for accessing calendar data stored on a server. CalDAV + clients need to be able to discover appropriate CalDAV servers within + their local area network and at other domains, e.g., to minimize the + need for end users to know specific details such as the fully + qualified domain name (FQDN) and port number for their servers. + + [<a name="ref-RFC6352" id="ref-RFC6352">RFC6352</a>] defines the CardDAV address book access protocol based on + HTTP [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>], for accessing contact data stored on a server. As + with CalDAV, clients also need to be able to discover CardDAV + servers. + + [<a name="ref-RFC2782" id="ref-RFC2782">RFC2782</a>] defines a DNS-based service discovery protocol that has + been widely adopted as a means of locating particular services within + a local area network and beyond, using DNS SRV Resource Records + (RRs). This has been enhanced to provide additional service meta- + data by use of DNS TXT RRs as per [<a href="http://tools.ietf.org/html/rfc6763" title="" dns-based service discovery>RFC6763</a>]. + + + + + + +<span class="grey">Daboo Standards Track [Page 2]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-3" id="page-3" href="#page-3" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + + This specification defines new SRV service types for the CalDAV + protocol and gives an example of how clients can use this together + with other protocol features to enable simple client configuration. + SRV service types for CardDAV are already defined in <a href="http://tools.ietf.org/html/rfc6352#section-11">Section 11 of + [RFC6352]</a>. + + Another issue with CalDAV or CardDAV service discovery is that the + service might not be located at the "root" URI of the HTTP server + hosting it. Thus, a client needs to be able to determine the + complete path component of the Request-URI to use in HTTP requests: + the "context path". For example, if CalDAV is implemented as a + "servlet" in a web server "container", the servlet "context path" + might be "/caldav/". So the URI for the CalDAV service would be, + e.g., "http://caldav.example.com/caldav/" rather than + "http://caldav.example.com/". SRV RRs by themselves only provide an + FQDN and port number for the service, not a path. Since the client + "bootstrapping" process requires initial access to the "context path" + of the service, there needs to be a simple way for clients to also + discover what that path is. + + This specification makes use of the "well-known URI" feature + [<a href="http://tools.ietf.org/html/rfc5785" title="" defining well-known uniform resource identifiers>RFC5785</a>] of HTTP servers to provide a well-known URI for CalDAV or + CardDAV services that clients can use. The well-known URI will point + to a resource on the server that is simply a "stub" resource that + provides a redirect to the actual "context path" resource + representing the service endpoint. + +<span class="h2"><h2><a class="selflink" name="section-2" href="#section-2">2</a>. Conventions Used in This Document</h2></span> + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [<a href="http://tools.ietf.org/html/rfc2119" title="" key words for use in rfcs to indicate requirement levels>RFC2119</a>]. + +<span class="h2"><h2><a class="selflink" name="section-3" href="#section-3">3</a>. CalDAV SRV Service Labels</h2></span> + + This specification adds two SRV service labels for use with CalDAV: + + _caldav: Identifies a CalDAV server that uses HTTP without + Transport Layer Security (TLS) [<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>]. + + _caldavs: Identifies a CalDAV server that uses HTTP with TLS + [<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>]. + + + + + + + + + +<span class="grey">Daboo Standards Track [Page 3]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-4" id="page-4" href="#page-4" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + + Clients MUST honor Priority and Weight values in the SRV RRs, as + described by [<a href="http://tools.ietf.org/html/rfc2782" title="" a dns rr for specifying the location of services srv>RFC2782</a>]. + + Example: service record for server without TLS + + _caldav._tcp SRV 0 1 80 calendar.example.com. + + Example: service record for server with TLS + + _caldavs._tcp SRV 0 1 443 calendar.example.com. + +<span class="h2"><h2><a class="selflink" name="section-4" href="#section-4">4</a>. CalDAV and CardDAV Service TXT Records</h2></span> + + When SRV RRs are used to advertise CalDAV and CardDAV services, it is + also convenient to be able to specify a "context path" in the DNS to + be retrieved at the same time. To enable that, this specification + uses a TXT RR that follows the syntax defined in <a href="http://tools.ietf.org/html/rfc6763#section-6">Section 6 of + [RFC6763]</a> and defines a "path" key for use in that record. The value + of the key MUST be the actual "context path" to the corresponding + service on the server. + + A site might provide TXT records in addition to SRV records for each + service. When present, clients MUST use the "path" value as the + "context path" for the service in HTTP requests. When not present, + clients use the ".well-known" URI approach described next. + + Example: text record for service with TLS + + _caldavs._tcp TXT path=/caldav + +<span class="h2"><h2><a class="selflink" name="section-5" href="#section-5">5</a>. CalDAV and CardDAV Service Well-Known URI</h2></span> + + Two ".well-known" URIs are registered by this specification for + CalDAV and CardDAV services, "caldav" and "carddav" respectively (see + <a href="#section-9">Section 9</a>). These URIs point to a resource that the client can use + as the initial "context path" for the service they are trying to + connect to. The server MUST redirect HTTP requests for that resource + to the actual "context path" using one of the available mechanisms + provided by HTTP (e.g., using a 301, 303, or 307 response). Clients + MUST handle HTTP redirects on the ".well-known" URI. Servers MUST + NOT locate the actual CalDAV or CardDAV service endpoint at the + ".well-known" URI as per <a href="http://tools.ietf.org/html/rfc5785#section-1.1">Section 1.1 of [RFC5785]</a>. + + Servers SHOULD set an appropriate Cache-Control header value (as per + <a href="http://tools.ietf.org/html/rfc2616#section-14.9">Section 14.9 of [RFC2616]</a>) in the redirect response to ensure caching + occurs or does not occur as needed or as required by the type of + response generated. For example, if it is anticipated that the + + + + +<span class="grey">Daboo Standards Track [Page 4]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-5" id="page-5" href="#page-5" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + + location of the redirect might change over time, then a "no-cache" + value would be used. + + To facilitate "context paths" that might differ from user to user, + the server MAY require authentication when a client tries to access + the ".well-known" URI (i.e., the server would return a 401 status + response to the unauthenticated request from the client, then return + the redirect response only after a successful authentication by the + client). + +<span class="h3"><h3><a class="selflink" name="section-5.1" href="#section-5.1">5.1</a>. Example: Well-Known URI Redirects to Actual "Context Path"</h3></span> + + A CalDAV server has a "context path" that is "/servlet/caldav". The + client will use "/.well-known/caldav" as the path for its + "bootstrapping" process after it has first found the FQDN and port + number via an SRV lookup or via manual entry of information by the + user, from which the client can parse suitable information. When the + client makes an HTTP request against "/.well-known/caldav", the + server would issue an HTTP redirect response with a Location response + header using the path "/servlet/caldav". The client would then + "follow" this redirect to the new resource and continue making HTTP + requests there to complete its "bootstrapping" process. + +<span class="h2"><h2><a class="selflink" name="section-6" href="#section-6">6</a>. Client "Bootstrapping" Procedures</h2></span> + + This section describes a procedure that CalDAV or CardDAV clients + SHOULD use to do their initial configuration based on minimal user + input. The goal is to determine an http: or https: URI that + describes the full path to the user's principal-URL [<a href="http://tools.ietf.org/html/rfc3744" title="" web distributed authoring and versioning access control protocol>RFC3744</a>]. + + 1. Processing user input: + + * For a CalDAV server: + + + Minimal input from a user would consist of a calendar user + address and a password. A calendar user address is defined + by iCalendar [<a href="http://tools.ietf.org/html/rfc5545" title="" internet calendaring and scheduling core object specification>RFC5545</a>] to be a URI [<a href="http://tools.ietf.org/html/rfc3986" title="" uniform resource identifier generic syntax>RFC3986</a>]. Provided a + user identifier and a domain name can be extracted from the + URI, this simple "bootstrapping" configuration can be done. + + + If the calendar user address is a "mailto:" [<a href="http://tools.ietf.org/html/rfc6068" title="" the uri scheme>RFC6068</a>] URI, + the "mailbox" portion of the URI is examined, and the + "local-part" and "domain" portions are extracted. + + + If the calendar user address is an "http:" [<a href="http://tools.ietf.org/html/rfc2616" title="" hypertext transfer protocol http>RFC2616</a>] or + "https:" [<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>] URI, the "userinfo" and "host" portion + of the URI [<a href="http://tools.ietf.org/html/rfc3986" title="" uniform resource identifier generic syntax>RFC3986</a>] is extracted. + + + + +<span class="grey">Daboo Standards Track [Page 5]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-6" id="page-6" href="#page-6" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + + * For a CardDAV server: + + + Minimal input from a user would consist of their email + address [<a href="http://tools.ietf.org/html/rfc5322" title="" internet message format>RFC5322</a>] for the domain where the CardDAV service + is hosted, and a password. The "mailbox" portion of the + email address is examined, and the "local-part" and + "domain" portions are extracted. + + 2. Determination of service FQDN and port number: + + * An SRV lookup for _caldavs._tcp (for CalDAV) or _carddavs._tcp + (for CardDAV) is done with the extracted "domain" as the + service domain. + + * If no result is found, the client can try _caldav._tcp (for + CalDAV) or _carddav._tcp (for CardDAV) provided non-TLS + connections are appropriate. + + * If an SRV record is returned, the client extracts the target + FQDN and port number. If multiple SRV records are returned, + the client MUST use the Priority and Weight fields in the + record to determine which one to pick (as per [<a href="http://tools.ietf.org/html/rfc2782" title="" a dns rr for specifying the location of services srv>RFC2782</a>]). + + * If an SRV record is not found, the client will need to prompt + the user to enter the FQDN and port number information + directly or use some other heuristic, for example, using the + extracted "domain" as the FQDN and default HTTPS or HTTP port + numbers. In this situation, clients MUST first attempt an + HTTP connection with TLS. + + 3. Determination of initial "context path": + + * When an SRV lookup is done and a valid SRV record returned, + the client MUST also query for a corresponding TXT record and + check for the presence of a "path" key in its response. If + present, the value of the "path" key is used for the initial + "context path". + + * When an initial "context path" has not been determined from a + TXT record, the initial "context path" is taken to be + "/.well-known/caldav" (for CalDAV) or "/.well-known/carddav" + (for CardDAV). + + * If the initial "context path" derived from a TXT record + generates HTTP errors when targeted by requests, the client + SHOULD repeat its "bootstrapping" procedure using the + appropriate ".well-known" URI instead. + + + + +<span class="grey">Daboo Standards Track [Page 6]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-7" id="page-7" href="#page-7" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + + 4. Determination of user identifier: + + * The client will need to make authenticated HTTP requests to + the service. Typically, a "user identifier" is required for + some form of user/password authentication. When a user + identifier is required, clients MUST first use the "mailbox" + portion of the calendar user address provided by the user in + the case of a "mailto:" address and, if that results in an + authentication failure, SHOULD fall back to using the "local- + part" extracted from the "mailto:" address. For an "http:" or + "https:" calendar user address, the "userinfo" portion is used + as the user identifier for authentication. This is in line + with the guidance outlined in <a href="#section-7">Section 7</a>. If these user + identifiers result in authentication failure, the client + SHOULD prompt the user for a valid identifier. + + 5. Connecting to the service: + + * Subsequent to configuration, the client will make HTTP + requests to the service. When using "_caldavs" or "_carddavs" + services, a TLS negotiation is done immediately upon + connection. The client MUST do certificate verification using + the procedure outlined in <a href="http://tools.ietf.org/html/rfc6125#section-6">Section 6 of [RFC6125]</a> in regard to + verification with an SRV RR as the starting point. + + * The client does a "PROPFIND" [<a href="http://tools.ietf.org/html/rfc4918" title="" http extensions for web distributed authoring and versioning>RFC4918</a>] request with the + request URI set to the initial "context path". The body of + the request SHOULD include the DAV:current-user-principal + [<a href="http://tools.ietf.org/html/rfc5397" title="" webdav current principal extension>RFC5397</a>] property as one of the properties to return. Note + that clients MUST properly handle HTTP redirect responses for + the request. The server will use the HTTP authentication + procedure outlined in [<a href="http://tools.ietf.org/html/rfc2617" title="" http authentication: basic and digest access authentication>RFC2617</a>] or use some other appropriate + authentication schemes to authenticate the user. + + * If the server returns a 404 ("Not Found") HTTP status response + to the request on the initial "context path", clients MAY try + repeating the request on the "root" URI "/" or prompt the user + for a suitable path. + + * If the DAV:current-user-principal property is returned on the + request, the client uses that value for the principal-URL of + the authenticated user. With that, it can execute a + "PROPFIND" request on the principal-URL and discover + additional properties for configuration (e.g., calendar or + address book "home" collections). + + + + + + +<span class="grey">Daboo Standards Track [Page 7]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-8" id="page-8" href="#page-8" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + + * If the DAV:current-user-principal property is not returned, + then the client will need to request the principal-URL path + from the user in order to continue with configuration. + + Once a successful account discovery step has been done, clients + SHOULD cache the service details that were successfully used (user + identity, principal-URL with full scheme/host/port details) and reuse + those when connecting again at a later time. + + If a subsequent connection attempt fails, or authentication fails + persistently, clients SHOULD retry the SRV lookup and account + discovery to "refresh" the cached data. + +<span class="h2"><h2><a class="selflink" name="section-7" href="#section-7">7</a>. Guidance for Service Providers</h2></span> + + Service providers wanting to offer CalDAV or CardDAV services that + can be configured by clients using SRV records need to follow certain + procedures to ensure proper operation. + + o CalDAV or CardDAV servers SHOULD be configured to allow + authentication with calendar user addresses (just taking the + "mailbox" portion of any "mailto:" URI) or email addresses + respectively, or with "user identifiers" extracted from them. In + the former case, the addresses MUST NOT conflict with other forms + of a permitted user login name. In the latter case, the extracted + "user identifiers" need to be unique across the server and MUST + NOT conflict with any login name on the server. + + o Servers MUST force authentication for "PROPFIND" requests that + retrieve the DAV:current-user-principal property to ensure that + the value of the DAV:current-user-principal property returned + corresponds to the principal-URL of the user making the request. + + o If the service provider uses TLS, the service provider MUST ensure + a certificate is installed that can be verified by clients using + the procedure outlined in <a href="http://tools.ietf.org/html/rfc6125#section-6">Section 6 of [RFC6125]</a> in regard to + verification with an SRV RR as the starting point. In particular, + certificates SHOULD include SRV-ID and DNS-ID identifiers as + appropriate, as described in <a href="#section-8">Section 8</a>. + + o Service providers should install the appropriate SRV records for + the offered services and optionally include TXT records. + + + + + + + + + +<span class="grey">Daboo Standards Track [Page 8]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-9" id="page-9" href="#page-9" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + +<span class="h2"><h2><a class="selflink" name="section-8" href="#section-8">8</a>. Security Considerations</h2></span> + + Clients that support TLS as defined by [<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>] SHOULD try the + "_caldavs" or "_carddavs" services first before trying the "_caldav" + or "_carddav" services respectively. If a user has explicitly + requested a connection with TLS, the client MUST NOT use any service + information returned for the "_caldav" or "_carddav" services. + Clients MUST follow the certificate-verification process specified in + [<a href="http://tools.ietf.org/html/rfc6125" title="" representation and verification of domain-based application service identity within internet public key infrastructure using x.509 certificates in the context transport layer security>RFC6125</a>]. + + A malicious attacker with access to the DNS server data, or that is + able to get spoofed answers cached in a recursive resolver, can + potentially cause clients to connect to any server chosen by the + attacker. In the absence of a secure DNS option, clients SHOULD + check that the target FQDN returned in the SRV record matches the + original service domain that was queried. If the target FQDN is not + in the queried domain, clients SHOULD verify with the user that the + SRV target FQDN is suitable for use before executing any connections + to the host. Alternatively, if TLS is being used for the service, + clients MUST use the procedure outlined in <a href="http://tools.ietf.org/html/rfc6125#section-6">Section 6 of [RFC6125]</a> to + verify the service. When the target FQDN does not match the original + service domain that was queried, clients MUST check the SRV-ID + identifier in the server's certificate. If the FQDN does match, + clients MUST check any SRV-ID identifiers in the server's certificate + or, if no SRV-ID identifiers are present, MUST check the DNS-ID + identifiers in the server's certificate. + + Implementations of TLS [<a href="http://tools.ietf.org/html/rfc5246" title="" the transport layer security protocol version>RFC5246</a>], used as the basis for TLS + ([<a href="http://tools.ietf.org/html/rfc2818" title="" http over tls>RFC2818</a>]), typically support multiple versions of the protocol as + well as the older SSL (Secure Sockets Layer) protocol. Because of + known security vulnerabilities, clients and servers MUST NOT request, + offer, or use SSL 2.0. See <a href="http://tools.ietf.org/html/rfc5246#appendix-E.2">Appendix E.2 of [RFC5246]</a> for further + details. + +<span class="h2"><h2><a class="selflink" name="section-9" href="#section-9">9</a>. IANA Considerations</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-9.1" href="#section-9.1">9.1</a>. Well-Known URI Registrations</h3></span> + + This document defines two ".well-known" URIs using the registration + procedure and template from <a href="http://tools.ietf.org/html/rfc5785#section-5.1">Section 5.1 of [RFC5785]</a>. + + + + + + + + + + + +<span class="grey">Daboo Standards Track [Page 9]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-10" id="page-10" href="#page-10" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.1.1" href="#section-9.1.1">9.1.1</a>. caldav Well-Known URI Registration</h4></span> + + URI suffix: caldav + + Change controller: IETF + + Specification document(s): This RFC + + Related information: See also [<a href="http://tools.ietf.org/html/rfc4791" title="" calendaring extensions to webdav>RFC4791</a>]. + +<span class="h4"><h4><a class="selflink" name="section-9.1.2" href="#section-9.1.2">9.1.2</a>. carddav Well-Known URI Registration</h4></span> + + URI suffix: carddav + + Change controller: IETF + + Specification document(s): This RFC + + Related information: See also [<a href="http://tools.ietf.org/html/rfc6352" title="" carddav: vcard extensions to web distributed authoring and versioning>RFC6352</a>]. + +<span class="h3"><h3><a class="selflink" name="section-9.2" href="#section-9.2">9.2</a>. Service Name Registrations</h3></span> + + This document registers four new service names as per [<a href="http://tools.ietf.org/html/rfc6335" title="" internet assigned numbers authority procedures for the management of service name and transport protocol port number registry>RFC6335</a>]. Two + are defined in this document, and two are defined in <a href="http://tools.ietf.org/html/rfc6352#section-11">[RFC6352], + Section 11</a>. + +<span class="h4"><h4><a class="selflink" name="section-9.2.1" href="#section-9.2.1">9.2.1</a>. caldav Service Name Registration</h4></span> + + Service Name: caldav + + Transport Protocol(s): TCP + + Assignee: IESG <iesg@ietf.org> + + Contact: IETF Chair <chair@ietf.org> + + Description: Calendaring Extensions to WebDAV (CalDAV) - non-TLS + + Reference: [<a href="#">RFC6764</a>] + + Assignment Note: This is an extension of the http service. Defined + TXT keys: path=<context path> + + + + + + + + + +<span class="grey">Daboo Standards Track [Page 10]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-11" id="page-11" href="#page-11" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.2.2" href="#section-9.2.2">9.2.2</a>. caldavs Service Name Registration</h4></span> + + Service Name: caldavs + + Transport Protocol(s): TCP + + Assignee: IESG <iesg@ietf.org> + + Contact: IETF Chair <chair@ietf.org> + + Description: Calendaring Extensions to WebDAV (CalDAV) - over TLS + + Reference: [<a href="#">RFC6764</a>] + + Assignment Note: This is an extension of the https service. Defined + TXT keys: path=<context path> + +<span class="h4"><h4><a class="selflink" name="section-9.2.3" href="#section-9.2.3">9.2.3</a>. carddav Service Name Registration</h4></span> + + Service Name: carddav + + Transport Protocol(s): TCP + + Assignee: IESG <iesg@ietf.org> + + Contact: IETF Chair <chair@ietf.org> + + Description: vCard Extensions to WebDAV (CardDAV) - non-TLS + + Reference: [<a href="http://tools.ietf.org/html/rfc6352" title="" carddav: vcard extensions to web distributed authoring and versioning>RFC6352</a>] + + Assignment Note: This is an extension of the http service. Defined + TXT keys: path=<context path> + + + + + + + + + + + + + + + + + + +<span class="grey">Daboo Standards Track [Page 11]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-12" id="page-12" href="#page-12" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + +<span class="h4"><h4><a class="selflink" name="section-9.2.4" href="#section-9.2.4">9.2.4</a>. carddavs Service Name Registration</h4></span> + + Service Name: carddavs + + Transport Protocol(s): TCP + + Assignee: IESG <iesg@ietf.org> + + Contact: IETF Chair <chair@ietf.org> + + Description: vCard Extensions to WebDAV (CardDAV) - over TLS + + Reference: [<a href="http://tools.ietf.org/html/rfc6352" title="" carddav: vcard extensions to web distributed authoring and versioning>RFC6352</a>] + + Assignment Note: This is an extension of the https service. Defined + TXT keys: path=<context path> + +<span class="h2"><h2><a class="selflink" name="section-10" href="#section-10">10</a>. Acknowledgments</h2></span> + + This specification was suggested by discussion that took place within + the Calendaring and Scheduling Consortium's CalDAV Technical + Committee. The author thanks the following for their contributions: + Stuart Cheshire, Bernard Desruisseaux, Eran Hammer-Lahav, Helge Hess, + Arnaud Quillaud, Wilfredo Sanchez, and Joe Touch. + +<span class="h2"><h2><a class="selflink" name="section-11" href="#section-11">11</a>. References</h2></span> + +<span class="h3"><h3><a class="selflink" name="section-11.1" href="#section-11.1">11.1</a>. Normative References</h3></span> + + [<a name="ref-RFC2119" id="ref-RFC2119">RFC2119</a>] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", <a href="http://tools.ietf.org/html/bcp14">BCP 14</a>, <a href="http://tools.ietf.org/html/rfc2119">RFC 2119</a>, March 1997. + + [<a name="ref-RFC2616" id="ref-RFC2616">RFC2616</a>] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., + Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext + Transfer Protocol -- HTTP/1.1", <a href="http://tools.ietf.org/html/rfc2616">RFC 2616</a>, June 1999. + + [<a name="ref-RFC2617" id="ref-RFC2617">RFC2617</a>] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., + Leach, P., Luotonen, A., and L. Stewart, "HTTP + Authentication: Basic and Digest Access Authentication", + <a href="http://tools.ietf.org/html/rfc2617">RFC 2617</a>, June 1999. + + [<a name="ref-RFC2782" id="ref-RFC2782">RFC2782</a>] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for + specifying the location of services (DNS SRV)", <a href="http://tools.ietf.org/html/rfc2782">RFC 2782</a>, + February 2000. + + [<a name="ref-RFC2818" id="ref-RFC2818">RFC2818</a>] Rescorla, E., "HTTP Over TLS", <a href="http://tools.ietf.org/html/rfc2818">RFC 2818</a>, May 2000. + + + + + +<span class="grey">Daboo Standards Track [Page 12]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-13" id="page-13" href="#page-13" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + + [<a name="ref-RFC3744" id="ref-RFC3744">RFC3744</a>] Clemm, G., Reschke, J., Sedlar, E., and J. Whitehead, "Web + Distributed Authoring and Versioning (WebDAV) + Access Control Protocol", <a href="http://tools.ietf.org/html/rfc3744">RFC 3744</a>, May 2004. + + [<a name="ref-RFC3986" id="ref-RFC3986">RFC3986</a>] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform + Resource Identifier (URI): Generic Syntax", STD 66, + <a href="http://tools.ietf.org/html/rfc3986">RFC 3986</a>, January 2005. + + [<a name="ref-RFC4791" id="ref-RFC4791">RFC4791</a>] Daboo, C., Desruisseaux, B., and L. Dusseault, + "Calendaring Extensions to WebDAV (CalDAV)", <a href="http://tools.ietf.org/html/rfc4791">RFC 4791</a>, + March 2007. + + [<a name="ref-RFC4918" id="ref-RFC4918">RFC4918</a>] Dusseault, L., "HTTP Extensions for Web Distributed + Authoring and Versioning (WebDAV)", <a href="http://tools.ietf.org/html/rfc4918">RFC 4918</a>, June 2007. + + [<a name="ref-RFC5246" id="ref-RFC5246">RFC5246</a>] Dierks, T. and E. Rescorla, "The Transport Layer Security + (TLS) Protocol Version 1.2", <a href="http://tools.ietf.org/html/rfc5246">RFC 5246</a>, August 2008. + + [<a name="ref-RFC5322" id="ref-RFC5322">RFC5322</a>] Resnick, P., Ed., "Internet Message Format", <a href="http://tools.ietf.org/html/rfc5322">RFC 5322</a>, + October 2008. + + [<a name="ref-RFC5397" id="ref-RFC5397">RFC5397</a>] Sanchez, W. and C. Daboo, "WebDAV Current Principal + Extension", <a href="http://tools.ietf.org/html/rfc5397">RFC 5397</a>, December 2008. + + [<a name="ref-RFC5785" id="ref-RFC5785">RFC5785</a>] Nottingham, M. and E. Hammer-Lahav, "Defining Well-Known + Uniform Resource Identifiers (URIs)", <a href="http://tools.ietf.org/html/rfc5785">RFC 5785</a>, + April 2010. + + [<a name="ref-RFC6068" id="ref-RFC6068">RFC6068</a>] Duerst, M., Masinter, L., and J. Zawinski, "The 'mailto' + URI Scheme", <a href="http://tools.ietf.org/html/rfc6068">RFC 6068</a>, October 2010. + + [<a name="ref-RFC6125" id="ref-RFC6125">RFC6125</a>] Saint-Andre, P. and J. Hodges, "Representation and + Verification of Domain-Based Application Service Identity + within Internet Public Key Infrastructure Using X.509 + (PKIX) Certificates in the Context of Transport Layer + Security (TLS)", <a href="http://tools.ietf.org/html/rfc6125">RFC 6125</a>, March 2011. + + [<a name="ref-RFC6335" id="ref-RFC6335">RFC6335</a>] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S. + Cheshire, "Internet Assigned Numbers Authority (IANA) + Procedures for the Management of the Service Name and + Transport Protocol Port Number Registry", <a href="http://tools.ietf.org/html/bcp165">BCP 165</a>, + <a href="http://tools.ietf.org/html/rfc6335">RFC 6335</a>, August 2011. + + [<a name="ref-RFC6352" id="ref-RFC6352">RFC6352</a>] Daboo, C., "CardDAV: vCard Extensions to Web Distributed + Authoring and Versioning (WebDAV)", <a href="http://tools.ietf.org/html/rfc6352">RFC 6352</a>, August 2011. + + [<a name="ref-RFC6763" id="ref-RFC6763">RFC6763</a>] Cheshire, S. and M. Krochmal, "DNS-Based Service + Discovery", <a href="http://tools.ietf.org/html/rfc6763">RFC 6763</a>, February 2013. + + + +<span class="grey">Daboo Standards Track [Page 13]</span> +</pre><!--NewPage--><pre class="newpage"><a name="page-14" id="page-14" href="#page-14" class="invisible"> </a> +<span class="grey"><a href="#">RFC 6764</a> SRV for CalDAV & CardDAV February 2013</span> + + +<span class="h3"><h3><a class="selflink" name="section-11.2" href="#section-11.2">11.2</a>. Informative References</h3></span> + + [<a name="ref-RFC5545" id="ref-RFC5545">RFC5545</a>] Desruisseaux, B., "Internet Calendaring and Scheduling + Core Object Specification (iCalendar)", <a href="http://tools.ietf.org/html/rfc5545">RFC 5545</a>, + September 2009. + +Author's Address + + Cyrus Daboo + Apple Inc. + 1 Infinite Loop + Cupertino, CA 95014 + USA + + EMail: cyrus@daboo.name + URI: <a href="http://www.apple.com/">http://www.apple.com/</a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Daboo Standards Track [Page 14] + +</pre><br> +<span class="noprint"><small><small>Html markup produced by rfcmarkup 1.111, available from +<a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a> +</small></small></span> + +</body></html>
\ No newline at end of file diff --git a/rfcs/Radicale - CalDAV and CardDAV Server - Project Description.html b/rfcs/Radicale - CalDAV and CardDAV Server - Project Description.html new file mode 100644 index 0000000..6c6b9e6 --- /dev/null +++ b/rfcs/Radicale - CalDAV and CardDAV Server - Project Description.html @@ -0,0 +1,170 @@ +<!DOCTYPE html> +<html class=" -moz-" xmlns="http://www.w3.org/1999/xhtml"><head> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta charset="UTF-8"> + <title>Radicale - CalDAV and CardDAV Server - Contents</title> + <style data-href="/css/shared.css" media=""><!--
+/* Effective stylesheet produced by snapshot save */
+header, article, section, figure, aside, footer { display: block; }
+a { text-decoration: none; }
+#ribbon { background: transparent linear-gradient(rgb(0, 0, 0), rgb(17, 17, 17)) repeat scroll 0% 0%; box-shadow: 0px 0px 1em rgb(136, 136, 136); overflow: hidden; position: fixed; right: -3em; top: 2em; transform: rotate(45deg); }
+#ribbon a { border: 1px solid rgb(204, 204, 204); color: rgb(255, 255, 255); display: block; font: bold 0.65em sans-serif; margin: 0.05em 0px 0.075em; padding: 0.5em 3.5em; text-align: center; text-decoration: none; text-shadow: 0px 0px 0.5em rgb(68, 68, 68); }
+article footer { font-size: 0.8em; opacity: 0.7; padding-left: 20px; }
+article footer div { padding: 0.2em; }
+article footer div > a:first-child { margin-right: 0.5em; }
+article footer div > * { display: inline; }
+.ref { font-size: x-small; vertical-align: top; }
+@media print {
+ body > nav > *, body > footer { display: none; }
+ html, body, body { background: transparent none repeat scroll 0% 0% ! important; }
+}
+--></style> + <style data-href="/css/style.css" media=""><!--
+/* Effective stylesheet produced by snapshot save */
+@font-face { + font-family: "caviardreams"; + src: url(data:application/octet-stream;base64,AAEAAAAMAIAAAwBAT1MvMkzXoBYAAAFIAAAAYGNtYXDU+wDDAAAHBAAABHJnYXNwACAACAAAv6AAAAAQZ2x5ZsUe36gAAA4oAACHxGhlYWT2EPTaAAAAzAAAADZoaGVhEZILtQAAAQQAAAAkaG10eL9uj1QAAAGoAAAFXGtlcm6XIqQ/AACV7AAAGx5sb2NhV115qgAAC3gAAAKwbWF4cAFfAJwAAAEoAAAAIG5hbWUwixO+AACxDAAAB+1wb3N0C/x/3wAAuPwAAAajAAEAAAADAAAduJ0XXw889QALCAAAAAAAxZXHmQAAAADHsuKH/7b+VwnxB2UAAQAJAAEAAAAAAAAAAQAAB13+pwCLDAD/tv+2CfEAAQAAAAAAAAAAAAAAAAAAAVcAAQAAAVcAnAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBEoB9AAFAAgFmgUzAAABGwWaBTMAAAPRAGYCEggEAgsGAgICBAIFBIAAAKdQAABKAAAAAAAAAABITCAgACAAIPsCBez+pwDNB10BWSAAARFBAAAAA7MF7AAAACAAAAo8AEsAyAAAAsQAAALEAAABzAB9AlEAfQY+AH0D4ABkBJwAUATpAEsBeQB9AsMAZALDAGQDMgCABAYAfQGlAAoDRQB9AZoAZALZ/84EtgBMBRYCFATEAJcExACXBNYArQTDAHUEtwBJBMQAmQS7AGsEtwBJAcwAfQIHAFMFPwBkBAYAfQU/AGQDsgB/BhgAfQTrADIEFACWBgQAfQSPAJYEHwCWA8MAlgYdAH0EZgCWAdMAqgNXAH0EQgCWA6kAlgaGAJYE+gCWBw0AfQQmAJYHDQB9BCYAlgP1ADIDzAAyBRkAlgTrADIGQgB9BLUAMgT4ADIFKQCWAkMAfQLZ/84CQwB9A6sAZAP2ABkCzACWBSUAfQUkAJYEggBaBSUAfQSCAFoCFgBaBSkAfQQSAJYBzAB9Ad8AMQNBAJYBqwCWBTUAlgQdAJYE0gBaBQsAlgUMAGQCYwCWAx8AcwKjAFoENwCWBCEAMgU1AJYDeQBLA+8ASwPsAJYDXQClAasAlgNdAKUE2QB9AcwAfQPtAGMEWABkBE0AZAT4ADIBqwCWBGUAZALgAH0FSQBjA8oAZARoAGQDRQB9AwEAlgQGAH0CzACWBAYAlgRIADMBswB9AmsAowPKAGQDsgCXBOsAMgTrADIE6wAyBOsAMgTrADIE6wAyBp0AfQYEAH0EHwCWBB8AlgQfAJYEHwCWAgD/tgIAAKoB6v+6AbT/5wTXADIE+gCWBw0AfQcNAH0HDQB9Bw0AfQcNAH0EJgDSBw0AfQUZAJYFGQCWBRkAlgUZAJYE+AAyBEkAlgUlAH0FJQB9BSUAfQUlAH0FJQB9BSUAfQgJAFoEggBaBNsAWgTbAFoE2wBaBNsAWgIA/7YCAACqAer/ugG0/+cEHQCWBNIAWgTSAFoE0gBaBNIAWgTSAFoEBgB9BNIAWgQ3AJYENwCWBDcAlgQ3AJYD7wBLBQwAgQPvAEsB0wCqA2cAeQNnAHkDdwCWA3kAzQGzAH0DEgEDAwsA6wNDAJYDngCWA1UAMgWeADIBNwAyATcAMgE3ADICHgAyAh4AMgIeADIC9QBkAvUAZAo8AEsIFABkAocAZAKHAGQEMQAyA9sAMgRYAGQFfQBkB6IAfQTPAGQEBgB9BNkAfQU/AGQFPwBkA2QAZAOFAGQE0gBaBOsAMgUlAH0E6wAyBSUAfQYEAH0EggBaBgQAfQSCAFoGBAB9BIIAWgYEAH0EggBaBNcAMgUdAH0EHwCWBIIAWgQfAJYEggBaBB8AlgSCAFoEHwCWBIIAWgYdAH0FKQB9Bh0AfQUpAH0GHQB9BSkAfQHT//oB0//6A6kAlgJkAJYE+gCWBB0AlgT6AJYEHQCWBw0AfQTSAFoHDQB9BNIAWgcNAH0E0gBaCH0AWgfgAFoE+AAyBPgAMgPvAEsGlwBQBygAlgQvAIwE6wAyBSUAfQSPAJYFjAB9BB8AlgSCAFoGHQB9BSkAfQRmAJYEEgCWAdP/3gHT/94B0//EAdP/xAHT/9YBzP/8AdMAjQOpAJYBqwAGBCYAlgJjAJYEJgCWAmMAKAP1ADIDHwBzA/UAMgMfAFkD9QAyAx8AcwP1ADIDHwBZA8wAMgKjAFoFGQCWBDcAlgUZAJYENwCWBRkAlgQ3AJYFGQCWBDcAlgUZAJYENwCWBRkAlgQ3AJYGQgB9BTUAlgT4ADID7wBLBSkAlgPsAJYFKQCWA+wAlgUpAJYD7ACWBp0AfQgJAFoHDQB9BNIAWgZCAH0FNQCWBkIAfQU1AJYGQgB9BTUAlgwAAAAD9gAZATcAMgF5AH0CdwB9A5gAfQPiAFoDwQBaA+IAWgPBAFoAAAAD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AMT+0wAkAMX/YQAkAMYAlwAkAMv/twAlAA//twAlABH/twAlAB3/twAlAB7/twAlACT/9gAlAMH/twAlAMP/3AAlAMT/twAlAMb/3AAmAA//3AAmABH/3AAmAB3/3AAmAB7/3AAmACT/2AAmAMH/3AAmAMIAcgAmAMP/yQAmAMT/3AAmAMUAcgAmAMb/yQAnAA//kAAnABAAJgAnABH/kAAnAB3/3AAnAB7/3AAnACT/zgAnADn/zgAnADr/4gAnADz/0wAnAMH/3AAnAMIAOQAnAMP/kAAnAMT/3AAnAMUAOQAnAMb/kAAoAA//3AAoABD/3AAoABH/3AAoAB3/twAoAB7/twAoAGv/3AAoAHX/3AAoAMv/3AAoAMz/3AApAA/++AApABD/yQApABH++AApAB3/kAApAB7/kAApACT/pAApADb/twApAET/0wApAEj/0wApAEz/3AApAFL/0wApAFX/3AApAFj/3AApAFz/0wApAGv/twApAHX/twApAHz/pAApAJz/0wApAK3/0wApAMP/DQApAMb/DQApAMv/twApAMz/twApAQX/0wAqAA//twAqABH/twAqAB3/3AAqAB7/3AAqADz/8QAqAMH/3AAqAMIALwAqAMP/kAAqAMT/3AAqAMUALwAqAMb/kAArAA//3AArABH/3AArAB3/3AArAB7/3AArAMIAJgArAMUAJgAsAA//3AAsABH/3AAsAB3/3AAsAB7/3AAsAMIAJgAsAMUAJgAtAA//twAtABH/twAtAB3/3AAtAB7/3AAtACT/4gAtAET/7AAtAMIAJgAtAMP/yQAtAMUAJgAtAMb/yQAuAA//3AAuABD/kAAuABH/3AAuAB3/3AAuAB7/3AAuACb/pAAuADL/pAAuADr/3AAuADz/3AAuAET/twAuAEj/twAuAFL/twAuAFj/yQAuAFz/twAuAGv/RAAuAHX/kAAuAI//pAAuAJz/twAuAK3/twAuAMEAJgAuAMIAJgAuAMMASwAuAMQAJgAuAMUAJgAuAMYASwAuAMv/RAAuAMz/kAAuAQT/pAAuAQX/twAvAA//twAvABD/awAvABH/twAvAB3/3AAvAB7/3AAvADL/twAvADf/rQAvADj/3AAvADn/RAAvADr/iAAvADz/kAAvAET/wQAvAEj/wQAvAFL/wQAvAFj/wQAvAFz/kAAvAGv/RAAvAHX/kAAvAI//twAvAJz/wQAvAK3/wQAvAMH/HwAvAML/HwAvAMMAJgAvAMT/HwAvAMX/HwAvAMYAJgAvAMv/RAAvAMz/kAAvAQT/twAvAQX/wQAwAA//3AAwABH/3AAwAB3/3AAwAB7/3AAwAMIAJgAwAMUAJgAxAA//3AAxABH/3AAxAB3/3AAxAB7/3AAxAMIAJgAxAMUAJgAyAA//kAAyABH/kAAyAB3/3AAyAB7/3AAyACT/xAAyADf/twAyADn/0wAyADr/7AAyADv/yQAyADz/2AAyAMH/3AAyAMIAOQAyAMP/kAAyAMT/3AAyAMUAOQAyAMb/kAAzAA/+PAAzABD/awAzABH+PAAzAB3/twAzAB7/twAzACT/fQAzAET/pAAzAEj/pAAzAEz/3AAzAFH/3AAzAFL/pAAzAFX/3AAzAFb/yQAzAFj/3AAzAGv/awAzAHX/kAAzAHz/fQAzAJz/pAAzAK3/pAAzAMIAOQAzAMP+0wAzAMUAOQAzAMb+0wAzAMv/awAzAMz/kAAzAQX/pAA0AA//3AA0ABH/3AA0AMH/3AA0AMIAOQA0AMMAJgA0AMT/3AA0AMUAOQA0AMYAJgA1AA//kAA1ABD/twA1ABH/kAA1AB3/3AA1AB7/3AA1ADcADwA1ADn/9gA1ADoACgA1ADz/9gA1AET/3AA1AEj/3AA1AFL/3AA1AGv/kAA1AHX/twA1AJz/3AA1AK3/3AA1AMH/twA1AMIALwA1AMT/twA1AMUALwA1AMv/kAA1AMz/twA1AQX/3AA2AA//twA2ABAAJgA2ABH/twA2AB3/3AA2AB7/3AA2AMH/3AA2AMIAOQA2AMP/3AA2AMT/3AA2AMUAOQA2AMb/3AA3AA//awA3ABD/kAA3ABH/awA3AB3/twA3AB7/twA3ACT/twA3ACb/twA3ADL/twA3AET/rQA3AEb/rQA3AEj/rQA3AFL/rQA3AFX/0wA3AFb/wQA3AFj/0wA3AFr/0wA3AFz/3AA3AGv/awA3AHX/kAA3AHz/twA3AI//twA3AJz/rQA3AK3/rQA3AMEASwA3AMIAJgA3AMP/twA3AMQASwA3AMUAJgA3AMb/twA3AMv/awA3AMz/kAA3AQT/twA3AQX/rQA4AA//twA4ABH/twA4ACT/2AA4AGv/3AA4AHX/yQA4AMIAJgA4AMP/3AA4AMUAJgA4AMb/3AA4AMv/3AA4AMz/yQA5AA//HwA5ABD/kAA5ABH/HwA5AB3/twA5AB7/twA5ACT/yQA5ACr/7AA5ADL/0wA5AET/kAA5AEj/kAA5AEz/3QA5AFL/kAA5AFj/wQA5AFz/3AA5AGv/RAA5AHX/awA5AHz/yQA5AJz/kAA5AK3/kAA5AMEAcgA5AMIAcgA5AMP/RAA5AMQAcgA5AMUAcgA5AMb/RAA5AMv/RAA5AMz/awA5AQX/kAA6AA//awA6ABD/kAA6ABH/awA6AB3/3AA6AB7/3AA6ACT/xgA6ADL/7AA6AET/twA6AEj/twA6AEz/9gA6AFL/twA6AFX/3AA6AFj/yQA6AFz/7AA6AGv/awA6AHX/kAA6AJz/twA6AK3/twA6AMEAcgA6AMIAcgA6AMP/awA6AMQAcgA6AMUAcgA6AMb/awA6AMv/awA6AMz/kAA6AQX/twA7AA//3AA7ABD/twA7ABH/3AA7AB3/3AA7AB7/3AA7ACb/yQA7ADL/yQA7AEj/3AA7AGv/RAA7AHX/twA7AI//yQA7AMEAJgA7AMIAJgA7AMMAXgA7AMQAJgA7AMUAJgA7AMYAXgA7AMv/RAA7AMz/twA7AQT/yQA8AA//HwA8ABD/kAA8ABH/HwA8AB3/twA8AB7/twA8ACT/twA8ADL/2AA8AET/dQA8AEj/dQA8AEz/8QA8AFL/dQA8AFj/mgA8AGv/HwA8AHX/awA8AHz/twA8AJz/dQA8AK3/dQA8AMEAcgA8AMIAXgA8AMP/awA8AMQAcgA8AMUAXgA8AMb/awA8AMv/HwA8AMz/awA8AQX/dQA9AA//twA9ABD/awA9ABH/twA9AGv/RAA9AHX/twA9AMIAOQA9AMMASwA9AMUAOQA9AMYASwA9AMv/RAA9AMz/twBEAA//3ABEABH/3ABEAEUABQBEAFMAFABEAFcABQBEAGv/3ABEAMH/3ABEAMIAJgBEAMT/3ABEAMUAJgBEAMv/3ABFAA//twBFABH/twBFAB3/3ABFAB7/3ABFAFj/9gBFAFn/7ABFAFz/7ABFAHX/3ABFAMH/awBFAMT/awBFAMz/3ABGAA//twBGABH/twBGAB3/3ABGAB7/3ABGAE7/8QBGAFz/7ABGAGv/3ABGAHX/3ABGAMH/awBGAMT/awBGAMv/3ABGAMz/3ABHAA//3ABHABH/3ABHAGv/3ABHAMIASwBHAMUASwBHAMv/3ABIAA//twBIABH/twBIAB3/3ABIAB7/3ABIAFn/7ABIAFr/7ABIAFz/7ABIAHX/3ABIAMH/awBIAMT/awBIAMz/3ABJAA//awBJABD/3ABJABH/awBJAET/7ABJAEn/8QBJAEz/4gBJAE//4gBJAFL/7ABJAGv/kABJAHX/twBJALX/4gBJAMEASwBJAMIAlwBJAMQASwBJAMUAlwBJAMv/kABJAMz/twBKAA//3ABKABH/3ABKAET/8QBKAGv/3ABKAMH/3ABKAMIAJgBKAMT/3ABKAMUAJgBKAMv/3ABLAA//3ABLABH/3ABLAFz/4gBLAGv/3ABLAMH/kABLAMT/kABLAMv/3ABMAA//3ABMABH/3ABMAGv/3ABMAMIASwBMAMUASwBMAMv/3ABNAA//3ABNABH/3ABNAGv/3ABNAMIASwBNAMUASwBNAMv/3ABOAA//3ABOABD/twBOABH/3ABOAET/3ABOAEj/3ABOAFL/3ABOAFz/5wBOAGv/kABOAHX/3ABOAJz/3ABOAK3/3ABOAMH/3ABOAMIASwBOAMT/3ABOAMUASwBOAMv/kABOAMz/3ABOAQX/3ABPAA//3ABPABH/3ABPAFr/7ABPAGv/3ABPAMIASwBPAMUASwBPAMv/3ABQAA//3ABQABH/3ABQAFj/7ABQAFz/7ABQAGv/3ABQAMH/kABQAMT/kABQAMv/3ABRAA//3ABRABH/3ABRAFj/8QBRAFn/4gBRAFz/8QBRAGv/3ABRAMH/kABRAMT/kABRAMv/3ABSAA//twBSABH/twBSAB3/3ABSAB7/3ABSAFn/4gBSAFr/7ABSAFv/8QBSAFz/7ABSAHX/3ABSAMH/awBSAMT/awBSAMz/3ABTAA//twBTABH/twBTAB3/3ABTAB7/3ABTAFz/7ABTAHX/3ABTAMH/awBTAMT/awBTAMz/3ABUAA//3ABUABH/3ABUAGv/3ABUAMH/3ABUAMIASwBUAMT/3ABUAMUASwBUAMv/3ABVAA//awBVABD/3ABVABH/awBVAEb/+QBVAEf/+gBVAEj//ABVAEkASwBVAEoAAQBVAEwAFABVAE4AFABVAE8AFABVAFAAHABVAFEAFQBVAFL/7ABVAFMAFABVAFT/+ABVAFYAFABVAFcAKABVAFgAFABVAFkASwBVAFoASwBVAFsASwBVAFwAcgBVAF0AJgBVAGv/kABVAHX/3ABVAMIAlwBVAMUAlwBVAMv/kABVAMz/3ABVAVMASwBVAVQASwBWAA//twBWABH/twBWAFcADwBWAMH/kABWAMIAJgBWAMT/kABWAMUAJgBXAA//kABXABD/3ABXABH/kABXAGv/twBXAHX/yQBXAMEAJgBXAMIAcgBXAMQAJgBXAMUAcgBXAMv/twBXAMz/yQBYAA//3ABYABH/3ABYAF0ADwBYAGv/3ABYAMH/twBYAMIASwBYAMT/twBYAMUASwBYAMv/3ABZAA//HwBZABD/twBZABH/HwBZAB3/3ABZAB7/3ABZAET/4gBZAEj/7ABZAFL/7ABZAGv/kABZAHX/twBZAMIAcgBZAMUAcgBZAMv/kABZAMz/twBaAA//awBaABD/twBaABH/awBaAB3/3ABaAB7/3ABaAET/4gBaAEj/7ABaAEsADwBaAFL/4gBaAGv/kABaAHX/twBaAMIAcgBaAMUAcgBaAMv/kABaAMz/twBbAA//3ABbABD/twBbABH/3ABbAB3/3ABbAB7/3ABbAEwADwBbAGv/kABbAHX/twBbAMIAcgBbAMUAcgBbAMv/kABbAMz/twBcAA//RABcABD/3ABcABH/RABcAET/4gBcAEj/7ABcAFL/4gBcAGv/twBcAHX/3ABcAMEAJgBcAMIAlwBcAMQAJgBcAMUAlwBcAMv/twBcAMz/3ABdAA//twBdABD/3ABdABH/twBdAB3/3ABdAB7/3ABdAGv/awBdAHX/3ABdAMH/3ABdAMIASwBdAMT/3ABdAMUASwBdAMv/awBdAMz/3ABrAC3/3ABrADf/kABrADj/yQBrADn/awBrADr/kABrADv/twBrADz/awBrAD3/3ABrAET/3ABrAEb/3ABrAEf/3ABrAEj/3ABrAEn/3ABrAEr/3ABrAE0AJgBrAFL/3ABrAFf/yQBrAFn/twBrAFr/twBrAFv/twBrAJz/3ABrAK3/3ABrAOf/3ABrAQX/3ABrAVP/3ABrAVT/3AB1ACT/twB1AC3/twB1ADb/twB1ADf/awB1ADj/3AB1ADn/RAB1ADr/awB1ADv/RAB1ADz/HwB1AD3/twB1AEX/3AB1AEn/3AB1AEv/3AB1AEz/3AB1AE7/3AB1AE//3AB1AFD/3AB1AFH/3AB1AFP/3AB1AFX/3AB1AFf/twB1AFj/3AB1AFn/kAB1AFr/kAB1AFv/kAB1AFz/yQB1AF3/twB1AHz/twB1AVP/3AB1AVT/3AB8AA//3AB8ABD/3AB8ABH/3AB8AB3/3AB8AB7/3AB8ADYAOQB8ADf/twB8ADn/yQB8ADz/twB8AFn/wQB8AFr/yQB8AFz/3AB8AGv/twB8AMH+0wB8AML/YQB8AMMAlwB8AMT+0wB8AMX/YQB8AMYAlwB8AMv/twB9AA//3AB9ABD/3AB9ABH/3AB9AB3/twB9AB7/twB9AGv/3AB9AHX/3AB9AMv/3AB9AMz/3ACHAA//kACHABAAJgCHABH/kACHAB3/3ACHAB7/3ACHAMH/3ACHAMIAOQCHAMP/kACHAMT/3ACHAMUAOQCHAMb/kACPAA//kACPABH/kACPAB3/3ACPAB7/3ACPADf/twCPADv/yQCPAMH/3ACPAMIAOQCPAMP/kACPAMT/3ACPAMUAOQCPAMb/kACbAA//3ACbABH/3ACbAGv/3ACbAMH/3ACbAMIAJgCbAMT/3ACbAMUAJgCbAMv/3ACcAA//twCcABH/twCcAB3/3ACcAB7/3ACcAHX/3ACcAMH/awCcAMT/awCcAMz/3ACtAA//twCtABH/twCtAB3/3ACtAB7/3ACtAHX/3ACtAMH/awCtAMT/awCtAMz/3ADBACT/kADBACUAJgDBACYAOQDBACcAJgDBACgAJgDBACkAJgDBACoAOQDBACsAJgDBACwAJgDBAC3++ADBAC4AJgDBAC8AJgDBADAAJgDBADEAJgDBADIAOQDBADMAJgDBADQAXgDBADUAJgDBADYAOQDBADcAJgDBADgAJgDBADkAcgDBADoAcgDBADsAJgDBADwAXgDBAD0AJgDBAEUASwDBAEkAcgDBAEsASwDBAEwASwDBAE0ASwDBAE4ASwDBAE8ASwDBAFAASwDBAFEASwDBAFMASwDBAFUASwDBAFYAJgDBAFcAcgDBAFgASwDBAFkAcgDBAFoAcgDBAFsASwDBAFwAlwDBAF0ASwDBAHz/kADBAH3/RADBAIcAJgDBAI8AOQDBAMH/hwDBAQQAOQDBAQsASwDBAVMAcgDBAVQAcgDCAAP/nADCAEf/ugDCAFX/7ADCAFb/8QDCAFcACgDCAFn/7ADCAML/hwDDACQASwDDAC0ASwDDADf/twDDADn/awDDADr/awDDADz/RADDAEUAJgDDAEgAJgDDAEoAJgDDAE0AcgDDAFMASwDDAFUAJgDDAFYAOQDDAFf/3ADDAFn/kADDAFr/twDDAFsAJgDDAFz/3ADDAF0AOQDDAHwASwDDAH0AcgDDAQsAJgDEACT/kADEACUAJgDEACYAOQDEACcAJgDEACgAJgDEACkAJgDEACoAOQDEACsAJgDEACwAJgDEAC3++ADEAC4AJgDEAC8AJgDEADAAJgDEADEAJgDEADIAOQDEADMAJgDEADQAXgDEADUAJgDEADYAOQDEADcAJgDEADgAJgDEADkAcgDEADoAcgDEADsAJgDEADwAXgDEAD0AJgDEAEUASwDEAEkAcgDEAEsASwDEAEwASwDEAE0ASwDEAE4ASwDEAE8ASwDEAFAASwDEAFEASwDEAFMASwDEAFUASwDEAFYAJgDEAFcAcgDEAFgASwDEAFkAcgDEAFoAcgDEAFsASwDEAFwAlwDEAF0ASwDEAHz/kADEAH3/RADEAIcAJgDEAI8AOQDEAQQAOQDEAQsASwDEAVMAcgDEAVQAcgDFAAP/nADGACQASwDGAC0ASwDGADf/twDGADn/awDGADr/awDGADz/RADGAEUAJgDGAEgAJgDGAEoAJgDGAE0AcgDGAFMASwDGAFUAJgDGAFYAOQDGAFf/3ADGAFn/kADGAFr/twDGAFsAJgDGAFz/3ADGAF0AOQDGAHwASwDGAH0AcgDGAQsAJgDLAC3/3ADLADf/kADLADj/yQDLADn/awDLADr/kADLADv/twDLADz/awDLAD3/3ADLAET/3ADLAEb/3ADLAEf/3ADLAEj/3ADLAEn/3ADLAEr/3ADLAE0AJgDLAFL/3ADLAFf/yQDLAFn/twDLAFr/twDLAFv/twDLAJz/3ADLAK3/3ADLAOf/3ADLAQX/3ADLAVP/3ADLAVT/3ADMACT/twDMAC3/twDMADb/twDMADf/awDMADj/3ADMADn/RADMADr/awDMADv/RADMADz/HwDMAD3/twDMAEX/3ADMAEn/3ADMAEv/3ADMAEz/3ADMAE7/3ADMAE//3ADMAFD/3ADMAFH/3ADMAFP/3ADMAFX/3ADMAFf/twDMAFj/3ADMAFn/kADMAFr/kADMAFv/kADMAFz/yQDMAF3/twDMAHz/twDMAVP/3ADMAVT/3ADnAA//3ADnABH/3ADnAGv/3ADnAMIASwDnAMUASwDnAMv/3AEEAA//3AEEABD/3AEEABH/3AEEAB3/twEEAB7/twEEAGv/3AEEAHX/3AEEAMv/3AEEAMz/3AEFAA//twEFABH/twEFAB3/3AEFAB7/3AEFAHX/3AEFAMH/awEFAMT/awEFAMz/3AELAA//twELABAAJgELABH/twELAB3/3AELAB7/3AELAHX/3AELAMH/awELAML/3AELAMT/awELAMX/3AELAMz/3AFTAA//3AFTABH/3AFTAGv/3AFTAMIASwFTAMUASwFTAMv/3AFUAA//3AFUABH/3AFUAGv/3AFUAMIASwFUAMUASwFUAMv/3AAAAAAAKwIKAAEAAAAAAAAANAAAAAEAAAAAAAEADQA0AAEAAAAAAAIABABCAAEAAAAAAAMAHwA0AAEAAAAAAAQAEgA0AAEAAAAAAAUAGgBTAAEAAAAAAAYAEQBtAAEAAAAAAAoAPwB+AAMAAQQDAAIADgC9AAMAAQQFAAIACgDLAAMAAQQGAAIABgDVAAMAAQQHAAIACADbAAMAAQQIAAIADADjAAMAAQQJAAAAdgDvAAMAAQQJAAEAGgO1AAMAAQQJAAIACAGBAAMAAQQJAAMAPgFlAAMAAQQJAAQAJAFlAAMAAQQJAAUANAGjAAMAAQQJAAYAIgHXAAMAAQQJAAkAHgEPAAMAAQQJAAoBkAH5AAMAAQQJAAwALAOJAAMAAQQJAA0BeAO1AAMAAQQKAAIADgXVAAMAAQQLAAIAEgUtAAMAAQQMAAIACAVPAAMAAQQOAAIAEAU/AAMAAQQQAAIAEgVPAAMAAQQTAAIABgVhAAMAAQQUAAIADgVnAAMAAQQVAAIAFAV1AAMAAQQWAAIADgXHAAMAAQQZAAIAFAWJAAMAAQQbAAIACgWdAAMAAQQdAAIABgDbAAMAAQQfAAIACgWnAAMAAQQkAAIADAWxAAMAAQQtAAIACgW9AAMAAQgKAAIADgXVAAMAAQgWAAIADgXHAAMAAQwKAAIADgXVAAMAAQwMAAIACAVPVHlwZWZhY2UgqSAoeW91ciBjb21wYW55KS4gMjAwOS4gQWxsIFJpZ2h0cyBSZXNlcnZlZENhdmlhciBEcmVhbXMgQm9sZDpWZXJzaW9uIDMuMDBWZXJzaW9uIDMuMDAgTWFyY2ggMiwgMjAxMENhdmlhckRyZWFtcy1Cb2xkVGhpcyBmb250IHdhcyBjcmVhdGVkIHVzaW5nIEZvbnRDcmVhdG9yIDUuNiBmcm9tIEhpZ2gtTG9naWMuY29tAE4AZQBnAHIAZQB0AGEAdAB1AQ0AbgDpAGYAZQBkAEYAZQB0AHQDiAO9A8QDvwO9A7EAQwBhAHYAaQBhAHIAIABEAHIAZQBhAG0AcwAgAKkAIABMAGEAdQByAGUAbgAgAFQAaABvAG0AcABzAG8AbgAgADIAMAAxADAALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgAgAEMAYQB2AGkAYQByACAARAByAGUAYQBtAHMAIABCAG8AbABkADoAVgBlAHIAcwBpAG8AbgAgADMALgAwADAAVgBlAHIAcwBpAG8AbgAgADMALgAwADAAIABNAGEAcgBjAGgAIAAyACwAIAAyADAAMQAwAEMAYQB2AGkAYQByAEQAcgBlAGEAbQBzAC0AQgBvAGwAZABBACAAZwBlAG8AbQBlAHQAcgBpAGMAIABzAGEAbgBzACAAcwBlAHIAaQBmACAAdwBpAHIAaAAgAGEAIABkAGEAcwB0AGEAcgBkAGwAeQAgAGEAbgBnAGwAZQBkACAAbABvAHcAZQByAGMAYQBzAGUAIABsAGUAdAB0AGUAcgAgAGUALAAgAGEAbgBkACAAdABoAG8AcwBlACAAdwAnAHMAIAB3AGkAdABoACAAdABoAG8AcwBlACAAbABvAHYAZQBsAHkAIABsAGUAdAB0AGUAcgAgAGwAdQBtAHAAcwAuACAARQB4AHQAcgBlAG0AZQAgAHIAbwB1AG4AZAAgAG8AdgBlAHIAcwBoAG8AbwB0ACAAbQBhAHkAIABiAGUAIABkAGkAcwB0AHUAcgBiAGkAbgBnACAAdABvACAAcwBvAG0AZQAgAHYAaQBlAHcAZQByAHMALgAgAFYAaQBlAHcAZQByACAAZABpAHMAYwByAGUAdABpAG4AIABpAHMAIABhAGQAdgBpAHMAZQBkAC4AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAG4AeQBtAGYAbwBuAHQALgBjAG8AbQBDAGEAdgBpAGEAcgAgAEQAcgBlAGEAbQBzACAAbQBhAHkAIABiAGUAIAB1AHMAZQBkACAAcABlAHIAcwBvAG4AYQBsAGwAeQAgAG8AcgAgAGMAbwBtAG0AZQByAGMAaQBhAGwAbAB5ACAAaABvAHcAZQB2AGUAcgAgAHQAaABlACAAZgBvAG4AdAAgAGQAYQB0AGEAIABpAHQAcwBlAGwAZgAgAG0AYQB5ACAAbgBvAHQAIABiAGUAIAByAGUAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAcwBvAGwAZAAgAGEAdAAgAGEAbgB5ACAAbQBlAGEAcwB1AHIAZQAgAG8AcgAgAGkAbgAgAGEAbgB5ACAAZgBvAHIAbQAuACAARQBtAGEAaQBsACAAbgB5AG0AcABoAG8AbgB0AEAAeQBhAGgAbwBvAC4AYwBvAG0AIABmAG8AcgAgAHMAcABlAGMAaQBmAGkAYwAgAGQAZQB0AGEAaQBsAHMATABpAGgAYQB2AG8AaQB0AHUARgDpAGwAawD2AHYA6QByAEcAcgBhAHMAcwBlAHQAdABvAFYAZQB0AEgAYQBsAHYAZgBlAHQAUABvAGcAcgB1AGIAaQBvAG4AeQQfBD4EOwRDBDYEOARABD0ESwQ5AFQAdQENAG4A6QBLAGEAbAExAG4ASwByAGUAcABrAG8ATABvAGQAaQBhAE4AZQBnAHIAaQB0AG8ATgBlAGcAcgBpAHQAYQAAAAACAAAAAAAA/ycAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAVcAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAKMAhACFAL0AlgDoAIYAjgCLAKkAigDaAIMAkwCNAJcAiADDAN4AqgCiAK0AyQDHAK4AYgBjAJAAZADLAGUAyADKAM8AzADNAM4A6QBmANMA0ADRAK8AZwDwAJEA1gDUANUAaADrAO0AagBpAGsAbQBsAG4AoABvAHEAcAByAHMAdQB0AHYAdwB4AHoAeQB7AH0AfAC4AKEAfwB+AIAAgQDsAO4AugDXANgA4QECANsA3ADdAOAA2QDfALIAswC2ALcAxAC0ALUAxQCCAMIAhwCrAL4AvwC8APcBAwEEAQUAjADvAKcAlACVAJ0AngDqAQYBBwEIAQkA/QD+AQoBCwEMAQ0A/wEAAQ4BAQEPARABEQESARMBFAEVARYBFwEYAPgA+QEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoALAAsQC7ASkBKgDGASsAiQEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgD7APwA5ADlAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwA5gDnAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAd1bmkwMkM5BGxpcmEERXVybwlhZmlpNjEzNTIHQW1hY3JvbgdhbWFjcm9uBkFicmV2ZQZhYnJldmULQ2NpcmN1bWZsZXgLY2NpcmN1bWZsZXgKQ2RvdGFjY2VudApjZG90YWNjZW50BkRjcm9hdAdFbWFjcm9uB2VtYWNyb24GRWJyZXZlBmVicmV2ZQpFZG90YWNjZW50CmVkb3RhY2NlbnQGRWNhcm9uBmVjYXJvbgtHY2lyY3VtZmxleAtnY2lyY3VtZmxleApHZG90YWNjZW50Cmdkb3RhY2NlbnQGSWJyZXZlBmlicmV2ZQRMZG90BGxkb3QGTmFjdXRlBm5hY3V0ZQZOY2Fyb24GbmNhcm9uB09tYWNyb24Hb21hY3JvbgZPYnJldmUGb2JyZXZlDU9odW5nYXJ1bWxhdXQNb2h1bmdhcnVtbGF1dAZZZ3JhdmUGeWdyYXZlBnBlc2V0YQdBb2dvbmVrB2FvZ29uZWsGRGNhcm9uBmRjYXJvbgdFb2dvbmVrB2VvZ29uZWsMR2NvbW1hYWNjZW50DGdjb21tYWFjY2VudAtIY2lyY3VtZmxleAtoY2lyY3VtZmxleAZJdGlsZGUGaXRpbGRlB0ltYWNyb24HaW1hY3JvbgdJb2dvbmVrB2lvZ29uZWsKSWRvdGFjY2VudAZMYWN1dGUGbGFjdXRlBlJhY3V0ZQZyYWN1dGUGUmNhcm9uBnJjYXJvbgZTYWN1dGUGc2FjdXRlC1NjaXJjdW1mbGV4C3NjaXJjdW1mbGV4DFRjb21tYWFjY2VudAx0Y29tbWFhY2NlbnQGVXRpbGRlBnV0aWxkZQdVbWFjcm9uB3VtYWNyb24GVWJyZXZlBnVicmV2ZQVVcmluZwV1cmluZw1VaHVuZ2FydW1sYXV0DXVodW5nYXJ1bWxhdXQHVW9nb25lawd1b2dvbmVrC1djaXJjdW1mbGV4C3djaXJjdW1mbGV4C1ljaXJjdW1mbGV4C3ljaXJjdW1mbGV4BlphY3V0ZQZ6YWN1dGUKWmRvdGFjY2VudAp6ZG90YWNjZW50B0FFYWN1dGUHYWVhY3V0ZQtPc2xhc2hhY3V0ZQtvc2xhc2hhY3V0ZQZXZ3JhdmUGd2dyYXZlBldhY3V0ZQZ3YWN1dGUJV2RpZXJlc2lzCXdkaWVyZXNpcwlhZmlpMDAyMDgNdW5kZXJzY29yZWRibA1xdW90ZXJldmVyc2VkBm1pbnV0ZQZzZWNvbmQJZXhjbGFtZGJsB3VuaUYwMDEHdW5pRjAwMgd1bmlGQjAxB3VuaUZCMDIAAAAAAwAPAAIAEgAB//8AAg==); +}
+html { background: url(data:image/jpeg;base64,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Z09iamMAAAABAAAAAAAAUkdCQwAAAAMAAAAAUmQgIGRvdWJAb+AAAAAAAAAAAABHcm4gZG91YkBv4AAAAAAAAAAAAEJsICBkb3ViQG/gAAAAAAAAAAAAQnJkVFVudEYjUmx0AAAAAAAAAAAAAAAAQmxkIFVudEYjUmx0AAAAAAAAAAAAAAAAUnNsdFVudEYjUHhsQFIAAAAAAAAAAAAKdmVjdG9yRGF0YWJvb2wBAAAAAFBnUHNlbnVtAAAAAFBnUHMAAAAAUGdQQwAAAABMZWZ0VW50RiNSbHQAAAAAAAAAAAAAAABUb3AgVW50RiNSbHQAAAAAAAAAAAAAAABTY2wgVW50RiNQcmNAWQAAAAAAADhCSU0D7QAAAAAAEABIAAAAAQACAEgAAAABAAI4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0nEAAAAAAACgABAAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAAzsAAAAGAAAAAAAAAAAAAACVAAAATgAAAAMAdABvAHAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAE4AAACVAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAACVAAAAAFJnaHRsb25nAAAATgAAAAZzbGljZXNW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AAgAAAABAQD/4Q27aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkVDNTc5NzFCOTNCRUUwMTE5QTFEQjFDQzJENDc5QzFFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjExMjg1MjgwQkVBNzExRTBCNkIxRUM2NkJBNDI5MkY1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3QkJGRUUwOTNDMUUwMTE5NjA3OTQwQkRGMkY1RkVGIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyIgeG1wOkNyZWF0ZURhdGU9IjIwMTEtMDgtMDRUMTY6MjY6MjArMDI6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDExLTA4LTA4VDEwOjQzOjU3KzAyOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDExLTA4LTA4VDEwOjQzOjU3KzAyOjAwIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFRTU3OTcxQjkzQkVFMDExOUExREIxQ0MyRDQ3OUMxRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQzU3OTcxQjkzQkVFMDExOUExREIxQ0MyRDQ3OUMxRSIvPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpEN0JCRkVFMDkzQzFFMDExOTYwNzk0MEJERjJGNUZFRiIgc3RFdnQ6d2hlbj0iMjAxMS0wOC0wOFQxMDo0Mzo1NyswMjowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+4ADkFkb2JlAGRAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgIC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) repeat-x scroll 0px 82px, rgb(244, 242, 242) url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QNtaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDI5MjBBMENCRUE2MTFFMDg4NjA4MUNFRjg3NDZDMDQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDI5MjBBMEJCRUE2MTFFMDg4NjA4MUNFRjg3NDZDMDQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUU1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94Onht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) repeat scroll 0% 0%; font-family: sans-serif; min-height: 100%; width: 100%; }
+body { background: url(data:image/png;base64,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) no-repeat fixed 100% 100%, url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QNtaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUNDOTU3MzlCRjQyMTFFMDkzM0Q5NDA1NEQ5NjFGQ0EiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUNDOTU3MzhCRjQyMTFFMDkzM0Q5NDA1NEQ5NjFGQ0EiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUY1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94Onht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) no-repeat fixed 100% 50%, transparent url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QNtaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUMyODcyNjJCRUEyMTFFMEE4QkZFQ0Q5REJEOEVGRjIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUMyODcyNjFCRUEyMTFFMEE4QkZFQ0Q5REJEOEVGRjIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUU1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94Onht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) repeat-x scroll left 2em; color: rgb(68, 68, 68); margin: -2em 0px 0px; min-height: 100%; padding-bottom: 2em; position: absolute; width: 100%; }
+a { color: rgb(78, 154, 6); text-decoration: none; transition: color 0.3s linear 0s; }
+a:hover, a:focus { color: rgb(55, 110, 4); }
+table { border-collapse: collapse; margin: auto; }
+table td { border: 1px solid rgb(204, 187, 187); padding: 0.5em; }
+h2 { background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kJCg0JIQ47XRYAAAOtSURBVFjDvZZ/aFtVFMc/56XvdYnbLGYztA1ssrEJo5bCKEVlMGnVTvL+cD+CUopDSISq9A/1HxWE/eUmMv/oIFHEpp0yKg4aRIXNlQ22DrTTos7hdMw5ROq60rotfW3e8Y++1Gy4mviSfeHCI+/ecz7ve8+5N8J/KJayVovwkMKRbML5CyCWttYL2qsqL2WTTg4fMpZ6aaetGhGNq+phUfbE0qYJIKovoNIjorvwqSUBhhPOPMhhRL4E7QXpBVBkv8IVoMcvgJQyyU5b61U5JOj9wDPDybmhWMr6QkQfBVkznHB+rbgDdtp6wE5bazwnzgM9CpOI7LXT5kYR/VBVFIhXawtSQMZOW3tjKbMjm3RGRehVpRHkbZARERzgiaoAKHoCJYTyMsghO232A5eBd4BtQAz4EbSlKgCiskdFd6pou8CnqnSrypCITgPfAW8AM0DITptN1S3ClHUX8IiK7hckCpwFNgEOYAHdwwnno4q34WI7Jp1rw0knCzwGjAHN3tqQN+W+qpwDtyqbmDsPPAmMF60VYPUdAfBa8neFhMKEAt4I3TGABSec08umdQjIAxKa0ru/goaBhVE3CIGqAQxC3UF4fNurc6uC0yrLZtRYd8yN/wSXBc4KDABPD0JDxbqgKPla4DWFZwPAzw8aiAvhC66u/APRxTMEBI4Cr3fBqYoADEAE6BPY7iXRGi+GC7j/BNOiuOeAeBd863sLBOIC272vVAHJL4ybMhY9KrAReGupmjBKtL4BaPeia4nOFea0A21+HbgX2KDl102hLGy/ABYQlPI7trBkk1+AnHfx/F+t9AswBfx2i63lyPULMOG1VFk1UHRUT/kC6IIb3gVUclIXMAwDc/lyBG77n7GmDBu/ZuFAaXZv04qFH81gkGBjI5EtW1QCAfklkznD7Kw/gC74ZgBGBJpXbd4sYhian50VnZtDDAPDsqhZsYJgfT33tLTQ0NlJXVOTnE4mCdTWnvAN4H1hxoXOdbt3b4hs3Uo+l8N1HMQwCASD1IbDBOvrF6fnr1+XiZMnz6jjXKBSeh9e/Ky19UZuclJV1dV/keu6qqru9/v26ceRyFOpMi+9JZWBmg+g7/iOHerOzxcnvCn5lbEx/byt7Xg/hKm03oPgoEjf0Y4OzU1MLDpRSH7t0iUdse2rg/Aw1dK7YB4MBJ77JBrVcwcOFCDcq+PjeqS9fWYAdr1SgvW+9qYfxIC1AdN8MxSN7gy3tvLn6OgPMxcvPt8Nx0qJ8Tdi/ZlMi2CSwQAAAABJRU5ErkJggg==) no-repeat scroll left top; color: rgb(164, 0, 0); font-family: "caviardreams"; margin-bottom: 35px; padding: 8px 0px 0px 35px; text-transform: uppercase; }
+h3 { color: rgb(164, 0, 0); font-family: "caviardreams"; font-size: 1.4em; margin: 0.5em 0px; }
+h3 a { background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAADqSURBVHjahI2xSsRAFEVnWVBB2A/YP/AjrP0wOwstJU2qVCmCpEqRIt3AwID1FrJCSHYnqZI0wYfHxlndjRsfXG7xzuWoYbtdAuqj75efIpeAzxWwAq6/ewFcKEA516y1sU4bW2pj33+l0saKNhbXtPeAUq5p77SxG2ZORMjyYiir+lFpY/kP9h0nKWcHWV4cwcD8IE5SgjA6wF0/TAdZXhCE0SR/Gk71QRjx8PRM1w9TwyksIkewiLDbu3mD73Ec6frhZ+Ca9jXLixf/9Hrfu707wGVVxwq4Kav6Nk7StzhJOZeyqgEWXwMAH1n8QMRY5z0AAAAASUVORK5CYII=) no-repeat scroll 0px 35%; color: rgb(164, 0, 0); font-family: "caviardreams"; padding-left: 20px; }
+h3 a:hover { color: rgb(164, 0, 0); }
+h4, h4 a { border-bottom: 1px dotted rgb(230, 230, 230); color: rgb(203, 0, 0); font-family: Courier,monospace; font-size: 1.1em; }
+section h4 a:hover { color: rgb(203, 0, 0); }
+body > header { position: absolute; top: 2em; }
+h1 { box-shadow: 0px 0px 10px rgb(214, 214, 214); position: relative; top: -50px; transform: rotate(-35deg); z-index: 2; }
+h1 a { background: white url(data:image/png;base64,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) no-repeat scroll center center; color: transparent; display: block; height: 250px; transition: all 0.7s ease 0s; width: 165px; }
+h1 a:hover, h1 a:focus { background-color: rgb(249, 249, 249); box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.6); color: transparent; }
+nav { display: table; margin: 2em auto 150px; table-layout: fixed; width: 900px; z-index: -1; }
+nav ul { display: table-row; font-family: "caviardreams"; font-size: 1.3em; text-align: center; padding: 0px; }
+nav li { display: table-cell; }
+nav li a { color: rgb(131, 221, 0); display: block; margin: auto; line-height: 82px; text-align: center; text-shadow: 0px 0px 3px black; }
+nav li a:hover, nav li a:focus { color: rgb(131, 221, 0); text-shadow: none; }
+nav li a[href] { background-image: linear-gradient(white, white); background-position: 0px -82px; background-repeat: no-repeat; color: white; transition: all 0.6s ease 0s; }
+nav li a[href]:hover, nav li a[href]:focus { background-position: 0px 0px; box-shadow: 0px 0px 10px rgb(99, 99, 99); color: rgb(78, 154, 6); }
+body > section { margin: 0px auto; max-width: 70em; width: 75%; }
+.contents { background: rgba(46, 52, 54, 0.05) none repeat scroll 0% 0%; border-radius: 5px; box-shadow: 5px 5px 5px rgba(46, 52, 54, 0.2); color: black; margin: 0px auto; padding: 0.5em 2em; width: 60%; }
+.contents a { color: grey; }
+.contents a:hover { color: black; }
+.contents ul { list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB4SURBVHjajJC7CoAwEATPByLo/1fze1apRbBwbRI5jiR4MNXu5JKYpCFjjjHjs1nSaKForjRJ2kK21wSTtAMPoJhVBeBSHuBsCsANqOCkJwqzL/hJ6VBKRzngExbgCws9oVxJnljuPbpabgp+W+9bh5b8a0OD9R0A5oW9xqRnF54AAAAASUVORK5CYII=); }
+.contents ul li li { list-style: outside none disc; }
+article { background: rgba(255, 255, 254, 0.5) none repeat scroll 0% 0%; border-radius: 5px; box-shadow: 0px 0px 10px rgb(214, 214, 214); margin: -30px auto 50px; padding: 20px; }
+.docinfo { display: none; }
+.abstract { opacity: 0.8; font-style: italic; margin-top: -1em; }
+body > footer { border-bottom: 2px dotted rgb(78, 154, 6); bottom: 0px; height: 2em; left: 0px; right: 0px; position: absolute; text-align: center; }
+body > footer ul { margin: 0px auto; }
+body > footer li { display: inline; padding: 0px 0.75em; }
+body > footer li a { color: rgb(164, 0, 0); font-variant: small-caps; }
+body > footer li a:hover { color: rgb(63, 0, 0); }
+--></style> + <link href="index_files/icon.png" type="image/png" rel="shortcut icon"> + <link href="http://radicale.org/rss" type="application/rss+xml" rel="alternate" title=" RSS 2.0"> + <script async="" type="text/javascript">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script><script>data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> + + <script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script> + + </head> + + <body> + <header> + <h1><a href="http://radicale.org/">Radicale</a></h1> + </header> + + <nav> + + <ul> + + + <li> + <a href="http://radicale.org/news/">News</a> + + </li> + + + + + + <li> + <a href="http://radicale.org/documentation/">Documentation</a> + + </li> + + + + + + <li> + <a href="http://radicale.org/contribute/">Contribute</a> + + </li> + + + + + + <li> + <a href="http://radicale.org/download/">Download</a> + + </li> + </ul> + + </nav> + + + <section class="page-project_description"> + <article><header itemscope="itemscope"><h2>Project Description</h2><table class="docinfo"><tbody><tr><th>Author</th><td itemprop="author">Guillaume Ayoub</td></tr><tr><th>Date</th><td itemprop="date"><time>2010-01-22</time></td></tr></tbody></table></header><aside class="abstract topic"><p>This document defines the main goals of the Radicale +Project, what it covers and what it does not.</p></aside><aside id="idcontents" class="contents topic"><ul><li><a id="idid9" href="#idmain-goals" class="reference internal">Main Goals</a></li><li><a id="idid10" href="#idwhat-radicale-is" class="reference internal">What Radicale Is</a><ul><li><a id="idid11" href="#idcalendar-and-contact-server" class="reference internal">Calendar and Contact Server</a></li></ul></li><li><a id="idid12" href="#idwhat-radicale-is-not-and-will-not-be" class="reference internal">What Radicale Is not and will not Be</a><ul><li><a id="idid13" href="#idcalendar-or-contact-user-agent" class="reference internal">Calendar or Contact User Agent</a></li><li><a id="idid14" href="#idoriginal-calendar-or-contact-access-protocol" class="reference internal">Original Calendar or Contact Access Protocol</a></li></ul></li></ul></aside><section id="idmain-goals"><header><h3><a href="#idid9">Main Goals</a></h3></header><p>The Radicale Project is a complete calendar and contact storing and +manipulating solution. It can store multiple calendars and multiple address +books.</p><p>Calendar and contact manipulation is available from both local and distant +accesses, possibly limited through authentication policies.</p></section><section id="idwhat-radicale-is"><header><h3><a href="#idid10">What Radicale Is</a></h3></header><section id="idcalendar-and-contact-server"><header><h4><a href="#idid11">Calendar and Contact Server</a></h4></header><p>The Radicale Project is mainly a calendar and contact server, giving local and +distant access for reading, creating, modifying and deleting multiple +calendars through simplified CalDAV and CardDAV protocols.</p><p>Data can be encrypted by SSL, and their access can be restricted using +different authentication methods.</p></section></section><section id="idwhat-radicale-is-not-and-will-not-be"><header><h3><a href="#idid12">What Radicale Is not and will not Be</a></h3></header><section id="idcalendar-or-contact-user-agent"><header><h4><a href="#idid13">Calendar or Contact User Agent</a></h4></header><p>Radicale is a server, not a client. No interfaces will be created to work with +the server, as it is a really (really really) much more difficult task <a id="idid1" href="#idid2" class="ref">[1]</a>.</p><footer><div><a id="idid2" href="#idid1">[1]</a><p>I repeat: <a href="http://www.radicale.org/technical_choices#lazy" class="reference external">we are lazy</a>.</p></div></footer></section><section id="idoriginal-calendar-or-contact-access-protocol"><header><h4><a href="#idid14">Original Calendar or Contact Access Protocol</a></h4></header><p>CalDAV and CardDAV are not perfect protocols. We think that their main problem is +their complexity <a id="idid3" href="#idid6" class="ref">[2]</a>, that is why we decided not to implement the whole +standard but just enough to understand some of its client-side implementations +<a id="idid4" href="#idid7" class="ref">[3]</a>.</p><p>CalDAV and CardDAV are the best open standards available and they are quite widely +used by both clients and servers <a id="idid5" href="#idid8" class="ref">[4]</a>. We decided to use it, and we will not use +another one.</p><footer><div><a id="idid6" href="#idid3">[2]</a><p>Try to read <a href="http://www.faqs.org/rfcs/rfc4791.html" class="reference external">RFC 4791</a>. Then try to understand it. Then try to +implement it. Then try to read it again.</p></div><div><a id="idid7" href="#idid4">[3]</a><p>Radicale is <a href="http://www.radicale.org/technical_choices#oriented-to-calendar-user-agents" class="reference external">oriented to calendar user agents</a>.</p></div><div><a id="idid8" href="#idid5">[4]</a><p><a href="http://en.wikipedia.org/wiki/CalDAV#Implementations" class="reference external">CalDAV implementations</a>, +by Wikipedia.</p></div></footer></section></section></article> + </section> + + + <footer> + <ul> + + + <li> + + <a href="http://community.kozea.fr/">A Kozea Project</a> + + </li> + + + <li> + + <a href="http://validator.w3.org/check?uri=referer">Optimized for Standards</a> + + </li> + + </ul> + </footer> + + + <aside id="ribbon"> + <a href="https://github.com/Kozea/Radicale">Fork me on GitHub</a> + </aside> + + + + +</body></html>
\ No newline at end of file diff --git a/rfcs/Radicale - CalDAV and CardDAV Server - Technical Choices.html b/rfcs/Radicale - CalDAV and CardDAV Server - Technical Choices.html new file mode 100644 index 0000000..479105f --- /dev/null +++ b/rfcs/Radicale - CalDAV and CardDAV Server - Technical Choices.html @@ -0,0 +1,234 @@ +<!DOCTYPE html> +<html class=" -moz-" xmlns="http://www.w3.org/1999/xhtml"><head> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta charset="UTF-8"> + <title>Radicale - CalDAV and CardDAV Server - Contents</title> + <style data-href="/css/shared.css" media=""><!--
+/* Effective stylesheet produced by snapshot save */
+header, article, section, figure, aside, footer { display: block; }
+a { text-decoration: none; }
+#ribbon { background: transparent linear-gradient(rgb(0, 0, 0), rgb(17, 17, 17)) repeat scroll 0% 0%; box-shadow: 0px 0px 1em rgb(136, 136, 136); overflow: hidden; position: fixed; right: -3em; top: 2em; transform: rotate(45deg); }
+#ribbon a { border: 1px solid rgb(204, 204, 204); color: rgb(255, 255, 255); display: block; font: bold 0.65em sans-serif; margin: 0.05em 0px 0.075em; padding: 0.5em 3.5em; text-align: center; text-decoration: none; text-shadow: 0px 0px 0.5em rgb(68, 68, 68); }
+article footer { font-size: 0.8em; opacity: 0.7; padding-left: 20px; }
+article footer div { padding: 0.2em; }
+article footer div > a:first-child { margin-right: 0.5em; }
+article footer div > * { display: inline; }
+.ref { font-size: x-small; vertical-align: top; }
+@media print {
+ body > nav > *, body > footer { display: none; }
+ html, body, body { background: transparent none repeat scroll 0% 0% ! important; }
+}
+--></style> + <style data-href="/css/style.css" media=""><!--
+/* Effective stylesheet produced by snapshot save */
+@font-face { + font-family: "caviardreams"; + src: url(data:application/octet-stream;base64,AAEAAAAMAIAAAwBAT1MvMkzXoBYAAAFIAAAAYGNtYXDU+wDDAAAHBAAABHJnYXNwACAACAAAv6AAAAAQZ2x5ZsUe36gAAA4oAACHxGhlYWT2EPTaAAAAzAAAADZoaGVhEZILtQAAAQQAAAAkaG10eL9uj1QAAAGoAAAFXGtlcm6XIqQ/AACV7AAAGx5sb2NhV115qgAAC3gAAAKwbWF4cAFfAJwAAAEoAAAAIG5hbWUwixO+AACxDAAAB+1wb3N0C/x/3wAAuPwAAAajAAEAAAADAAAduJ0XXw889QALCAAAAAAAxZXHmQAAAADHsuKH/7b+VwnxB2UAAQAJAAEAAAAAAAAAAQAAB13+pwCLDAD/tv+2CfEAAQAAAAAAAAAAAAAAAAAAAVcAAQAAAVcAnAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBEoB9AAFAAgFmgUzAAABGwWaBTMAAAPRAGYCEggEAgsGAgICBAIFBIAAAKdQAABKAAAAAAAAAABITCAgACAAIPsCBez+pwDNB10BWSAAARFBAAAAA7MF7AAAACAAAAo8AEsAyAAAAsQAAALEAAABzAB9AlEAfQY+AH0D4ABkBJwAUATpAEsBeQB9AsMAZALDAGQDMgCABAYAfQGlAAoDRQB9AZoAZALZ/84EtgBMBRYCFATEAJcExACXBNYArQTDAHUEtwBJBMQAmQS7AGsEtwBJAcwAfQIHAFMFPwBkBAYAfQU/AGQDsgB/BhgAfQTrADIEFACWBgQAfQSPAJYEHwCWA8MAlgYdAH0EZgCWAdMAqgNXAH0EQgCWA6kAlgaGAJYE+gCWBw0AfQQmAJYHDQB9BCYAlgP1ADIDzAAyBRkAlgTrADIGQgB9BLUAMgT4ADIFKQCWAkMAfQLZ/84CQwB9A6sAZAP2ABkCzACWBSUAfQUkAJYEggBaBSUAfQSCAFoCFgBaBSkAfQQSAJYBzAB9Ad8AMQNBAJYBqwCWBTUAlgQdAJYE0gBaBQsAlgUMAGQCYwCWAx8AcwKjAFoENwCWBCEAMgU1AJYDeQBLA+8ASwPsAJYDXQClAasAlgNdAKUE2QB9AcwAfQPtAGMEWABkBE0AZAT4ADIBqwCWBGUAZALgAH0FSQBjA8oAZARoAGQDRQB9AwEAlgQGAH0CzACWBAYAlgRIADMBswB9AmsAowPKAGQDsgCXBOsAMgTrADIE6wAyBOsAMgTrADIE6wAyBp0AfQYEAH0EHwCWBB8AlgQfAJYEHwCWAgD/tgIAAKoB6v+6AbT/5wTXADIE+gCWBw0AfQcNAH0HDQB9Bw0AfQcNAH0EJgDSBw0AfQUZAJYFGQCWBRkAlgUZAJYE+AAyBEkAlgUlAH0FJQB9BSUAfQUlAH0FJQB9BSUAfQgJAFoEggBaBNsAWgTbAFoE2wBaBNsAWgIA/7YCAACqAer/ugG0/+cEHQCWBNIAWgTSAFoE0gBaBNIAWgTSAFoEBgB9BNIAWgQ3AJYENwCWBDcAlgQ3AJYD7wBLBQwAgQPvAEsB0wCqA2cAeQNnAHkDdwCWA3kAzQGzAH0DEgEDAwsA6wNDAJYDngCWA1UAMgWeADIBNwAyATcAMgE3ADICHgAyAh4AMgIeADIC9QBkAvUAZAo8AEsIFABkAocAZAKHAGQEMQAyA9sAMgRYAGQFfQBkB6IAfQTPAGQEBgB9BNkAfQU/AGQFPwBkA2QAZAOFAGQE0gBaBOsAMgUlAH0E6wAyBSUAfQYEAH0EggBaBgQAfQSCAFoGBAB9BIIAWgYEAH0EggBaBNcAMgUdAH0EHwCWBIIAWgQfAJYEggBaBB8AlgSCAFoEHwCWBIIAWgYdAH0FKQB9Bh0AfQUpAH0GHQB9BSkAfQHT//oB0//6A6kAlgJkAJYE+gCWBB0AlgT6AJYEHQCWBw0AfQTSAFoHDQB9BNIAWgcNAH0E0gBaCH0AWgfgAFoE+AAyBPgAMgPvAEsGlwBQBygAlgQvAIwE6wAyBSUAfQSPAJYFjAB9BB8AlgSCAFoGHQB9BSkAfQRmAJYEEgCWAdP/3gHT/94B0//EAdP/xAHT/9YBzP/8AdMAjQOpAJYBqwAGBCYAlgJjAJYEJgCWAmMAKAP1ADIDHwBzA/UAMgMfAFkD9QAyAx8AcwP1ADIDHwBZA8wAMgKjAFoFGQCWBDcAlgUZAJYENwCWBRkAlgQ3AJYFGQCWBDcAlgUZAJYENwCWBRkAlgQ3AJYGQgB9BTUAlgT4ADID7wBLBSkAlgPsAJYFKQCWA+wAlgUpAJYD7ACWBp0AfQgJAFoHDQB9BNIAWgZCAH0FNQCWBkIAfQU1AJYGQgB9BTUAlgwAAAAD9gAZATcAMgF5AH0CdwB9A5gAfQPiAFoDwQBaA+IAWgPBAFoAAAAD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AMT+0wAkAMX/YQAkAMYAlwAkAMv/twAlAA//twAlABH/twAlAB3/twAlAB7/twAlACT/9gAlAMH/twAlAMP/3AAlAMT/twAlAMb/3AAmAA//3AAmABH/3AAmAB3/3AAmAB7/3AAmACT/2AAmAMH/3AAmAMIAcgAmAMP/yQAmAMT/3AAmAMUAcgAmAMb/yQAnAA//kAAnABAAJgAnABH/kAAnAB3/3AAnAB7/3AAnACT/zgAnADn/zgAnADr/4gAnADz/0wAnAMH/3AAnAMIAOQAnAMP/kAAnAMT/3AAnAMUAOQAnAMb/kAAoAA//3AAoABD/3AAoABH/3AAoAB3/twAoAB7/twAoAGv/3AAoAHX/3AAoAMv/3AAoAMz/3AApAA/++AApABD/yQApABH++AApAB3/kAApAB7/kAApACT/pAApADb/twApAET/0wApAEj/0wApAEz/3AApAFL/0wApAFX/3AApAFj/3AApAFz/0wApAGv/twApAHX/twApAHz/pAApAJz/0wApAK3/0wApAMP/DQApAMb/DQApAMv/twApAMz/twApAQX/0wAqAA//twAqABH/twAqAB3/3AAqAB7/3AAqADz/8QAqAMH/3AAqAMIALwAqAMP/kAAqAMT/3AAqAMUALwAqAMb/kAArAA//3AArABH/3AArAB3/3AArAB7/3AArAMIAJgArAMUAJgAsAA//3AAsABH/3AAsAB3/3AAsAB7/3AAsAMIAJgAsAMUAJgAtAA//twAtABH/twAtAB3/3AAtAB7/3AAtACT/4gAtAET/7AAtAMIAJgAtAMP/yQAtAMUAJgAtAMb/yQAuAA//3AAuABD/kAAuABH/3AAuAB3/3AAuAB7/3AAuACb/pAAuADL/pAAuADr/3AAuADz/3AAuAET/twAuAEj/twAuAFL/twAuAFj/yQAuAFz/twAuAGv/RAAuAHX/kAAuAI//pAAuAJz/twAuAK3/twAuAMEAJgAuAMIAJgAuAMMASwAuAMQAJgAuAMUAJgAuAMYASwAuAMv/RAAuAMz/kAAuAQT/pAAuAQX/twAvAA//twAvABD/awAvABH/twAvAB3/3AAvAB7/3AAvADL/twAvADf/rQAvADj/3AAvADn/RAAvADr/iAAvADz/kAAvAET/wQAvAEj/wQAvAFL/wQAvAFj/wQAvAFz/kAAvAGv/RAAvAHX/kAAvAI//twAvAJz/wQAvAK3/wQAvAMH/HwAvAML/HwAvAMMAJgAvAMT/HwAvAMX/HwAvAMYAJgAvAMv/RAAvAMz/kAAvAQT/twAvAQX/wQAwAA//3AAwABH/3AAwAB3/3AAwAB7/3AAwAMIAJgAwAMUAJgAxAA//3AAxABH/3AAxAB3/3AAxAB7/3AAxAMIAJgAxAMUAJgAyAA//kAAyABH/kAAyAB3/3AAyAB7/3AAyACT/xAAyADf/twAyADn/0wAyADr/7AAyADv/yQAyADz/2AAyAMH/3AAyAMIAOQAyAMP/kAAyAMT/3AAyAMUAOQAyAMb/kAAzAA/+PAAzABD/awAzABH+PAAzAB3/twAzAB7/twAzACT/fQAzAET/pAAzAEj/pAAzAEz/3AAzAFH/3AAzAFL/pAAzAFX/3AAzAFb/yQAzAFj/3AAzAGv/awAzAHX/kAAzAHz/fQAzAJz/pAAzAK3/pAAzAMIAOQAzAMP+0wAzAMUAOQAzAMb+0wAzAMv/awAzAMz/kAAzAQX/pAA0AA//3AA0ABH/3AA0AMH/3AA0AMIAOQA0AMMAJgA0AMT/3AA0AMUAOQA0AMYAJgA1AA//kAA1ABD/twA1ABH/kAA1AB3/3AA1AB7/3AA1ADcADwA1ADn/9gA1ADoACgA1ADz/9gA1AET/3AA1AEj/3AA1AFL/3AA1AGv/kAA1AHX/twA1AJz/3AA1AK3/3AA1AMH/twA1AMIALwA1AMT/twA1AMUALwA1AMv/kAA1AMz/twA1AQX/3AA2AA//twA2ABAAJgA2ABH/twA2AB3/3AA2AB7/3AA2AMH/3AA2AMIAOQA2AMP/3AA2AMT/3AA2AMUAOQA2AMb/3AA3AA//awA3ABD/kAA3ABH/awA3AB3/twA3AB7/twA3ACT/twA3ACb/twA3ADL/twA3AET/rQA3AEb/rQA3AEj/rQA3AFL/rQA3AFX/0wA3AFb/wQA3AFj/0wA3AFr/0wA3AFz/3AA3AGv/awA3AHX/kAA3AHz/twA3AI//twA3AJz/rQA3AK3/rQA3AMEASwA3AMIAJgA3AMP/twA3AMQASwA3AMUAJgA3AMb/twA3AMv/awA3AMz/kAA3AQT/twA3AQX/rQA4AA//twA4ABH/twA4ACT/2AA4AGv/3AA4AHX/yQA4AMIAJgA4AMP/3AA4AMUAJgA4AMb/3AA4AMv/3AA4AMz/yQA5AA//HwA5ABD/kAA5ABH/HwA5AB3/twA5AB7/twA5ACT/yQA5ACr/7AA5ADL/0wA5AET/kAA5AEj/kAA5AEz/3QA5AFL/kAA5AFj/wQA5AFz/3AA5AGv/RAA5AHX/awA5AHz/yQA5AJz/kAA5AK3/kAA5AMEAcgA5AMIAcgA5AMP/RAA5AMQAcgA5AMUAcgA5AMb/RAA5AMv/RAA5AMz/awA5AQX/kAA6AA//awA6ABD/kAA6ABH/awA6AB3/3AA6AB7/3AA6ACT/xgA6ADL/7AA6AET/twA6AEj/twA6AEz/9gA6AFL/twA6AFX/3AA6AFj/yQA6AFz/7AA6AGv/awA6AHX/kAA6AJz/twA6AK3/twA6AMEAcgA6AMIAcgA6AMP/awA6AMQAcgA6AMUAcgA6AMb/awA6AMv/awA6AMz/kAA6AQX/twA7AA//3AA7ABD/twA7ABH/3AA7AB3/3AA7AB7/3AA7ACb/yQA7ADL/yQA7AEj/3AA7AGv/RAA7AHX/twA7AI//yQA7AMEAJgA7AMIAJgA7AMMAXgA7AMQAJgA7AMUAJgA7AMYAXgA7AMv/RAA7AMz/twA7AQT/yQA8AA//HwA8ABD/kAA8ABH/HwA8AB3/twA8AB7/twA8ACT/twA8ADL/2AA8AET/dQA8AEj/dQA8AEz/8QA8AFL/dQA8AFj/mgA8AGv/HwA8AHX/awA8AHz/twA8AJz/dQA8AK3/dQA8AMEAcgA8AMIAXgA8AMP/awA8AMQAcgA8AMUAXgA8AMb/awA8AMv/HwA8AMz/awA8AQX/dQA9AA//twA9ABD/awA9ABH/twA9AGv/RAA9AHX/twA9AMIAOQA9AMMASwA9AMUAOQA9AMYASwA9AMv/RAA9AMz/twBEAA//3ABEABH/3ABEAEUABQBEAFMAFABEAFcABQBEAGv/3ABEAMH/3ABEAMIAJgBEAMT/3ABEAMUAJgBEAMv/3ABFAA//twBFABH/twBFAB3/3ABFAB7/3ABFAFj/9gBFAFn/7ABFAFz/7ABFAHX/3ABFAMH/awBFAMT/awBFAMz/3ABGAA//twBGABH/twBGAB3/3ABGAB7/3ABGAE7/8QBGAFz/7ABGAGv/3ABGAHX/3ABGAMH/awBGAMT/awBGAMv/3ABGAMz/3ABHAA//3ABHABH/3ABHAGv/3ABHAMIASwBHAMUASwBHAMv/3ABIAA//twBIABH/twBIAB3/3ABIAB7/3ABIAFn/7ABIAFr/7ABIAFz/7ABIAHX/3ABIAMH/awBIAMT/awBIAMz/3ABJAA//awBJABD/3ABJABH/awBJAET/7ABJAEn/8QBJAEz/4gBJAE//4gBJAFL/7ABJAGv/kABJAHX/twBJALX/4gBJAMEASwBJAMIAlwBJAMQASwBJAMUAlwBJAMv/kABJAMz/twBKAA//3ABKABH/3ABKAET/8QBKAGv/3ABKAMH/3ABKAMIAJgBKAMT/3ABKAMUAJgBKAMv/3ABLAA//3ABLABH/3ABLAFz/4gBLAGv/3ABLAMH/kABLAMT/kABLAMv/3ABMAA//3ABMABH/3ABMAGv/3ABMAMIASwBMAMUASwBMAMv/3ABNAA//3ABNABH/3ABNAGv/3ABNAMIASwBNAMUASwBNAMv/3ABOAA//3ABOABD/twBOABH/3ABOAET/3ABOAEj/3ABOAFL/3ABOAFz/5wBOAGv/kABOAHX/3ABOAJz/3ABOAK3/3ABOAMH/3ABOAMIASwBOAMT/3ABOAMUASwBOAMv/kABOAMz/3ABOAQX/3ABPAA//3ABPABH/3ABPAFr/7ABPAGv/3ABPAMIASwBPAMUASwBPAMv/3ABQAA//3ABQABH/3ABQAFj/7ABQAFz/7ABQAGv/3ABQAMH/kABQAMT/kABQAMv/3ABRAA//3ABRABH/3ABRAFj/8QBRAFn/4gBRAFz/8QBRAGv/3ABRAMH/kABRAMT/kABRAMv/3ABSAA//twBSABH/twBSAB3/3ABSAB7/3ABSAFn/4gBSAFr/7ABSAFv/8QBSAFz/7ABSAHX/3ABSAMH/awBSAMT/awBSAMz/3ABTAA//twBTABH/twBTAB3/3ABTAB7/3ABTAFz/7ABTAHX/3ABTAMH/awBTAMT/awBTAMz/3ABUAA//3ABUABH/3ABUAGv/3ABUAMH/3ABUAMIASwBUAMT/3ABUAMUASwBUAMv/3ABVAA//awBVABD/3ABVABH/awBVAEb/+QBVAEf/+gBVAEj//ABVAEkASwBVAEoAAQBVAEwAFABVAE4AFABVAE8AFABVAFAAHABVAFEAFQBVAFL/7ABVAFMAFABVAFT/+ABVAFYAFABVAFcAKABVAFgAFABVAFkASwBVAFoASwBVAFsASwBVAFwAcgBVAF0AJgBVAGv/kABVAHX/3ABVAMIAlwBVAMUAlwBVAMv/kABVAMz/3ABVAVMASwBVAVQASwBWAA//twBWABH/twBWAFcADwBWAMH/kABWAMIAJgBWAMT/kABWAMUAJgBXAA//kABXABD/3ABXABH/kABXAGv/twBXAHX/yQBXAMEAJgBXAMIAcgBXAMQAJgBXAMUAcgBXAMv/twBXAMz/yQBYAA//3ABYABH/3ABYAF0ADwBYAGv/3ABYAMH/twBYAMIASwBYAMT/twBYAMUASwBYAMv/3ABZAA//HwBZABD/twBZABH/HwBZAB3/3ABZAB7/3ABZAET/4gBZAEj/7ABZAFL/7ABZAGv/kABZAHX/twBZAMIAcgBZAMUAcgBZAMv/kABZAMz/twBaAA//awBaABD/twBaABH/awBaAB3/3ABaAB7/3ABaAET/4gBaAEj/7ABaAEsADwBaAFL/4gBaAGv/kABaAHX/twBaAMIAcgBaAMUAcgBaAMv/kABaAMz/twBbAA//3ABbABD/twBbABH/3ABbAB3/3ABbAB7/3ABbAEwADwBbAGv/kABbAHX/twBbAMIAcgBbAMUAcgBbAMv/kABbAMz/twBcAA//RABcABD/3ABcABH/RABcAET/4gBcAEj/7ABcAFL/4gBcAGv/twBcAHX/3ABcAMEAJgBcAMIAlwBcAMQAJgBcAMUAlwBcAMv/twBcAMz/3ABdAA//twBdABD/3ABdABH/twBdAB3/3ABdAB7/3ABdAGv/awBdAHX/3ABdAMH/3ABdAMIASwBdAMT/3ABdAMUASwBdAMv/awBdAMz/3ABrAC3/3ABrADf/kABrADj/yQBrADn/awBrADr/kABrADv/twBrADz/awBrAD3/3ABrAET/3ABrAEb/3ABrAEf/3ABrAEj/3ABrAEn/3ABrAEr/3ABrAE0AJgBrAFL/3ABrAFf/yQBrAFn/twBrAFr/twBrAFv/twBrAJz/3ABrAK3/3ABrAOf/3ABrAQX/3ABrAVP/3ABrAVT/3AB1ACT/twB1AC3/twB1ADb/twB1ADf/awB1ADj/3AB1ADn/RAB1ADr/awB1ADv/RAB1ADz/HwB1AD3/twB1AEX/3AB1AEn/3AB1AEv/3AB1AEz/3AB1AE7/3AB1AE//3AB1AFD/3AB1AFH/3AB1AFP/3AB1AFX/3AB1AFf/twB1AFj/3AB1AFn/kAB1AFr/kAB1AFv/kAB1AFz/yQB1AF3/twB1AHz/twB1AVP/3AB1AVT/3AB8AA//3AB8ABD/3AB8ABH/3AB8AB3/3AB8AB7/3AB8ADYAOQB8ADf/twB8ADn/yQB8ADz/twB8AFn/wQB8AFr/yQB8AFz/3AB8AGv/twB8AMH+0wB8AML/YQB8AMMAlwB8AMT+0wB8AMX/YQB8AMYAlwB8AMv/twB9AA//3AB9ABD/3AB9ABH/3AB9AB3/twB9AB7/twB9AGv/3AB9AHX/3AB9AMv/3AB9AMz/3ACHAA//kACHABAAJgCHABH/kACHAB3/3ACHAB7/3ACHAMH/3ACHAMIAOQCHAMP/kACHAMT/3ACHAMUAOQCHAMb/kACPAA//kACPABH/kACPAB3/3ACPAB7/3ACPADf/twCPADv/yQCPAMH/3ACPAMIAOQCPAMP/kACPAMT/3ACPAMUAOQCPAMb/kACbAA//3ACbABH/3ACbAGv/3ACbAMH/3ACbAMIAJgCbAMT/3ACbAMUAJgCbAMv/3ACcAA//twCcABH/twCcAB3/3ACcAB7/3ACcAHX/3ACcAMH/awCcAMT/awCcAMz/3ACtAA//twCtABH/twCtAB3/3ACtAB7/3ACtAHX/3ACtAMH/awCtAMT/awCtAMz/3ADBACT/kADBACUAJgDBACYAOQDBACcAJgDBACgAJgDBACkAJgDBACoAOQDBACsAJgDBACwAJgDBAC3++ADBAC4AJgDBAC8AJgDBADAAJgDBADEAJgDBADIAOQDBADMAJgDBADQAXgDBADUAJgDBADYAOQDBADcAJgDBADgAJgDBADkAcgDBADoAcgDBADsAJgDBADwAXgDBAD0AJgDBAEUASwDBAEkAcgDBAEsASwDBAEwASwDBAE0ASwDBAE4ASwDBAE8ASwDBAFAASwDBAFEASwDBAFMASwDBAFUASwDBAFYAJgDBAFcAcgDBAFgASwDBAFkAcgDBAFoAcgDBAFsASwDBAFwAlwDBAF0ASwDBAHz/kADBAH3/RADBAIcAJgDBAI8AOQDBAMH/hwDBAQQAOQDBAQsASwDBAVMAcgDBAVQAcgDCAAP/nADCAEf/ugDCAFX/7ADCAFb/8QDCAFcACgDCAFn/7ADCAML/hwDDACQASwDDAC0ASwDDADf/twDDADn/awDDADr/awDDADz/RADDAEUAJgDDAEgAJgDDAEoAJgDDAE0AcgDDAFMASwDDAFUAJgDDAFYAOQDDAFf/3ADDAFn/kADDAFr/twDDAFsAJgDDAFz/3ADDAF0AOQDDAHwASwDDAH0AcgDDAQsAJgDEACT/kADEACUAJgDEACYAOQDEACcAJgDEACgAJgDEACkAJgDEACoAOQDEACsAJgDEACwAJgDEAC3++ADEAC4AJgDEAC8AJgDEADAAJgDEADEAJgDEADIAOQDEADMAJgDEADQAXgDEADUAJgDEADYAOQDEADcAJgDEADgAJgDEADkAcgDEADoAcgDEADsAJgDEADwAXgDEAD0AJgDEAEUASwDEAEkAcgDEAEsASwDEAEwASwDEAE0ASwDEAE4ASwDEAE8ASwDEAFAASwDEAFEASwDEAFMASwDEAFUASwDEAFYAJgDEAFcAcgDEAFgASwDEAFkAcgDEAFoAcgDEAFsASwDEAFwAlwDEAF0ASwDEAHz/kADEAH3/RADEAIcAJgDEAI8AOQDEAQQAOQDEAQsASwDEAVMAcgDEAVQAcgDFAAP/nADGACQASwDGAC0ASwDGADf/twDGADn/awDGADr/awDGADz/RADGAEUAJgDGAEgAJgDGAEoAJgDGAE0AcgDGAFMASwDGAFUAJgDGAFYAOQDGAFf/3ADGAFn/kADGAFr/twDGAFsAJgDGAFz/3ADGAF0AOQDGAHwASwDGAH0AcgDGAQsAJgDLAC3/3ADLADf/kADLADj/yQDLADn/awDLADr/kADLADv/twDLADz/awDLAD3/3ADLAET/3ADLAEb/3ADLAEf/3ADLAEj/3ADLAEn/3ADLAEr/3ADLAE0AJgDLAFL/3ADLAFf/yQDLAFn/twDLAFr/twDLAFv/twDLAJz/3ADLAK3/3ADLAOf/3ADLAQX/3ADLAVP/3ADLAVT/3ADMACT/twDMAC3/twDMADb/twDMADf/awDMADj/3ADMADn/RADMADr/awDMADv/RADMADz/HwDMAD3/twDMAEX/3ADMAEn/3ADMAEv/3ADMAEz/3ADMAE7/3ADMAE//3ADMAFD/3ADMAFH/3ADMAFP/3ADMAFX/3ADMAFf/twDMAFj/3ADMAFn/kADMAFr/kADMAFv/kADMAFz/yQDMAF3/twDMAHz/twDMAVP/3ADMAVT/3ADnAA//3ADnABH/3ADnAGv/3ADnAMIASwDnAMUASwDnAMv/3AEEAA//3AEEABD/3AEEABH/3AEEAB3/twEEAB7/twEEAGv/3AEEAHX/3AEEAMv/3AEEAMz/3AEFAA//twEFABH/twEFAB3/3AEFAB7/3AEFAHX/3AEFAMH/awEFAMT/awEFAMz/3AELAA//twELABAAJgELABH/twELAB3/3AELAB7/3AELAHX/3AELAMH/awELAML/3AELAMT/awELAMX/3AELAMz/3AFTAA//3AFTABH/3AFTAGv/3AFTAMIASwFTAMUASwFTAMv/3AFUAA//3AFUABH/3AFUAGv/3AFUAMIASwFUAMUASwFUAMv/3AAAAAAAKwIKAAEAAAAAAAAANAAAAAEAAAAAAAEADQA0AAEAAAAAAAIABABCAAEAAAAAAAMAHwA0AAEAAAAAAAQAEgA0AAEAAAAAAAUAGgBTAAEAAAAAAAYAEQBtAAEAAAAAAAoAPwB+AAMAAQQDAAIADgC9AAMAAQQFAAIACgDLAAMAAQQGAAIABgDVAAMAAQQHAAIACADbAAMAAQQIAAIADADjAAMAAQQJAAAAdgDvAAMAAQQJAAEAGgO1AAMAAQQJAAIACAGBAAMAAQQJAAMAPgFlAAMAAQQJAAQAJAFlAAMAAQQJAAUANAGjAAMAAQQJAAYAIgHXAAMAAQQJAAkAHgEPAAMAAQQJAAoBkAH5AAMAAQQJAAwALAOJAAMAAQQJAA0BeAO1AAMAAQQKAAIADgXVAAMAAQQLAAIAEgUtAAMAAQQMAAIACAVPAAMAAQQOAAIAEAU/AAMAAQQQAAIAEgVPAAMAAQQTAAIABgVhAAMAAQQUAAIADgVnAAMAAQQVAAIAFAV1AAMAAQQWAAIADgXHAAMAAQQZAAIAFAWJAAMAAQQbAAIACgWdAAMAAQQdAAIABgDbAAMAAQQfAAIACgWnAAMAAQQkAAIADAWxAAMAAQQtAAIACgW9AAMAAQgKAAIADgXVAAMAAQgWAAIADgXHAAMAAQwKAAIADgXVAAMAAQwMAAIACAVPVHlwZWZhY2UgqSAoeW91ciBjb21wYW55KS4gMjAwOS4gQWxsIFJpZ2h0cyBSZXNlcnZlZENhdmlhciBEcmVhbXMgQm9sZDpWZXJzaW9uIDMuMDBWZXJzaW9uIDMuMDAgTWFyY2ggMiwgMjAxMENhdmlhckRyZWFtcy1Cb2xkVGhpcyBmb250IHdhcyBjcmVhdGVkIHVzaW5nIEZvbnRDcmVhdG9yIDUuNiBmcm9tIEhpZ2gtTG9naWMuY29tAE4AZQBnAHIAZQB0AGEAdAB1AQ0AbgDpAGYAZQBkAEYAZQB0AHQDiAO9A8QDvwO9A7EAQwBhAHYAaQBhAHIAIABEAHIAZQBhAG0AcwAgAKkAIABMAGEAdQByAGUAbgAgAFQAaABvAG0AcABzAG8AbgAgADIAMAAxADAALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgAgAEMAYQB2AGkAYQByACAARAByAGUAYQBtAHMAIABCAG8AbABkADoAVgBlAHIAcwBpAG8AbgAgADMALgAwADAAVgBlAHIAcwBpAG8AbgAgADMALgAwADAAIABNAGEAcgBjAGgAIAAyACwAIAAyADAAMQAwAEMAYQB2AGkAYQByAEQAcgBlAGEAbQBzAC0AQgBvAGwAZABBACAAZwBlAG8AbQBlAHQAcgBpAGMAIABzAGEAbgBzACAAcwBlAHIAaQBmACAAdwBpAHIAaAAgAGEAIABkAGEAcwB0AGEAcgBkAGwAeQAgAGEAbgBnAGwAZQBkACAAbABvAHcAZQByAGMAYQBzAGUAIABsAGUAdAB0AGUAcgAgAGUALAAgAGEAbgBkACAAdABoAG8AcwBlACAAdwAnAHMAIAB3AGkAdABoACAAdABoAG8AcwBlACAAbABvAHYAZQBsAHkAIABsAGUAdAB0AGUAcgAgAGwAdQBtAHAAcwAuACAARQB4AHQAcgBlAG0AZQAgAHIAbwB1AG4AZAAgAG8AdgBlAHIAcwBoAG8AbwB0ACAAbQBhAHkAIABiAGUAIABkAGkAcwB0AHUAcgBiAGkAbgBnACAAdABvACAAcwBvAG0AZQAgAHYAaQBlAHcAZQByAHMALgAgAFYAaQBlAHcAZQByACAAZABpAHMAYwByAGUAdABpAG4AIABpAHMAIABhAGQAdgBpAHMAZQBkAC4AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAG4AeQBtAGYAbwBuAHQALgBjAG8AbQBDAGEAdgBpAGEAcgAgAEQAcgBlAGEAbQBzACAAbQBhAHkAIABiAGUAIAB1AHMAZQBkACAAcABlAHIAcwBvAG4AYQBsAGwAeQAgAG8AcgAgAGMAbwBtAG0AZQByAGMAaQBhAGwAbAB5ACAAaABvAHcAZQB2AGUAcgAgAHQAaABlACAAZgBvAG4AdAAgAGQAYQB0AGEAIABpAHQAcwBlAGwAZgAgAG0AYQB5ACAAbgBvAHQAIABiAGUAIAByAGUAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAcwBvAGwAZAAgAGEAdAAgAGEAbgB5ACAAbQBlAGEAcwB1AHIAZQAgAG8AcgAgAGkAbgAgAGEAbgB5ACAAZgBvAHIAbQAuACAARQBtAGEAaQBsACAAbgB5AG0AcABoAG8AbgB0AEAAeQBhAGgAbwBvAC4AYwBvAG0AIABmAG8AcgAgAHMAcABlAGMAaQBmAGkAYwAgAGQAZQB0AGEAaQBsAHMATABpAGgAYQB2AG8AaQB0AHUARgDpAGwAawD2AHYA6QByAEcAcgBhAHMAcwBlAHQAdABvAFYAZQB0AEgAYQBsAHYAZgBlAHQAUABvAGcAcgB1AGIAaQBvAG4AeQQfBD4EOwRDBDYEOARABD0ESwQ5AFQAdQENAG4A6QBLAGEAbAExAG4ASwByAGUAcABrAG8ATABvAGQAaQBhAE4AZQBnAHIAaQB0AG8ATgBlAGcAcgBpAHQAYQAAAAACAAAAAAAA/ycAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAVcAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAKMAhACFAL0AlgDoAIYAjgCLAKkAigDaAIMAkwCNAJcAiADDAN4AqgCiAK0AyQDHAK4AYgBjAJAAZADLAGUAyADKAM8AzADNAM4A6QBmANMA0ADRAK8AZwDwAJEA1gDUANUAaADrAO0AagBpAGsAbQBsAG4AoABvAHEAcAByAHMAdQB0AHYAdwB4AHoAeQB7AH0AfAC4AKEAfwB+AIAAgQDsAO4AugDXANgA4QECANsA3ADdAOAA2QDfALIAswC2ALcAxAC0ALUAxQCCAMIAhwCrAL4AvwC8APcBAwEEAQUAjADvAKcAlACVAJ0AngDqAQYBBwEIAQkA/QD+AQoBCwEMAQ0A/wEAAQ4BAQEPARABEQESARMBFAEVARYBFwEYAPgA+QEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoALAAsQC7ASkBKgDGASsAiQEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgD7APwA5ADlAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwA5gDnAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAd1bmkwMkM5BGxpcmEERXVybwlhZmlpNjEzNTIHQW1hY3JvbgdhbWFjcm9uBkFicmV2ZQZhYnJldmULQ2NpcmN1bWZsZXgLY2NpcmN1bWZsZXgKQ2RvdGFjY2VudApjZG90YWNjZW50BkRjcm9hdAdFbWFjcm9uB2VtYWNyb24GRWJyZXZlBmVicmV2ZQpFZG90YWNjZW50CmVkb3RhY2NlbnQGRWNhcm9uBmVjYXJvbgtHY2lyY3VtZmxleAtnY2lyY3VtZmxleApHZG90YWNjZW50Cmdkb3RhY2NlbnQGSWJyZXZlBmlicmV2ZQRMZG90BGxkb3QGTmFjdXRlBm5hY3V0ZQZOY2Fyb24GbmNhcm9uB09tYWNyb24Hb21hY3JvbgZPYnJldmUGb2JyZXZlDU9odW5nYXJ1bWxhdXQNb2h1bmdhcnVtbGF1dAZZZ3JhdmUGeWdyYXZlBnBlc2V0YQdBb2dvbmVrB2FvZ29uZWsGRGNhcm9uBmRjYXJvbgdFb2dvbmVrB2VvZ29uZWsMR2NvbW1hYWNjZW50DGdjb21tYWFjY2VudAtIY2lyY3VtZmxleAtoY2lyY3VtZmxleAZJdGlsZGUGaXRpbGRlB0ltYWNyb24HaW1hY3JvbgdJb2dvbmVrB2lvZ29uZWsKSWRvdGFjY2VudAZMYWN1dGUGbGFjdXRlBlJhY3V0ZQZyYWN1dGUGUmNhcm9uBnJjYXJvbgZTYWN1dGUGc2FjdXRlC1NjaXJjdW1mbGV4C3NjaXJjdW1mbGV4DFRjb21tYWFjY2VudAx0Y29tbWFhY2NlbnQGVXRpbGRlBnV0aWxkZQdVbWFjcm9uB3VtYWNyb24GVWJyZXZlBnVicmV2ZQVVcmluZwV1cmluZw1VaHVuZ2FydW1sYXV0DXVodW5nYXJ1bWxhdXQHVW9nb25lawd1b2dvbmVrC1djaXJjdW1mbGV4C3djaXJjdW1mbGV4C1ljaXJjdW1mbGV4C3ljaXJjdW1mbGV4BlphY3V0ZQZ6YWN1dGUKWmRvdGFjY2VudAp6ZG90YWNjZW50B0FFYWN1dGUHYWVhY3V0ZQtPc2xhc2hhY3V0ZQtvc2xhc2hhY3V0ZQZXZ3JhdmUGd2dyYXZlBldhY3V0ZQZ3YWN1dGUJV2RpZXJlc2lzCXdkaWVyZXNpcwlhZmlpMDAyMDgNdW5kZXJzY29yZWRibA1xdW90ZXJldmVyc2VkBm1pbnV0ZQZzZWNvbmQJZXhjbGFtZGJsB3VuaUYwMDEHdW5pRjAwMgd1bmlGQjAxB3VuaUZCMDIAAAAAAwAPAAIAEgAB//8AAg==); +}
+html { background: url(data:image/jpeg;base64,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Z09iamMAAAABAAAAAAAAUkdCQwAAAAMAAAAAUmQgIGRvdWJAb+AAAAAAAAAAAABHcm4gZG91YkBv4AAAAAAAAAAAAEJsICBkb3ViQG/gAAAAAAAAAAAAQnJkVFVudEYjUmx0AAAAAAAAAAAAAAAAQmxkIFVudEYjUmx0AAAAAAAAAAAAAAAAUnNsdFVudEYjUHhsQFIAAAAAAAAAAAAKdmVjdG9yRGF0YWJvb2wBAAAAAFBnUHNlbnVtAAAAAFBnUHMAAAAAUGdQQwAAAABMZWZ0VW50RiNSbHQAAAAAAAAAAAAAAABUb3AgVW50RiNSbHQAAAAAAAAAAAAAAABTY2wgVW50RiNQcmNAWQAAAAAAADhCSU0D7QAAAAAAEABIAAAAAQACAEgAAAABAAI4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0nEAAAAAAACgABAAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAAzsAAAAGAAAAAAAAAAAAAACVAAAATgAAAAMAdABvAHAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAE4AAACVAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAACVAAAAAFJnaHRsb25nAAAATgAAAAZzbGljZXNW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AAgAAAABAQD/4Q27aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkVDNTc5NzFCOTNCRUUwMTE5QTFEQjFDQzJENDc5QzFFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjExMjg1MjgwQkVBNzExRTBCNkIxRUM2NkJBNDI5MkY1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3QkJGRUUwOTNDMUUwMTE5NjA3OTQwQkRGMkY1RkVGIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyIgeG1wOkNyZWF0ZURhdGU9IjIwMTEtMDgtMDRUMTY6MjY6MjArMDI6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDExLTA4LTA4VDEwOjQzOjU3KzAyOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDExLTA4LTA4VDEwOjQzOjU3KzAyOjAwIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFRTU3OTcxQjkzQkVFMDExOUExREIxQ0MyRDQ3OUMxRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQzU3OTcxQjkzQkVFMDExOUExREIxQ0MyRDQ3OUMxRSIvPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpEN0JCRkVFMDkzQzFFMDExOTYwNzk0MEJERjJGNUZFRiIgc3RFdnQ6d2hlbj0iMjAxMS0wOC0wOFQxMDo0Mzo1NyswMjowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+4ADkFkb2JlAGRAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgIC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) repeat-x scroll 0px 82px, rgb(244, 242, 242) url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QNtaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDI5MjBBMENCRUE2MTFFMDg4NjA4MUNFRjg3NDZDMDQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDI5MjBBMEJCRUE2MTFFMDg4NjA4MUNFRjg3NDZDMDQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUU1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94Onht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) repeat scroll 0% 0%; font-family: sans-serif; min-height: 100%; width: 100%; }
+body { background: url(data:image/png;base64,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) no-repeat fixed 100% 100%, url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QNtaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUNDOTU3MzlCRjQyMTFFMDkzM0Q5NDA1NEQ5NjFGQ0EiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUNDOTU3MzhCRjQyMTFFMDkzM0Q5NDA1NEQ5NjFGQ0EiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUY1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94Onht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) no-repeat fixed 100% 50%, transparent url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QNtaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUMyODcyNjJCRUEyMTFFMEE4QkZFQ0Q5REJEOEVGRjIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUMyODcyNjFCRUEyMTFFMEE4QkZFQ0Q5REJEOEVGRjIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUU1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94Onht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) repeat-x scroll left 2em; color: rgb(68, 68, 68); margin: -2em 0px 0px; min-height: 100%; padding-bottom: 2em; position: absolute; width: 100%; }
+a { color: rgb(78, 154, 6); text-decoration: none; transition: color 0.3s linear 0s; }
+a:hover, a:focus { color: rgb(55, 110, 4); }
+table { border-collapse: collapse; margin: auto; }
+table td { border: 1px solid rgb(204, 187, 187); padding: 0.5em; }
+dt { margin: 0.8em 0px 0.2em; }
+h2 { background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kJCg0JIQ47XRYAAAOtSURBVFjDvZZ/aFtVFMc/56XvdYnbLGYztA1ssrEJo5bCKEVlMGnVTvL+cD+CUopDSISq9A/1HxWE/eUmMv/oIFHEpp0yKg4aRIXNlQ22DrTTos7hdMw5ROq60rotfW3e8Y++1Gy4mviSfeHCI+/ecz7ve8+5N8J/KJayVovwkMKRbML5CyCWttYL2qsqL2WTTg4fMpZ6aaetGhGNq+phUfbE0qYJIKovoNIjorvwqSUBhhPOPMhhRL4E7QXpBVBkv8IVoMcvgJQyyU5b61U5JOj9wDPDybmhWMr6QkQfBVkznHB+rbgDdtp6wE5bazwnzgM9CpOI7LXT5kYR/VBVFIhXawtSQMZOW3tjKbMjm3RGRehVpRHkbZARERzgiaoAKHoCJYTyMsghO232A5eBd4BtQAz4EbSlKgCiskdFd6pou8CnqnSrypCITgPfAW8AM0DITptN1S3ClHUX8IiK7hckCpwFNgEOYAHdwwnno4q34WI7Jp1rw0knCzwGjAHN3tqQN+W+qpwDtyqbmDsPPAmMF60VYPUdAfBa8neFhMKEAt4I3TGABSec08umdQjIAxKa0ru/goaBhVE3CIGqAQxC3UF4fNurc6uC0yrLZtRYd8yN/wSXBc4KDABPD0JDxbqgKPla4DWFZwPAzw8aiAvhC66u/APRxTMEBI4Cr3fBqYoADEAE6BPY7iXRGi+GC7j/BNOiuOeAeBd863sLBOIC272vVAHJL4ybMhY9KrAReGupmjBKtL4BaPeia4nOFea0A21+HbgX2KDl102hLGy/ABYQlPI7trBkk1+AnHfx/F+t9AswBfx2i63lyPULMOG1VFk1UHRUT/kC6IIb3gVUclIXMAwDc/lyBG77n7GmDBu/ZuFAaXZv04qFH81gkGBjI5EtW1QCAfklkznD7Kw/gC74ZgBGBJpXbd4sYhian50VnZtDDAPDsqhZsYJgfT33tLTQ0NlJXVOTnE4mCdTWnvAN4H1hxoXOdbt3b4hs3Uo+l8N1HMQwCASD1IbDBOvrF6fnr1+XiZMnz6jjXKBSeh9e/Ky19UZuclJV1dV/keu6qqru9/v26ceRyFOpMi+9JZWBmg+g7/iOHerOzxcnvCn5lbEx/byt7Xg/hKm03oPgoEjf0Y4OzU1MLDpRSH7t0iUdse2rg/Aw1dK7YB4MBJ77JBrVcwcOFCDcq+PjeqS9fWYAdr1SgvW+9qYfxIC1AdN8MxSN7gy3tvLn6OgPMxcvPt8Nx0qJ8Tdi/ZlMi2CSwQAAAABJRU5ErkJggg==) no-repeat scroll left top; color: rgb(164, 0, 0); font-family: "caviardreams"; margin-bottom: 35px; padding: 8px 0px 0px 35px; text-transform: uppercase; }
+h3 { color: rgb(164, 0, 0); font-family: "caviardreams"; font-size: 1.4em; margin: 0.5em 0px; }
+h3 a { background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAADqSURBVHjahI2xSsRAFEVnWVBB2A/YP/AjrP0wOwstJU2qVCmCpEqRIt3AwID1FrJCSHYnqZI0wYfHxlndjRsfXG7xzuWoYbtdAuqj75efIpeAzxWwAq6/ewFcKEA516y1sU4bW2pj33+l0saKNhbXtPeAUq5p77SxG2ZORMjyYiir+lFpY/kP9h0nKWcHWV4cwcD8IE5SgjA6wF0/TAdZXhCE0SR/Gk71QRjx8PRM1w9TwyksIkewiLDbu3mD73Ec6frhZ+Ca9jXLixf/9Hrfu707wGVVxwq4Kav6Nk7StzhJOZeyqgEWXwMAH1n8QMRY5z0AAAAASUVORK5CYII=) no-repeat scroll 0px 35%; color: rgb(164, 0, 0); font-family: "caviardreams"; padding-left: 20px; }
+h3 a:hover { color: rgb(164, 0, 0); }
+h4, h4 a { border-bottom: 1px dotted rgb(230, 230, 230); color: rgb(203, 0, 0); font-family: Courier,monospace; font-size: 1.1em; }
+section h4 a:hover { color: rgb(203, 0, 0); }
+h5, h5 a { font-family: "caviardreams"; font-size: 1em; text-transform: uppercase; }
+body > header { position: absolute; top: 2em; }
+h1 { box-shadow: 0px 0px 10px rgb(214, 214, 214); position: relative; top: -50px; transform: rotate(-35deg); z-index: 2; }
+h1 a { background: white url(data:image/png;base64,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) no-repeat scroll center center; color: transparent; display: block; height: 250px; transition: all 0.7s ease 0s; width: 165px; }
+h1 a:hover, h1 a:focus { background-color: rgb(249, 249, 249); box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.6); color: transparent; }
+nav { display: table; margin: 2em auto 150px; table-layout: fixed; width: 900px; z-index: -1; }
+nav ul { display: table-row; font-family: "caviardreams"; font-size: 1.3em; text-align: center; padding: 0px; }
+nav li { display: table-cell; }
+nav li a { color: rgb(131, 221, 0); display: block; margin: auto; line-height: 82px; text-align: center; text-shadow: 0px 0px 3px black; }
+nav li a:hover, nav li a:focus { color: rgb(131, 221, 0); text-shadow: none; }
+nav li a[href] { background-image: linear-gradient(white, white); background-position: 0px -82px; background-repeat: no-repeat; color: white; transition: all 0.6s ease 0s; }
+nav li a[href]:hover, nav li a[href]:focus { background-position: 0px 0px; box-shadow: 0px 0px 10px rgb(99, 99, 99); color: rgb(78, 154, 6); }
+body > section { margin: 0px auto; max-width: 70em; width: 75%; }
+.contents { background: rgba(46, 52, 54, 0.05) none repeat scroll 0% 0%; border-radius: 5px; box-shadow: 5px 5px 5px rgba(46, 52, 54, 0.2); color: black; margin: 0px auto; padding: 0.5em 2em; width: 60%; }
+.contents a { color: grey; }
+.contents a:hover { color: black; }
+.contents ul { list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB4SURBVHjajJC7CoAwEATPByLo/1fze1apRbBwbRI5jiR4MNXu5JKYpCFjjjHjs1nSaKForjRJ2kK21wSTtAMPoJhVBeBSHuBsCsANqOCkJwqzL/hJ6VBKRzngExbgCws9oVxJnljuPbpabgp+W+9bh5b8a0OD9R0A5oW9xqRnF54AAAAASUVORK5CYII=); }
+.contents ul li li { list-style: outside none disc; }
+article { background: rgba(255, 255, 254, 0.5) none repeat scroll 0% 0%; border-radius: 5px; box-shadow: 0px 0px 10px rgb(214, 214, 214); margin: -30px auto 50px; padding: 20px; }
+.important, .warning, .note { border-radius: 3px; font-size: 0.9em; margin: 1em 10%; padding: 2px 15px; }
+.note { background: rgba(78, 154, 6, 0.1) none repeat scroll 0% 0%; border: 1px dotted rgb(78, 154, 6); }
+.docinfo { display: none; }
+.abstract { opacity: 0.8; font-style: italic; margin-top: -1em; }
+body > footer { border-bottom: 2px dotted rgb(78, 154, 6); bottom: 0px; height: 2em; left: 0px; right: 0px; position: absolute; text-align: center; }
+body > footer ul { margin: 0px auto; }
+body > footer li { display: inline; padding: 0px 0.75em; }
+body > footer li a { color: rgb(164, 0, 0); font-variant: small-caps; }
+body > footer li a:hover { color: rgb(63, 0, 0); }
+--></style> + <link href="index_files/icon.png" type="image/png" rel="shortcut icon"> + <link href="http://radicale.org/rss" type="application/rss+xml" rel="alternate" title=" RSS 2.0"> + <script async="" type="text/javascript">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script><script>data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> + + <script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script> + + </head> + + <body> + <header> + <h1><a href="http://radicale.org/">Radicale</a></h1> + </header> + + <nav> + + <ul> + + + <li> + <a href="http://radicale.org/news/">News</a> + + </li> + + + + + + <li> + <a href="http://radicale.org/documentation/">Documentation</a> + + </li> + + + + + + <li> + <a href="http://radicale.org/contribute/">Contribute</a> + + </li> + + + + + + <li> + <a href="http://radicale.org/download/">Download</a> + + </li> + </ul> + + </nav> + + + <section class="page-technical_choices"> + <article><header itemscope="itemscope"><h2>Technical Choices</h2><table class="docinfo"><tbody><tr><th>Author</th><td itemprop="author">Guillaume Ayoub</td></tr><tr><th>Date</th><td itemprop="date"><time>2010-01-22</time></td></tr></tbody></table></header><aside class="abstract topic"><p>This document describes the global technical choices of the +Radicale Project and the global architectures of its different parts.</p></aside><aside id="idcontents" class="contents topic"><ul><li><a id="idid10" href="#idglobal-technical-choices" class="reference internal">Global Technical Choices</a><ul><li><a id="idid11" href="#idgeneral-description" class="reference internal">General Description</a></li><li><a id="idid12" href="#idlanguage" class="reference internal">Language</a></li><li><a id="idid13" href="#idprotocols-and-formats" class="reference internal">Protocols and Formats</a></li><li><a id="idid14" href="#iddevelopment-choices" class="reference internal">Development Choices</a><ul><li><a id="idid15" href="#idoriented-to-calendar-and-contact-user-agents" class="reference internal">Oriented to Calendar and Contact User Agents</a></li><li><a id="idid16" href="#idsimple" class="reference internal">Simple</a></li><li><a id="idid17" href="#idlazy" class="reference internal">Lazy</a></li></ul></li></ul></li><li><a id="idid18" href="#idarchitectures" class="reference internal">Architectures</a><ul><li><a id="idid19" href="#idgeneral-architecture" class="reference internal">General Architecture</a></li><li><a id="idid20" href="#idcode-architecture" class="reference internal">Code Architecture</a></li></ul></li></ul></aside><section id="idglobal-technical-choices"><header><h3><a href="#idid10">Global Technical Choices</a></h3></header><section id="idgeneral-description"><header><h4><a href="#idid11">General Description</a></h4></header><p>The Radicale Project aims to be a light solution, easy to use, easy to +install, easy to configure. As a consequence, it requires few software +dependencies and is pre-configured to work out-of-the-box.</p><p>The Radicale Project runs on most of the UNIX-like platforms (Linux, +*BSD, MacOS X) and Windows. It is free and open-source software.</p></section><section id="idlanguage"><header><h4><a href="#idid12">Language</a></h4></header><p>The different parts of the Radicale Project are written in +Python. This is a high-level language, fully object-oriented, +available for the main operating systems and released with a lot of +useful libraries.</p></section><section id="idprotocols-and-formats"><header><h4><a href="#idid13">Protocols and Formats</a></h4></header><p>The main protocols and formats fully or partially implemented in the +Radicale Project are described by RFCs:</p><ul><li>HyperText Transfer Protocol (HTTP) <a href="http://www.faqs.org/rfcs/rfc2616.html" class="reference external">RFC 2616</a></li><li>WebDAV Access Control Protocol (ACL) <a href="http://www.faqs.org/rfcs/rfc3744.html" class="reference external">RFC 3744</a></li><li>Calendaring Extensions to WebDAV (CalDAV) <a href="http://www.faqs.org/rfcs/rfc4791.html" class="reference external">RFC 4791</a></li><li>HTTP Extensions for Web Distributed Authoring and Versioning +(WebDAV) <a href="http://www.faqs.org/rfcs/rfc4918.html" class="reference external">RFC 4918</a></li><li>Transport Layer Security (TLS) <a href="http://www.faqs.org/rfcs/rfc5246.html" class="reference external">RFC 5246</a></li><li>iCalendar format (iCal) <a href="http://www.faqs.org/rfcs/rfc5545.html" class="reference external">RFC 5545</a></li><li>vCard Format Specification <a href="http://www.faqs.org/rfcs/rfc6350.html" class="reference external">RFC 6350</a></li><li>vCard Extensions to Web Distributed Authoring and Versioning (CardDAV) +<a href="http://www.faqs.org/rfcs/rfc6352.html" class="reference external">RFC 6352</a></li></ul><aside class="note "><p>CalDAV and CardDAV implementations <strong>require</strong> iCal, vCard, ACL, WebDAV, +HTTP and TLS. The Radicale Server <strong>does not and will not implement +correctly</strong> these standards, as explained in the <a href="#iddevelopment-choices" class="reference internal">Development Choices</a> +part.</p></aside></section><section id="iddevelopment-choices"><header><h4><a href="#idid14">Development Choices</a></h4></header><p>Important global development choices have been decided before writing +code. They are very useful to understand why the Radicale Project is different +from other CalDAV and CardDAV servers, and why features are included or not in +the code.</p><section id="idoriented-to-calendar-and-contact-user-agents"><header><h5><a href="#idid15">Oriented to Calendar and Contact User Agents</a></h5></header><p>Calendar and contact servers work with calendar and contact clients, using a +defined protocol. CalDAV and CardDAV are good protocols, covering lots of +features and use cases, but it is quite hard to implement fully.</p><p>Some calendar servers have been created to follow the CalDAV and CardDAV RFCs +as much as possible: Davical <a id="idid1" href="#idid4" class="ref">[1]</a>, Cosmo <a id="idid2" href="#idid5" class="ref">[2]</a> and Darwin Calendar Server <a id="idid3" href="#idid6" class="ref">[3]</a>, +for example, are much more respectful of CalDAV and CardDAV and can be used +with a large number of clients. They are very good choices if you want to +develop and test new CalDAV clients, or if you have a possibly heterogeneous +list of user agents.</p><p>The Radicale Server does not and <strong>will not</strong> support the CalDAV and CardDAV +standards. It supports the CalDAV and CardDAV implementations of different +clients (Lightning, Evolution, Android, iPhone, iCal, and more).</p><footer><div><a id="idid4" href="#idid1">[1]</a><p><a href="http://www.davical.org/" class="reference external">Davical</a>, a standards-compliant calendar +server.</p></div><div><a id="idid5" href="#idid2">[2]</a><p><a href="http://chandlerproject.org/Projects/CosmoHome" class="reference external">Cosmo</a>, the web +contents and calendars sharing server build to support the Chandler Project.</p></div><div><a id="idid6" href="#idid3">[3]</a><p><a href="http://trac.calendarserver.org/" class="reference external">Darwin Calendar Server</a>, a +standards-compliant calendar server mainly developed by Apple.</p></div></footer></section><section id="idsimple"><header><h5><a href="#idid16">Simple</a></h5></header><p>The Radicale Server is designed to be simple to install, simple to configure, +simple to use.</p><p>The installation is very easy, particularly with Linux: no dependencies, no +superuser rights needed, no configuration required. Launching the main script +out-of-the-box, as a normal user, is often the only step to have a simple remote +calendar and contact access.</p><p>Contrary to other servers that are often complicated, require high privileges +or need a strong configuration, the Radicale Server can (sometimes, if not +often) be launched in a couple of minutes, if you follow the <a href="http://www.radicale.org/user_documentation" class="reference external">User +Documentation</a>.</p></section><section id="idlazy"><header><h5><a href="#idid17">Lazy</a></h5></header><p>We, Radicale Project developers, are lazy. That is why we have chosen Python: +no more <samp>;</samp> or <samp>{}</samp> <a id="idid7" href="#idid9" class="ref">[4]</a>. This is also why our server is lazy.</p><p>The CalDAV RFC defines what must be done, what can be done and what cannot be +done. Many violations of the protocol are totally defined and behaviours are +given in such cases.</p><p>The Radicale Server assumes that the clients are perfect and that protocol +violations do not exist. That is why most of the errors in client requests have +undetermined consequences for the lazy server that can reply good answers, bad +answers, or even no answer.</p><p>As already mentioned, the Radicale server doesn't fully support the CalDAV and +CardDAV RFCs. For example, nested filters in queries currently don't work in +all cases. Examples of not working queries can be found in issues +<a href="https://github.com/Kozea/Radicale/issues/120" class="reference external">#120</a> and +<a href="https://github.com/Kozea/Radicale/issues/121" class="reference external">#121</a>.</p><footer><div><a id="idid9" href="#idid7">[4]</a><p>Who says "Ruby is even less verbose!" should read the +<a href="http://www.python.org/dev/peps/pep-0020" class="reference external">PEP 20</a>.</p></div></footer></section></section></section><section id="idarchitectures"><header><h3><a href="#idid18">Architectures</a></h3></header><section id="idgeneral-architecture"><header><h4><a href="#idid19">General Architecture</a></h4></header><p>Here is a simple overview of the global architecture for reaching a +calendar through network:</p><table><thead><tr><th>Part</th><th>Layer</th><th>Protocol or Format</th></tr></thead><tbody><tr><td rowspan="2">Server</td><td>Calendar/Contact +Storage</td><td>iCal/vCard</td></tr><tr><td>Calendar/Contact +Server</td><td>CalDAV/CardDAV Server</td></tr><tr><td>Transfer</td><td>Network</td><td>CalDAV/CardDAV +(HTTP + TLS)</td></tr><tr><td rowspan="2">Client</td><td>Calendar/Contact +Client</td><td>CalDAV/CardDAV Client</td></tr><tr><td>GUI</td><td>Terminal, GTK, etc.</td></tr></tbody></table><p>The Radicale Project is <strong>only the server part</strong> of this architecture.</p></section><section id="idcode-architecture"><header><h4><a href="#idid20">Code Architecture</a></h4></header><p>The package offers 8 modules.</p><dl><dt><samp>__main__</samp></dt><dd>The main module provides a simple function called <samp>run</samp>. Its main work is +to read the configuration from the configuration file and from the options +given in the command line; then it creates a server, according to the +configuration.</dd><dt><samp>__init__</samp></dt><dd>This is the core part of the module, with the code for the CalDAV server. The +server inherits from a HTTP or HTTPS server class, which relies on the +default HTTP server class given by Python. The code managing the different +HTTP requests according to the CalDAV normalization is written here.</dd><dt><samp>config</samp></dt><dd>This part gives a dict-like access to the server configuration, read from +the configuration file. The configuration can be altered when launching the +executable with some command line options.</dd><dt><samp>ical</samp></dt><dd>In this module are written the classes to represent collections and items in +Radicale. The simple iCalendar and vCard readers and writers are included in +this file. The readers and writers are small and stupid: they do not fully +understand the iCalendar format and do not know at all what a date is.</dd><dt><samp>xmlutils</samp></dt><dd>The functions defined in this module are mainly called by the CalDAV server +class to read the XML part of the request, read or alter the calendars, and +create the XML part of the response. The main part of this code relies on +ElementTree.</dd><dt><samp>log</samp></dt><dd>The <samp>start</samp> function provided by this module starts a logging mechanism +based on the default Python logging module. Logging options can be stored in +a logging configuration file.</dd><dt><samp>acl</samp></dt><dd>This module is a set of Access Control Lists, a set of methods used by +Radicale to manage rights to access the calendars. When the CalDAV server is +launched, an Access Control List is chosen in the set, according to the +configuration. The HTTP requests are then filtered to restrict the access +using a list of login/password-based access controls.</dd><dt><samp>storage</samp></dt><dd>This folder is a set of storage modules able to read and write +collections. Currently there are three storage modules: <samp>filesystem</samp>, storing +each collection into one flat plain-text file, <samp>multifilesystem</samp>, storing each +entries into separates plain-text files, and <samp>database</samp>, storing entries in a +database. <samp>filesystem</samp> is stable and battle-tested, others are experimentals.</dd></dl></section></section></article> + </section> + + + <footer> + <ul> + + + <li> + + <a href="http://community.kozea.fr/">A Kozea Project</a> + + </li> + + + <li> + + <a href="http://validator.w3.org/check?uri=referer">Optimized for Standards</a> + + </li> + + </ul> + </footer> + + + <aside id="ribbon"> + <a href="https://github.com/Kozea/Radicale">Fork me on GitHub</a> + </aside> + + + + +</body></html>
\ No newline at end of file diff --git a/rfcs/Radicale - CalDAV and CardDAV Server - User Documentation.html b/rfcs/Radicale - CalDAV and CardDAV Server - User Documentation.html new file mode 100644 index 0000000..0fc943f --- /dev/null +++ b/rfcs/Radicale - CalDAV and CardDAV Server - User Documentation.html @@ -0,0 +1,651 @@ +<!DOCTYPE html> +<html class=" -moz-" xmlns="http://www.w3.org/1999/xhtml"><head> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta charset="UTF-8"> + <title>Radicale - CalDAV and CardDAV Server - Contents</title> + <style data-href="/css/shared.css" media=""><!--
+/* Effective stylesheet produced by snapshot save */
+header, article, section, figure, aside, footer { display: block; }
+a { text-decoration: none; }
+#rss, #editable { background: black none no-repeat scroll -1px 1px; border-radius: 6px; color: transparent; display: block; font-size: 0px; height: 32px; outline: 0px none; padding: 0px; width: 32px; }
+#editable { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QgaDQce0DZhnAAAAJJJREFUWMPtl0ERwCAMBJGABCQhASlIqIRKqJRIwcH1UTrDZGj7ytFH9sVvj+RxEILjGAEgAhBclJVy0EMAyJhTGDev/VxmCVhj3x9CCHPnOoQAiCy5DpFXyG8qc+waWXlzl7vc5aatRpGXt1azlqevVjOTd+FGbzUVoFFb7RfPqSHAMUhbX0diPijRQ2T/XDgMToZ6Fj0HlIfdAAAAAElFTkSuQmCC); }
+#ribbon { background: transparent linear-gradient(rgb(0, 0, 0), rgb(17, 17, 17)) repeat scroll 0% 0%; box-shadow: 0px 0px 1em rgb(136, 136, 136); overflow: hidden; position: fixed; right: -3em; top: 2em; transform: rotate(45deg); }
+#ribbon a { border: 1px solid rgb(204, 204, 204); color: rgb(255, 255, 255); display: block; font: bold 0.65em sans-serif; margin: 0.05em 0px 0.075em; padding: 0.5em 3.5em; text-align: center; text-decoration: none; text-shadow: 0px 0px 0.5em rgb(68, 68, 68); }
+article footer { font-size: 0.8em; opacity: 0.7; padding-left: 20px; }
+article footer div { padding: 0.2em; }
+article footer div > a:first-child { margin-right: 0.5em; }
+article footer div > * { display: inline; }
+.ref { font-size: x-small; vertical-align: top; }
+@media print {
+ body > nav > *, body > footer { display: none; }
+ html, body, body { background: transparent none repeat scroll 0% 0% ! important; }
+ pre { page-break-inside: avoid; font-size: 90%; }
+}
+--></style> + <style data-href="/css/style.css" media=""><!--
+/* Effective stylesheet produced by snapshot save */
+@font-face { + font-family: "caviardreams"; + src: url(data:application/octet-stream;base64,AAEAAAAMAIAAAwBAT1MvMkzXoBYAAAFIAAAAYGNtYXDU+wDDAAAHBAAABHJnYXNwACAACAAAv6AAAAAQZ2x5ZsUe36gAAA4oAACHxGhlYWT2EPTaAAAAzAAAADZoaGVhEZILtQAAAQQAAAAkaG10eL9uj1QAAAGoAAAFXGtlcm6XIqQ/AACV7AAAGx5sb2NhV115qgAAC3gAAAKwbWF4cAFfAJwAAAEoAAAAIG5hbWUwixO+AACxDAAAB+1wb3N0C/x/3wAAuPwAAAajAAEAAAADAAAduJ0XXw889QALCAAAAAAAxZXHmQAAAADHsuKH/7b+VwnxB2UAAQAJAAEAAAAAAAAAAQAAB13+pwCLDAD/tv+2CfEAAQAAAAAAAAAAAAAAAAAAAVcAAQAAAVcAnAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBEoB9AAFAAgFmgUzAAABGwWaBTMAAAPRAGYCEggEAgsGAgICBAIFBIAAAKdQAABKAAAAAAAAAABITCAgACAAIPsCBez+pwDNB10BWSAAARFBAAAAA7MF7AAAACAAAAo8AEsAyAAAAsQAAALEAAABzAB9AlEAfQY+AH0D4ABkBJwAUATpAEsBeQB9AsMAZALDAGQDMgCABAYAfQGlAAoDRQB9AZoAZALZ/84EtgBMBRYCFATEAJcExACXBNYArQTDAHUEtwBJBMQAmQS7AGsEtwBJAcwAfQIHAFMFPwBkBAYAfQU/AGQDsgB/BhgAfQTrADIEFACWBgQAfQSPAJYEHwCWA8MAlgYdAH0EZgCWAdMAqgNXAH0EQgCWA6kAlgaGAJYE+gCWBw0AfQQmAJYHDQB9BCYAlgP1ADIDzAAyBRkAlgTrADIGQgB9BLUAMgT4ADIFKQCWAkMAfQLZ/84CQwB9A6sAZAP2ABkCzACWBSUAfQUkAJYEggBaBSUAfQSCAFoCFgBaBSkAfQQSAJYBzAB9Ad8AMQNBAJYBqwCWBTUAlgQdAJYE0gBaBQsAlgUMAGQCYwCWAx8AcwKjAFoENwCWBCEAMgU1AJYDeQBLA+8ASwPsAJYDXQClAasAlgNdAKUE2QB9AcwAfQPtAGMEWABkBE0AZAT4ADIBqwCWBGUAZALgAH0FSQBjA8oAZARoAGQDRQB9AwEAlgQGAH0CzACWBAYAlgRIADMBswB9AmsAowPKAGQDsgCXBOsAMgTrADIE6wAyBOsAMgTrADIE6wAyBp0AfQYEAH0EHwCWBB8AlgQfAJYEHwCWAgD/tgIAAKoB6v+6AbT/5wTXADIE+gCWBw0AfQcNAH0HDQB9Bw0AfQcNAH0EJgDSBw0AfQUZAJYFGQCWBRkAlgUZAJYE+AAyBEkAlgUlAH0FJQB9BSUAfQUlAH0FJQB9BSUAfQgJAFoEggBaBNsAWgTbAFoE2wBaBNsAWgIA/7YCAACqAer/ugG0/+cEHQCWBNIAWgTSAFoE0gBaBNIAWgTSAFoEBgB9BNIAWgQ3AJYENwCWBDcAlgQ3AJYD7wBLBQwAgQPvAEsB0wCqA2cAeQNnAHkDdwCWA3kAzQGzAH0DEgEDAwsA6wNDAJYDngCWA1UAMgWeADIBNwAyATcAMgE3ADICHgAyAh4AMgIeADIC9QBkAvUAZAo8AEsIFABkAocAZAKHAGQEMQAyA9sAMgRYAGQFfQBkB6IAfQTPAGQEBgB9BNkAfQU/AGQFPwBkA2QAZAOFAGQE0gBaBOsAMgUlAH0E6wAyBSUAfQYEAH0EggBaBgQAfQSCAFoGBAB9BIIAWgYEAH0EggBaBNcAMgUdAH0EHwCWBIIAWgQfAJYEggBaBB8AlgSCAFoEHwCWBIIAWgYdAH0FKQB9Bh0AfQUpAH0GHQB9BSkAfQHT//oB0//6A6kAlgJkAJYE+gCWBB0AlgT6AJYEHQCWBw0AfQTSAFoHDQB9BNIAWgcNAH0E0gBaCH0AWgfgAFoE+AAyBPgAMgPvAEsGlwBQBygAlgQvAIwE6wAyBSUAfQSPAJYFjAB9BB8AlgSCAFoGHQB9BSkAfQRmAJYEEgCWAdP/3gHT/94B0//EAdP/xAHT/9YBzP/8AdMAjQOpAJYBqwAGBCYAlgJjAJYEJgCWAmMAKAP1ADIDHwBzA/UAMgMfAFkD9QAyAx8AcwP1ADIDHwBZA8wAMgKjAFoFGQCWBDcAlgUZAJYENwCWBRkAlgQ3AJYFGQCWBDcAlgUZAJYENwCWBRkAlgQ3AJYGQgB9BTUAlgT4ADID7wBLBSkAlgPsAJYFKQCWA+wAlgUpAJYD7ACWBp0AfQgJAFoHDQB9BNIAWgZCAH0FNQCWBkIAfQU1AJYGQgB9BTUAlgwAAAAD9gAZATcAMgF5AH0CdwB9A5gAfQPiAFoDwQBaA+IAWgPBAFoAAAAD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AMT+0wAkAMX/YQAkAMYAlwAkAMv/twAlAA//twAlABH/twAlAB3/twAlAB7/twAlACT/9gAlAMH/twAlAMP/3AAlAMT/twAlAMb/3AAmAA//3AAmABH/3AAmAB3/3AAmAB7/3AAmACT/2AAmAMH/3AAmAMIAcgAmAMP/yQAmAMT/3AAmAMUAcgAmAMb/yQAnAA//kAAnABAAJgAnABH/kAAnAB3/3AAnAB7/3AAnACT/zgAnADn/zgAnADr/4gAnADz/0wAnAMH/3AAnAMIAOQAnAMP/kAAnAMT/3AAnAMUAOQAnAMb/kAAoAA//3AAoABD/3AAoABH/3AAoAB3/twAoAB7/twAoAGv/3AAoAHX/3AAoAMv/3AAoAMz/3AApAA/++AApABD/yQApABH++AApAB3/kAApAB7/kAApACT/pAApADb/twApAET/0wApAEj/0wApAEz/3AApAFL/0wApAFX/3AApAFj/3AApAFz/0wApAGv/twApAHX/twApAHz/pAApAJz/0wApAK3/0wApAMP/DQApAMb/DQApAMv/twApAMz/twApAQX/0wAqAA//twAqABH/twAqAB3/3AAqAB7/3AAqADz/8QAqAMH/3AAqAMIALwAqAMP/kAAqAMT/3AAqAMUALwAqAMb/kAArAA//3AArABH/3AArAB3/3AArAB7/3AArAMIAJgArAMUAJgAsAA//3AAsABH/3AAsAB3/3AAsAB7/3AAsAMIAJgAsAMUAJgAtAA//twAtABH/twAtAB3/3AAtAB7/3AAtACT/4gAtAET/7AAtAMIAJgAtAMP/yQAtAMUAJgAtAMb/yQAuAA//3AAuABD/kAAuABH/3AAuAB3/3AAuAB7/3AAuACb/pAAuADL/pAAuADr/3AAuADz/3AAuAET/twAuAEj/twAuAFL/twAuAFj/yQAuAFz/twAuAGv/RAAuAHX/kAAuAI//pAAuAJz/twAuAK3/twAuAMEAJgAuAMIAJgAuAMMASwAuAMQAJgAuAMUAJgAuAMYASwAuAMv/RAAuAMz/kAAuAQT/pAAuAQX/twAvAA//twAvABD/awAvABH/twAvAB3/3AAvAB7/3AAvADL/twAvADf/rQAvADj/3AAvADn/RAAvADr/iAAvADz/kAAvAET/wQAvAEj/wQAvAFL/wQAvAFj/wQAvAFz/kAAvAGv/RAAvAHX/kAAvAI//twAvAJz/wQAvAK3/wQAvAMH/HwAvAML/HwAvAMMAJgAvAMT/HwAvAMX/HwAvAMYAJgAvAMv/RAAvAMz/kAAvAQT/twAvAQX/wQAwAA//3AAwABH/3AAwAB3/3AAwAB7/3AAwAMIAJgAwAMUAJgAxAA//3AAxABH/3AAxAB3/3AAxAB7/3AAxAMIAJgAxAMUAJgAyAA//kAAyABH/kAAyAB3/3AAyAB7/3AAyACT/xAAyADf/twAyADn/0wAyADr/7AAyADv/yQAyADz/2AAyAMH/3AAyAMIAOQAyAMP/kAAyAMT/3AAyAMUAOQAyAMb/kAAzAA/+PAAzABD/awAzABH+PAAzAB3/twAzAB7/twAzACT/fQAzAET/pAAzAEj/pAAzAEz/3AAzAFH/3AAzAFL/pAAzAFX/3AAzAFb/yQAzAFj/3AAzAGv/awAzAHX/kAAzAHz/fQAzAJz/pAAzAK3/pAAzAMIAOQAzAMP+0wAzAMUAOQAzAMb+0wAzAMv/awAzAMz/kAAzAQX/pAA0AA//3AA0ABH/3AA0AMH/3AA0AMIAOQA0AMMAJgA0AMT/3AA0AMUAOQA0AMYAJgA1AA//kAA1ABD/twA1ABH/kAA1AB3/3AA1AB7/3AA1ADcADwA1ADn/9gA1ADoACgA1ADz/9gA1AET/3AA1AEj/3AA1AFL/3AA1AGv/kAA1AHX/twA1AJz/3AA1AK3/3AA1AMH/twA1AMIALwA1AMT/twA1AMUALwA1AMv/kAA1AMz/twA1AQX/3AA2AA//twA2ABAAJgA2ABH/twA2AB3/3AA2AB7/3AA2AMH/3AA2AMIAOQA2AMP/3AA2AMT/3AA2AMUAOQA2AMb/3AA3AA//awA3ABD/kAA3ABH/awA3AB3/twA3AB7/twA3ACT/twA3ACb/twA3ADL/twA3AET/rQA3AEb/rQA3AEj/rQA3AFL/rQA3AFX/0wA3AFb/wQA3AFj/0wA3AFr/0wA3AFz/3AA3AGv/awA3AHX/kAA3AHz/twA3AI//twA3AJz/rQA3AK3/rQA3AMEASwA3AMIAJgA3AMP/twA3AMQASwA3AMUAJgA3AMb/twA3AMv/awA3AMz/kAA3AQT/twA3AQX/rQA4AA//twA4ABH/twA4ACT/2AA4AGv/3AA4AHX/yQA4AMIAJgA4AMP/3AA4AMUAJgA4AMb/3AA4AMv/3AA4AMz/yQA5AA//HwA5ABD/kAA5ABH/HwA5AB3/twA5AB7/twA5ACT/yQA5ACr/7AA5ADL/0wA5AET/kAA5AEj/kAA5AEz/3QA5AFL/kAA5AFj/wQA5AFz/3AA5AGv/RAA5AHX/awA5AHz/yQA5AJz/kAA5AK3/kAA5AMEAcgA5AMIAcgA5AMP/RAA5AMQAcgA5AMUAcgA5AMb/RAA5AMv/RAA5AMz/awA5AQX/kAA6AA//awA6ABD/kAA6ABH/awA6AB3/3AA6AB7/3AA6ACT/xgA6ADL/7AA6AET/twA6AEj/twA6AEz/9gA6AFL/twA6AFX/3AA6AFj/yQA6AFz/7AA6AGv/awA6AHX/kAA6AJz/twA6AK3/twA6AMEAcgA6AMIAcgA6AMP/awA6AMQAcgA6AMUAcgA6AMb/awA6AMv/awA6AMz/kAA6AQX/twA7AA//3AA7ABD/twA7ABH/3AA7AB3/3AA7AB7/3AA7ACb/yQA7ADL/yQA7AEj/3AA7AGv/RAA7AHX/twA7AI//yQA7AMEAJgA7AMIAJgA7AMMAXgA7AMQAJgA7AMUAJgA7AMYAXgA7AMv/RAA7AMz/twA7AQT/yQA8AA//HwA8ABD/kAA8ABH/HwA8AB3/twA8AB7/twA8ACT/twA8ADL/2AA8AET/dQA8AEj/dQA8AEz/8QA8AFL/dQA8AFj/mgA8AGv/HwA8AHX/awA8AHz/twA8AJz/dQA8AK3/dQA8AMEAcgA8AMIAXgA8AMP/awA8AMQAcgA8AMUAXgA8AMb/awA8AMv/HwA8AMz/awA8AQX/dQA9AA//twA9ABD/awA9ABH/twA9AGv/RAA9AHX/twA9AMIAOQA9AMMASwA9AMUAOQA9AMYASwA9AMv/RAA9AMz/twBEAA//3ABEABH/3ABEAEUABQBEAFMAFABEAFcABQBEAGv/3ABEAMH/3ABEAMIAJgBEAMT/3ABEAMUAJgBEAMv/3ABFAA//twBFABH/twBFAB3/3ABFAB7/3ABFAFj/9gBFAFn/7ABFAFz/7ABFAHX/3ABFAMH/awBFAMT/awBFAMz/3ABGAA//twBGABH/twBGAB3/3ABGAB7/3ABGAE7/8QBGAFz/7ABGAGv/3ABGAHX/3ABGAMH/awBGAMT/awBGAMv/3ABGAMz/3ABHAA//3ABHABH/3ABHAGv/3ABHAMIASwBHAMUASwBHAMv/3ABIAA//twBIABH/twBIAB3/3ABIAB7/3ABIAFn/7ABIAFr/7ABIAFz/7ABIAHX/3ABIAMH/awBIAMT/awBIAMz/3ABJAA//awBJABD/3ABJABH/awBJAET/7ABJAEn/8QBJAEz/4gBJAE//4gBJAFL/7ABJAGv/kABJAHX/twBJALX/4gBJAMEASwBJAMIAlwBJAMQASwBJAMUAlwBJAMv/kABJAMz/twBKAA//3ABKABH/3ABKAET/8QBKAGv/3ABKAMH/3ABKAMIAJgBKAMT/3ABKAMUAJgBKAMv/3ABLAA//3ABLABH/3ABLAFz/4gBLAGv/3ABLAMH/kABLAMT/kABLAMv/3ABMAA//3ABMABH/3ABMAGv/3ABMAMIASwBMAMUASwBMAMv/3ABNAA//3ABNABH/3ABNAGv/3ABNAMIASwBNAMUASwBNAMv/3ABOAA//3ABOABD/twBOABH/3ABOAET/3ABOAEj/3ABOAFL/3ABOAFz/5wBOAGv/kABOAHX/3ABOAJz/3ABOAK3/3ABOAMH/3ABOAMIASwBOAMT/3ABOAMUASwBOAMv/kABOAMz/3ABOAQX/3ABPAA//3ABPABH/3ABPAFr/7ABPAGv/3ABPAMIASwBPAMUASwBPAMv/3ABQAA//3ABQABH/3ABQAFj/7ABQAFz/7ABQAGv/3ABQAMH/kABQAMT/kABQAMv/3ABRAA//3ABRABH/3ABRAFj/8QBRAFn/4gBRAFz/8QBRAGv/3ABRAMH/kABRAMT/kABRAMv/3ABSAA//twBSABH/twBSAB3/3ABSAB7/3ABSAFn/4gBSAFr/7ABSAFv/8QBSAFz/7ABSAHX/3ABSAMH/awBSAMT/awBSAMz/3ABTAA//twBTABH/twBTAB3/3ABTAB7/3ABTAFz/7ABTAHX/3ABTAMH/awBTAMT/awBTAMz/3ABUAA//3ABUABH/3ABUAGv/3ABUAMH/3ABUAMIASwBUAMT/3ABUAMUASwBUAMv/3ABVAA//awBVABD/3ABVABH/awBVAEb/+QBVAEf/+gBVAEj//ABVAEkASwBVAEoAAQBVAEwAFABVAE4AFABVAE8AFABVAFAAHABVAFEAFQBVAFL/7ABVAFMAFABVAFT/+ABVAFYAFABVAFcAKABVAFgAFABVAFkASwBVAFoASwBVAFsASwBVAFwAcgBVAF0AJgBVAGv/kABVAHX/3ABVAMIAlwBVAMUAlwBVAMv/kABVAMz/3ABVAVMASwBVAVQASwBWAA//twBWABH/twBWAFcADwBWAMH/kABWAMIAJgBWAMT/kABWAMUAJgBXAA//kABXABD/3ABXABH/kABXAGv/twBXAHX/yQBXAMEAJgBXAMIAcgBXAMQAJgBXAMUAcgBXAMv/twBXAMz/yQBYAA//3ABYABH/3ABYAF0ADwBYAGv/3ABYAMH/twBYAMIASwBYAMT/twBYAMUASwBYAMv/3ABZAA//HwBZABD/twBZABH/HwBZAB3/3ABZAB7/3ABZAET/4gBZAEj/7ABZAFL/7ABZAGv/kABZAHX/twBZAMIAcgBZAMUAcgBZAMv/kABZAMz/twBaAA//awBaABD/twBaABH/awBaAB3/3ABaAB7/3ABaAET/4gBaAEj/7ABaAEsADwBaAFL/4gBaAGv/kABaAHX/twBaAMIAcgBaAMUAcgBaAMv/kABaAMz/twBbAA//3ABbABD/twBbABH/3ABbAB3/3ABbAB7/3ABbAEwADwBbAGv/kABbAHX/twBbAMIAcgBbAMUAcgBbAMv/kABbAMz/twBcAA//RABcABD/3ABcABH/RABcAET/4gBcAEj/7ABcAFL/4gBcAGv/twBcAHX/3ABcAMEAJgBcAMIAlwBcAMQAJgBcAMUAlwBcAMv/twBcAMz/3ABdAA//twBdABD/3ABdABH/twBdAB3/3ABdAB7/3ABdAGv/awBdAHX/3ABdAMH/3ABdAMIASwBdAMT/3ABdAMUASwBdAMv/awBdAMz/3ABrAC3/3ABrADf/kABrADj/yQBrADn/awBrADr/kABrADv/twBrADz/awBrAD3/3ABrAET/3ABrAEb/3ABrAEf/3ABrAEj/3ABrAEn/3ABrAEr/3ABrAE0AJgBrAFL/3ABrAFf/yQBrAFn/twBrAFr/twBrAFv/twBrAJz/3ABrAK3/3ABrAOf/3ABrAQX/3ABrAVP/3ABrAVT/3AB1ACT/twB1AC3/twB1ADb/twB1ADf/awB1ADj/3AB1ADn/RAB1ADr/awB1ADv/RAB1ADz/HwB1AD3/twB1AEX/3AB1AEn/3AB1AEv/3AB1AEz/3AB1AE7/3AB1AE//3AB1AFD/3AB1AFH/3AB1AFP/3AB1AFX/3AB1AFf/twB1AFj/3AB1AFn/kAB1AFr/kAB1AFv/kAB1AFz/yQB1AF3/twB1AHz/twB1AVP/3AB1AVT/3AB8AA//3AB8ABD/3AB8ABH/3AB8AB3/3AB8AB7/3AB8ADYAOQB8ADf/twB8ADn/yQB8ADz/twB8AFn/wQB8AFr/yQB8AFz/3AB8AGv/twB8AMH+0wB8AML/YQB8AMMAlwB8AMT+0wB8AMX/YQB8AMYAlwB8AMv/twB9AA//3AB9ABD/3AB9ABH/3AB9AB3/twB9AB7/twB9AGv/3AB9AHX/3AB9AMv/3AB9AMz/3ACHAA//kACHABAAJgCHABH/kACHAB3/3ACHAB7/3ACHAMH/3ACHAMIAOQCHAMP/kACHAMT/3ACHAMUAOQCHAMb/kACPAA//kACPABH/kACPAB3/3ACPAB7/3ACPADf/twCPADv/yQCPAMH/3ACPAMIAOQCPAMP/kACPAMT/3ACPAMUAOQCPAMb/kACbAA//3ACbABH/3ACbAGv/3ACbAMH/3ACbAMIAJgCbAMT/3ACbAMUAJgCbAMv/3ACcAA//twCcABH/twCcAB3/3ACcAB7/3ACcAHX/3ACcAMH/awCcAMT/awCcAMz/3ACtAA//twCtABH/twCtAB3/3ACtAB7/3ACtAHX/3ACtAMH/awCtAMT/awCtAMz/3ADBACT/kADBACUAJgDBACYAOQDBACcAJgDBACgAJgDBACkAJgDBACoAOQDBACsAJgDBACwAJgDBAC3++ADBAC4AJgDBAC8AJgDBADAAJgDBADEAJgDBADIAOQDBADMAJgDBADQAXgDBADUAJgDBADYAOQDBADcAJgDBADgAJgDBADkAcgDBADoAcgDBADsAJgDBADwAXgDBAD0AJgDBAEUASwDBAEkAcgDBAEsASwDBAEwASwDBAE0ASwDBAE4ASwDBAE8ASwDBAFAASwDBAFEASwDBAFMASwDBAFUASwDBAFYAJgDBAFcAcgDBAFgASwDBAFkAcgDBAFoAcgDBAFsASwDBAFwAlwDBAF0ASwDBAHz/kADBAH3/RADBAIcAJgDBAI8AOQDBAMH/hwDBAQQAOQDBAQsASwDBAVMAcgDBAVQAcgDCAAP/nADCAEf/ugDCAFX/7ADCAFb/8QDCAFcACgDCAFn/7ADCAML/hwDDACQASwDDAC0ASwDDADf/twDDADn/awDDADr/awDDADz/RADDAEUAJgDDAEgAJgDDAEoAJgDDAE0AcgDDAFMASwDDAFUAJgDDAFYAOQDDAFf/3ADDAFn/kADDAFr/twDDAFsAJgDDAFz/3ADDAF0AOQDDAHwASwDDAH0AcgDDAQsAJgDEACT/kADEACUAJgDEACYAOQDEACcAJgDEACgAJgDEACkAJgDEACoAOQDEACsAJgDEACwAJgDEAC3++ADEAC4AJgDEAC8AJgDEADAAJgDEADEAJgDEADIAOQDEADMAJgDEADQAXgDEADUAJgDEADYAOQDEADcAJgDEADgAJgDEADkAcgDEADoAcgDEADsAJgDEADwAXgDEAD0AJgDEAEUASwDEAEkAcgDEAEsASwDEAEwASwDEAE0ASwDEAE4ASwDEAE8ASwDEAFAASwDEAFEASwDEAFMASwDEAFUASwDEAFYAJgDEAFcAcgDEAFgASwDEAFkAcgDEAFoAcgDEAFsASwDEAFwAlwDEAF0ASwDEAHz/kADEAH3/RADEAIcAJgDEAI8AOQDEAQQAOQDEAQsASwDEAVMAcgDEAVQAcgDFAAP/nADGACQASwDGAC0ASwDGADf/twDGADn/awDGADr/awDGADz/RADGAEUAJgDGAEgAJgDGAEoAJgDGAE0AcgDGAFMASwDGAFUAJgDGAFYAOQDGAFf/3ADGAFn/kADGAFr/twDGAFsAJgDGAFz/3ADGAF0AOQDGAHwASwDGAH0AcgDGAQsAJgDLAC3/3ADLADf/kADLADj/yQDLADn/awDLADr/kADLADv/twDLADz/awDLAD3/3ADLAET/3ADLAEb/3ADLAEf/3ADLAEj/3ADLAEn/3ADLAEr/3ADLAE0AJgDLAFL/3ADLAFf/yQDLAFn/twDLAFr/twDLAFv/twDLAJz/3ADLAK3/3ADLAOf/3ADLAQX/3ADLAVP/3ADLAVT/3ADMACT/twDMAC3/twDMADb/twDMADf/awDMADj/3ADMADn/RADMADr/awDMADv/RADMADz/HwDMAD3/twDMAEX/3ADMAEn/3ADMAEv/3ADMAEz/3ADMAE7/3ADMAE//3ADMAFD/3ADMAFH/3ADMAFP/3ADMAFX/3ADMAFf/twDMAFj/3ADMAFn/kADMAFr/kADMAFv/kADMAFz/yQDMAF3/twDMAHz/twDMAVP/3ADMAVT/3ADnAA//3ADnABH/3ADnAGv/3ADnAMIASwDnAMUASwDnAMv/3AEEAA//3AEEABD/3AEEABH/3AEEAB3/twEEAB7/twEEAGv/3AEEAHX/3AEEAMv/3AEEAMz/3AEFAA//twEFABH/twEFAB3/3AEFAB7/3AEFAHX/3AEFAMH/awEFAMT/awEFAMz/3AELAA//twELABAAJgELABH/twELAB3/3AELAB7/3AELAHX/3AELAMH/awELAML/3AELAMT/awELAMX/3AELAMz/3AFTAA//3AFTABH/3AFTAGv/3AFTAMIASwFTAMUASwFTAMv/3AFUAA//3AFUABH/3AFUAGv/3AFUAMIASwFUAMUASwFUAMv/3AAAAAAAKwIKAAEAAAAAAAAANAAAAAEAAAAAAAEADQA0AAEAAAAAAAIABABCAAEAAAAAAAMAHwA0AAEAAAAAAAQAEgA0AAEAAAAAAAUAGgBTAAEAAAAAAAYAEQBtAAEAAAAAAAoAPwB+AAMAAQQDAAIADgC9AAMAAQQFAAIACgDLAAMAAQQGAAIABgDVAAMAAQQHAAIACADbAAMAAQQIAAIADADjAAMAAQQJAAAAdgDvAAMAAQQJAAEAGgO1AAMAAQQJAAIACAGBAAMAAQQJAAMAPgFlAAMAAQQJAAQAJAFlAAMAAQQJAAUANAGjAAMAAQQJAAYAIgHXAAMAAQQJAAkAHgEPAAMAAQQJAAoBkAH5AAMAAQQJAAwALAOJAAMAAQQJAA0BeAO1AAMAAQQKAAIADgXVAAMAAQQLAAIAEgUtAAMAAQQMAAIACAVPAAMAAQQOAAIAEAU/AAMAAQQQAAIAEgVPAAMAAQQTAAIABgVhAAMAAQQUAAIADgVnAAMAAQQVAAIAFAV1AAMAAQQWAAIADgXHAAMAAQQZAAIAFAWJAAMAAQQbAAIACgWdAAMAAQQdAAIABgDbAAMAAQQfAAIACgWnAAMAAQQkAAIADAWxAAMAAQQtAAIACgW9AAMAAQgKAAIADgXVAAMAAQgWAAIADgXHAAMAAQwKAAIADgXVAAMAAQwMAAIACAVPVHlwZWZhY2UgqSAoeW91ciBjb21wYW55KS4gMjAwOS4gQWxsIFJpZ2h0cyBSZXNlcnZlZENhdmlhciBEcmVhbXMgQm9sZDpWZXJzaW9uIDMuMDBWZXJzaW9uIDMuMDAgTWFyY2ggMiwgMjAxMENhdmlhckRyZWFtcy1Cb2xkVGhpcyBmb250IHdhcyBjcmVhdGVkIHVzaW5nIEZvbnRDcmVhdG9yIDUuNiBmcm9tIEhpZ2gtTG9naWMuY29tAE4AZQBnAHIAZQB0AGEAdAB1AQ0AbgDpAGYAZQBkAEYAZQB0AHQDiAO9A8QDvwO9A7EAQwBhAHYAaQBhAHIAIABEAHIAZQBhAG0AcwAgAKkAIABMAGEAdQByAGUAbgAgAFQAaABvAG0AcABzAG8AbgAgADIAMAAxADAALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgAgAEMAYQB2AGkAYQByACAARAByAGUAYQBtAHMAIABCAG8AbABkADoAVgBlAHIAcwBpAG8AbgAgADMALgAwADAAVgBlAHIAcwBpAG8AbgAgADMALgAwADAAIABNAGEAcgBjAGgAIAAyACwAIAAyADAAMQAwAEMAYQB2AGkAYQByAEQAcgBlAGEAbQBzAC0AQgBvAGwAZABBACAAZwBlAG8AbQBlAHQAcgBpAGMAIABzAGEAbgBzACAAcwBlAHIAaQBmACAAdwBpAHIAaAAgAGEAIABkAGEAcwB0AGEAcgBkAGwAeQAgAGEAbgBnAGwAZQBkACAAbABvAHcAZQByAGMAYQBzAGUAIABsAGUAdAB0AGUAcgAgAGUALAAgAGEAbgBkACAAdABoAG8AcwBlACAAdwAnAHMAIAB3AGkAdABoACAAdABoAG8AcwBlACAAbABvAHYAZQBsAHkAIABsAGUAdAB0AGUAcgAgAGwAdQBtAHAAcwAuACAARQB4AHQAcgBlAG0AZQAgAHIAbwB1AG4AZAAgAG8AdgBlAHIAcwBoAG8AbwB0ACAAbQBhAHkAIABiAGUAIABkAGkAcwB0AHUAcgBiAGkAbgBnACAAdABvACAAcwBvAG0AZQAgAHYAaQBlAHcAZQByAHMALgAgAFYAaQBlAHcAZQByACAAZABpAHMAYwByAGUAdABpAG4AIABpAHMAIABhAGQAdgBpAHMAZQBkAC4AaAB0AHQAcAA6AC8ALwB3AHcAdwAuAG4AeQBtAGYAbwBuAHQALgBjAG8AbQBDAGEAdgBpAGEAcgAgAEQAcgBlAGEAbQBzACAAbQBhAHkAIABiAGUAIAB1AHMAZQBkACAAcABlAHIAcwBvAG4AYQBsAGwAeQAgAG8AcgAgAGMAbwBtAG0AZQByAGMAaQBhAGwAbAB5ACAAaABvAHcAZQB2AGUAcgAgAHQAaABlACAAZgBvAG4AdAAgAGQAYQB0AGEAIABpAHQAcwBlAGwAZgAgAG0AYQB5ACAAbgBvAHQAIABiAGUAIAByAGUAZABpAHMAdAByAGkAYgB1AHQAZQBkACAAcwBvAGwAZAAgAGEAdAAgAGEAbgB5ACAAbQBlAGEAcwB1AHIAZQAgAG8AcgAgAGkAbgAgAGEAbgB5ACAAZgBvAHIAbQAuACAARQBtAGEAaQBsACAAbgB5AG0AcABoAG8AbgB0AEAAeQBhAGgAbwBvAC4AYwBvAG0AIABmAG8AcgAgAHMAcABlAGMAaQBmAGkAYwAgAGQAZQB0AGEAaQBsAHMATABpAGgAYQB2AG8AaQB0AHUARgDpAGwAawD2AHYA6QByAEcAcgBhAHMAcwBlAHQAdABvAFYAZQB0AEgAYQBsAHYAZgBlAHQAUABvAGcAcgB1AGIAaQBvAG4AeQQfBD4EOwRDBDYEOARABD0ESwQ5AFQAdQENAG4A6QBLAGEAbAExAG4ASwByAGUAcABrAG8ATABvAGQAaQBhAE4AZQBnAHIAaQB0AG8ATgBlAGcAcgBpAHQAYQAAAAACAAAAAAAA/ycAlgAAAAAAAAAAAAAAAAAAAAAAAAAAAVcAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAKMAhACFAL0AlgDoAIYAjgCLAKkAigDaAIMAkwCNAJcAiADDAN4AqgCiAK0AyQDHAK4AYgBjAJAAZADLAGUAyADKAM8AzADNAM4A6QBmANMA0ADRAK8AZwDwAJEA1gDUANUAaADrAO0AagBpAGsAbQBsAG4AoABvAHEAcAByAHMAdQB0AHYAdwB4AHoAeQB7AH0AfAC4AKEAfwB+AIAAgQDsAO4AugDXANgA4QECANsA3ADdAOAA2QDfALIAswC2ALcAxAC0ALUAxQCCAMIAhwCrAL4AvwC8APcBAwEEAQUAjADvAKcAlACVAJ0AngDqAQYBBwEIAQkA/QD+AQoBCwEMAQ0A/wEAAQ4BAQEPARABEQESARMBFAEVARYBFwEYAPgA+QEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoALAAsQC7ASkBKgDGASsAiQEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgD7APwA5ADlAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwA5gDnAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAd1bmkwMkM5BGxpcmEERXVybwlhZmlpNjEzNTIHQW1hY3JvbgdhbWFjcm9uBkFicmV2ZQZhYnJldmULQ2NpcmN1bWZsZXgLY2NpcmN1bWZsZXgKQ2RvdGFjY2VudApjZG90YWNjZW50BkRjcm9hdAdFbWFjcm9uB2VtYWNyb24GRWJyZXZlBmVicmV2ZQpFZG90YWNjZW50CmVkb3RhY2NlbnQGRWNhcm9uBmVjYXJvbgtHY2lyY3VtZmxleAtnY2lyY3VtZmxleApHZG90YWNjZW50Cmdkb3RhY2NlbnQGSWJyZXZlBmlicmV2ZQRMZG90BGxkb3QGTmFjdXRlBm5hY3V0ZQZOY2Fyb24GbmNhcm9uB09tYWNyb24Hb21hY3JvbgZPYnJldmUGb2JyZXZlDU9odW5nYXJ1bWxhdXQNb2h1bmdhcnVtbGF1dAZZZ3JhdmUGeWdyYXZlBnBlc2V0YQdBb2dvbmVrB2FvZ29uZWsGRGNhcm9uBmRjYXJvbgdFb2dvbmVrB2VvZ29uZWsMR2NvbW1hYWNjZW50DGdjb21tYWFjY2VudAtIY2lyY3VtZmxleAtoY2lyY3VtZmxleAZJdGlsZGUGaXRpbGRlB0ltYWNyb24HaW1hY3JvbgdJb2dvbmVrB2lvZ29uZWsKSWRvdGFjY2VudAZMYWN1dGUGbGFjdXRlBlJhY3V0ZQZyYWN1dGUGUmNhcm9uBnJjYXJvbgZTYWN1dGUGc2FjdXRlC1NjaXJjdW1mbGV4C3NjaXJjdW1mbGV4DFRjb21tYWFjY2VudAx0Y29tbWFhY2NlbnQGVXRpbGRlBnV0aWxkZQdVbWFjcm9uB3VtYWNyb24GVWJyZXZlBnVicmV2ZQVVcmluZwV1cmluZw1VaHVuZ2FydW1sYXV0DXVodW5nYXJ1bWxhdXQHVW9nb25lawd1b2dvbmVrC1djaXJjdW1mbGV4C3djaXJjdW1mbGV4C1ljaXJjdW1mbGV4C3ljaXJjdW1mbGV4BlphY3V0ZQZ6YWN1dGUKWmRvdGFjY2VudAp6ZG90YWNjZW50B0FFYWN1dGUHYWVhY3V0ZQtPc2xhc2hhY3V0ZQtvc2xhc2hhY3V0ZQZXZ3JhdmUGd2dyYXZlBldhY3V0ZQZ3YWN1dGUJV2RpZXJlc2lzCXdkaWVyZXNpcwlhZmlpMDAyMDgNdW5kZXJzY29yZWRibA1xdW90ZXJldmVyc2VkBm1pbnV0ZQZzZWNvbmQJZXhjbGFtZGJsB3VuaUYwMDEHdW5pRjAwMgd1bmlGQjAxB3VuaUZCMDIAAAAAAwAPAAIAEgAB//8AAg==); +}
+html { background: url(data:image/jpeg;base64,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Z09iamMAAAABAAAAAAAAUkdCQwAAAAMAAAAAUmQgIGRvdWJAb+AAAAAAAAAAAABHcm4gZG91YkBv4AAAAAAAAAAAAEJsICBkb3ViQG/gAAAAAAAAAAAAQnJkVFVudEYjUmx0AAAAAAAAAAAAAAAAQmxkIFVudEYjUmx0AAAAAAAAAAAAAAAAUnNsdFVudEYjUHhsQFIAAAAAAAAAAAAKdmVjdG9yRGF0YWJvb2wBAAAAAFBnUHNlbnVtAAAAAFBnUHMAAAAAUGdQQwAAAABMZWZ0VW50RiNSbHQAAAAAAAAAAAAAAABUb3AgVW50RiNSbHQAAAAAAAAAAAAAAABTY2wgVW50RiNQcmNAWQAAAAAAADhCSU0D7QAAAAAAEABIAAAAAQACAEgAAAABAAI4QklNBCYAAAAAAA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAB44QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAAAAAJAAAAAAAAAAABADhCSU0nEAAAAAAACgABAAAAAAAAAAI4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAAzsAAAAGAAAAAAAAAAAAAACVAAAATgAAAAMAdABvAHAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAE4AAACVAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAACVAAAAAFJnaHRsb25nAAAATgAAAAZzbGljZXNW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AAgAAAABAQD/4Q27aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkVDNTc5NzFCOTNCRUUwMTE5QTFEQjFDQzJENDc5QzFFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjExMjg1MjgwQkVBNzExRTBCNkIxRUM2NkJBNDI5MkY1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3QkJGRUUwOTNDMUUwMTE5NjA3OTQwQkRGMkY1RkVGIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgV2luZG93cyIgeG1wOkNyZWF0ZURhdGU9IjIwMTEtMDgtMDRUMTY6MjY6MjArMDI6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDExLTA4LTA4VDEwOjQzOjU3KzAyOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDExLTA4LTA4VDEwOjQzOjU3KzAyOjAwIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFRTU3OTcxQjkzQkVFMDExOUExREIxQ0MyRDQ3OUMxRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFQzU3OTcxQjkzQkVFMDExOUExREIxQ0MyRDQ3OUMxRSIvPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpEN0JCRkVFMDkzQzFFMDExOTYwNzk0MEJERjJGNUZFRiIgc3RFdnQ6d2hlbj0iMjAxMS0wOC0wOFQxMDo0Mzo1NyswMjowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+4ADkFkb2JlAGRAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgIC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) repeat-x scroll 0px 82px, rgb(244, 242, 242) url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QNtaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDI5MjBBMENCRUE2MTFFMDg4NjA4MUNFRjg3NDZDMDQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDI5MjBBMEJCRUE2MTFFMDg4NjA4MUNFRjg3NDZDMDQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUU1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94Onht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) repeat scroll 0% 0%; font-family: sans-serif; min-height: 100%; width: 100%; }
+body { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATEAAAHvCAYAAAA8Ueg3AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAHbSSURBVHja7P15lGXZVd+Jf/Y5974p5iEj57my5nlSlWZkWUiWkAAzLkyLxgy2aWhjvGyvlpumGxZtxPAzGBCgBhkLWyDAyMYWFFIhpJJKVZWVNWZlVc5zZmRmzMOb7j1n//64LzIjq3KI6cV4Pmu9FRGZEW8495zv3XufffaWb/8jVjQCUIW6ghhLTAHvE7yCVVAjqANEMGpx1mFMlRxQteDzkPSAuOa8ufxZi9Sl8UabhFUQQ5JYLiaenXklHYOJVqVgIIdSR3EIkURUJ2FH0dPRBftOK209gFOMFXyqiADOFsdGZKuJa/05w5gSCCxPojAEgTcRq5ptKrKjbZ30aD16I5L0laaKcCAQROwKiu4G6sDpcHlnK15sUbU7FekAvE+1aqzdHEXuKKKTYYgCQcSaLWDKTufdvYikgAM9Fy7x9d3whnFlvZfNxpvdzksn4IFk6ndUKVZqdoeJ0teCSxkIItY06wtE7XbR6F4gRTHAg43/DkJ2DZIUm8LGXNHsUifdvvHP1/jVlMhswcuJuKaTwa0MLDsRM26ZvBMBb6YU6YqZcPnn6b/qs98VnbLAzDY0ug9BG3/hAOtFHpQgZG/G5PJsOFuV3ZfGpSeOoTFeen0DV0qmYrfmRtwb3oQBDCwzETu7YxncWgWiBDaeh2oR7ES2W5gKWInBG1Q9GEU8jHcpvUPKZEkxKZvUR/dK9jH8tGd1ClaVBwAVOB9cSNYr7DYxvfm8GJ+Sys0vvxrB153dQivHo4LWCH5lYDmJ2ET7MnAHBXJ1MOfBR2A9kGb/jjVoGjVEzCEOarEnSgEvm3xiHhQkyv7iLTggwvAQyj7WppAJSK+I2W0wfYBRxeFmJGDZ9XE400qbK7DZqx4LGhZYXu6kXx4idvl96JWld9mNlIaXOO3fPLpBKvYBVCxyTQG7SsgUvV8zobu06q9qY7iMSK+K7EyQjQqWLOY11yvufU22+ZqeQm843oHA4orYilufAnHC+vGcfUhSiW8iYFOkCHnEPazoXmBgtV5Qr+Ajuohkd2xloyiRZkKezPep47rp7N9sNx67z5+2SVg8gSBic3WO1rUOmodQohkK2GUh82gerw8bI8+CDq/C69nZadhRi8wWaSMWXRDxunz/8AZKNbNtw2l/zibqwvIJBBGbPb0oDwO5WQrYZSETkYL38SNOkucQHVkU167Zsg4teHYZq1varBR8jRRhwW0lb3Eto9LTOUAPqhdDgD8QRGx29AAPq1CYp3WRepWSl+gR0vRZcjo2I6WY44L1BcUmTd0BblO1jyvSKpB4qDcxl0u9IVJjtyJyMSyfQBCxmdsaXeAfRuctYJeFTL1pjZLoYW1L9+J1fMqqEBq7otN+9qaRwzYHG8n1eGKXbQk26RR4mZQJ8bbE3IP2M/9ISppGZr0xrhWYCEsoEETspt6YdoJ/BCixcPEdBBK1psNV4odbhuSZujUVTJ2S8QytE/IXY2xd6KTG6w8qb9wG8RxePcnBrleV3a8Y6sWmDFGK6lHJLNVFuSRqyTNstkWH/AGxYREFgojdSGo61OvDqF9QAbvs6hmSuCKdqjyC8hxK9bLbOC2rQwXSaFoayOxUmAtbYeOhiOK4kEZNCCQJFwUZUqO9sAjpDx7vC3ZjssMc05hqWEaBIGLXpt346GFE2pohYJc1xpA46AUeAvaSVcC4lhs1p7iYdTDZqbz4gTp3fyNPoWJRWWAhU7wTjttEeyWFpp9vVLzmaE83yQZVToQAfyCI2Ftp9cQPI9LeTAGbRt3g14uXBzC8sNCvadPsqNSJW+vc+eWIemnhP4AzeiFnZCiHdPvmW2MqgkrNb3VD/pQ4fFhKgSBiXLYgSppGjzRqWi1mSmUdtZtTjwP3AgscJI/rMLTZc25rnXVHDbrAI288qSmZ01q0PSjTtiaapGJKajDd+R7fm+Y07FQGgoghYBIpMW4fUTWdzchzurl5QeISu9VOSILw6kIKmXjwMRz9AGz9QhZf0wWvCOHPqphdWpOWRkWPpmI8ZrLDbH3xW9xFE2yxwFKJ2HIIZyjghUJato8aa7qWQsCm3oq3JPlRs0u8JCocWEgpmCohdPhBz569ghOyE40LZx3VJ47r2c4tcqd3147tLehgGVyubtbd+RXfFg+7cQ1legJLIWKTuaWfeSpgBVKMk+VQdE9I1XAroilODy2w9cLJ22HyNej55UzBF2rxawpxpzvV9XGzAyGHNjdWpYJaR3H9Cdmol8w4Id0isJYtMaAKPCfwsMJ6aL4lccO3JOoVvUPV1NT4ky4C7xrvdVrESeciulW48L3KuqNQOJm5mQs1kKag5XLFnc/l7C5pfvKr4tFal9nUo3o8yqzXQGBxRWyZvZ+awPMID6suuZB5Qcykj+9lIkm7LulZm2ZVFr0aMIpFsencVq0bAP9RuOMNpe5ZsLQI9RB7PT1UZWviMCJNFjIldbF05kr0ttTdeR9ELLDGRSwTMmUfysMq9C21kCU5zJY34vt3vGbqdZtcanOeeprDFx09PqF1wMzJGlOFKA/veDds6VPcAiZF5KwO/8439dKZUdkY2+anPxgPl0p2izp33oecsUAQsczhMuher/Ko8axzdmmFTCFOI33IWZ51wrAjq0CbekjjObqUQD2Fr38dxjZJ1vx3gd6wgA5X/KnY2I2LNEbOIb0mF7W1xIxrELJAEDFAqdVadG+toI92DJgeb1m6MnxCCloUNQ+J+GeB8YV4WmshqcExK7x2hxD7qY8+z6ETKHgu3vqSjhQq0uENrrnDg06mFNbvYdMPPOgPVkLBxEAQseyIT6Wk1dGt6fN9F6NHysb0iCydRaaQWC9tdY0eVHgWFubMoEZw7zGlZVIZzivGLMh7BY8zqTkj1nY1dimbah/lLHr8ktnw6a/rsVqiSWjtFgiWWEPI4pSybUmfN2n0qDrTMcdiiAtFkor0qJEHTHbOckHeizNw6wU4MASjiWIXIFVBgXHRc7KVnVGJkrrmWmORwQ2VpfPsCN1euRBELLAkIqaNvo+y3GIawmSUc8/XqzwimMU+jvRm6mL8BtD7UF4QbWRdaObGzSnIDyQxtNaE/d8Q1C9MfCytUb7tY76/61Zzi2uyiAFqLaaUN5ti9RfC0gosmoiJXqn+lysL9QI0/+TdXBa6jqtP9wnxoxhpgaW1yFxqt1cTqeYifU2N4qLsoHfss8z82eIdbNoGD21XahaMLsSYQZx3Z1zd7FiUa6Q4UbPeGC2qoRKWV2BRRCyXZivOxbDxhOCN5fhdinXL0iobxad7JYofVU9pKYXMKMlEbPZMRKaWxvUjY+uF7gvKpklPrjK3tAvvYUskXOoUkjgTsvkMv2TCMuLLftBlPSebPV4eQ7HSxob2mh4PLmVg0d1JF8H6U4Z8Wenf5pnsAmfnWAywaRYZI6h5HvRR0MISCpmK4kX9XUa1Liqn5iv4Cpg6FMah3CILdZxCvZXT6li/GDckBS2Mmo0t4+6kS/FByAKLKmKQxcUK47DjgODaLYfvdlTzSrSMts0VhiLHPmd5RCEWWKr2YR4wxkf35CpaVZl/SRpvoKOi1IHzsjBuZWr1Yt6Y0RaVNi9NT7fwPiddB09q5+hxP2TisMgCiyxiAN5mAepSRbjtNctQq+f8To+abNUu9M3VC1lqwfREAN+oEC3TXFqfPUQFVb1EpC+ahIdUxLJEQqaCFydx26C5X3P+GYSx+T6nU9jolIfvgcjMPzwZC7WjA3rhjYvSEUnTx8mLJac52+dyMqRBxAJLIWLTxawwCb3jQrEqjKyDeqtf+KC/gElBW/zlig7eK5GBQj1rtuGnNhtUUZuiHoj9eS3oi0zYB0GmZHDxEVJFS+rNw6h+0yiVqRr9c83mT8pQvwDt2wQ/T9mJDcRGz4HuaIxTUx3LtIbvvt1s7N2mR9Al3YAJrHURm3JvvGTm0rrzStrraa1OW5wLuBzS9VdrUEmhZQwmOxrWn0y9XD0zJxSMcjZf0VzVxfcKLJ2QQSrOdA5G5oFCye+t5lzi8pb2qptTYEiA/jGYeEHmbf4qYIWRYsRQXVgvzRcWh9BuctqDEtItAksrYldZBzmoeEv7OaG+zkGsWVG/hRIy/9bFd5U7qddeoWL0OKlEoHc1Kpou1Z5qvWplQ2rkvpEWXkjbxEejMMdCF4hCKedJa4LOMzgmoKnKGVG7flHcbBAjZtOWUXchVLYILBsRg0YOVCpwPocveMymLOKvytJuRHk5LEKsRm9ruDBLImRGNRHPVjFSMZ7XjAczj4ERA71VKFRkXsUTDZAaLl5o18lUpCTa/ORXZ0zvRJsveqshZyywfETssq8jIFXBno/xrZ5cu8vqYi2RDWQ8THa61xPj4+7haLeLluycpTojrqUc3WImKPsix+fj4KrAaJcyUZDLLvU8rKOaibRfnNxCkzdCRPEOWgY6ZZ3Jcyq0dQssLxGbLmaJUCwbHu5VnhoDLfglS3hIrWiad/utkdhht7F0tci8TTGo3u2UioH+yxusszyaNNW8N2lRyqfNvCN+BjmX62GHWARtqrQoIFRlAzU90+xS2YEgYvMTMsnSHrhgiUoe153izdyO38zz7o8oDtGXQfJedb1ZosoXKnhEbFqJ7yfyzxTEjyQqdFcdrdXGZslsVFHh6VehUgUrc1cfnzC881uikXy79HjX5AC/4LwzPVr2JZSJYIwFlqeITRezFMykRSJFc4or+CXxIkRIak5eKEb+EVXp0aU7MO5EKaZeHjTwjCLlQl1pn8wqV8wGa+BtOx0vDQqan/txMO/xNvLnwPYuhkUqUKh3Sp8VnQguZWB5i1hDyNQopmbIDxhG19eRNl2SpAevVLZ06b6Tw/q4eNO6VCV8VEiMl47E2/s11r0qJN5kqSuz+jzA+k7YkhoODxriOQb5VaF/P/0b7tNbbSyRapOlRVGN7UZp02NBxALLX8Smi5lV0oolripGPCratMPkNVG0VKWlDiRQjx2FuMrZSSaNZR8+flSRIkt0zlIgSUQ2OMNdVnnZKqqAcczqOJcI3CqOkxcMowh2jrX9bayTWtUByctmbbJLqQaXL9NpUu0QZTQsucDKELFpmLolVotISi32Cy9kUwmwotk5w0aWvKCkChYZVswLeH0bhiU7noSQiJMdI1FUTvL+kPXCaJ/n/HadVexQLOTe57j/oCGd65EeBSdy3ns20/zCS6pCLimz3tZ0NBwID6w4EUOy9IdCPaYqDonSRatXNrVeUsulsQ3u5XWn7ANJjJGl2SlT43FDhej2Me8m2+ty9uhmeO49Lit7NHP3FMETJcKtBwy1whzHRhgYN0wk0LIIB+g1QvoMepSlO6wfCCI2n7BIQ7PUkJgcUZIidjF1RHAlfzoXaS4humf6W1p0IVM1Esu93kkllzBUqDIrEQNIc3Bmp+PWFzzFydnH1wCsUh0r2Ev02DZ8k4VF8RpJBy3SjuhwWHaBFSdiV6REUTFQj1Dr0dhhjCKSNX1t6msrIHo0qkvBR3qbGupLIWOiOG8lX87L/cA3XUzlcib+TN+Ph5O3wpe+S3noy2bOmfw1r/2Rsn0RPrZXJaeedcYSRCywckXszQvRO4uknnrNk2vLgs7NsQIly1tTSKwcqHS4fPuw2e6Wrg1cqqId+Ulz//rTfq91pAoYO4utQsniY/VW8HM8nGhhEKcTIK00ew9ZUF+X9S7xhyHsUwZWg4hlcRnSScP4Gc/mB8AnTajyYxQrdXoGFY0gR11j518VG+VRs5ElSob1liQ/ajY89kR0p0T6SoqQb0lmJ+QGqlapV2Surd5SQS+olY5FyKh3aqRDrXQAI2HpBVaFiE0JmarB1Q0R6cJXuxJAUvLjWdfuHA5JSerqX/Ri8kbpXKocMhHSamx2idVJRI+aePbWqI0Ua5TqhCBzMcgi7Y9L7JLF2KVUYhPJ+rzTkWCKBVaNiGWzG5wH5yxRpNgmFPWfakc3tXjSmOqFbW7f5uPmcXXSomZJXEtVwfvU3BHl0nGEiyIwq1a3Cvl2Tzwc4ZzOOoNBhNHEMqJ5ehahzpgaL+si0SMqYZcysIpEbMpiUoXEmUYRP0Wa2dkiq0M2biP3YuLiRxW1sjQFFb0Yjbwz96fl+OmhU26ieCukfR5xM/oYGOA71gkdItRmWRIpZ0hfGNJLrw5Kb840/RL7VKSDirQVHSMacsYCq0rEpnl/zgn1uiXOO6K4ObrigdSCFy75SF6OUv+gN0tW4jpVlRbv5YHauH8mRpMkDzJDu8gp/E2U8oOtlh1Wsl2CmbqjBqK8Xjw8JLekWfmypie+WpXeXKIj3oQFGFiFIjZdzWp1S2siFMUteGJXq3raT0KxBsbVzozmpDBBdLf1S5ZDlnilt73H3qWkLyFZvNDJjIaK8075ffGsz1vcLGXYrmMkLTFuJujCNtWlVOvQ4U76xvDHxIfyPIHVLGINNylNLDXrKQDxAp5WFlFaxrIyCxHKaMQRUltE5RZkiVIvPGlLt+yoRGYyHtPDitBWVazqTWuQCVAf8nz9fgMtMqujTN7i+7Zqf98B6W5+UAynKZ21WEsSMRGWYGBVi1i2OpUhG2EENqYJ0QL5ezqlkmS1uhQQoweM0ZJPzOYlSr1QB86O2ttL52Ws3C4Xdp9KaXU6o/pjBognPPtGLPEs4k0eGDJcWBdxK9L8YonWS75QNuus90HEAmtAxBqLUxT68zGVdmX3xTRra7TQgWHBRda9lCamoNC9FHXIVFCbEtVL3C8qT7uI8VRm+FkF7j/hGX1D2HvckJ/h1VUPkzk/3vf3Zbhrk+l1SfNTTpyRvgiOhyUYWBMiNuUuORHKkTIYWYriaU0XxmAwXNnRE6gRyQuJ+sdjJ8WlSAVQQyrelEzCfSL6jPWkYmZQ1lrBRXD37Z71uy4bmjMb3BSnJbk4CetUmVvO2cytYI+YzpyhpEo5LMPAmhCxqbVmFGrGMBnDAB7P/NssCZA48KTUveK1Nh4jLxoTP5pCtAidga5FYix9F1qjO4/3uVd0FHIXs4bGN3QNPRQ64b33C11WZhzkjw0cu8TA186TGNvc/p2SefCFCZGuekQ5ZFoE1oyIXSVmCGkSU49S0sjPe8mJcjkYpCg5yyWp6auCPIBZrOJBbxWySmR2DrfpmKnriSJ6891KC5Nl+IunPblklo1FlFG7Qccw0t3kY0iqYBJDH8afDdn7gTUnYtPFLFZDXBNc5KmLYhbgORsuHWbEn9IiLabF3q5+SXpZqhq07ZK9046lE4kwYD2k5uYfwgOVLR7TNoudSsHFkzpo6tK7CMUL1Xi6ZJicpFoPxRIDa1LELhsfqSEvBmMdNfHzroahDVPBAz7Vg8ZTArazBC3gVPBRlRzG3kcpfTqNpNI5oZibpZsomAtQqQtOZtNYxPdjzO5F+GgOI61mUjqkKpeCiAXWtIhp4/Rye2KZbFFyU0Xs5yOMRol6PdaoN7nk1aRuW5w3PeqXZMcyNZG002bvqXWw75ZXU5dL9KZ1xIyHkXHPyY3mKivzZi6lq+q4qrTT3CqsihL5TlnnEx9ELLC2RezKqoV6zXDfRuFUJb1iVs3RGqPdEwGC1mtj8kKtZt6eb6PUcC0XFS8ktmY2t44ypvBGw5a58d8AHWNK1JK1iJuhTqQGveSMdELzK776Nu2t5fxSxRwDQcSWH85nQf/qZEScT7HzaZrdWFYSQXlIJwZPJi/teHf0aFJZmjOWRnG2wq2DLXYkX/f9adHfPI9CICkpiZMZGzsu0gGbsMs6RKWJ4qJ4caYtztMOoRNSIIjY1QsxgbJEpB1KX9Uxn4oJQtbNXFO9qEZfU5H7RZfkjKX3gu1vtfe01GSi3qUT5PSm7yLnPA5LKoabapKCRjLCuE6qk9amWmOCIsR2gG5fD52QAkHErl4fAs4IE1WhdUSx6/yc6/gbwHQrLR7SvD+O05ZoPNqT5jRFF1fIBBxKa9XKPTnPc7hMZOQmY5EzntTKjOrxC1o1VkZIaHZcLFNmpSdNOIEElzIQROwtFpQBajUDE4q26ZwTvuwWpWsbaOKodsjr1ci2lsbZpEtzxjJxVjbUE3ubt/5AraYkXm9q9ORF0doMlEIgdX4giu3Wpn8SRY01nVGry6uhGpZkIIjYNS0RhUlDVLHUexwSudk38XXgXbbjl+TEVdqSl1tGoha10rYU5a0FUp/aPS5ltJq6s1V3E2vMQnnUM/60AXtTYUEiLu18HzWEqMnWphdLCU+7eq0GlzIwaxGbci80O5u3eneJGrlSFSI6U6Ue+1mVq7nqqbKW4xUj8qIafUxVYha/KawCxDV7t6gbM8L4jda/epB2ZfMHIG5Uz73JeJVFdERV1kNza4wpRJqYHpxeDCIWmLWIrTuV3Za9ISpNmAdcJHlBx0DKqoyLMgnUVUgQVFdwNU4FjCi5wQiNU6QtO640G9UWoH3c0zYB2uGHtG5f1Vr0oIguxY6l80qpVeN7S8X0mUhxUXSDZF+BNPUkNWaYbyGXIuwGbf6F8SYnvQMHVLLDsIHALESs7+xUUS2ss6bLRbRZNesUcKl6lNQYyvmKlDVizHjGVJgAykwrVSMr5Q7aeJ/+ks2y2vOe2XYZMtqwxoyiVk6byLepk9tYmtLWiRVZL97eFll3wDZKclyva1QuVmqxp1ozN7U2U6tDkpLYtMmpFoIXpW3ygm/RlIlgjQVmJWIjQ1l2u42JS91YURKdvhgFi5f2XJVORDYVJvAuIjFKWWFCYVRhpJ4yhlJfGe5oVik1nbCYiiHX4zJlmsU712k9zqxxb/jEtjljNgu6+EeTIJWaucXn3VAuR3+9Aknl+taWWMXlDLWK3vDm4xzjJdWJkkinNtOlzKZgbufD0oWGaq+BWYrYiS+leAfFHuJbP2Jjsv6A0/EITNXVasTNIoQOQbqArbVE3N5TUsUwrjCkXoaFy9ba8jXKDKgTagOWfKfDRLMTMhGI8BhRb3LpK1KPWpxI+xIE+j2CrVXie+/d4sef/LyffOFPHbmWa+iFB43g7f9UeeBeQ7V8/VJGRkjGywyOlOkyTbaOBCTXbnuM6OmwLAOzErF7fyg3dTfM+wSZgUs0PcnTXTYFvBQkosXDBp/iKhEV68wY6BDIIFlG9vLrNSjgE6E0aPFdjtRklTBmqmV5XFbxwlAZ6PYvtwzax6IUq7L48TFraOkfl3u84zlXw6fX2XtOyvDSpxwf/nXD7vsM9eskNsQWXj6jw08dw8c263PcRGvS11U7il4jZWmaGQdWqIhN621YZB7lBSVbtFMLV1KhFDlpAdlUF1IXMyEqw6JcVBgVmFxOQhZ5uHA0RvqUjq5kxomxOu2byTYdzA2l+yON7mcJdnqNkF4Yk02uJLesu1cO5Vuuc0EFqhPKXzzjWH9JcDc40u6VoTg2VUHyzfw8AupVWusl32ZjHQ7h/cCMRSxN3JQKFcRYs0CTR+Vqq0uc0I5KZ1RjuxipImbIqF5K8YOqjC/1QKhkfrRPLWnNY+LZG42ioMipGO2oI7ew+KV7VGukG++1t617TIfbc3pJzPXvOvUJoTp+k1RBQzlWP5YY1ktzCyV6EXKuLh0+YTgszcCMRUynZrlIXpqX1KiAQ3CigFAA2SJeNkd5qXVt11Gf0i/oRbI42hL2I1RSDzaxdDbOwcxkUAS47YxgPGqtHriEtInSx+I3G/EKUVS299Rd+nQkVP11/ECJPFFLiq/KzWzwAVHZ0HSDWCFx9HjPibBBGZi5OylTN1zJL6IF7xoPRCTKtch69awHqanqEHABdABkSSw0aZhQExbaUsnSKWYwOJGbsuhItexfjq15PM1LC+jixniUVFU6fC26a3Rd+mL7pPrIvfUjiEKCZ9LaG+5SCgzGXlPJzj40taqFFqSz1upjYYl6fwZWnoi1NrSkguR1zjns83SBGoUGFYlQ2QhsFKMVkEH1/jxwcbFdMwOUI6ikQiH2RHkwicxwLYJLdGKs071adPYRU8XoYluXQkoqW8dyZqhrMj0e+7e2fRPNkn8nraXizHWNMVGdiJSyCE2taqEGX0ildOYLtCZlhjFhgQZmIGI+lcytjMix9DleU5sDgkgO2DIRm82ClkW130O/GoYXy0UTwHnhfLtyaYtndJ1iZ7GEnaX/zr+UN1pjczd20Uv3aGrx60+a213ODEqqY5HjKrdRASuwvuaJzfX3IQzUx2MZHjO0m+Z2flLviTc9IN3qQ1wsMEMRq9oYIK/ocjoMPrXgG8aDFJ3IbnXsaB0yIyr0g56D5idGqlV6+w3t/YajjzhG+jzGg5nBUjYKlw76o8Vb6YpazBbvF9eaFPDOSqHu4nvaxpNnoyqpaOO9XyVmSlRMiVrlmicXrMB4TYY1b7djm9shXBWK7dK5pGHRwMoSMedSgLyJbMTyzbZ3gBNForp0O6EHb24Rw0URzqAMNdPd9DYzP7aciClNpAz1OKpd3NT5bpwz9Yp/1YtpBdpZ/ByoVIz0ac7uqat/vdyqVNrfFDgQkKogFwwu1mtW+PCe4ThPTSDS5s4Tr07ajZeYEBcLzMidzOI8ORNhWf63P1UzJQJiJWKrVbuZWEdUOI9m1lkzsstVssa1W/cbSnmoblck4Ya7eipQ3AouR8V592pe7NtUWeyD4ipe03rB3DIRy8DJu92lww974to01TAQJ8r934De8xZ3bZt83DudVJXOZocUVKSkljZEh8ISDdxUxKLIIBE5lRVXV1NRMhmx0uWUnorIrjilv5JyChhphli4InAWui4Jdr0gtRsPmq7LunLj/CWX8Lot2nvVL258TEAdRLmUe4znG8BVx7+NBxfDvvd6Hn8ipn1YcG+tOeaM1RGf0o00/eRFrEIHEEQscHMRk7xDvRRQs1JriSl62UXL5SKz8+Altor3lxDOqGj/Qrtw3oOoMLbZ0H7S40WvX8PfTf87PR4b7XRelqKHZYqVzq5huWPX8+blRN4a/XIR6KinPpFZZ28RQ8OQLZqdqk2+noIYZzpNdmw3JO8HbixihZIjqdl8Ul9B5XRuoC+A9x4RzMaoyvqOqo6S09OoPwPUFsq0mSqyaETI55T4poEiQSK8Ebff+agDs/jxMReRdPfbHR2HZHCwxZ2e+hxX1AOq6ijF0fWKv440KpVYmpwv5oSONDWxaoiLBW4iYvXJgiiaF1k99zvJHONEFIlUOrDS5ZFdOE6r4Yws8K7mSDesH7p59zQseKWWVNNXcy3RY0sRH3MG1S5zZ078IKpl794ydplAW7mGtjDphAmrdGmTuyCJoWXwDSnUJ0kk5IsFbiRiaGoVyYOsRqtdGyWEnCAlb7mjOMq21HFWRE+yAGImkqnQRGposQpWbziSCqjhklF9Qz33eCPJIntMTjylrtjeldbSfWkdb6aJRHbiwBFVrxEiVbyJzagvSA/NzBdTvIklrpVde22UcbFhoQZuIGIdFR+N502+ZgWzuoMPDnBRnWItllulU7aZRE97pydRHWeefSnVC7UcnN/iqecV42+krID4Iz1noq7WMdmsZpFdJiFNndns1V4U9Sdrk3rVhxEF22qQaziNanQYbZyAbaL4ujqy+UHTBZwNyzRwQxG7EJkoZ0xkdG3ET1VwjQobkcnJHvGyBdEzJP4EysScR6FRia3vrOXi1pRq/sa/7gWt5v1rXc521owWZXFrrSmqPsqZO1xZB0eO64SZllahXql1Ojq3R29JIVEYQ7WOSLPzCr0R6TCZgxti+4Hri1g+J5FXojU4URQlESEX5WXPZNFu8WU9FUWcYI4VaVUgTpXNx2P6xhPyqeJuYOHFiZsczfNKOR89Ei3+RpxHKPqcucu2++fiiCuFdgScUyrGYezVOxYKk7HayUZcrGnxPFE0ibX1+N1pQaASlmrguiL2kdvT3J/vj6LIiluj5U884OueXGmj3I6y1Tk5LkZPMofdTC9gHZRzlmLZ0ZLqWw5eT2EUJorab4w/grd3sMj1+b0njcRsbH2b2VlM3DFbvnqHOnXgvX2zNZaYrK9Cd5MtZrVO8rtelnZ1QcQCNxCxrx2x+ciIrPX6TQJeHXWggNi78bpFnR5DOM0sXT0BahGc6IxoqXn6yu6aeWR2aovP6yG89qihVxYz7UJRcupzZXt7lPoBY3Vs+p0sijwkBp++Kf1GdcQ3fztbVYlIpM0neiEs1cB1RWywYoo2XnHZ+s3EAU5V2qjJ/UZ0G8gR0POzcfeMghNhLG8Yzzcqil3vTlFVJ9a9Gjn7eGrIL0JG/HSLx5sy+RZj7+re4/aeiDSNGp/SFpX+/5ky9JxgC1f8SYkY3f73TdpsB9imMLaOzv7t2feBwDVFrLzRFTvOW+ujq9yrxnRd06UEnADGSzfII1b0QqocAoZmum6FzIIxsVBrFbTqr7kYVSFn/GitXQ+aiei+xU52EUMy6c0Gxv12061Hp6661qG0x0CXwVx9nnLCWyrG0dLMOeIsvjghrZuPkRNd9BMOgZUiYm9rNcdfdDpcjKTklRagJEIR1VyKRAJipFFeeg3uEmnWfk0ilY3xAL0qcsbAIfUzDP4rCIKWhNMPeMY7FJteo8pq9uX4PX9ru0llG7J4aReNjVV/6ZK9NXeRS3gdm7rgRevJ7xS4KpmMhIs6jkobzezqJKitUyqUbVHFBBELXFvEcp4xhTFtmAQKJlKKolpc30VLra4dAxXpsGJaUc0ZMCmoCFOl29eCsCmQqCBiZGdHt+0T1aOTyglmEC9TgVwN7vmmZe+7HZXOa9fQFQ9l3Ost2C5FWlnE+JgaXCGVgnh7p5I+OxVgUA/2rMP4rMPtlEfsrYw4K5ub/La8NxLb2LcY3GhYroFriti1SkcBkwqTPS06MIHSXxXb7lxevXYMdEp3TyIdSUJb6qWggpErrudqdz9VPUlckqIg93ZeYhOiB9Vw8aar0UJUFW59IqK6WTl/l0PefORHIfaU49S9lkTRo7rIbd9USNTKBrDba6PuxFQrN2uh1KWIybqQNBhpZO03+z2aSOiI4FwI2wauKWI3jEn4y5PWiVIWtDwpnH9svad/gJbhUduhebqc0q1IOzDVm3DK9VyV8049TsHFNXpUzGOlMU6hepib9NL0FqQGnWeETacMMZcLJ175HQMI513eH3WJ3YPqYh+AVhFzu3d+wDmdiHPgHCSJEJeu2qmcFKiqUqDJ/ShrKu21cIAyMBcRu278JMt/nBSVyRh/riYSpc6V1Jtuk9N16kyXCIXG86/aeNpUvKw4bnZ5Qx/4Q8DJG35W00i0iiCyhtKEx9hpf5B1GMDW/UFXNT3aQpe4Ra124RRKLT3mdnfYPb/3SU8Ug/fKnd8JrX3gs3dTBTMJUmqyBe5FaJWsfHrYowzMX8SuFSwCUpQxVcYUTlTV5zu89Dgr6zza3YjvxI3J7lbZGKo31IGi1s0DYv16hYOSFWW87o3AGUFioTDgGRtS3nzIWVKS1vW6v74teqyW1ZRYPFddSWzBbKmq7x88ypl8AdKa4sqCQbIij+BEZEyFvqa/GyiaxLUAIS4WWHgRuw414JyInhN8XpA2gfXOSx8ibXC5FLZfRRZadiYzNZuc0JMgh4Fj1xNt9VBqgXWPRgx+LcWoYv2VwfAGOut+cLLFH5WavYOkUSFwkWQsTVDdbG975AdlcDJ2FeeUtMOR1KMrcio6gW36YXAFIh+bNlSCiAUWTcSuEjQRakZ1wBvewPpun5j1IvR6lTaF2GbJnatjUyBLjYgSzN0I60Ffg2u3H1MHzgpmj+XgQynjXW/qomRBKunhO/5KenN9plcX0a1Uhyu2SUfrw3bPQMW9kgokdU9ZUzpLMT4Llo65dFEsa0GlQzxnwpINLIWIXWWtAJcEf8l5chs6pVtT2XBpkj6TxVZQg592FHml4huxnF7EPK5eDwNHrmWtqEJcF3a+YXn5XY4kP+23LLhh3IU3/Gu7tpu318axIos3Nt6RUGdH2i7n1DMgLSBekNRNGYUTgq0qFJtsUauqtmXJKuFsSWBpRezKAlHq3UXtd6n0D45podqhfSYxW+IqXVhyInj1Kz5+lgKRerk7mpR1itsPjL1lhUpWvXHnyzGdww6bTqvZ7yC+yw/7EXdIYnv3Igu8qiFq1+iOctE9jarTRCjHNttVVWpRmUlJaKG54qoIJc0aKtfCsg0sCxGDbBvMK4hSVcuputVT6Rntzq+TjZrIxiimtbHIV/Lupge8prp+MjIdUvevg564hsOETYRKydJ1ISF2ckXI8lBN9Zha7RMjfSxi3XkVktyE9JZqZpcru8Ou7vGtQIuZuiLjIOub+h4AK1KInBZ9ELHAchKxa85Ww5AXHapd5Gh+m/ZqTrbnK9LtDLHoyt3d1KwRbM6WzP0+9T2oHuDNdbIEkkiZaDO0T2ZpDUgjai44SWW/xLxDhbip5aHf/N4tPk3NLV78eWKdMFVPlFcwoEZGPLapNxjJGkzF6nxRVEfCsg0sXxG7mqoXPWMMZyLn10VettatrFekICs3VcMBYiKzHdUu9bxi5Ops/2yvT6i3CpW64FQvb0oqbjRSORhj7llkBXYoRW2xt7tCsi/KoXYkJi0rCONYpmp0NHOH0lTzps2LnpewbgMrRMQuT19RLpUSLtWLrt14s0mt2YLSxspMpFWgLiKt1RqP9o/rYWv00Js/g0HIGUM1dVkbpca5RYecsLDewvqGdbc4b9qQmFQ252r2zLG/Svt10rHn7RHqtaptWlcrxWZbh4K0mhDWD6w4EbsSmwEYE9Ux4Jiobvai28B0ZhmYKyubWyB1HjM4ae5sM9rljb6iQnmqDI82rLKiAy0KahpdlMQ7lNeo287G9VusQL+iiMXeMXrYDZ16Pq3H62HT202iZSbFU2pqHpugtq5ZjqGsuoTpwFoQsTdRV9HjavxprbLeiOyUSHrIGnOvJMvMR6Jaic0m42nJV9lfLXLhKh9KIa4IvuBJImkIGaOIHga5G13EM6pKmkJn39vtzo4704O1xz1v3Kuu75iZXHdO+lxzZ5NTKwXJk0NCuerAyhexKVLn9GzLpPa7Xlk3XpBdhYr0qmBXkJupCPW4RltO5dE05qAoR6ZSFlTAOCWqQWwgymW5ZRL5o5Wa6UtT6WOx3EoBV8NtvNvu1nZ/jqqM+2cNRmXcR00eawUseVtzLYTGIYFVJGJTu3dOhP5qgf5cmfUIO01EH4pVtzLETIVURU37iL1LjXZq7F8BqtlnVBIrVAZg6DWPzdrB+eqkP7D1W+Iuny5iJ3HB+5S8Ox/d1tqS7otj1WpZykk0dXS9icF9xSq2RWAgLN3A6hGx6etLQQwXkhqXRg743s4tsjvfJX3eNWLiy1/MvDd4kC0+tSWBl5k6siQgIowf95w/lv1yezvD9z6eHruYi26zflEPiKdY2RTn5XRU9BdGrUwWqpKIZtWFmnnD8uJbw7INrFoRu7zGFF8b52Lukl7MR7ppMic7bSzrssK1KyIoXFelU9HHjTWv4v1pVbCi3PathvxBQ+WSo1iE8iRHMKwTQ5cuUqkaaRR8zbvoNtuSDBzcrJN3vk61UCHnm1n2SxFFSmpCkkVglYsYgFgQA1rXcypclJLf5Otmt1HpVFkReWapiEQay4Na9yXgkCrqHNzyvhg3BOMJXKpRz+f8G77Fvk384pwtVCC2pP1lerov2W3vvaDHL5X9pLems8nj6sVQtLGzEHYoA6tcxKabDQgp6Cmsnq8U2VEYZ6cgLUCqy7tZnUdVarG9U622ifpXUOq+ptjYk0+haATr9YKkejKxdtdiHkkCfK1m9nSV0nOVlPGcbbqCqipF7zSPzK1LeyCI2Eon8XA4df6cabW7JGGH8cSqpCzfeJkCqXjZJnkpKvKiKBMeKJWEHuMRB0lFDl9sifocWpJFslKM4OqOlotlu7MtJ2NK03coVUXi1NoiGkQssDZFbMo4m0yKvColdzY+J7eRN+sbdeOXa8KsotS1YHq1YB5XzwtGGZzIWQRLWzXBWSlbq2+kjoeExWkwIoD3OO/ZXrD+SN2bOtn5gua9nlFrHMX8hGniKwWCiK0EFCTP0PBR/0zbrWzN52SPV+lQSGS5WmWZq9ji0Ld5Iy8aOF+ODZMli1FA3Zmcms2pkY2L5lYK3iD5uspmgVShQJPSPVRQ48WYlBZvw/mjwFoXsSkhM6LAKTH+glG5VVS2O5WIZZqSIZA6IdbIPmxV9iscTw20DnvW10UT418/3h71RKhl8Y4keZR2XYyu8QJqfIuoh7BJGVjzIjZ9FSq1zqK+uqFdz790xt6Wj+gD3DKtMusEMV64TyBnPYeq4nW4ZOgcZbQFd6xuze3e4Rd5nTf/5RQVY4oSmdD9KBBE7FoY0QEVHfGJ7Ihgj8YUNOvmtNysMo+Cqt4BkhPYP9SC5iNhQ8TR/iobKpYOWWULXSxan/TFdAgrkAZrLBBE7NqkpByptKcXxZg78uNmIzGqyy83ySOo1M0el4tiUf/KqInTqCWtn93sDvYes4+stuC3etTGJueNxqTUgogFgojdCMtYpe6fo6Y74hZzu61KwZtll46hQN0bu904EyVeXrqgpn5mW+183yk5553Z0ujAtEpUDC+WqLSVIjARJmkgiNjN3BdQzenxcpcbLAyZO6O62dDI+PfL7H0m6mWLM952Dcq++76Zq9fb/SEmWBfXidSskpZ42We1FeeKXsIO5WLeKusl8EYa+eNX30WlsSCmDH935VoFEVsuF9Abxqz6Z0t13TWRN7eJSH6Rs+NnQl1VN/qIR6O6PF/Ny2jJ+eMi5g6F+iq6HFi1JeODiC38HULwNiumoAZ8QyFcBPc96SgNKXWuBFoFmGpB1QqUG9enq/F/6SIIWRCx2V1hjb0eFa+DYuQeFdaRZfsvJyunrrBOhUfyFdnbVfGHRgpsasyxVXHeUAXNe0phPjZhhnulOAxJDnqPK/f8pacMOAO3H8ma0FcaYjUlIC3AKLAFuNBYDLc2rLJqELHlaQUAI+L1aUn8bRrb3QhWl1fJ5MTDOuvk0aGieaaeuNcLsX3UK6uj+WzmvxRMLkzfBbghAFArgkbQNqj84L+qMt6woqKGaE0lANYbVld9mtsYNX6uNv7PN/4miNjyx5kxf6Dea4Z9gbtzibR6v6yC/nWFHrHy6MjrPN/S4c62b7NbXLLyg/wCPhHJi/MhV2yOA6j5TGziycxt/Lb/6BgfV4p1pnXXygZ3alIv17tfELH5xg8iPV9v8aP2tLnHFM1GDE6Xz/VO1NHXvcs8IM4f9ym9QLzM3N85Ovaa7xpPc0HEZjNmkOaFxEDpBaXdwc7/4iklcH8ZTgLFFfi5gojNX8dwdS2PnPDPF++TPXm41aRilk1OmVKPC7IBZ9BUB7CycXV49WIruSg3LTwTuJ7LEF8RsG0vOjZ+0zH0rPIoMEQWmK83HlHj5yBiaxBjcNWivmGMjOUH9W4iaYHl4bqpJ0GkD8MEaAISscJjYwq2HJlCmHnXHyCfgzQHneeUrU84du33tA4p1JWBxuRUVn6QNIjYQgqZCk78ubEhnWhfF92vQs+0kMKS35ARSo0e46shN8FYcYWQsH9tAUuL0HUStu/z3PMFx2TDwopZfRnCQcSa4WIaxgz6jPN6F8bsVEhlecShdPUsUwQliNibSErgDeTKyqb9noe/4KmRxTbcKl3wQcSatcqUOsqLanTCOO5QkVAXfsHH2OS8BBkDcBaSIux4yhOlcNd/S+m4qIyz8mJcQcSWm1WGOxw7U6lH5l6M5vBhN22BBhbvNa+JWx25b3MbAryFWgtsOqg88DeedXuVAlmQfq3cMYOILQ5nUFfWCg9KwbQtw+NKK9MQ8+Q1wbJG0yyqbUJxUNnxoucdf+TpKGdbtbU1pupBxBbrlpkwVDnknincYR+wOV3nPfXgCM1HwlATmZg1VhzRW1Cbfb3vbzzb93q2vJHFvabEa63NqyBiiyhk6pjA6zPWuvvV261c2eUOzG1Jx5KV4V4Lok2ah9wE9B1W7vuco/diNnUq8JbKEkHEAs0TMkjajHshjU1ttCa7jVnW7eKW9bIWIfai0VoYPJeD4ii8/9cc644rVVgRHaCDiK3em6pT5VUvUjeitzfq+PswMrMbRlUxzhD51WqDNHzDeitEZaVvv7LhuDLJ6k2XCCK28qboGyqujjd3iYgJQjZ72zbnbE5WqYil+WyW3PJ3nl1/7dh03F92HQNBxJbHChRQ749FzqdE0b0OsRI8hNncBCKvLi+r7FO5GJKSsPPrnvufUta94i9bX4EgYstzKeb8qYken7b02wfUEoX5OkMsEp3TnIwrrILwvjSC921DsO6Yct//VDaSFRx0rIqPGERsNeuYGj1nhNQjDymaJ5SYuTkOdb02lp5VUOfRCEkBOi543vs7KS0XsoKC9XCVg4itqDsxXBSV51X0IaAQhGwGiz82OV3hOftJK0givPP3Era95DDjWdpEIIjYylyUwiVv7F7r/SOKBiG72XB5n1upCuaN4ArQ83XPHc947njeXy7/HAgitrItMpXBCLs31fQRlWCR3UjEvBJnRuzKUzKpKXd83bP1PzraG65j2J4OIraabIxB9XYv1j1KVoggBPvf6n6jQhTLynMo663w4X/p2HBWOQbhMG0QsVWoYYAog2JlH6k+4iFCgpC9aYzUINYR25VgxIhmlVYBdn4ppX1AcYTjGkHEVr1rycU0p/uc8lCcSKRByN4sZFa8t8vdmBGFpCh0nVQe+fWEzkHPmq0hFERsbWEcjK3T/lLiXrEX4wfSiJDZf7UxZqOCLut57E3WjLb7uPL3/n8pbnh11LYPIhaY1V08j56O4yRONL5HCDfxK4Mj9sxeb3WZyrqzEOXgB55wrD+maDlLXg2Jq0HE1qLJgaLHPBpHmDsVDdUvBEUxxdhHOJbdocKkCLkyvP8znj1DWcHCapjKQcRWx9prOEIql/0KvaxUgiJZf/nGQ6crGeYQkEPZg6zxhO7GwPTeH8fLScBUoN4i3PdfE/Z805EbypJXQwwgiNiqIQU054mtIqoYAwWnSMFhRREEUcF6jxil6D1WgRzEpGqF17wjn6Z2q4TdealXZdnMYxdDvQUe/Kzj/r9wuIb1FRpkBhFbRVZYZj5JMaUwzRmME4+2XqmMNVVmWIHOtGGktUCeFBW8VM3LPonyKtrH2hYyQfySh5hEodYmbHnRc+eXHBtf8qFsbxCxteBOvukf9epJP/W9n/YP0/4/AXlRxD+mKu2s4ax+WeJ5rAaq7bDpRc97/31CPsmy70PdryBigZstXtGymPTFNIkfE7N2s/olSwReAvUCl4d4VLnzTx23P+WJk1B5IojYKkQbVpdPs2C+Ms/b9OX9AEGVYe94KTI8oqy9HDJRZLIde7VZu3gWWK4M7/uNlO4jSp5wNiyI2Co1E3KRxyiYLUqcS4iU+TUHFFCnWJOAKLk4PS8iB8pq7zZrLI9SBfKT3pj64nvTlW64/3Ow5QgMAnGY7UHEVq2IxY4YKG0HdWlmK803YUgUTLZwJXbUvTkqPmpBdTdrzKOJPMbkFsmfVPARVNtg6wvKjr0h9yuI2FpxJyFLT50mbgu5sFDRtNUdyE1Im3pZh6ydHUtPZL1bBDtIweWE4rDn7q957vkvCdQ07EAGEVud1tdSHAwSSER4GaOP46SkZm3sWApqmh7YV3B5Ia563vkbdW454RknS2INiyiI2OqyupxQ2JKStLnMbRQYWpRXdgiOpMS4TNiXzFj8NlQNsiYC/UaafMdwOchVPW//lZSNJ7LWacECCyK2uqwBAYmyr9YAeS7vEy7WZDeNx2ivXpQO90b3eXt34tWv8oQlFTDSpN1JNQ0BKyvv+2RK63GlBhTDlA8ittrcx7QO/oKSiuIVmFiaW7UBEgtV54/EF6SzdZtsSaurOz7m0eyc1gKPuBqoF+HRzzr2PKMURpQxsjK7gSBiqwobCQPnHBe/6rBT8eUl9DUEj6ujtbvcq7dszLUh0o6u4viY0jg1v4CjLpDk4bHPOO76sscTGh0EEVulFphGoHG2erzJ3Mmp/1tS6ySC8gjVS2fdq73b4se0rqs3EVbUiCycfqmBegEe/8+eB77sQ/2vIGKrV8BIlei8R0eUjgKYPjBmmbhYHgrtUBj3l8wFd8itM3eSrtpEWNGFuG00jhEleXjbH3ju/ZIPR4iCiK1yEasruaOenEBbG0jnMpIIAfWgA4p36RHfG3crsoFVWPFCQGQBLN9aG2x7Wrn9q56Nryh1shhjIIjYqsNL5jZq43tMdi5yWQZNMtvLiZP9XukQQw5dXW6lyDQ3fo5mXK0Ntj+jvPM3HXnNToWFY0RBxFYdKtmEbyv7bOHkQTbI8q65okAedNKNO/RAuTV6UBs1Y1fNdVERZO5XodoK259T3v2bDq+hCkUQsdXsQSpEHgoVT6NZGHSuhFUOlFMwcjot+r5qZLaKXz1upaoI6dw0rNoGu572vP9TKbXGsdYQxA8itmqpFmCoE6R16lzRipJgBHSi3b+Wm5BOUWlZ6z0s6yVh23OOd/9WgvGhjE4QsVXrQ4I4QbxSKSjlEqzomp1KxU7qG7E3Dzu7SjxKQXUWKRaiWSXW7c943vOpBPGhiUcQsVUsYFqAaqy4SLMg/kr/SAKVNnfGTNIXJWa7roLdSiNeZYbnjtRAtQN2fV15169ntlcQsCBiq1W/cA7qnUq5TZFV4msIMNkKY63u0IYz0hurFNeCWykKSQFKl5THftez/cVM8xwhjSKI2CoVsNgoLaKU6lCbXH1NH7TOxMZW9/qlseihlf7hLvfsvAFJHkpD8N5f8aw7l51RCsUMg4itPvGKQfOQREKp6Lkrr7g6WdLQTBbSDf5v+sG+aDn08hLFoWfG1G+siNlsdOW6lap4vU4tnikLrDgE7/2ko/OcUiUrMhIIIrbib98aZVUKkhYwRcidg2gQ2vuVolV8jqwixQxctKihS3aai+Kn/V+98dUIXNglOHtF2Ezjb+IqRIkuntmnaGz0jZrQg67obkkq/trXOG1YYO/7dynd/dn9KKRQBBFbeTPcgNpMMNIi2BrUO6HtLNz9lCc6INiCsuULnlwV3oPLsvFn6MoUgI1kEfJOYBhoI6vGUwA2AIeAzUAJ+OK3C6aQvUAMjAM9wPHHDGd2QK4Kxl9tTUgzos8CpsiYqfujHnPXihWx65hhaQGKQ8rf+1VHV392fUIvyCBiK8bK8jabxKYFTAVyI9mpoId+J6V0SUnznvyQ0tV/5QxOytx2qqYE73pfXeN71/j5gS94uhqi1wacBHYBZ76iDPTAyQeEV+8TcrXs7+p5KHdkQqZkIicL6Y56PZZrNxsxdMlKrDgjePMmBz3NQ8sIvP+Tjs7+rJBhELAgYst5EmdiYiFtgVoOWkeVLWcV3w29f+voPq14HFdSo7IGD7UleLt1sqBySmaJ1YEy2c5Z3yW44w3l/Z/L3ts4cH678NI7hbieXbDDDwr1CGyVKz6pzmOVKmm+172ewzxWTUSaXut5wS+/KP7Ke07zWQzs/b+S0N0QsEAQsWWHy2fWlnMgY1n+U+sZ5d7PptSA0lFl3Yhetn6mLKzl7C/5hnXmyeJk0ni/m04q604qlqws8m0vCSffCcPvEWwVXCH7g8uiNlsNUyjl/cXxhNOTancaWVHHB0UUL42OwkkBCiPKt/xSQle/hnOQQcSWH2kJfEHoelWRmiLjcPtnXdZgKIV8LVvHfomsrKYINlcC0gJsO6x0H4HCf1USD+c/Igy8HQb3CJKCrUNUVXSGgiZTPrHxR2Jj18PKambtEQeGtAClEc+HP5mQ79dQiTWI2DKYnDGQy76qyb7u+BNP5FI2PunIpXo51nRZ5NbARasDTsGOZt9v+Zyy7i/h+Psgl8DZe4VT7zTEU5aZh6h+86wOsYxb44751N6lZuWImFp19aKjNAQf/tWEded96MgdRGypZmPWWYZWqLdAz3mweeW2zzhaz0EiSutFMHhSWDvdYa8/XNmOK1CcgHv+e5bEufXLSu2PYMjB4Y8Zyo8LZ3dBXINSw/W+nklWi/V4NK6bYycdugLuCSpgnXPdF1K+5Veg5xwhBhZEbLHvoo22WAWoxbDlSU/3N6E6Cbd8xVGoXdnpm0pkCtUGruVSXRmXKIHi2WyzYPfvetr+J7z4jw0jrfCVHxJylewPzDWKVacxyeYTemj3y+bhek6XoAXw7EgK6PZnsR/6TYoVMPVsSk0NiU57+Gn/FggiNn/SIvg2iM6BqcHd/8HRck5pP6oUGtHY5E3uYZh9M7fQpjY0asC2M/BP/m/PReD+zwuvfRtMboJyi+AjyE1eSbBVgVxNz3u4gJqNyDI3eAXXdl43VaCvPm1bw2b7FZAV3/UGUslyl1MDqWZDNHUeo65Xvq9xZX8lnA0PIna1q6ICrgU0gY1PKaUD0POf6vRdAKtXMtfDjtKCDjseGGuM7e69yn17oRt44t1w9h1w4p1gqpCfzBTQF9RXW9zhaNKsW/BWaAv9+RSNykQecnrlfb6lWvVU/d2pD1NvVBif+rnacAgaLnQCVBWqDsqSGbVloKZZdkyYomtFxKa6JwtgKxDV4LZPOySF9c9fCcpLuO0tmoU21b06AW7/mtK1D1pfhlI3fPlfSBZjSsHUdbDtBGdbx9ju7PK1xsRDVMvuj7MV92v8LJJFLfICba6RUyyZVefJOrnVGoI20XiMN74GYVs1IqZZz8OkmGXKd70KuVHP7j9yqIdCpeFOhrFfcuoAk7D7i7AHKJyF4+/K3MyB3RBV06PORBsa82TZ3mPi6oKZim+JEsrVmpezUFDoaLiums9c01oJygojAiMNYasQ9p5WjoipbQQePPgWofWwZ8/XPXZI2bDPX2VlBfFaftZZvbHi7vqK8vBX4FyP8sbbhMN/X0frHe50rHa3uGUoYpJZYnFNF2OY4IpFdtW7EChG0KLQp9nv1AUmFUYlO0o7JWzB2ViOIpa0QTQA0ZjSvdex7ZsemVBKE1cy0AMrg7QhZu2DcPsXlcLTEL/N9T//PXarMVjxyzA2phBVlzRop28WN8nWVRfQo+AsJDWYFBgCLgmMNLrChb2qpRAxb7O/8kVIa8LGL3nWPaV0HfJXBSWCeK1oMWsV6N44wrotT2jnWK8zr/8Dq7kJlt0pauMzEVtmTHc+pBFm7AS6BXaXoOwzC+0iMKzZvkugqSKmjex5gcJotpO1+5c9tUqdzqPZ7TmI1spk2morAetS2CDQ2QLFdpA6+Du+7NzJxw21FsEuowutAjZRopouZ5NGG9bZ5RRHA0WTuZ+bk6zk/6jABbJHOVhoCyVijTuuy0O9C+LDsO5F5YE/z84pGoUiGhJPVyBTDec8FFsyl2dDAr0+27hUsnwqlzZSEDovKLue8uz/NrvsRCyqQVRZWeOvVwRNPORaYb3ChhRqAoMC54FBhckwW+ciYpJlz9syuAi2PuEpveDpPKq0XbpSwzhEKFeecDW+Sh26xmBzBH0tWUkzcdmiSq4Z8AFuecpx9F2Gekmwy2V3xjQOu9dWrOmigE7rGGcVNhrYmMtczosK54CBsORmImKaWV2q0PWGZ/t/dbSdU+w4bCEE6Vc6dSh66Itgaw26ahBF4N2Vmo3XJQV6zik7n/Uc+KBdNiKmZAfbl7k7OduPlAJiM5dzZwW2eRg1cJbMQgvW2VtELJ/Fu9I26Hpe2fRNx4ZvXkmLCO7iyl4RCu0RbB3I7vCt5oo7M6t7kgf2/K3j2NstaQ6MW/oPpyYTMJuuuiCSTrmcjWTbziirYL67ETs7DQyGGd4QMT2t7PmsZ/MxTzSg5JNgca0G79FBdzfsWJflLhXlypGaOeGAnrPKjmcdb7zfkisvg5UukJ/I0upXeSR8KoZWUNgJbLGZi3mSbIdzTdsaUfsPJnROu3MHAVvxrFfYIdCXy8IFThfgSMyUSNzylOP4YxaXA7PUbqVAfnxN1c6/vCFgYaPPetBMidl51mgueTTlKgRWtuVFZnHtBPoayZaJLvA9KQV6jyub9jtOPGaXXMTUQH5CLxcOWEuRgmnXthfo1Szv7DhZ7GxNDUdonrvy1WudwG4P68kKgaQ06TByVsEa9vyd5/SDlqWub6FkIrbGSRs3sS6FLpM1zjq6liyzIGIrlw4HewxsIiu/nyzGHTgBNrzu6TvsOX+HIa6wNP6cyTYX8uMhL5Qru5oAHcBDwIDAsUaKRhCxwPLBZ1vvu/OwPYWczGGncb7EDvZ8xdF/u0Ftkxr73mzVShaTK4yGOfEmHNlRp3UKPSbbzTyk2bnNIGKBJcVY2ObgFs0SVJ0s0T6MAza/6uk+6RnaYZbk7OJU3bPCeDijcx3LLGmczNjooTcHJw0c1exYUxCxwKLPyO4Y7jDQxzLIO3ZAcRK2P+sZ3GUWNjamM/81myi5WpCwm4xTApg87FHYCBxWOOlW0X5eELFlSuMumhO4xcOuCOJGnteyWLUO2PGc541vVWqtMu+dShVw8ZUuHzd9/Rji+jJIul0hUYhGmk0RuD+GTb1woFFJI4hYYOHFywA16BuGO4EuyaqHLqsUPgd0XFK2vOQ4+L6IXMLsAvyafVAXZ2d0bR26TiotIzNr+utjKA4r8aSGFKFZXLZGV8S+XdDpsl3Mw6zwlIwgYstMwFLIlWHPEOwGrCzz/OPdTynH3s6sAvwqkBYyEStdUjYd8Gzb59mw35Ovz87UnOrqFJi1i2kN3FGCPgcHTJY0G0QsMK+JhUB3AncPQq/JJtqyFjAH9B739B3ynLunkW5xvc/X6ODubFYTf8PryvbnHJsPeDrOZ7IVGiIv6nzzZDVOuwUeG4JDwJGVeE8IIrYMsGCGYaeH26Ks086K6JzjgVwK2/d6zt1tUGm0B5q+UiJI81k6RNt5ZcvLnu17Hb3HlbgRXV42gb61KWapgBmCuwR6BV6VrB9AELHAjF3IvMJdNdjOEqZNzMca2/Kyo/WipdyTVX5Vk8W5XATFcdj8kmPHXs+G15XWUb1cHSX0OFs+9yOTBf/XV6AdeLVR+ieIWOD6NIL3XQnc1zDpk5VokDigdQi2vOLZ/+Gs8mtUg54TytZ9jm37PJ39ivVBuFbADTVJoODg4SibkwdYAUH/IGJLM1lIYXMK93nImRW+thXY/qzj9P2Gjfs9O/d5+l73FOpXyi6ETIgVc3NNAUnglgjaFF4haw4cRCxwVW3728bhNkDMKjikmwK9R5QP/XxC67BOiTS1cMlX7H1JIHFZUYHHBV7WrG7ZsvVqAoskYAnEY/AAcNc0b2x13MEdtAzr5YOcIVC/KkiAFguPCuwIllgw0/Pj8IDLykSvunWuwWVcraQCJoL7NMv4fz2I2Bq0wAy0eHhQYZ0Jse3AysMLyCTc4aEQwassozBIELEmU4W2YXjEZnWegoAFVrKxnVjYoZAHXmSZhD1DTKy5d4iOBN42Ah02JKMHVoGQaVbiZ5PAIyZzL4OIrdpAAnQaeFsMbSYIWGB1mWT1PKwrwqMptAQRW4UIdNTgkTqUJAhYYBX6lQYSD90FeARoDSK2ijBZ1dWHBVpljbbQCqwNISOLkXV5eESXUMiCiC0gHkrj8JBkQhYssMBaELPEQWcBHmaJXMsgYgtHzsBDCXQTLLDA2iKJoHsIHrJLEOyPgorNHdcwqz1YhfsaPSBDGkVgLXohdYEegQeB5xbTE4n+Noz/nOIBEfBd2cUjhjs9bCUIWGCNW2TAeslu6C/IIhVYjMbDwM/lrkPceCRZE4/dLsTAAgGAxMDWCai1ZnXJLnstTROxELyZmxspgM0alN7ZKFAazjwHAqARpIOwexQqHo4UgbubKWJ7wqDPyo00ZFswk1BK4H4DkYZAfiBw1VIR8CncWYWygXOtTbzLR+8NAz4rEYuB3WD74d7JLBcsuJGBwFvxAjaXVS6eFBhtmiU2GQZ7xjQKGnIJ9tRgkw2B/EDgRjgDBYX7B+Bpyc5dLvy6/FIY6BlhgUFgCNYV4DF7RdMCgcCNPZg4gRM5eMk0wauMbgtjPCNKwH4ojMHdUZYXFuJggcDMPJg0BzsMjERw3C/w3T86GcZ4RpwH2uE2A10a3MhAYJbGGM7DnSmMtsJQkYUzyaJTYYBndAW+BhveBzviEMgPBOaCB3I1uHsDPLMJ6gtVUTGSMLgzMYdz74E70iwOFvLBAoE5upUCPWW49SLs71ygxRQFs2JG7LbQSbDCAoH5eDQaQToMu/rh4nvg4kJk8kc2jO2N7hzkobMMuwjNfAKBBdEyD7YV7hqDEZcdHJ+fiIUqFje8c0gKtwnkghUWCCwMFtIUOg/AngheM8yvJlj0TBjTa+KArbBhB2wMWfmBQFOW2M4Y+lMYHG94PnMSsa4wmNeywADiTrjVz31sA4HA9fEKcQx3DMI3vwQuP1cRuyUM5jVFzMJmC91pSGoNBJqCgaQO6yZgawFOtDC33coQ2L+2iMUOdhJK7AQCTSUFjWHPR+DCNqjMxWIIInYNK0xhi0KnhlhYINBsEUt7oS2CXWcbQf5Zi1gljONVAhZBbGBHsMACgebTqKKQVmDHBJyuwthsg9DR6TCOl/FAJ2xaBx0a8sICgUVbenF2JGn3a/BiNFsR2x4G8DIuq7izXa8YZoFAYHHWnuuBTW+HUzarejVzESuH8busWC3QG0G3DzuSgcBirz9vIFeCnSkMzqZUTzQSxu+yiOVgexTywgKBpVqDaQobJ7MG1EMzFrEdYeymBrAjhXU+xMICgSVbhh7ibti5DYZmuhCjKAwcAqSwKZyRDASWfC26BNb3Q6eFGTmK0aFggZGHeANsIATzA4GlFjHvID8G2xyMzCQ2Fm0IgwbQrdBuwAUVCwSW3hoT2NQPR2tZu7cbi1hHGDBS2FwDE3LDAoFlgVco9sGmOhy+qSVWW+OjpZAHeiUIWCCwrIQsgq1VOH6zzmJrunluo6N3by7ryBZywwKBZSRiHtpiWJ+HszdyKaO1vHIbItanITcsEFh2y1PBdMAm4FwZ9HqLdE2Xp1YoGOiWzAcPBALLzxrrHYPWcRi/nlZFPWt0dARw0F6HFl3YhsSBQGABMOBqUAQ2tMD4dS2xwhoWsRr0VsGakOAaCCxbaywHGzwc0evkcUbn1q7KmwJ0m5DgGggsZ1KFzh3Qlb/Oecq13AG8qNAmwZUMBJY1LtOp9Q/AUP1aIta+RgdGoTPNcsRCakUgsIzJgx6B3q9l3ZESDZbYZXXvIqRWBAIrAa/QvgnaO69Rayxao76UKLQT4mGBwPJXMPB5yBWh28Lgm1MtojV61qYIzLXNXSAQWHwh0xT67ocjuSwR9oqImbU5IKXGmckQ1A8EVoLrlNUZ6xiHUg4mrxKx4tobDOpQqmbxwHDoOxBYGetWgdzLWenqq0Xs5bVnhdELHetA0uBOBgIrzQbpdnBVp8lofI2NQgLSBiUTJkQgsOJsEAtdUeZFXU6Nih5cewMRAcUa+JBfEQisKFSgpQ6tCYxMrd+osvbs0TgHxZCpHwisSBGLJqFtGEbslIjl1t5AFMg6fQcCgRUmYh5MK3S2TouLrcWM/SkRCzuTgcAKw4F2QGcn2KkesWuu76RC0YEJIhYIrDws+DEo3QG5Tqg4IFqDhbTyIaAfCKxYI8QbyF+ClnGo+DXqTuYJ+WGBwIqkUZHZjkBHAQY8EK21CLeHXFCwQGDlYoAqtE42rJG12O0oDu5kILCiRcxPQGt/4+e1dgDcarYzGYyxQGCFoqARlPogB9TXWj0xKyFHLBBY8TpmIG7Jml7X16olFggEVrY1Fvks53PNVXYVyTY4gjsZCKxsDFA0rL0UC9N4BAKBFWyICUgdSglZRYc1ZYkRmoMEAqvBncRC0QLRGvOrptzJQCCw8q2xnIKNwlgEAoGV6FKlkK9AFAWzJBAIrEB3Ui3EJYjWmjupEnYmA4FVomPYIthgiQUCgZXqUtrRNdh20hPKUgcCq0HA1IL9OsRrzRLzGkQsEFgNvqSmIB9cwyIWvOhAYBWQQBTV19ZndhZcULBAYHV4lR6itRYUcwRLLBBYNV5lBHG0fi3JNugwJPWgYoHAKlnSmKi6xj6xgyRc+0BglZhiYKPhNfahDdRNMMQCgdUjYsU1Zol5qCbBnQwEVoOAEYFEhTX2wT3Ugz8ZCKwao8REE2vvs9ckJLwGAqtGyyK39tS7IlmqRShTHQisbHdSDZi12HeyGkNqsoJqQcQCgZXtTq69mBjgFKoK+TANAoEVL2QSrcEgd2qgKtBF5lYGAoGV61KayKzJz005XP5AYFWsZaLaGvzkEZRjQkAsEFgV63mN+lPl6MpB8KBlgcBKFrGutfm5qwmkGhrpBgIrX8T+bg1+6BSqD0PSBkUXgvuBwMoWsd1r8EMr1HNQ9VAKUyAQWLkISPTQGvzgBtJLUJ0ECf5kILCydWxN7k42Mn0nQyWLQGDlO1bRxbVrhk6ERrqBwMq3R9bi2Um0IWJR1jQkpFkEAit3LWt0xxp2J09APYVccCsDgRUsYlvWqIglUD8BFaBASLMIBFYkBnz05bX7+b3Ngvs9QcQCgRUrYkR2bY/BBCEeFgisVFdSBDTqW6MDIEAdxkYux/mDmAUCK80KK4OPRte2kpcF6h7ikG4RCKxIY8StqQ7g11DySj9UK5APzUMCgRVnhBCDiybXtoonCuNAZ5gSgcDK0zEBF63xbTk1MB7yxAKBlWmHaFZufm2Tz0QsuJKBwMr0plzUFsZhfBQSICKIWSCwojwpBy56OQzEZCeULXSEoQgEVhYxJGs2T2yaOeoNjNWgS0LmfiCwgpYumoM02rnGR8IAEzB0CrZHYWIEAisJX4Y0OhoGAoHR+ErjkBAXCwRWhiXmDLgopKmDQkWyhrqtYTQCgRWDE3BRNQwECrUYxiNoJ8TFAoGVYol5Bz76ljAYWNAzMHIUNtkwHIHAinEnBVx0PAwGFjgLIx5clGUBBy87EFj+pAIu+rMwEFOMPQZVgZIGlzIQWAmWWF3BRx8OgzE1ItVxGEuhJZylDARWxJqtC7goCWNxWdaBYWBTGI1AYPmv1yokk8CaLsVzjYEZamTth0qvgcAyRkFjqLUCUQj+XMVYDGWFFkJcLBBY1hio54CoJ4zF9EFJqjAyCW0miFggsJy9SRWoA0QvhgG5jAdthUsbYUvwJQOB5b1c81MiFs7ZvMUaG3VQtxBpOEcZCCxXSyyZhBpAtCMMyJtHZ7wK4yn0hIqvgcCyJTVTIhaOHV1NBO5ZGD4DvaE0TyCwbD2mpG3KnfxaGI+32KkVGIhgdxiNQGB5apiH2mgjDSraFwbkKhSwMLQNygUo+bBLGQgsO1tDoDq1+RZ1hQG5lpDVExgqZPXFgogFAsvPY6pMHQ+M1oXxuN4gXVTYQsjeDwSWnZ1Rz5LSMxH7AQ3r81r8R5HhCKoGCqGqRSCwbLwkAfwuKL+roV0mDMu1ibM2biN6+Wx4IBBYJqQFuFyUOojYdejOcsQGgogFAssHyTSrfj5reB1E7Eb8OfBEFhermSBkgcCy0TEDlXFIg4jdhG8Az8L4CAzbrIJ1IBBYFsYY5emNrkNS+nX4eONrO/QnsCGMSCCwPDAwMd01CiJ2HbY1vqZwkSyImCPsUgYCS22FeTctvSK4kzdAG48oS6obDmMVCCy9iEnW9btigojdnKjxsOAF+gkJr4HAguKYtsU4c+Oi7qcdOQoiNgNLrDFYl4BKGK9AYP54sho6xfXr2fXd343J5WZkIUh28LtahmoliNjNyU97FGEyD4MaxisQmJflVQfizk7u/t/+Nz709NPc/pM/iUvT2eQwjafg0zd5TYFrsPFNSl+FcydgS8i1CARmb3klQKmri13f933s+Sf/hK577wXgwlNPkXpPPIPnSUE2wcSbRSuI2HUYe+sADghMEDohBQIztrxSoNTWxm0/+IPs+ZEfoeuBB676nfKZMzMONhvwEzBugojNjIE3/axQN1mAf08QsUDg5uLVsmkTd3znd3LrP/2ndNx55zV/t3L27EyfVgwkFRgniNjMiK9tFvcnsLNxfivU3w8ErtzkcY1Ha28vuz/+cXb/0A/ReffdN/y7iePHZxoPMz5zJWtBxGZuur71VgDDCsMOeoOIBQIZaWMxdOzcya7v+z5u+dEfpXXnzpv/XblM+cyZmYqYABPJNbygIGLXoXYdS1nhnMK6cCI8sNYtr7Txteeuu7jlh36IHd/7vZS2bp3xc1TPn6c2NDRjEXNZO0UNIjZD+q5/8c4PwK0OcqGlW2Ct4RviZYxh3b33suef/BO2f+d3kl83+xrRlbNnqY6Pz0TERMDVYazKW0vKBBG7DvXri1iFLMC/M7iUgbUmXnEUse3972f3xz/Otm//dkyhMOfnnDx1CjcxMZPkS3FQT2FSgojNnMEb/J+Bs5KdEQ8B/sCqdxk9UGxrY9e3fzt7fviH6X372zG53Lyff+zQIZzqTOpcGYFKodEcRIOIzYyb3B2GyLIw1gcRC6xGps40dt52G9u+7dvY/cM/TMcddyycQHrP2KFDM/118TBqpxVCDCI2k1G78X874KxeP3QWCKw4plIkLLD+7W/nlv/lf2Hzhz5Eadu2BX+tdGyM0RMnZhTUV2ADjF7PsAgidoMYwE3oJ/PRi8EaC6x0l1GB0vr1bHr3u7nlR36Evne9C1ssNu11a0NDTB45MqN4mEJShRGCiC2oOwlZFsYZhduDiAVW4k06bXgcPQ88wI7v/E62fuxjdN5zz6K8/sTRo1QHB2cSDxOB8jEY1yBisyOe2a+dSWGnz8YxCFlg2QuXm7K6urrY9p73sPuHfoi+d72LXHf3or6XoZdewnPz5hUC1sNYy3XiYUHEbsDYzEzxiQj6Y9jB9bMyAoEl5apY1zvewdYPfpCt3/EddNx115K9p6EXX5yxx+tg2HD9OHUQseswMLM7m/bCqQJsdtkYh+qvgSVHp1ldArRt2sSmb/s2dn73d9Pz8MPEHR1LK6q1GsMvvTTTeJjzMOyDiM2eXTP8PYGBelb5dQM3MHkDgcUQr6Sx2Fu2bGHD44+z+SMfYdOHPkRhDhn1TfNyXn+dyZmdmbQKY2/ubhREbIZMzi7WcDKGDSZYY4ElsLh84/tCsciGd7+bbR/9KOvf854ldRdvxMj+/dQnJ2dkiQGjuZuEaoKIXYfSLH7XZpbYYBl6TLDGAs12x6a5isW+PnruuYfNH/kImz/0IVp37cLE8bJ+/wPPPIPzfiY7k1qEoRhUg4jNnkdm8bsRpMfh1FHoyQVrLNAki2tKuEp9ffS9851sfM97WP/e99LZKPW8EkgnJhh86aUZHfoGknUwojdff4Fr8ZVZ/K4AdThXyAomdmqwxgILJFoAcT5P+6ZN9L3nPWz64Afpe+wxilu2IHbldXyYPHWKsUOHZuJKGgdjB2H0eoL3niBiN2a2BnkESSscn4QHQ62xwFyEa8pNNGTZ81333cf6Rx9l3bveRc+jj5Lr7Fzxn3No3z7Kly7ddH05MOtgKAUfLLE5snkOf+PhXAV2K7QTrLHATSytqYC8APlSic49e1j3jnfQ9/a30/PAA7Ts2oWdR6mb5Uj/U0/NNNbiJ+HSTIyJIGLXYXwOfyOQ5OB4Fe4L1ljgeu6hBQobN9K2dSvd995L7+OP0/PYY7Tv2bPsg/LzIS2XufTUUzd1JRVsLiu7MzKTDuFBxK7DXNLvpWGNkRVMDNbYGhQrnWZhTVlZOWspbdlC5733ZqL10EO03nILrTt3ErW2rpnxGX7xRcYPH77prqQD0wHDvVCbSVuxIGLXYa4hUwO1CI5V4P6Ffk9iDN57kmkLZPrDvElQA80XKz9tvK0IcU8Phc5O2nbupPOee+i67z4677qL1l27iNvakGjtLrn+J58kce5m8TAx2VGjS5M3Sa0IInYTeub352fOwU4H7bKAPSpNPk/P3XfT9eCDlIeGSEZGqI+MZF+Hh0nHxvD1+uVDvtOPalzrq1xH8GSNC9T0r/5N30tj0UQtLZS2bqW4ZQtt27bRcdtttO3eTcvOnZS2bKHQF0rNXWVd1Wpc+Lu/m9G9WqBagaHpYx9EbA6cmKf77+BovMA7lUm1Sr1c5oFPfpK4tRVXq+GqVXythqvVSCcnqQ0OUhsYoD48THVkhPrAALWBAZLhYWrDwySjo6STk6QTE6SVCmmS4NMUTRJ8kqCqly2NKUHTNwnbjQRxOQmhXsN6utb3U19N4yG5HDafJ1cokOvuprB+PS1bt1Lavp2Wbdto27WL1u3biTs7iVtbsaVSWDA3YfzgQQb3759JPMxEMFqEcT/DeRRE7DpsnOffx3BuBLaPQ49doNiYUWXwtdc485d/yc4f+AFssTinwnXp5CTp+DjJ5CTJ+DhufJz66Cj10VGSxqM+MpJ9Pz5OOjFBUi6T1Gqk5TK+UsFVKvhqFVetkja+12uIh7+OqFxrcsocxYkZWJk2jrHFIlFrK1FbG1FbG3FLC7mWFgrd3eT7+iisX09h3Try69ZR6Osj19tLcf16opaWsCDmyYWvfY3KpUs3FRwBaYFLhRm6kkHEbsAd8xex9DU4NpqJ2IJm8R//z/+ZnT/wA3P++6ilhailhZlu3qv3+Ho9e9RquMbXy/9Wr1+2BN3kJGlD5Fy5jKtWSarV7PfSNPvdxt9ovY5LEvAeTVPUe9Q59DrTV0SQOMZEETaOkShC4hjJ5YgKBWyhQJTPY/N5bLFI3NZG3N5O3N5O1NKCyeeJikVsqZTdAAoFTKGAicIyaKpF7Bxn//qvb3qjkqyrUfLncKk8g5vaB4KI3ZhnFsadOWfhAllDkQWxxixZrs3As8/S+7a3LcpYiDHYhkgEArNl4vhxLj311EzExkp2DnlsNpZ5ELHrkF+IxQ8aweE69KZZwHLe1pgBahMTnPjc5xZNxAKB+XD2r/6K8tgYN2nyJprp1oUPz3KdBBG7DucW4DkMMAoDFThzJ+yoXemENe/nPfkXf8GdP/Mzs2obHwgshSt5+i/+YqYHvqsCF2uzDY+EYb42f7BAz1MF3gFH78z2ChakFn8EjJ06xakvfIHbf/Inw8UKLFuGXnyRgX37bpp3qWAtXMrBxFzWQ+AaLFSnvTrQCWN5OFGD21ighiIGOPzpT3PLP/7HRGGLP7BcPZovfpHqzV1JBNRCfzSDA99BxGbIbyzw81Xh6FOwMYJWFiABNgKGXn2VU3/+5+z6wR8MFyyw7EjGxjj53/7bTFxJ46F6Cfp1jmshcA1eXODn81AzcBh4iKsTwecebwAO//7vs+07vmNNncELrAwGnn6aoZdfnklumDVwaRwqQcQWkMEFfK6pjHcLZ8iq/GxgAYL8EdD/ta9x7okn2PYP/2G4aIFlxbHPfhbn3E3jYR58C5y7a4539iBi1yHXnKf1wCEHvSxAAqwAqsobv/mbbP3Yx9b04eLA8mL8yBHO/s3fzMQKixIYG4ShaI4LwoThvr5ANOkxqNnRzAVRnBjo/7u/4/QXvhAuWmDZcPLzn2dyYGBGHY1iOBdBbbbrLojYTUib+AAOp1lW8oIImQde//VfJ52cDBcusOTUh4Y4/id/MqPcMIWawPm4cUOezSOI2E0oNfFRhGobHDRXjL55EQH93/hGsMYCy4Jzf/3XDL366kz6VESShZ9HpyqIzOYxff4HrsE7m/z8Bs5+CTZ52GzmGeQXAFX2f/KTbPnIR5a8TX1g7aLec/gP/uC6h/jfNG/VwOn53sWDiF2Hv12E6z0Kr3dAj8v2Edx8L+TAK69w5A//kDt+6qfCBQwsCRe//nUufO1rM0qrSGAsgoG5BvSDiN2Es01+fg90wXgbHByEexeig6AFDnzyk2z79m+nZdu2cBEDi2uFpSkHP/UpkiS56e6+gsllKUf1+SZMhpjYdSg0+VFsmF4DcBK4ILNvdXlNERs7e5YDv/Ir4QIGFp3hl17i7Be/OJP+FMZDNYHzCdnRvLk8gojd3Nxt6sM0RGwcnIfXyLaY5309IuDQ7/8+A9/8ZriIgUXl0O/+LtWxsZuKmGR1w877RgnquT6COzkDS2yxsFm6xUGFe+XqEvBzMq3r5TIv/p//J3/vi1/E5HLhYgaazsj+/Rz//Odn4k6IhzSCUwvVYTOI2DIQMTLz+LhAXwQbdW5tLy+TA84++SRHP/MZ9vz4j4eLGWg6r//Gb8yoWgUQRXCuCMML1UwmiNgN3MnFfC0FX4L9HjrSTIfmVbLHAC//wi+w4X3vo23PnnBBA01j+IUXOPEnfzITMZEE/K1wcjtoskCvH0TsOpxf5NfzwBCM5+H1bnjAz9OttMD4mTO8/P/8P7zzs58NFzTQNN747d+eac0wa2HgKFw6z/zLuGwOInZjxpfgNZPswpzqhN6LsD2ap1sZA0f/6I/Y/MEPzqs7UiBwPQafe45jn/vcjIREsz4TJ8vgFvKAXBCx67BhCV7TAyXQCXjNQhfQxjyy+adc4pd+7ufoe8c7aNmxI1zYwIKy/5d+iXq5PKNYGDACnF/oraYgYtehbYleV4Fa1jDhFYW3SRbe8vO5wCNHjvDCv/pXvOuP/xhMyKoJLAxn/8f/4NR//+8zTnCM4JhZoNaFQcRmQH6JX1/gYgqHa3CHzDPIHwNH//RP2fiBD3DLj/xIuLiBeZNOTLD/l3+ZNE1nbIUpnPNNeC9BxK5DcYlf3wOb4NAZ6CrDRjOP+NhUcu2+T3yC7oceovuBB8IFDsyLY//pP3H+a1+bqRUmwAm/QC0L30zwLW7g1i3lw2cWlG+BVyIYV5jX8UoLlC9eZO9P/RTpxES4wIE5U71wgf2/9EsYZpSKFCkMp3AmIVOxhXoEEVvmIqZkwQOFSQuvNP5pXtcrB5z7+td5+ed+LlzgwJx57Zd/mZFTp2Z6V5UcHCtCWmx4OAv1CO7kTbi0DN7D0BVBvRDBGwJ3swBpF/t/7dfovv9+dv6jfxQudGBWXPjqVzn46U/P1I2MFAaAc81MHg8idgNLbDm9FwNHDHR62MI842Oosvdf/ks677qLrhAfC8x0HiYJr/zf/zf1sbEZnZEkK3p4rN6EHckgYiuMqWNJCq8IlBQ6mcfEiIDJCxf4xo/+KB944glyPT1hkAM35eDv/A5nvvKVGXUCcxB1wIX74Jxr9vqYSRnZtcgfiiy79yRAFTqL8LiFnM6zGmwN2PP93887PvMZTD4fLnrguowdPMgT730vlf7+mcTCREHa4Ok+GGiWwry9oV3BElthFlkNRgrwKlkn8XklwuaAI5/7HG27dnH/L/xCGODAtd1I53jp3/5bJvr7Z9qPNarDyUkYONbE9/X24E6uXCFzcMZBqQB3zeeguDQmwCu/+Iu07drF7h/+4TDAgbdw9DOf4dif/dmMgvkKJg/V9XB4hikY8yaI2A0W+LK7I5K1fGvkWRxx0CKwk3kE+g3gVHnuX/wLStu2sfH97w8XP3DFjTx0iJd+7udmmhOGhygHh3bCeLpI7zGI2Aoj5nIyrL8FXj0FxRqsn0/bNwvUR0f5+v/6v/L3vvAFuh96KAx0AF+vs+9f/kvGzp6d0TG8RtnpkeNw7PgivL/bpt2IAyspPnH1pElr8JLCKPNsNBIBk2fO8PV/9I8YP3IkDHSAg5/6FCf/8i9nGgcTsoD+oRLUFzqx9UbJrkHEVj7lHLwYQ2W+R5NiYOCNN/jGxz9O5fz5MLJrmIFnnuGln/3ZGbuRAvEYnB+Hs1HjptjsR3AnVwFy5U40XIQXq/CIzYRszqkXeeD800/zjY9/nHd/7nMhh2wNUhsa4rmf/umZ1sxHwVio7II3AF1sUQkidhOBWM7vb3oQzGe9K18SeEgXIPXi9Je+xNM/+qO887OfJWppCRNiDfHSJz7BhWeemakbiYItwBt3wui8aqrPdS2EZNdr8zmRZf8e9Rpi62EXcG/DGtP5PHcC3PI938Pjv//7RK2tYVKsAQ5/+tM8/WM/hp35jTxWGMzD0xuafLzozbwrJLuuPmuxkQx7TCFfgtv95UIYc3vuHHDk85/H5PM8/ulPh6z+Vc7g3r288H/8H7PxRIxCqvB6BdLF3g56V3AnVyeNOmSvRxDV4BaZZyG6GDjU6Jb0tk99KriWq5TK+fN888d+jMrAwEyTWomz7kUH/RIXfQm7k6vXQnsNONkwqGQ+zzUlZM/82I+RTk6GAV5tN74kYe8//+dceuml2dTLjwZhJJdVV8nyKxb5QbDEVv/cFHhZMpN/G/Ms3xMDh/7Lf8ElCW//9KeJOzrCCK8S9v/CL3Dk85+fTSDf5MEdg/3/A+qFJXrf3x1EbE3gyJJhjWR1yBLmGSM79qd/Sjo2xjv+8A8prF8fRniFc/yzn+Wlf/fviGdnrtsYDgpcGmWeVToXgCBiq5/Uw4smE7LNZBV45myR5YCTTzxB+r3fyzv/4A9o2bUrjPAK5cKTT/LMT/wE1OszjispxBYuOTgYAx0sg85gIcXi2qyEFItricxEQ2iKjTukkG1RGsgJPAhsWoibZx3ovvtu3vNHf0TnffeFCbPCGHn1VZ786EcZP3FiNufVrEAyBt9MYHixqlRcj3/W0K4Q2F871BX2KZxr6Ny8yAFD+/fz5Ec/yoWvfCWM7gqicvYsX//4x2crYOLBuKzXw5ILWLDE1qYlNnXXioEHdJ61+qdIgEJ3N4//1m+x/fu+L0yc5R5bGB/nq9/93Zx84olZuYEO4nY4Vc1uhMuC7w+W2JolUXhR4QzMNp77VmKgPjTEU//4H3Pg134tjO4yxicJz/7UT3HqiSdma4rHwNhGODCVyb8cHly5MQfWopA52OezPLJ5C5kFfLnMcz/zMzz74z8emvMuQzRN2fvTP83B//gfZ3vBjUI9hpfLUPEsj56sGkQskHkIvAwcJdulntdcsI0nee33fo+/+67vYvLYsTDCy0bBlJc+8QkO/NZvzTbzWQCbgwMeBs40QhN+mTyCiAUAnM+6ix9q6NC85oOQbbeffuIJvvyRj3Dhq18NI7wMePXnf56XP/nJuZjcsYcTMRxfzmIRRCygEbzWDvt9NsfnPSdywNDrr/PkRz/Kod/+7TDCS8iBT36SF/6v/2s2VSmmzPQ4Dxc74DW3zD9jELFAdsuFwwovZc7H/JOgc0A6NsY3f+InePaf/lPqo6NhkBdbwH7pl3j+E5/AzHKhK0QxTCbwUgXqKcsnmB8C+4EbTVyAkwp7bZbVP28hs43Ha7/zOzz5kY8wtG9fGOhFYv+/+3fs/Tf/BknT2S5y6yDdAS/lYCJhHtU1gyUWWAohM9BfhGeBCZln8xG4Eie78PWv86WPfISjn/lMGOgm89onP8m+f/tvZ22BcaXZx34DF2H5VzgOIha4HkMCz3gYYAGErOGuUu3v5+s//MN844d+iNrFi2GUFxrveflnf5a9//pfY5ybtYApRAKHPJxYScIQRCxwPatsYgKec3BaFiCXjIZ/aoGDf/iH/M0HPkD/l78cBnqhrleasu9f/2te+Pmfn9M2s4fYwEkDr+eAoYYbaZbxI4hYYCbUgBcsHFTm4p1c370cfPllnvzYx3jpE58IhRYXQMCe/cmf5JVf+RXiOVwkhVwRzuey+nP6ZhETQmA/sOKdFA4k8FIEzkC0EGfnYrIs/xd+8Rf50gc+wMWQUza3u8zAAE/9wA9w4Hd+Z67mcuxhcDu8SKPVn64wYQgiFpgpJy/AsxMwYRYoTmYaVtmFp5/myx/7GK/8/M+Tjo+HkZ4h5ZMn+er3fA9HG1VZ5yJgAuM2O9RdXanjEEQsMGM3cBQGhuHpAvQzz9r9b7bK3Ogo+372Z/mb978/xMpmwPCLL/Lkxz7Gma98ZU4XopELOAnslaz4yYoliFhgtpOl3Ap7TZYcO3VkckGeOwdcfO45vvyxj7H3f//fqV24EAb9Gpz7q7/iyY99jMGXX55TVVWfZePXTGaBja6SeRkIzIq0Dq8m8IJkNcnihXriGNBymVd/4zf46/e8h5N//MdokoQRb3Dot3+br/zDf8jE6dNzGnQBG0HtHDyfg8FVdHMNBGaPwikLT5MthgVJw5ialHlg5OBBvvr9389Xv/u7GXr++TU91q5SYd/P/Azf/ImfwFUqcxWwqAZpLzy/1L0ig4gFltMEGqnDN1M4KldOGi0IU/WBjv23/8aXvvVbeekTn6B26dKaG+PJEyf42vd+Ly//2q/NeYAVIp/Vx9+XwkVZXXMwEJgfPqsW+wrwgma5ZQvmXk7lldWGhnjhF3+RL77rXRz5vd/DVSprYmwv/t3f8aUPfYgTf/mXc95J8WBboO5gr4d+WWVjFEQssGBi4+FUD3zDwgXJMsAXbH7ZhpiNHTzI13/8x3nyQx/i3F//9aoe00O/+Zs8+R3fwcgbb8xZwBRihVpfFgNblWe9gogFFgwFCjAew7MKr1dB/QL3No0aj7Nf/SpPfvjDfO17v5fBZ55ZVeNYOX+eb3z84zz9kz9JMjIyH7M20kYaBXBxtbYECiIWWHAhE3Bj8MYYPNMGI34Bg/5TVl8OEO85+vnP88QHPsAzP/ZjjB04sOLH78JXv8qXP/QhDv6n/3T5rOkciRUmPTzHKtmFDCIWWHT3MgeXcvC0wmGyDuRRE16DdHyc1z/9af7qne/k+X/+zxk/fHjFjZerVNj/S7/Ekx/60OX8L5n7uMTAsIdngJHVPteCiAWaapUp1A3sj+BZB2MsYKb/FLbxpLXhYV759V/nr975Tl74V/+KsYMHV8Q4jb32Gl/9zu9k77/5N3NOn5jSLwO5KlwoZzXh1sQZriBigcUStP4afN1kVhl2ga2yKTHLA9WLF3n5l3+ZJ977Xp7/6Z9m7I03lueYOMfh3/s9/uYDH+DEX/81uXksSMkELAZOJFkJpYqskbkVRCywmC5mHXi1Bs+OZ9Ve4mbMwSnLrNLfz6v//t/zxbe9jWd/4icYWEYbAGOvv87Xvud7+MaP/ziT587N6fjQtHE1CZhJeAN4UbLOamuGIGKBpbDKLvZn8ZrXDTi7wIH/N4tZMjbGa7/923z5H/wDnvr+7+fCV76SFRhaCrzn0Kc+xd9867dy7L/+18u7rfMgsqB1eGUQDpir+8oGEQsEmoWFusAbCt8YgPOA8QuY7f/mSZ4H6sPDHPnjP+Zv/v7f58sf/CAn/uRPFvUEwOBzz/G3H/0o3/hn/4zJ06cXIjgYadaV6DkDx9fqYo7CcgosoXvJBIwcgefeB5trcFsCbYDTJjTZmTqyo85x5ktf4syXvkTvQw+x87u+i+3f8z207trVlM9ZGxrijX//73n9t36LytDQQpidIlkKxSWXuY8Ta3keBRELLLmQWfC5rJb/xQG4pQQ7YshpFtvRZrxm3HjigX37GNi3j9d+9VfZ8m3fxi0/+IN0PfggcUfH/D3HWo2Tf/ZnvPr//r8MvvbaZfd2voalATMORw0cyGdHvtY0QcQCywLNJmPtELy2C871wB6BjZppjmummEFW5vngZz7D0c98ht53vIMdH/sYmz78YTruvHNOz33hK1/htV/9VU7/z/8JCyNekHUjShy8ksKJOEybIGKB5UejMcWwwt5TsH473KrQ3WhakTbzdXMNpbzwjW9w4RvfoPSrv8rG97yHHd/3fax/97vJ9fTc9HlG9u/n9V/9VY792Z9Rn5hYqB0LkcwyHQRe1VWegR9ELLBqjLMq9JusbMw2A7vr0N6wypq2tTjd1axeuMCRz3+eY5//PO27drHpwx9m6wc/SO/b3vYWQRs9cICjf/AHHPr//j8qo6NEC2R9KVgDJHBM4UAuqxISCCIWWAk0LBhv4UQe+sdgexF2KhQbQuaa+drTa3eNHzvGgf/wHzj8279N51130feOd7DlYx+jtHkzx/7wDzn6uc8xcfbsgonXlJ5amFQ44OB0SCUIIhZYwTioejiYwukoE7ItQIkmBf/fzJSgeecYfOUVBl55hYO/+7vYXI56tXrZHV0o71bAOji7CV67sMZ3H4OIBVYbZeA1hVPADgtbgYKDVJroZl5WF6YlV3qPr1ZZwAC7NNZkNYUDAsdYhM8URCwQWBrGDbw6DCeAXT2wKYVCs93M67i8C/E8trETe87DAZ/1gwwEEQusdnxWqeFlC8cdbFfYIlDQRRazeYiXaJZ5X/Zw0MJJ1uDRoSBigUBW5udVl7lg2w1sjaHkQLVJeWYLQAykCZw8BAfvyqqwBoKIBdYyjWqmBwwcPw+bO2FrDjoaPQCWS3UHQ7ZPMHgSDnbAhSpNOAEfRCwQWLkYqByHI3fDaQt9KWyPoNs0NhmXwtXURnXbBCZ64VgVTtYhuWqzIBBELBCYPrklSw49PQxnDPRugS01WG+gKOBTcItgAYlAZKBq4FgCR2OopOESBRELBGZjCClcMlnn67ZJ2KCwpRXafWYITcXNFjJ2ZgArkNThRCcc9zBSacILBRELBNYQAuNVGPdwvBN6KrDFQK9ASTJxme/RpqmYV+LhXAxH06xxRyCIWCCwYEKGyRJkL6RZs9/WIvSmsAnoliwBf0rMZmo0GZvleyXA6RROORhsStnaQBCxQOBNTAhMpHCqA9pqsDGFdQIdNM6EC/hrFGsUskPaolC5COe64WQJRkPMK4hYILAU+AhGazBq4KBAt0Kvgx7JUjWmenr4hsvoPYy4zG08W8tSPAJBxAKBpWOa76gKgwKDLhOsllwman0KbRGMAmdSGKpDfcEbagZmxP9/AMDOpdlNmaUgAAAAAElFTkSuQmCC) no-repeat fixed 100% 100%, url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QNtaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RUNDOTU3MzlCRjQyMTFFMDkzM0Q5NDA1NEQ5NjFGQ0EiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RUNDOTU3MzhCRjQyMTFFMDkzM0Q5NDA1NEQ5NjFGQ0EiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUY1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94Onht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) no-repeat fixed 100% 50%, transparent url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QNtaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUMyODcyNjJCRUEyMTFFMEE4QkZFQ0Q5REJEOEVGRjIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUMyODcyNjFCRUEyMTFFMEE4QkZFQ0Q5REJEOEVGRjIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RUU1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUM1Nzk3MUI5M0JFRTAxMTlBMURCMUNDMkQ0NzlDMUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94Onht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) repeat-x scroll left 2em; color: rgb(68, 68, 68); margin: -2em 0px 0px; min-height: 100%; padding-bottom: 2em; position: absolute; width: 100%; }
+a { color: rgb(78, 154, 6); text-decoration: none; transition: color 0.3s linear 0s; }
+a:hover, a:focus { color: rgb(55, 110, 4); }
+table { border-collapse: collapse; margin: auto; }
+table td { border: 1px solid rgb(204, 187, 187); padding: 0.5em; }
+h2 { background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kJCg0JIQ47XRYAAAOtSURBVFjDvZZ/aFtVFMc/56XvdYnbLGYztA1ssrEJo5bCKEVlMGnVTvL+cD+CUopDSISq9A/1HxWE/eUmMv/oIFHEpp0yKg4aRIXNlQ22DrTTos7hdMw5ROq60rotfW3e8Y++1Gy4mviSfeHCI+/ecz7ve8+5N8J/KJayVovwkMKRbML5CyCWttYL2qsqL2WTTg4fMpZ6aaetGhGNq+phUfbE0qYJIKovoNIjorvwqSUBhhPOPMhhRL4E7QXpBVBkv8IVoMcvgJQyyU5b61U5JOj9wDPDybmhWMr6QkQfBVkznHB+rbgDdtp6wE5bazwnzgM9CpOI7LXT5kYR/VBVFIhXawtSQMZOW3tjKbMjm3RGRehVpRHkbZARERzgiaoAKHoCJYTyMsghO232A5eBd4BtQAz4EbSlKgCiskdFd6pou8CnqnSrypCITgPfAW8AM0DITptN1S3ClHUX8IiK7hckCpwFNgEOYAHdwwnno4q34WI7Jp1rw0knCzwGjAHN3tqQN+W+qpwDtyqbmDsPPAmMF60VYPUdAfBa8neFhMKEAt4I3TGABSec08umdQjIAxKa0ru/goaBhVE3CIGqAQxC3UF4fNurc6uC0yrLZtRYd8yN/wSXBc4KDABPD0JDxbqgKPla4DWFZwPAzw8aiAvhC66u/APRxTMEBI4Cr3fBqYoADEAE6BPY7iXRGi+GC7j/BNOiuOeAeBd863sLBOIC272vVAHJL4ybMhY9KrAReGupmjBKtL4BaPeia4nOFea0A21+HbgX2KDl102hLGy/ABYQlPI7trBkk1+AnHfx/F+t9AswBfx2i63lyPULMOG1VFk1UHRUT/kC6IIb3gVUclIXMAwDc/lyBG77n7GmDBu/ZuFAaXZv04qFH81gkGBjI5EtW1QCAfklkznD7Kw/gC74ZgBGBJpXbd4sYhian50VnZtDDAPDsqhZsYJgfT33tLTQ0NlJXVOTnE4mCdTWnvAN4H1hxoXOdbt3b4hs3Uo+l8N1HMQwCASD1IbDBOvrF6fnr1+XiZMnz6jjXKBSeh9e/Ky19UZuclJV1dV/keu6qqru9/v26ceRyFOpMi+9JZWBmg+g7/iOHerOzxcnvCn5lbEx/byt7Xg/hKm03oPgoEjf0Y4OzU1MLDpRSH7t0iUdse2rg/Aw1dK7YB4MBJ77JBrVcwcOFCDcq+PjeqS9fWYAdr1SgvW+9qYfxIC1AdN8MxSN7gy3tvLn6OgPMxcvPt8Nx0qJ8Tdi/ZlMi2CSwQAAAABJRU5ErkJggg==) no-repeat scroll left top; color: rgb(164, 0, 0); font-family: "caviardreams"; margin-bottom: 35px; padding: 8px 0px 0px 35px; text-transform: uppercase; }
+h3 { color: rgb(164, 0, 0); font-family: "caviardreams"; font-size: 1.4em; margin: 0.5em 0px; }
+h3 a { background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAADqSURBVHjahI2xSsRAFEVnWVBB2A/YP/AjrP0wOwstJU2qVCmCpEqRIt3AwID1FrJCSHYnqZI0wYfHxlndjRsfXG7xzuWoYbtdAuqj75efIpeAzxWwAq6/ewFcKEA516y1sU4bW2pj33+l0saKNhbXtPeAUq5p77SxG2ZORMjyYiir+lFpY/kP9h0nKWcHWV4cwcD8IE5SgjA6wF0/TAdZXhCE0SR/Gk71QRjx8PRM1w9TwyksIkewiLDbu3mD73Ec6frhZ+Ca9jXLixf/9Hrfu707wGVVxwq4Kav6Nk7StzhJOZeyqgEWXwMAH1n8QMRY5z0AAAAASUVORK5CYII=) no-repeat scroll 0px 35%; color: rgb(164, 0, 0); font-family: "caviardreams"; padding-left: 20px; }
+h3 a:hover { color: rgb(164, 0, 0); }
+h4, h4 a { border-bottom: 1px dotted rgb(230, 230, 230); color: rgb(203, 0, 0); font-family: Courier,monospace; font-size: 1.1em; }
+section h4 a:hover { color: rgb(203, 0, 0); }
+h5, h5 a { font-family: "caviardreams"; font-size: 1em; text-transform: uppercase; }
+body > header { position: absolute; top: 2em; }
+h1 { box-shadow: 0px 0px 10px rgb(214, 214, 214); position: relative; top: -50px; transform: rotate(-35deg); z-index: 2; }
+h1 a { background: white url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAADBCAYAAAAuEYXAAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAADCfSURBVHja7J13nBzFmfe/T3X3zOagLIQEIoqck8nBnA/EAcbYHGecMPZxPr+2cYAzxmBjcMLngMH4fObOgE3wYeOARRDRZBBICAFCKKOcVqvdndDd9bx/VI80u5qdnZV2Vytp6/MpaXd2pqe7fvWkXz31lKgqQ237a2ZoCIaAG2pDwA21IeCGgBtqg6n5XV849VvSqwtoDKlGn7oRaQgtEYqI4qkSASiICqgFFGsEMYaUBY8c0Qj44/lw+j011K0XrNf9d4mGpEyevKZQExJbnxE29iNF1+LHHjuuh/yXz+YHTOIM0NCfDyNQF4ocG4nsKzuZxPUXcL7CPwKfA/bqh+s3obKvoP/aKv7f2sW7yUPHgLDj9h5UZR+0FHC8Ve4QGKYwFvg+sKSs9GhFk6xWkTGgH1Xr/5vACHHq8WiMOR81vxiSuC2/3jFYvR8YlqizzwP/D2gu98Fyts1dV/cBbszbYJqqfFNgRNHfhwMnl5yaO4tzsnU2R48RtfcATV3E6YtABst3gdxmqMTw1PkZjv+Lz/DlQhRsdukJwG0KxyUSXcpNOsTX8Cw/ih/cGeDz+wYwUNXjrdo7gF1Kqk+RL2HIoXy31DWiQPFCxVjQzQd+JXCfqJzcrXcLeymcb1Qf1CGJqxA1a9+Ptb9UmFjmnQ2IuQLRPPCjUm945YyYIx/zGL5cyNR2snsdwBRgGTCmlEoU8K0xB2dT/r4Is4dsXCWxHKxWdGUF7xwhyldFubzUX1uHK6+eGrNsT0hHBjFS3FeIJ7/t4Qv2Us+cZ8Wwo/UegdPYdRsnMXNlbSbwdRGerUBAR4vq163qh0uZopaRSovE2AURmZaY7NqNPZtZF/1aYUOZyzeL5QMoRmNhR+o9qsp0k/MMRCDOW/JtMWJAystmBDye/PxD4PAeJHTXGL0hErNWxE7t+vflu1nS86BhEcTpTY6nCG9X1XtTESZ356Qo7I3o+4Ka+JkdmEjZHLia4cl4GCHORIgqKhB2OPHrAcDHVfTrovITYFJ50ZO9IvV+TJ5LYs9OL/7T6gOgJmMYv8BjQ51usnWCUWtuFc+e1r13SbMR/VRQt5MBZ+PkaWNFfKFuVEAcKx02AmOJsj1e82EV+Zqo/gTYo7zJkwOj1uDmUe+FH7ce8xRFVDCxkvI92g9OUddiiFIbEbBRzBOBCRcj2tCNja5BzelxzjQCrU4IdzavUsFa99x1o9JokKF9qRBlFS24dlpyaP6CUIvyfWB8d4GxCniqJ5z0x+A6Uf5DiZcYG1DdluepC0Ken2w56d6qTiGCMViEB5LYrrHkdZWmfGswGdV7EzW+84YDahWNoG5UQNvKkChUTEL6i7eJUitC6B4RGaVW/yNx4btt+Sq9BFio8FNjdbVYSLVD27CYl87t4NR7UmTqdOMEsVZ+bwwf6Q44IC2ik8Ns/v92euCKVWl1U0CqIcRLKS7XyJYiRBDh5lxrMFYj+RxCfQ+XvjqJ024HsoUZoG1K69IcufriScTMutHBXD8l+3ST65QGTkWoLnljO2sALkaJ2lOEbRF+bYxf7UKIkspWw+sVf7hgPt0DlyiC931BlgB/Kry4bk945bNw1C2QadwIHCo8qMKhKGO7uV5TkE6doCqPAPkh4DbZEVSVsN1DFLza2MV9m8d+HbGJrzZCo7Heh8v7Clpnjf2Riq4CniuQz2v3hJe/IJz4oEfsOZtqPP6C5ZPJ6kN3z3ZWqiF8WhxbMwRccTQtKFHOx2YhsDGM2Fz6VHQVwpWI1KGc1QN4exr8b8ep6AqwrwOogbUTIZU2hElsoMpihXeBI8qwQucZ314r3pCqLAmeqmBzguaFqMYjqI5KsS4LRPUbqNaocEq5S+aq5JTx73j/3rjaXCPGrIgjJVoT0rouItXkI7JR6F8AzsAt62x+Z8LYcENwkIg+vaM5KX22rCPGuexR1gdRgnRcKlh/DfRbgjRoGXYlCtRrXikXjlziLTC+uTHMKa1LQzK1ltRwCNo3EtCPRCk+HAUc191CbBx6ZwHTgbVDwPUQ/EUZZ/cEQGKCEPwYvFhAeRLh+9bwo3yaXUsNuCjEPk3Wt/8qHrNDw/1hjZsc+fUxCw+H2PEmb41cat5pWmWOi/1ukPN0sgq3DgFXifSJEnX4iIJttyybpMQ1ih8lzLXIX4I840ctMt+2HjXdTwEdj+q1KLPV8gZAdmXMjE2KVvd7iekj3zMfin1qS96L6r4qjFWYtzMB14hLEWjFsfLZylWnIkC4EpadKCw5KgY2ei2Z6jZum3x7sHeuWi6j2+UlAeUgQX8YVMklYmS1CSxj50Om1kX7Net5Pg70ddzqeHcz4DARXkHI7SgEmF/Sz980au8HvgC8BLwOMgNYkwDYkfSyQ5Grg/dN8ZjlW+YcaAmTtIR0hnZL9DUI9gVO6g48VcX4nFg/OnWFGHNtymTC06cAoQGEKGBGLqUzVaRbO2dUjtdI/6rKgh1W4mwUFn6sEpH9ETkBOEGxEAcAS0CnAU8CjwALEo8tLBXFiUJrIxw5DQIfZk0C9TZyj60mNp+MPTtVHCHdXYBea1X/1VidapWnOqqJ914fU58F35Jd0Oy9vbDZt0GkJcEXn6M61kQj8x12gewgudubPYYRU+i1gpRys3dBZDKiPxDxXxP8F0CvAQ4q90Ud9bDHdI/z/tfniOmQ2WTZFoP8G9DSw702WbU3A8M9C3PGQks1GDdV3kVZWEZV7oEwcsfJqiwhcbLpbXXAcN1cExauZdyYsD/KROubz4SezBPl9wi/BZZv9kEL1lPGzTU0vmHIpyI8lViVJxD9qcBXku/txuCxd94GN4nqZ6PYZN5thAWNlshjjh/bWSAlc140Vqlq8vZJN5qHiw3tjqUqxRYDN0p6znUzQC1QqyIjQffCyqcQXgbuUasPqRZZTQNeCLVZIRgGaBZPCY3ws3y7d4hG5jy6/9JAkQuAx4jlbhrCfBz5kPPnehK/blUnd3eTnjEHAKOBpTumcyKdJG7EFnhhw4HhquwNHFc9PJiFx/+B/k7E5R2rUWIEMj4YJVUTg7DOqH+lVZ2gokeUuX6NilynyAwjOt2vCbFIGOfN7HLCpMrBoLvsKMCZUi8kvdGUzpGstAUK+wTVcr7vy3eijPfbKGc+htFaEUUtRDkhzhnCDW6fjaiZI5jrgUU9XHt3Ea4RkTGSUjSIiZTFKrK4+/jEHoAwFiNsl70n4IoMegpoErN1acEJZznR5s3FNpYbNTY3xzn/QgzVIk7Ao5yBdUAsgPmTWvkftGw2F8bYD9q895Fwg1+dywuRsctEdXqZj9QiMmFH8U5MqTBOFVSYHYf6vXx7/D8iTEn4vmWRkS2LYQXEMM6G5pNR1rvZCN8ETgSMiPMpNYoxVSF+TXS78XVK2S9ygP9rts0/tq4VRrXFS0zI6yplPuB2DtXs0MyJCO9Eeb0u1xJRVZcaGcVyAOikYRl7ZEeKPSORMbi8j5peA4iOBq4CzkO5BXgM4S1LiDEQ1MaL4g79eRwGh4jovmWotUlxwGXj1thZ2WF25ev7mLd3n4NbsytNoe3lRexmLG/t0JSXSJJPAquAJ1V4ct9VIbPH+Kn1gZwglskIx+EWM0cB1b3DUCah3Aw6VT35nhh5Kd/ubRBPEfi7wI9E+E/VbkMEPOGinMjr83fTHy7YL1y816xUGFdrUFK9xjqxvU7HZWt2cOBKtdADdakAjycdUT0D4WIrnCkq9aLUqfQivV3kjFxtcLLEepWg9yCsECFG9SGN9AQ8uaQ7VsWPVeaPMRcEC72/njHbLss06DxjKSmlVR0yftZx8S7vHmy3e1XZJwSQwNTYs5/Kp8JDBb0u9pmR8JkVj5AoAUZ+BPK/KIf6nvVsJr+4bW18m3iyvNxnPStHYvh0mKajnBpUkQY/L+NM7LZ2bU+9X5d1TCxrOur4+eMfyv/3B+5Kn5HO6hWxxwnaC8fUGD0tbPd/j4n+I1XPvVoXvESk30T4VbkgTY3/fjU6R0Snqcp5pd6WrVX2nuGP3ft1f/sTsU/1g8R1sv9CGAds8GIefPSi8IK1o/QjXsTrvbiGJzAxsv7PI/yrEY0t/AXXy331PsBkbHnpNDGjTcgoE8L21PtV4orgA8i3N+rKOOCBIBNN1ypzXpzyrhDV0RVeZQTKFQbGgl6jGl1jJDhLwStjrw/SHrhINYzCEQsr2Y5bv+qMRDfnJdZ3RPVWAy/EIp+0wicCq5XEg8MELkWkHswNVrlBXPzXXRuNcJKItqlKXTeTajhaPrO6z5pApkk2ps8LnRcvZbAC1+UO22KRp5s74vlVkc5a2uB9wrN6QAWfrgIuEfFqUb0N5E3cTiDTzfPUA+vLXG8UhrHaDxvFRV0uTK7G3Z2Xh2P/KySInJemXcDSZKmiojv50LYAbuPKA9TldXFzJrppUaM/S0Q/JSofqoCLEVUucHvN5W+I7pasSJR2VbQMKWAYLrGO86O4z7MY4gCGL4TdZkBenG06YGpMugtIhRkX41afZdBKXBfwIsd/TlHh5SCOF5nQXBylGNOT96kiF6Dcj1t135vSe+QEJChjfn0/sqOD9gjtI9dMLERpyNZD82I45Q8uSccC7WySNtuFerTbE3BdxGi1b6Mvv7eHv2DYcvNZL+KAHp9C9ALQV0AyQNDr51awRprjtEFl61VjlHKgNS9SRs5TGpe4rKoek3EGs3NSkU3w4PmzoptPvyeYXd8i11qPI+l+t2nhk0eiZBEs3XuZ3epc60tNLhX4bE12szrAmlZAHMLej8Yc+mxEjoHZHjQoIlFREOURMfIWoreinNkTeGIIdEs9DNUaIjscWLGlzpYKaARn/iJml7nKKtzKVDBAgzrYcp4Wo/opVf1zT5pGdaOkbYFGkhpjTLMxhi3pHgZba/jHa2PGzFXaeuMd7kgS10UDrTZGPw+SU+Vf+mni1arKiF7fm+fWKi/8Wg4NneexrXaSDEbSToHliF4FkkPlU/1g5qtVtKnSu9EAco1C9Srln74ZUrPOSViObVcZYDCzre8heh1gUT7dx9euEtWetjYjFjLNUDNbOex7MaPy0LBCN7r2Oyzl1Sc2D34oyHBFz+/D6waqUlUeNKVtpGGXNywH3xGj8xxPlk8ckG3dtoOEbHkHuAHV5/vwoh5CVXeJOaLQNtow5nXL8XfFjJqnZJNgebC0QQOcS1KSTclKWvyaTFPLNarM7aOvSwlUlcLNKHSMEHaZaXnfnRFj37W0M/gqmA4a4LyUxUvF+CmLl9Lkd/eal4rxquxjXir+FtDWF8BRKslJIdMojJytHP+riLHznas/GOuWDgobp0CqLiZl4xIZWnHxG+/MtngnonxiK02ND5Lu9C0psJ7QtFg55SchI1Y50AarE+BvK6TEum50Ez4S9VBUW8GL+IoVDlXDEX2iMRIWpPE9JayBM6/P0dDquMbBXCF4YIFLRsL6kK92a9U2WaTKpyFbDbHZRIOVAi5fRasVuS4I9RZRdu8Laa9ZC2d/I0+QOCB5Nl/03GmB02RmByGs2lV5/F86U7GPnNEF425HLQ8w5aQHgj8NXyaXRcGWZybHAdStVi64Kk+e7av8UL8BF1VDFEC+Dtp2EQ6+PWa3ly2xVdSDA7+SUBi40yVicUvdLcAvboV3y0dtasV8CzgC9IQtELMoV2dzwxbC5Buj3lTC3XGAKyzXZ+vd4Id1Ts+c8K08R38fqjZE+JFSvRr8rG40StXrnTqqTm4iTn7eAHzscyDXwb64snvPA2YsfPWhYn9Y1hm4U9A9y5SFKtnCWuJxr2vu5NtjvDbdLvfzb1kRNuskyXpCWA+7PWk54K+WnCjqRRz5Qxg5x233idhEERWnX0WJHYmKfMcIl0U7ahk0LINDcJsTlgNjXocvT4a/Xg1hGjJ+nsW7cF/DBu/U2g5zkTVaobC5R6hp0eqmVeq1QY1Xvs7zdg6cQLZJiNtgw3jY637LyHct+RQ0zVPGLNIEGGUizivLbsmkSByEXHKNdiCTAH/8g9C83LH0YWCpMrS8eZq5Y9nBHFK7hv0qAs6D6hZq6pdxcR4OV0hZ93WZ5GvX48ovLkn6PIVF0XYFnLoHzTYJmhUOvjNkWAtMGm4ZN1Vp3uDAiunsPveHkbfJd0ya5pa8LS5bqHFl/NSLMa+s3sfs52crAy61QYPaVTrJJnWjS5i4LLBSYJXCkipYOBIWWJgj8KbQZwxO3wGXT7IRxUDWB7MGJv0pJs7CQX+OscBwLFEiDdLZ0+/3lgE88C0cmIP9d52te2d/H0966VJhw2jBz/Us0iYGP1fW3a9KtPQEhSPSif2NYK7A9BheBd4E3hKYLYMBuPHPbKp2nlOl5k04+omIfJHqiwYYrKLvGgvsqXAscFYMp7YBo+bDxOcs0y/0ekz4UEBi8Hqh+4pS6/ZU2DOECwxsMPBYCA9GMF3grWQubxvgTrg16jRYmij9bTGrhI1qcWQO9gMuAj6sSZnDwv1V5ZWRb1vqlxsyzYLpARSjgljZqvtSqBc4rx3Ow0ndrxUewtUM63cATSnlXuiZ5P9tBVoeajrgkBi+sdLtxbtcStSmDIGmJcruL9lCVb3Ogb8p6h6gigm1z+5TYF+BHxj4G2ysWpsaUOAGSTNVUDcbLp0KT1XB/zNl0vAsULcBRs9SvHznUuxe5OxZkHHdT/738v0Sve1q4ebQlcr6AK6otwyIqtzWLRnOgxRuFHi/V+E9KlC7Shn7esySQw0mguoNyq7TLLs9b2l6LzniLCENJO7XRJ8DFO4E7gO+jtuKveMCFwO7wsctXBm7CglBbz5bu1bZ4xkLIkx81jJyjsXPKn5uY82vrhOkPzV9A3CxgeOBzwJ/32GBC+EbAp/xYLxugaSaEMbOtAyfp1S1Kn60CaBtRGvVAPtZuAP4NvC/fXUrgwm4HyhcSnK26pa2IAfpnFK6kv6WyI4gherddouvuDvwLdyGyp/SB6v4gwE4sXA98O/0stxGuZhrq2/KGLe3XPuMhB4v8CVx8+lnWxsy+N04BwPVPOAqha8xOLLeEM8rrpKbDEployK+DyLYMOzOlRyOq7ibF7hta8DzS43kQMRoxn33BYkK8QYLaGIMGkWobtkU9lIpvCAg6ujoTiOMTupytgC/7jPgBmLaGzA+HKlwvQ4W0Hwf8X00l9ti0GwUIcYQ1NcTZjJIN9dRt8z4NWAO8PSWaDpTSlUOQN9V4QvqdpUOiuZVVWHz+S0GraBJbD5Pds2ajQ5NGVu8j8INAmMK1F653qPEDQC95eOOVbloMIUiUVtb30kvQAUeqIFjDNwIfDbdy0TpzYCr6n9m5JAYPrUzHLJeSfQCnA6crDB1q1Rlf9fKVDgFtywz1FzbVeCarXZOWvtP0kjBIQGcNVi8yEHSjMJBefhYCn5baRi6GXBRPwLnw/sod5TKztsagc8L3LPFwNX0E2gCowwcr33AjuyIUgccGMLJuBNUwl4D11/OiYVDLRw25JR029LW0X4vVAJcufL1fdYTg3a4hYlD+JSNIs6kwiMDNpO4fjq/xLcuZ2RITZZvVTg/YCE9pKVuBlw/bZcdI44dH2o9+wNnKzyiLhm3cuD6aXD3ApqHYKnISzkpC809ATdQXOUY3FL+UOu5jRS3giDljiEbKOZkHNA0hElloVMAk1KQTjnSomSe30AtpI4SV7l1qFXmXu6TBOXZbW3jAoZort5I3T6JhlpRMXD9GKOYIUgqHqwJdF+6eECB6338VliIVN0ZJW4YLgu6cq9yqA2K1kwPWSQDJXHrk9i+8pQW3XlZTXHSVjUYJG41fVPKaWdSl6niWHhbhQPrxO0EHmJPKmx+8THDlQDXTyK4Rgdwt+b23izQkBQb00qB6yeJW0r5Y1OG2uY4BHFvgOunAHyRuszdoVZh0JuBVL43qrKfqiOtEFeWf6hV0AzQDnG5kvgDFQ7YxLMcapUPWC7qDXD9GB8sBnLaAyMw1JxdS7NZHYJtEsehMFedkzLUKmgexH4iWX4lwPXXRg/czpSFQ5BUPNGjXgXg/Vi6cZ7A4qG8k4panh7SfwYyk7k1gPkGGMqt7HGs1tJDcasBc04SsN51IcpQml4PcVwLPRQh9Ac4PnhXYTpD+wd6muTrepK4gd6ROldh1hA0PUrccoGOcllemwlYun9vaFUMb27pga47UVuemJTKVaX0L3AKvIOrbTVyCJ8+BK6/T2xSVx73BeCcIXy6HaPF2kOB7wHZrdNl585CD54YCgk2nQMed/ExfJiXSiivihNi+zv5USAXwwyFFtlJs5ujBKy6xkZGvu99ZFesYM2rrxYckXYP1vZksgYsAO+iCt4FHsNVFtpZ1B9xImUNo0cz5vTTGXvmmdTtvjuzfvCDTiFT7NI8egfcAKmw5T7cb3cC4ApV/ARonDiR4UceyS5nnsmED32IoKmJjsWLaZk5s/gj06MK0jy2SUkoIK/wSs7FK2N2ROkq9HRtLdXjx9M4aRK7XXghu//zP3dKA8qtXk37kiXF5USmUcHJIwNJMnd9uFUCvwSu3ZEAA/CCgPTw4VSNHs2oU05hwvnnM+rkk0t8QMmuWkXO2o1JlOKYpd6rygE8iqsFuE/gKrbjxVUtsBueh1dVRaq+nmFHHsnEj36U8R/8ICboXofF2Sytb79d7BC2BzDXVGCxtnWh0aUCDyh8iO1xN09SPdZLpWg+9FAmXHABu55/PvV77lnRx7MrV7LmlVcKajIGnsFlCdBr4AaYimpT+AXwwcEOXFfetWH8eEafcgq7nHkmI044gaoRIzBBgKQqP24gt2YNa156qRBMW+CZsMKzpLa1xEXAK7jDIE4r5RvZ5E3K5uf4CN2f7VPqdy1jl7QLQMX2vsr3aT7oIJoOPpjmQw5hxFFHUT1uHEF9PX5dHV7VllWHya5cydq5cwsgGM+FSJktAm4bbN9pB35g4cSuwEXAiAMPZP8rr0TjmPyaNeRbWwnXrydcv578+vXkW1qIWlsJOzrQfJ44myXcsAGbz2PzecI43uQ0AJ4xGx0DjMGvqSE9YgSp5mZSzc2khw0jNWwY6REjqBk/ntrddiM9bJgDqaGBoKGBoH7rN9faXI71s2YRRRG+myvzjVs5sWwHqrLQnhaYqu50jE66xmYypJqaGDd5MnE2S5zLYZMe53LE2awDKQzROEajyBUMtRaN440/g6sCazyvk40yQYBXXY1XVbWpV1fjVVcTNDS4Gs39YSPmz2fF1KkF+5BTmBr2Ik1/wEnmMirzOwYOA8YX02+tixYx7ze/YdzkyRsHdkdo6998k2XPPVcALvTgHu0F/2FKAbeN+ssWHijW8QJEYcial1+m5Y03dpgAPe7oYM20abS3tmKcapzjwfO+O2mbUr1H4GpxCSEBm5jpgeoe3CKOOaBY6rKrVvHWTTftMMCtmzGDZQ89hO8mZ6uB+9SxSeXSG8uryjV7C/WroKlFN7LYAxYWwew8/Copsj26IHX5jg7ee+ABVr/4IiOOOWb7ZlfimBVPPMGqV18tnMb8XtbVqexV20zi/vxtn+nnebTuImxoEgwDVhm9QMbeAdxNUbKMAaKODl6/9lqiDRu2a+A2zJnDsqlTiZw2ifIwbT4sXASU6z0CV9UKc0403P6zFH+/zEOqtsmRmr9WeKr4tTgMWT51KsseeYQ4n98+pU2Vxfffz6pnny3EPXMF7k5XYEYqCttMBHVrlCUHGv76paD/Tq/r5obS8IYPv9OiEtGCO5To5S98gfZFi7ZL4Dree4/lTz5JNp/HODX5lg8PTwR266H3Kt72c7BmgnDnfwb88Xs+3gAG6AL3CNzSZcrSsXQpM7/5TbKrt79dW+/8/OesfOqpglMyV+B3WzPBux+85BzwTKOwYSTcf0MamxTl8uj3RdcccJvCXZ3vSVnwwAMsvu8+bC633YC2+oUXWPbQQ+TDEOPs+XMWHuxN6f/eMVzqVKexsHZXw8NfDbj7mjTZGkMj/b5+twj4abG9K7Ap02+8kaUPPbTdAPf2j3/MumQJR2F2DPfE0BEnnntPfatI5iALSw4yqHr85N6Is34KR02tYNVvS42566/ijjHZXRJ1b4C2JUt49eqrSTU3M+qkkwY3aD/9Kcsefpg4n0dcrPxQDTy1NaFWr01WKgONK5SXJ8N7e7rCJbYfAJNkVgVgA3jMg29StKSfAlbPmsVrV17JmpdeGrSgrXnpJd7+8Y/JrV9fONN8WgruaID2Blz11Ur6VgMHYA3UrYdZp8OMA2EUm2oYFfet8USlM+UT+3CH5052bCm8Jw0sfeEFXv3KV1jzyiuDz4tcsoTXrrqKtoUb93OuTVT/q1t77S1ej6tfAy9cCJl6+OhN4C2HuJhI94XdX1XSCRdpt1DyutzsD/MQGPiiJCnsAbDk739Hv/hFjvr5z2k+9NBBAVp+zRpmffe7LHniCTw2rgf+Dngoh4tz7LYAziYgzfgAzD0CTrjPgbhRlOs8Jl8fU90OzQuVVH7r6TN1k+DGKufUfg5XuxgfWPbsszx/6aUcffPNDDv6aIy/7daIw9ZW3r39dt685ZaNAyzwRgy/UFjVmqiNrdFIfRKWNa+E6laoWb+p162GR74ScO9PAt49wUCqb75MnJRdb1yG2Mpitbrq1Vd5+sMfZunDDxO1b5sKVHEmw8L77mPa175WLBUtwJXAm4VB9+n5sL9yB//1azydbofm95SnPu8z6ySD7/UpA3MtcFMCnhbUR/uSJTz7kY8w57bbHK85gOUTNYpYcM89vPSZzxQ/Z4Q7ZuzJvmaY+p0CqVutPPdpn+nv9/rs0KWkbNKPI/iycTVUNj5Q1N7OjKuv5rlLLqFj6cBV6Jj/29/yyuc/j1UtAGeB23HHi3VsX8AlxinVrky7yPDiP3k0Jx5hcd9CSYyA/1O4VF3S0SaVlcuxZMoUHjvtNBbee2//01k338y0L36RsL29+FmeCuDaANb5iaddU2GvTsKAZkrXihwwC24i53W+dRq8d2Bnj8r6AZO/HVKfTMuod0BmEzV0ucKV4nI0HXj5POvfeYeXr7iCpVOmcODVV1O/dx+fp6vKzG99i7dvvZVMS0uxPfp7BJem3CbFXrUqF6TzzBkeb59uSG9Qzt1WwCHg5SBbDxu6TiERHr0iwKbhff8dMWGV0obLqq4QwEjhFQNfMzAzhqsEqgufbV+6lPl33826N95g/DnnsOdll1Gzyy5b/UjtCxcy64YbmP/735NLQEvc/sez8HkP5vfmejUJsfD4BR4tuwtrxxpadgETbkOJK4BnYgiize3V4sOEsFowOZ8ZGWWvxy37z7a0JyJVIYDzDfzIwLwILsedDOVWmvN5Vk6bRuvs2ax6/nnGn3suu198MUFj4xY9yuI//pG5t9/OkilTiOJ440DGMCUPV8fwZk+Dq4nHWJ3wkU9e5CMpmHOsoW2Yc+6qW8HKtgauHJXWAel2ZfFhQkeToXUYrH5HaZqnTJrmuK4KwWv34K4I5gIXe3CRhRGFHbH5tjYWPvwwa156idUvvsiYM85g9CmnULPrrpWxIe+9x/y77mLu//wP6955Z2MoAkQG7rXwnyG85vUAmJ9IWIsPr5zrYWKYOdkjDqBqg1KTBHoqfRyA94sPIw7AVLuyfF9h/vuEMXMhHQoTXreVpfhuYlyeN/DSOphZCxf4cKpCUIiLMuvW8fZvfsPiBx5g3DnnMOa00xh2+OE0H3JI6fgsm2XFE0+w4O67mXvnndjOg7cG+K2B//R7qFemiYStbYK3jhTaGg3Pf8wnyELN+qIEPekn5qRfATRuJSK9FFrHCI9+2ucDt4SMnq29veF4GfzXBHg0BZ+L4R9wBxB6BQBz69cz+667ePeuuxh32mnsev75DDvkEGonTKB2wgRsFNHyxhssnTKFd2+7jbWLF5PqPHDvJC7/zUCH9gBaGmgfBtPOh2kXCnXrApqW2W4la7sCrpMEblCyjcKDXw445zshbb6y6zw2rsYXjvK05R9wvsBXBH6v8IXE9o0D/CRVAgWWPP44Cx5/nIaGBsadfTbjzz2XsL2dt3/yE5bNnEmKTvvBOoDZAl9XqGhhMAByTfDMhTDzLBgxHzDaa9AGPXAFlRFkHUL3fy8gNTLP5MshvRo6EHwgZ8BklOqedemLChfjTv/9qsAxuAX9dPFqRL61lbl33807d9+NFDkQm/wPWoA/At+gzMFFXQNmrYUn/wXePhWaljnNsqVM0uAHroCfOi8r7cGjP4Dceh8biSvj0CDsN8Vy8h0RUWVM9lMGnvLgqMhJ4HmJMHkkG31LcIQK5AVmCFxp3ap8xXxa4MHfPg3zjoa6NWyRlA08c9LXwXzcuVe1KHNP8XnmE6nyR0Bt3qYBl6XgYHUk8MvdvdHCqwY+PhZOE/h7OdA8XB2QAr2XBv7yJVh0KFT1Efe9QxyKJAp+CAuPC3jss2lq2bQ7MC4vFtZRnszDrTaciztk/kZcSY/Iwt+r4eJRcI6FB8TtqIm7u1iSmrBZC6uSpbA+4rx9dpBmYlBfWXCEx9OXp/nyL3I8gUtSCYoAlO7Hrj3py4G3E2K4GldIZ7Hfw/b4oqoJJe2WWDfB+qrtMMAV+NB8Glbt6zEyGcCaRBK0xADHBaO2+aXWJn3jZ6RowEwXL1YY+H2FOxRwhZntZ7WT+tIS0qFF0hEVvL5uJCnPpvNlliZxQOHzhZhOh4Ab4FgxAc7rzLp0cgJCNhHeq7u8N9hG973TA1esPqXM61LEMQ6GVuo+aorCmOJiBDl6qBPcpRUy9gqfK3cwU02XcSuYoAw9J0P5Raaso4f3N+PWJ73k+m2JLVPKU4R+8rmQotxO7f5eNLl2Txo0lTihtsyciorGoixw7wd2BYYXTbbYMQS6BHfwwwLKe1kebkFzIrAE+CuuKmzX4TG4Pd8fTrROgcVKblQWocxJPrua0jVA9gDOcmyGPmBFWqLNqfmxwMEJY7JfMlgduOLezwKvAcu6mZhpXPHv04FVxvGSbV0dnaTtmgTzeYXfJF5q8vdSLowcAJyfjKXXzYRZgVvXe7AscNbIJQIno4xgU0qkqJpAxArIEpDPIfyNwl5/AREp+LsiyAjE3AI0WiQW0X8QV8PD8TydgdsX4XvJ7xEQOz5EDNbz3RX1mSTO+tPGGW8MYgSEA0Gvt9bOi0WekoiWhlbb+frwA2AybsG1HVflwBP4gIUv4+pnXY5Lf4i6bN/dE/gPgTOBbI3zT/5YiOW0s7jsDXxHodW697RvpLsKm6U7j/axiL0m+SVXUuBF5gjyeI/AATmUQGG6iH7ZKCutpVqM7K4il6F6uvHiX4Oeh/IMgPEMqeqAuEoLM/QsVWoQVqKMAo4CnqZ0UYcYCBFmGPQ6YAFKWpE6K0wCPUdUzgaOTrTB5XROvImT37PZNHrQbOVHN4bEbhrtZuEPApMEHhP4icJjFjICvsABFi4W+IQ6qXo9mTzFI7h/QkpvAHwLH/bgz8VBuG5+L5nSalK7eUH+YMReV8LXMarSYdVsqMw5EXystoK+gcjqhL+bbm3uUZHgqVw1Bx3+uH+oGgecHwthjSnMp+pIY6f6YvkqRr+Hyj+FYfSgje1MADGCl/KKn0PUlYd6U9x6lrjJpi9YK78j9v7BmPh2hQtzLanpqcbwl+n6fEe+PSDOe0hRZCubdLVvXbmpSYna+o44FR8VSfdMhW9H8BvflV+00lkFBsCxyf3dIXBEInnDE9XaR36RrsUVp5FuHF+tmPISt/M1tlatFeJWPwyTUxdfU0GCvOyWykhDKiukM0I6K6RyAsJY4JSEB/wD8IqKHIWyv1pQ263JVovE6jRPYXdRHmhTYYp6ehVQjcqXRKiTEpGzjztpYQr4f4ZjYzhRXN7lLwoUVgmWqh2XqPqcQC5bRKFEcKjAP+K2e/1SYYpT/5xrodr2XfymVsVaJO7aFWsT7d0rrtKZGwOxKCI+INUqkMprriqn+YYWZcX4mEc/lOXF03P1krWTgSoby32ItgFTULUm8E4KqvzGIO3jBV53TywWKfWnjkTHL8Xo+Hybt3+2xfc0lM2kLXLgVa11klEjMMW43Z89tSzJvIqSbp363E9hmgezGuCvybd9jNJbs7e05cpTL1pxHGcSY7lakghGBRBzCsqJ6azw1lHRzPUjNGeNsmqcEqagZTjDjnzE/ziGTKom/EPYHkBs7sfYL4gwWTzvbow8o9aiUdTtgclW3LeKuqoPiEVUWoHXFXaJYzMJeMmIdJTSPQGkFQ5PHvn5gk3ULkNhSwxPapOhGebBCYnwTfUgTjtV+yJwJLCPOGdma3KlC7dwCHBZCUFKJ178nERj9AhcOyIHCHwXJSMqfk3kDRPlOFCP0Px8wV482T7cau0Gw36vBVhRSXdwQBSwP6pT/Wq7IOoAq7JS4DnQT6pwvG/NM36HElvI1XRPvGrhX4cgqijCe6hg0DFACqWjFPgKRmFUEjQv6xq6FFIIqtl0cKvpwoQoHCtwinWbNR7KO/TbDdypcIzAeXl4x8L6gPJbqwXI1glx4PYXFq3FFYA7DuXwEjauRkT+CNxbKXBZF5PIZ1SIBeo8/GpQUB7Xxvg7+863K9paYPTbMH46RDUyksCcl6myIcotUYcXCYoYC8K9COf4eU5ZNzq6fdUB8apUuzJhtrhjCUsBVxQSFzH6yTOLqZTX7c7aB7il73VF7/OKglaFMyyMTOpprkjcxWxSVOAa4J/z8JsI1hvKF9uMgAMej3j1n3wywwzpto3pCgUJewt4tBsyZJqIzKlUVVa7oE9/iZFWE1PV3B7v0VLlnWthpFZFh06aJU94avLtGcuq2jyBL3sGVanJorQp0hK2BYeIURVRFA1BlvgZPXrFLtHpbx4T35PKCXu8webAiSCxBasOH0+IjcVYD1EdnUC4Csh3p2rFeYfrkp9HAIG4tbVOJHPXRbXW5LUaGBk45yYSaPXgQNw2eHUBJouAowI4yMA800PV/wg4fGqEieGVDwZkmoR0u1KwBLh6nV/uC66yGtXXVPQmkDiwyj6rI54fL68J8qtwQ3B9KHKZGJlhJcL3osAYc3DCUORF5VqMFvJqVJQcMD4OGFa3Xk4Ytlzuq2sRa73SomaiCEWwnoeKJZ8KSee9Gon1IBc3xrNFyMXWK5kDoBAqvC0u7jskCZgzhbr/Xje85JLEGO4B5zc5G2aBf1G3wOonZwMZdZtwSTvW4wWFJdqD1LcAhz4RgSrTLkiRr3HLUEWShZawlt3MzW69SqdNlGa16jYUGmj3w9tV9E9i9Cgxeh5i054vpKqD3U3KnK2qkcJsREci2pD0RoGRYlkaprV93Dw54rT7vIlHTjXkS5TQtlHoHqDohkXFQzkBmIiyLqizb6Sa4sgEipYATpxKm5owJB+wsKstz0UC+DVAHfg+nJHEaksBIzBMoEGgMakWshZoT669l+3BvhX+Xwcc+WTMoX+OyNTLZhPWxmHnHoVYDdESOeg9kt2Kouo2bBgXGdwkcIxFLzXK0x48YWF/VTlb4c3YmIN9aztNgSgAPA1MzG+smovimvhsJPqZdNGTG0Hb9KxGIRDlSC/WH6oQAreopVVL5CRoMhOrnDMyNe/is8MSPnBpV0K5iOhtVBg7wTEn+8ZwWOw8yEtwBa5LAfJf6jzBI9TloNhKygvncWkMnZ0yJY57Vym0x5wTYyEMYPYkGFYLVU3h8xh9Hst4geOTtx3mriXPdv18VUaYdlrE3z4ahu8ebF+u6kCAUzcbCMUTR/4GCQk8SkWP92Lz3XQu+JOK7gY8p+R/mmvVtmxLChuaTnFcsSOKk7ov4M43uFbcxv8JXb62VuCiAB5RODVZMjhbHT/5uMAs6V6KHsR5lB9YAfus2SQFhflTl/T6Et3rcr0gWUkp9d462HxbYSmJK1wkVTxpVIp9dP5L4ESrXGydPT8JaBH0Ic+qcwkLylkhTDtuOR/wGjAPNUej/rG448gKO2tPMl7wokEjVQwixkAK0ZQIy1C9NqiPbs21sqaLzHiJd58KcsjqicIfrg6YfENoQxfDXSLwM4XLPfiouj0FyzPQmIU9DYxQaE1eF4EPeiAr4Pn1SYWHOlz2bEinLWAPGZef8n4LB1uXpyKJGd0deFVLLNckp1d9VZBfbZpr8nHPD87vRtm2EzMTV/a4e+BEeRbIG8xcteRQOs1qVUjVR0+FHd7Ncd4cZmAUwkKx9mWi+DGRoirivk9YJRz+hE+UgnSG6fkqbgZ9n6oZYZxyWY6n9ySD76tIrEgGdIOIvhdmdEa+zc6uH+2vEKMtRRxR4cfFItyPsFJV2+IUtG3axhUJPJ6Bs1JwlgdnihvUPRSyFl428Ewj/G09zA1hgoUZBqbH8FyYPEpcmsfICdwawz+MStY8bLJyoLBLN+s4BhAx0VKTijGezCH2H0I0A+J3szzWri4LrUeJW4F74xJB4pK62tMcwoLEgK9LnLHFotrR9f1qoHbDxleyaliUTOCci9DoUHRuUewbJddrBRap1Rk20nIbKdqT9cG1QFQoYVU8ya07m3Umm+o91yVrarOBmZ6zhVHiLS7GrR60Sc8OzSKFOQG0JwopgyPJOygdIrj4U3StiCJiCpLeVmZdMwO6dHMB06Ej+LbHZoaGYAi4oTYE3FAbAm4IuKE2BNxQ2+r2/wcAO3RsfGzOFWwAAAAASUVORK5CYII=) no-repeat scroll center center; color: transparent; display: block; height: 250px; transition: all 0.7s ease 0s; width: 165px; }
+h1 a:hover, h1 a:focus { background-color: rgb(249, 249, 249); box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.6); color: transparent; }
+nav { display: table; margin: 2em auto 150px; table-layout: fixed; width: 900px; z-index: -1; }
+nav ul { display: table-row; font-family: "caviardreams"; font-size: 1.3em; text-align: center; padding: 0px; }
+nav li { display: table-cell; }
+nav li a { color: rgb(131, 221, 0); display: block; margin: auto; line-height: 82px; text-align: center; text-shadow: 0px 0px 3px black; }
+nav li a:hover, nav li a:focus { color: rgb(131, 221, 0); text-shadow: none; }
+nav li a[href] { background-image: linear-gradient(white, white); background-position: 0px -82px; background-repeat: no-repeat; color: white; transition: all 0.6s ease 0s; }
+nav li a[href]:hover, nav li a[href]:focus { background-position: 0px 0px; box-shadow: 0px 0px 10px rgb(99, 99, 99); color: rgb(78, 154, 6); }
+body > section { margin: 0px auto; max-width: 70em; width: 75%; }
+.contents { background: rgba(46, 52, 54, 0.05) none repeat scroll 0% 0%; border-radius: 5px; box-shadow: 5px 5px 5px rgba(46, 52, 54, 0.2); color: black; margin: 0px auto; padding: 0.5em 2em; width: 60%; }
+.contents a { color: grey; }
+.contents a:hover { color: black; }
+.contents ul { list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAB4SURBVHjajJC7CoAwEATPByLo/1fze1apRbBwbRI5jiR4MNXu5JKYpCFjjjHjs1nSaKForjRJ2kK21wSTtAMPoJhVBeBSHuBsCsANqOCkJwqzL/hJ6VBKRzngExbgCws9oVxJnljuPbpabgp+W+9bh5b8a0OD9R0A5oW9xqRnF54AAAAASUVORK5CYII=); }
+.contents ul li li { list-style: outside none disc; }
+article { background: rgba(255, 255, 254, 0.5) none repeat scroll 0% 0%; border-radius: 5px; box-shadow: 0px 0px 10px rgb(214, 214, 214); margin: -30px auto 50px; padding: 20px; }
+.important, .warning, .note { border-radius: 3px; font-size: 0.9em; margin: 1em 10%; padding: 2px 15px; }
+.important { background: rgba(180, 0, 0, 0.1) none repeat scroll 0% 0%; border: 1px dotted rgb(164, 0, 0); }
+.warning { background: rgba(220, 120, 0, 0.1) none repeat scroll 0% 0%; border: 1px dotted rgb(164, 102, 0); }
+.note { background: rgba(78, 154, 6, 0.1) none repeat scroll 0% 0%; border: 1px dotted rgb(78, 154, 6); }
+.docinfo { display: none; }
+.abstract { opacity: 0.8; font-style: italic; margin-top: -1em; }
+#rss, #editable { background-color: rgb(164, 0, 0); bottom: 20px; position: fixed; right: 20px; transition: background-color 0.3s linear 0s; }
+#rss:hover, #rss:focus, #editable:hover, #editable:focus { background-color: rgb(238, 119, 0); box-shadow: 0px 0px 5px rgb(221, 102, 0); }
+pre { background: rgba(46, 52, 54, 0.9) none repeat scroll 0% 0%; border-radius: 3px; color: rgb(131, 148, 150); margin: 1em 2%; padding: 15px; }
+body > footer { border-bottom: 2px dotted rgb(78, 154, 6); bottom: 0px; height: 2em; left: 0px; right: 0px; position: absolute; text-align: center; }
+body > footer ul { margin: 0px auto; }
+body > footer li { display: inline; padding: 0px 0.75em; }
+body > footer li a { color: rgb(164, 0, 0); font-variant: small-caps; }
+body > footer li a:hover { color: rgb(63, 0, 0); }
+--></style> + <link href="index_files/icon.png" type="image/png" rel="shortcut icon"> + <link href="http://radicale.org/rss" type="application/rss+xml" rel="alternate" title=" RSS 2.0"> + <script async="" type="text/javascript">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script><script>data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> + + <script type="text/javascript"><!--
+/* Script removed by snapshot save */
+--></script> + + </head> + + <body> + <header> + <h1><a href="http://radicale.org/">Radicale</a></h1> + </header> + + <nav> + + <ul> + + + <li> + <a href="http://radicale.org/news/">News</a> + + </li> + + + + + + <li> + <a href="http://radicale.org/documentation/">Documentation</a> + + </li> + + + + + + <li> + <a href="http://radicale.org/contribute/">Contribute</a> + + </li> + + + + + + <li> + <a href="http://radicale.org/download/">Download</a> + + </li> + </ul> + + </nav> + + + <section class="page-user_documentation"> + <article><header itemscope="itemscope"><h2>User Documentation</h2><table class="docinfo"><tbody><tr><th>Author</th><td itemprop="author">Guillaume Ayoub, Daniel Aleksandersen</td></tr><tr><th>Date</th><td itemprop="date"><time>2013-07-09</time></td></tr></tbody></table></header><aside class="abstract topic"><p>This document is a description for installing and using the Radicale +calendar and contact Server.</p></aside><aside class="editable"><a id="editable" href="https://github.com/Kozea/Radicale/tree/website/pages/user_documentation.rst" title="Edit this page">Edit this page</a></aside><aside id="idcontents" class="contents topic"><ul><li><a id="idid21" href="#idinstallation" class="reference internal">Installation</a><ul><li><a id="idid22" href="#iddependencies" class="reference internal">Dependencies</a></li><li><a id="idid23" href="#idradicale" class="reference internal">Radicale</a></li><li><a id="idid24" href="#idcaldav-and-carddav-clients" class="reference internal">CalDAV and CardDAV Clients</a></li></ul></li><li><a id="idid25" href="#idsimple-usage" class="reference internal">Simple Usage</a><ul><li><a id="idid26" href="#idstarting-the-server" class="reference internal">Starting the Server</a></li><li><a id="idid27" href="#idstarting-the-client" class="reference internal">Starting the Client</a><ul><li><a id="idid28" href="#idlightning" class="reference internal">Lightning</a></li><li><a id="idid29" href="#idevolution" class="reference internal">Evolution</a></li><li><a id="idid30" href="#idkorganizer" class="reference internal">KOrganizer</a></li><li><a id="idid31" href="#idid7" class="reference internal">CalendarSync</a></li><li><a id="idid32" href="#idid8" class="reference internal">ContactSync</a></li><li><a id="idid33" href="#idid9" class="reference internal">CalDAV-Sync</a></li><li><a id="idid34" href="#idid10" class="reference internal">CardDAV-Sync</a></li><li><a id="idid35" href="#idid11" class="reference internal">DAVdroid</a></li><li><a id="idid36" href="#idid13" class="reference internal">aCal</a></li><li><a id="idid37" href="#idid14" class="reference internal">CalDavZAP</a></li><li><a id="idid38" href="#idid15" class="reference internal">CardDavMATE</a></li><li><a id="idid39" href="#idiphone-ipad" class="reference internal">iPhone & iPad</a></li><li><a id="idid40" href="#idos-x" class="reference internal">OS X</a></li><li><a id="idid41" href="#idid20" class="reference internal">syncEvolution</a></li><li><a id="idid42" href="#idnokia-microsoft-windows-phones" class="reference internal">Nokia / Microsoft Windows Phones</a></li></ul></li></ul></li><li><a id="idid43" href="#idcomplex-configuration" class="reference internal">Complex Configuration</a><ul><li><a id="idid44" href="#idinstalling-the-server" class="reference internal">Installing the Server</a></li><li><a id="idid45" href="#idconfiguring-the-server" class="reference internal">Configuring the Server</a><ul><li><a id="idid46" href="#idmain-configuration-file" class="reference internal">Main Configuration File</a></li><li><a id="idid47" href="#idlogging-configuration-file" class="reference internal">Logging Configuration File</a></li><li><a id="idid48" href="#idcommand-line-options" class="reference internal">Command Line Options</a></li></ul></li><li><a id="idid49" href="#idwsgi-cgi-and-fastcgi" class="reference internal">WSGI, CGI and FastCGI</a><ul><li><a id="idid50" href="#idapache-and-mod-wsgi" class="reference internal">Apache and mod_wsgi</a></li></ul></li><li><a id="idid51" href="#idauthentication" class="reference internal">Authentication</a></li><li><a id="idid52" href="#idrights-management" class="reference internal">Rights Management</a><ul><li><a id="idid53" href="#idnone" class="reference internal">None</a></li><li><a id="idid54" href="#idauthenticated" class="reference internal">Authenticated</a></li><li><a id="idid55" href="#idowner-only" class="reference internal">Owner Only</a></li><li><a id="idid56" href="#idowner-write" class="reference internal">Owner Write</a></li><li><a id="idid57" href="#idfrom-file" class="reference internal">From File</a></li></ul></li><li><a id="idid58" href="#idgit-support" class="reference internal">Git Support</a><ul><li><a id="idid59" href="#idconfigure-radicale" class="reference internal">Configure Radicale</a></li><li><a id="idid60" href="#idhow-it-works" class="reference internal">How it works</a></li><li><a id="idid61" href="#idissues" class="reference internal">Issues</a></li></ul></li></ul></li><li><a id="idid62" href="#idpython-versions-and-os-support" class="reference internal">Python Versions and OS Support</a><ul><li><a id="idid63" href="#idtls-support" class="reference internal">TLS Support</a></li><li><a id="idid64" href="#idcrypt-support" class="reference internal">Crypt Support</a></li><li><a id="idid65" href="#idimap-authentication" class="reference internal">IMAP Authentication</a></li><li><a id="idid66" href="#idldap-authentication" class="reference internal">LDAP Authentication</a></li><li><a id="idid67" href="#idpam-authentication" class="reference internal">PAM Authentication</a></li><li><a id="idid68" href="#idhttp-authentication" class="reference internal">HTTP Authentication</a></li><li><a id="idid69" href="#iddaemon-mode" class="reference internal">Daemon Mode</a></li></ul></li></ul></aside><section id="idinstallation"><header><h3><a href="#idid21">Installation</a></h3></header><section id="iddependencies"><header><h4><a href="#idid22">Dependencies</a></h4></header><p>Radicale is written in pure Python and does not depend on any library. It is +known to work on Python 2.6, 2.7, 3.1, 3.2, 3.3, 3.4 and PyPy > 1.9. The +dependencies are optional, as they are only needed for various authentication +methods <a id="idid1" href="#idid3" class="ref">[1]</a>.</p><p>Linux and MacOS users certainly have Python already installed. For Windows +users, please install Python <a id="idid2" href="#idid4" class="ref">[2]</a> thanks to the adequate installer.</p><footer><div><a id="idid3" href="#idid1">[1]</a><p>See <a href="#idpython-versions-and-os-support" class="reference internal">Python Versions and OS Support</a> for further information.</p></div><div><a id="idid4" href="#idid2">[2]</a><p><a href="http://python.org/download/" class="reference external">Python download page</a>.</p></div></footer></section><section id="idradicale"><header><h4><a href="#idid23">Radicale</a></h4></header><p>Radicale can be freely downloaded on the <a href="http://www.radicale.org/download" class="reference external">project website, download section</a>. Just get the file and unzip it in a +folder of your choice.</p></section><section id="idcaldav-and-carddav-clients"><header><h4><a href="#idid24">CalDAV and CardDAV Clients</a></h4></header><p>At this time Radicale has been tested and works fine with the latest version +of:</p><ul><li><a href="http://www.mozilla.org/projects/calendar/lightning/" class="reference external">Mozilla Lightning</a></li><li><a href="http://projects.gnome.org/evolution/" class="reference external">GNOME Evolution</a></li><li><a href="http://userbase.kde.org/KOrganizer/" class="reference external">KDE KOrganizer</a></li><li><a href="http://wiki.acal.me/wiki/Main_Page" class="reference external">aCal</a>, +<a href="https://play.google.com/store/apps/details?id=com.vcard.android.free" class="reference external">ContactSync</a>, +<a href="https://play.google.com/store/apps/details?id=com.icalparse.free" class="reference external">CalendarSync</a>, +<a href="https://play.google.com/store/apps/details?id=org.dmfs.caldav.lib" class="reference external">CalDAV-Sync</a> +<a href="https://play.google.com/store/apps/details?id=org.dmfs.carddav.Sync" class="reference external">CardDAV-Sync</a> +and <a href="http://davdroid.bitfire.at/" class="reference external">DAVdroid</a> for <a href="http://www.android.com/" class="reference external">Google Android</a></li><li><a href="http://www.inf-it.com/open-source/clients/caldavzap/" class="reference external">CalDavZAP</a></li><li><a href="http://www.inf-it.com/open-source/clients/carddavmate/" class="reference external">CardDavMATE</a></li><li><a href="http://www.apple.com/iphone/" class="reference external">Apple iPhone</a></li><li><a href="http://www.apple.com/macosx/apps/#calendar" class="reference external">Apple Calendar</a></li><li><a href="http://www.apple.com/macosx/apps/#contacts" class="reference external">Apple Contacts</a></li><li><a href="https://syncevolution.org/" class="reference external">syncEvolution</a></li></ul><p>More clients will be supported in the future. However, it may work with any +calendar or contact client which implements CalDAV or CardDAV specifications +too (luck is highly recommended).</p></section></section><section id="idsimple-usage"><header><h3><a href="#idid25">Simple Usage</a></h3></header><section id="idstarting-the-server"><header><h4><a href="#idid26">Starting the Server</a></h4></header><p>To start Radicale CalDAV server, you have to launch the file called +<samp>radicale.py</samp> located in the root folder of the software package.</p></section><section id="idstarting-the-client"><header><h4><a href="#idid27">Starting the Client</a></h4></header><section id="idlightning"><header><h5><a href="#idid28">Lightning</a></h5></header><p>After starting Lightning, click on <samp>File</samp> and <samp>New Calendar</samp>. Upcoming +window asks you about your calendar storage. Chose a calendar <samp>On the +Network</samp>, otherwise Lightning will use its own file system storage instead of +Radicale's one and your calendar won't be remotely accessible.</p><p>Next window asks you to provide information about remote calendar +access. Protocol used by Radicale is <samp>CalDAV</samp>. A standard location for a +basic use of a Radicale calendar is +<samp>http://localhost:5232/user/calendar.ics/</samp>, where you can replace <samp>user</samp> +and <samp>calendar.ics</samp> by some strings of your choice. Calendars are +automatically created if needed. Please note that <strong>the trailing slash is +important</strong>.</p><p>You can now customize your calendar by giving it a nickname and a color. This +is only used by Lightning to identify calendars among others.</p><p>If no warning sign appears next to the calendar name, you can now add events +and tasks to your calendar. All events and tasks are stored in the server, they +can be accessed and modified from multiple clients by multiple users at the +same time.</p><p>Lightning and Thunderbird cannot access CardDAV servers yet. Also, as of version +17.0.5 the SOGo Connector addon is not fully functionally and will create extra +address book entries with every sync.</p></section><section id="idevolution"><header><h5><a href="#idid29">Evolution</a></h5></header><section id="idcalendars"><header><h6>Calendars</h6></header><p>First of all, show the calendar page in Evolution by clicking on the calendar +icon at the bottom of the side pane. Then add a new calendar by choosing in the +menu <samp>File → New → Calendar</samp>.</p><p>A new window opens. The calendar <samp>type</samp> is <samp>CalDAV</samp>, and the location is +something like <samp>caldav://localhost:5232/user/calendar.ics/</samp>, where you can +replace <samp>user</samp> and <samp>calendar</samp> by some strings of your choice. Calendars are +automatically created if needed. Please note that <strong>the trailing slash is +important</strong>.</p><p>You can fill other attributes like the color and the name, these are only used +for Evolution and are not uploaded.</p><p>Click on <samp>OK</samp>, and your calendar should be ready for use.</p></section><section id="idcontacts"><header><h6>Contacts</h6></header><p><em>To be written</em></p></section></section><section id="idkorganizer"><header><h5><a href="#idid30">KOrganizer</a></h5></header><section id="idid5"><header><h6>Calendars</h6></header><p><em>Tested with 4.8.3, you need one running on Akonadi for Cal/CarDav support.</em></p><p>The procedure below can also be done trough the sidebar "Calendar Manager". +But to ensure it works for everyone this examples uses the menu-bar.</p><ol><li>Click <samp>Settings → Configure KOrganizer</samp>.</li><li>Click on <samp>General → Calendars</samp>.</li><li>Click on <samp>Add</samp>.</li><li>Choose <samp>DAV groupware resource</samp> (and click <samp>OK</samp>).</li><li>Enter your username/passord (and click on <samp>Next</samp>).</li><li>Select <samp>Configure the resource manually</samp> (and click on <samp>Finish</samp>).</li><li>Fill in a Display name.</li><li>Fill in your Username and Password.</li><li>Click <samp>Add</samp>.</li><li>Choose <samp>CalDav</samp>.</li><li>For remote URL enter <samp>http://myserver:5232/Username/Calendar.ics/</samp></li><li>Click <samp>Fetch</samp>.</li><li>Select desired calendar.</li><li>Hit <samp>OK</samp>.</li><li>Hit <samp>OK</samp> again.</li><li>Close the Configuration Window (Click <samp>OK</samp>).</li><li>Restart Korganizer for the calendar to appear in the "Calendar Manager" +sidebar (at least with version 4.8.3.)</li></ol><aside class="note "><p>After you created a calender in a collection you can also use +<samp>http://myserver:5232/Username/</samp> as an URL This will then list all +available calendars.</p></aside></section><section id="idid6"><header><h6>Contacts</h6></header><p>You can add a address book analogously to the above instructions, just choose +CardDav and <samp>http://myserver:5232/Username/AddressBook.vcf/</samp> in step 10 and +11. Also, if you already have a calendar set up you can add an address book to +its "DAV groupware resource" under Configure-Kontact → Calendar → General → +Calendars → Modify. This way you don't have to enter username and password +twice.</p></section></section><section id="idid7"><header><h5><a href="#idid31">CalendarSync</a></h5></header><p>CalendarSync can be combined with any Android calendar app and can even +store the calendars in existing Android calendars which are synced by other +sync adapters. Of course it can also create its own calendars.</p><p>So, to sync using CalendarSync you will have to:</p><ul><li>start the app,</li><li>press the <samp>Menu</samp> button,</li><li>select <samp>Create WebiCal</samp>,</li><li>choose to start with a guided configuration.</li></ul><p>Then enter your URL, Username and Password. +As URL please use <samp>http(s)://server:port/username/</samp>.</p><p>If you can use HTTPS depends on your setup. Please replace <samp>username</samp> +with the name of your user account.</p><p>Press test connection button. If everything signaled as OK then +press search calendars button, select the calendars which you want +to sync, and press the configure calendar button at the top of +the display. Your calendars are now configured.</p><p>You can then start the first sync by going back to the +main screen of the app an pressing the <samp>Process Webicals</samp> button. Of +course you can also configure the app at its preferences to sync +automatically.</p></section><section id="idid8"><header><h5><a href="#idid32">ContactSync</a></h5></header><p>ContactSync is designed to sync contacts from and to various sources. It can +also overtake contacts and push them to the server, also if they are only +available on the device (local only contacts).</p><p>So to sync your contacts from the Radical server to your Android device:</p><ul><li>start the app</li><li>press the <samp>Menu</samp> button,</li><li>select <samp>Create WebContact</samp>,</li><li>select guided configuration mode.</li></ul><p>As URL please use <samp>http(s)://server:port/username/</samp>.</p><p>At the URL you will have to replace <samp>server:port</samp> and <samp>username</samp> so that it +matches your specific setup. It also depends on your configuration if you can +use HTTPS or if you have to use HTTP.</p><p>Press test connection button, if everything signaled as OK then press search +address book button. Select the address books which you want to sync and press +the configure address book button at the top of the display.</p><p>You can then start the first sync by going back to the main screen of the app +and pressing the <samp>Handle WebContacts</samp> button. Of course you can also +configure the app at its preferences to sync automatically.</p></section><section id="idid9"><header><h5><a href="#idid33">CalDAV-Sync</a></h5></header><p>CalDAV-Sync is implemented as sync adapter to integrate seamlessly with +any calendar app and widget. Therefore you have to access it via +<samp>Accounts & Sync</samp> settings after installing it from the Market.</p><p>So, to add new calendars to your phone open <samp>Accounts & Sync</samp> settings and +tap on <samp>Add account</samp>, selecting CalDAV as type. In the next view, you have to +switch to Manual Mode. Enter the full CalDAV URL of your Radicale account +(e.g. <samp>http://example.com:5232/Username/</samp>) and corresponding login data. If +you want to create a new calendar you have to specify its full URL e.g. +<samp>http://example.com:5232/Username/Calendar.ics/</samp>. Please note that <strong>the +trailing slash is important</strong>.</p><p>Tap on <samp>Next</samp> and the app checks for all available calendars on +your account, listing them in the next view. (Note: CalDAV-Sync +will not only check under the url you entered but also under +<samp>http://example.com:5232/UsernameYouEnteredForLogin/</samp>. This +might cause strange errors.) You can now select calendars you +want to sync and set a local nickname and color for each. Hitting +<samp>Next</samp> again brings up the last page. Enter your email address +and uncheck <samp>Sync from server to phone only</samp> if you want to use +two-way-sync.</p><aside class="note "><p>CalDAV-Sync officially is in alpha state and two-way-sync is marked as +an experimental feature. Tough it works fine for me, using two-way-sync +is on your own risk!</p></aside><p>Tap on <samp>Finish</samp> and you're done. You're now able to use the new calendars +in the same way you were using Google calendars before.</p></section><section id="idid10"><header><h5><a href="#idid34">CardDAV-Sync</a></h5></header><p>Set up works like CalDAV-Sync, just use .vcf instead of .ics if you enter the +URL, e.g. <samp>http://example.com:5232/Username/AddressBook.vcf/</samp>.</p></section><section id="idid11"><header><h5><a href="#idid35">DAVdroid</a></h5></header><p><a href="http://davdroid.bitfire.at/" class="reference external">DAVdroid</a> is a free and open-source CalDAV/CardDAV +client that is available in Play Store for a small fee or in FDroid for free.</p><p>To make it working with Radicale, just add a new DAVdroid account and enter +<samp>https://example.com/radicale/user/</samp> as base URL (assuming that your Radicale +runs at <samp>https://example.com/radicale/</samp>; don't forget to set base_prefix correctly).</p></section><section id="idid13"><header><h5><a href="#idid36">aCal</a></h5></header><p>aCal is a CalDAV client for Android. It comes with its own calendar application +and does not integrate in the Android calendar. It is a "CalDAV only" calendar, +i.e. it only works in combination with a CalDAV server. It can connect to +several calendars on the server and will display them all in one calendar. It +works nice with Radicale.</p><p>To configure aCal, start aCal, go to the <samp>Settings</samp> screen, select +<samp>Server</samp>, then <samp>Add server</samp>. Choose <samp>Manual Configuration</samp> and select +<samp>Advanced</samp> (bottom of the screen). Then enter the host name of your server, +check <samp>Active</samp>, enter your user name and password. The <samp>Simple Domain</samp> of +your server is the domain part of your fully qualified host name (e.g. if your +server is <samp>myserver.mydomain.org</samp>, choose <samp>mydomain.org</samp>).</p><p>As <samp>Simple Path</samp> you need to specify <samp>/<user></samp> where user is the user you +use to connect to Radicale. <samp>Server Name</samp> is the fully qualified name of your +server machine (<samp>myserver.mydomain.org</samp>). The <samp>Server Path</samp> is +<samp>/<user>/</samp>.</p><p>For <samp>Authentication Type</samp> you need to specify the method you chose for +Radicale. Check <samp>Use SSL</samp> if your Radicale is configured to use SSL.</p><p>As the last thing you need to specify the port Radicale listens to. When your +server is configured you can go back to the first <samp>Settings</samp> screen, and +select <samp>Calendars and Addressbooks</samp>. You should find all the calendars that +are available to your user on the Radicale server. You can then configure each +of them (display colour, notifications, etc.).</p></section><section id="idid14"><header><h5><a href="#idid37">CalDavZAP</a></h5></header><p><em>To be written.</em></p></section><section id="idid15"><header><h5><a href="#idid38">CardDavMATE</a></h5></header><p><em>To be written.</em></p></section><section id="idiphone-ipad"><header><h5><a href="#idid39">iPhone & iPad</a></h5></header><section id="idid16"><header><h6>Calendars</h6></header><p>For iOS devices, the setup is fairly straightforward but there are a few settings +that are critical for proper operation.</p><ol><li>From the Home screen, open <samp>Settings</samp></li><li>Select <samp>Mail, Contacts, Calendars</samp></li><li>Select <samp>Add Account…</samp> → <samp>Other</samp> → <samp>Add CalDAV Account</samp></li><li>Enter the server URL here, including <samp>https</samp>, the port, and the user/calendar +path, ex: <samp>https://myserver.domain.com:3000/bob/birthdays.ics/</samp> (please note +that <strong>the trailing slash is important</strong>)</li><li>Enter your username and password as defined in your server config</li><li>Enter a good description of the calendar in the <samp>Description</samp> field. +Otherwise it will put the whole servername in the field.</li><li>Now go back to the <samp>Mail, Contacts, Calendars</samp> screen and scroll down to the +<samp>Calendars</samp> section. You must change the <samp>Sync</samp> option to sync <samp>All events</samp> +otherwise new events won't show up on your iOS devices!</li></ol><aside class="note "><p>Everything should be working now so test creating events and make sure they +stay created. If you create events on your iOS device and they disappear +after the fetch period, you probably forgot to change the sync setting in +step 7. Likewise, if you create events on another device and they don't +appear on your iPad of iPhone, then make sure your sync settings are correct</p></aside><aside class="warning "><p>In iOS 5.x, please check twice that the <samp>Sync all entries</samp> option is +activated, otherwise some events may not be shown in your calendar.</p></aside></section><section id="idid17"><header><h6>Contacts</h6></header><p>In Contacts on iOS 6:</p><ol><li>From the Home screen, open <samp>Settings</samp></li><li>Select <samp>Mail, Contacts, Calendars</samp></li><li>Select <samp>Add Account…</samp> → <samp>Other</samp> → <samp>Add CardDAV Account</samp></li><li>As <samp>Server</samp> use the Radicale server URL with port, for example <samp>localhost:5232</samp></li><li>Add any <samp>User name</samp> you like (if you didn't configure authentication)</li><li>Add any <samp>Password</samp> you like (again, if you didn't configure authentication)</li><li>Change the <samp>Description</samp> to something more readable (optional)</li><li>Tap <samp>Next</samp></li><li>An alert showing <cite>Cannot Connect Using SSL</cite> will pop up as we haven't configured +SSL yet, <samp>Continue</samp> for now</li><li>Back on the <samp>Mail, Contacts, Calendars</samp> screen you scroll to the <samp>Contacts</samp> section, +select the Radicale server as <samp>Default Account</samp> when you want to save new contacts to +the Radicale server</li><li>Exit to the Home screen and open <samp>Contacts</samp>, tap <samp>Groups</samp>, you should see the +Radicale server</li></ol><aside class="note "><p>You'll need version 0.8.1 or up for this to work. Earlier versions will forget your new +settings after a reboot.</p></aside></section></section><section id="idos-x"><header><h5><a href="#idid40">OS X</a></h5></header><aside class="note "><p>This description assumes you do not have any authentication or encryption +configured. If you want to use iCal with authentication or encryption, you +just have to fill in the corresponding fields in your calendar's configuration.</p></aside><section id="idid18"><header><h6>Calendars</h6></header><p>In iCal 4.0 or iCal 5.0:</p><ol><li>Open the <samp>Preferences</samp> dialog and select the <samp>Accounts</samp> tab</li><li>Click the <samp>+</samp> button at the lower left to open the account creation wizard</li><li>As <samp>Account type</samp> select <samp>CalDAV</samp></li><li>Select any <samp>User name</samp> you like</li><li>The <samp>Password</samp> field can be left empty (we did not configure +authentication)</li><li>As <samp>Server address</samp> use <samp>domain:port</samp>, for example <samp>localhost:5232</samp> +(this would be the case if you start an unconfigured Radicale on your local +machine)</li></ol><p>Click <samp>Create</samp>. The wizard will now tell you, that no encryption is in place +(<samp>Unsecured Connection</samp>). This is expected and will change if you configure +Radicale to use SSL. Click <samp>Continue</samp>.</p><aside class="warning "><p>In iCal 5.x, please check twice that the <samp>Sync all entries</samp> option is +activated, otherwise some events may not be shown in your calendar.</p></aside><p>The wizard will close, leaving you in the <samp>Account</samp> tab again. The account is +now set-up. You can close the <samp>Preferences</samp> window.</p><aside class="important "><p>To add a calendar to your shiny new account you have to go to the menu and +select <samp>File → New Calendar → <your shiny new account></samp>. A new calendar +appears in the left panel waiting for you to enter a name.</p><p>This is needed because the behaviour of the big <samp>+</samp> button in the main +window is confusing as you can't focus an empty account and iCal will just +add a calendar to another account.</p></aside></section><section id="idid19"><header><h6>Contacts</h6></header><p>In Contacts 7 (previously known as AddressBook):</p><ol><li>Open the <samp>Preferences</samp> dialog and select the <samp>Accounts</samp> tab.</li><li>Click the <samp>+</samp> button at the lower left to open the account creation wizard.</li><li>As <samp>Account type</samp> select <samp>CardDAV</samp>.</li><li>Add any <samp>User name</samp> you like.</li><li>The <samp>Password</samp> field can be left empty (if we didn't configure +authentication).</li><li>As <samp>Server address</samp> use <samp>domain:port</samp>, for example <samp>localhost:5232</samp> +(this would be the case if you start an unconfigured Radicale server on your local +machine).</li><li>Click <samp>Create</samp>. Contacts will complain about an <cite>Unsecured Connection</cite> if you +don't have SSL enabled. Click <samp>Create</samp> again.</li><li>You might want to change the <samp>Description</samp> of the newly added account to +something more readable. (optional)</li><li>Switch to the <samp>General</samp> tab in the preferences and select the Radicale server +as <samp>Default Account</samp> at the bottom of the screen. It probably shows up as +<samp>`domain:port</samp> or the name you choose if you changed the description. Newly +added contacts are added to the default account and by default this will be the +local <cite>On My Mac</cite> account.</li></ol><aside class="note "><p>You'll need version 0.8.1 or up for this to work. Earlier versions can read CardDAV +contacts but can't add new contacts.</p></aside></section></section><section id="idid20"><header><h5><a href="#idid41">syncEvolution</a></h5></header><p>You can find more information about syncEvolution and Radicale on the +<a href="https://syncevolution.org/wiki/synchronizing-radicale" class="reference external">syncEvolution wiki page</a>.</p></section><section id="idnokia-microsoft-windows-phones"><header><h5><a href="#idid42">Nokia / Microsoft Windows Phones</a></h5></header><ol><li>Go to "Settings" > "email+accounts"</li><li>Click "add an account" > "iCloud"</li><li>Enter random email address (e.g. "<a href="mailto:foo@bar" class="reference external">foo@bar</a>" and "qwerty") > "sign in"</li><li>A new account "iCloud" with the given email address appears on the list. +The status is "Not up to date". Click the account.</li><li>An error message is given. Click "close".</li><li>Enter new and "real" values to the account setting fields:<ul><li>"Account name": This name appears on the calendar etc. +Examples: "Home", "Word", "Sauna reservation"</li><li>"Email address": Not used</li><li>"Sync contacts and calendar": Select the sync interval</li><li>"Content to sync": Uncheck "Contacts", check "Calendar"</li><li>"Your name": Not used</li><li>"Username": Username to your Radicale server</li><li>"Password": Password to your Radicale server</li><li>Click "advanced settings"</li><li>"Calendar server (CalDAV)": Enter the full path to the calendar .ics file. +Don't forget the trailing slash. +Example: <cite>https://my.server.fi:5232/myusername/calendarname.ics/</cite></li></ul></li></ol><p>Don't forget to add your CA to the phone if you're using a self-signed certificate +on your Radicale. Make the CA downloadable to Internet Explorer. The correct +certificate format is X509 (with .cer file extension).</p></section></section></section><section id="idcomplex-configuration"><header><h3><a href="#idid43">Complex Configuration</a></h3></header><aside class="note "><p>This section is written for Linux users, but can be easily adapted for +Windows and MacOS users.</p></aside><section id="idinstalling-the-server"><header><h4><a href="#idid44">Installing the Server</a></h4></header><p>You can install Radicale thanks to the following command, with superuser +rights:</p><pre>python setup.py install</pre><p>Then, launching the server can be easily done by typing as a normal user:</p><pre>radicale</pre></section><section id="idconfiguring-the-server"><header><h4><a href="#idid45">Configuring the Server</a></h4></header><section id="idmain-configuration-file"><header><h5><a href="#idid46">Main Configuration File</a></h5></header><aside class="note "><p>This section is following the latest stable version changes. Please look at +the default configuration file included in your package if you have an older +version of Radicale.</p></aside><p>The server configuration can be modified in <samp>/etc/radicale/config</samp> or in +<samp>~/.config/radicale/config</samp>. You can use the <samp>--config</samp> parameter in the +command line to choose a specific path. You can also set the +<samp>RADICALE_CONFIG</samp> environment variable to a path of your choice. Here is the +default configuration file, with the main parameters:</p><div class="highlight"><pre style="line-height: 125%"><span style="color: #b58900">[server]</span> +<span style="color: #839496"># CalDAV server hostnames separated by a comma</span> +<span style="color: #839496"># IPv4 syntax: address:port</span> +<span style="color: #839496"># IPv6 syntax: [address]:port</span> +<span style="color: #839496"># For example: 0.0.0.0:9999, [::]:9999</span> +<span style="color: #839496"># IPv6 adresses are configured to only allow IPv6 connections</span> +<span style="color: #cb4b16">hosts</span> = <span style="color: #2aa198">0.0.0.0:5232</span> +<span style="color: #839496"># Daemon flag</span> +<span style="color: #cb4b16">daemon</span> = <span style="color: #2aa198">False</span> +<span style="color: #839496"># File storing the PID in daemon mode</span> +<span style="color: #cb4b16">pid</span> = +<span style="color: #839496"># SSL flag, enable HTTPS protocol</span> +<span style="color: #cb4b16">ssl</span> = <span style="color: #2aa198">False</span> +<span style="color: #839496"># SSL certificate path</span> +<span style="color: #cb4b16">certificate</span> = <span style="color: #2aa198">/etc/apache2/ssl/server.crt</span> +<span style="color: #839496"># SSL private key</span> +<span style="color: #cb4b16">key</span> = <span style="color: #2aa198">/etc/apache2/ssl/server.key</span> +<span style="color: #839496"># SSL Protocol used. See python's ssl module for available values</span> +<span style="color: #cb4b16">protocol</span> = <span style="color: #2aa198">PROTOCOL_SSLv23</span> +<span style="color: #839496"># Ciphers available. See python's ssl module for available ciphers</span> +<span style="color: #cb4b16">ciphers</span> = +<span style="color: #839496"># Reverse DNS to resolve client address in logs</span> +<span style="color: #cb4b16">dns_lookup</span> = <span style="color: #2aa198">True</span> +<span style="color: #839496"># Root URL of Radicale (starting and ending with a slash)</span> +<span style="color: #cb4b16">base_prefix</span> = <span style="color: #2aa198">/</span> +<span style="color: #839496"># Possibility to allow URLs cleaned by a HTTP server, without the base_prefix</span> +<span style="color: #cb4b16">can_skip_base_prefix</span> = <span style="color: #2aa198">False</span> +<span style="color: #839496"># Message displayed in the client when a password is needed</span> +<span style="color: #cb4b16">realm</span> = <span style="color: #2aa198">Radicale - Password Required</span> + + +<span style="color: #b58900">[encoding]</span> +<span style="color: #839496"># Encoding for responding requests</span> +<span style="color: #cb4b16">request</span> = <span style="color: #2aa198">utf-8</span> +<span style="color: #839496"># Encoding for storing local collections</span> +<span style="color: #cb4b16">stock</span> = <span style="color: #2aa198">utf-8</span> + + +<span style="color: #b58900">[auth]</span> +<span style="color: #839496"># Authentication method</span> +<span style="color: #839496"># Value: None | htpasswd | IMAP | LDAP | PAM | courier | http | remote_user | custom</span> +<span style="color: #cb4b16">type</span> = <span style="color: #2aa198">None</span> + +<span style="color: #839496"># Custom authentication handler</span> +<span style="color: #cb4b16">custom_handler</span> = + +<span style="color: #839496"># Htpasswd filename</span> +<span style="color: #cb4b16">htpasswd_filename</span> = <span style="color: #2aa198">/etc/radicale/users</span> +<span style="color: #839496"># Htpasswd encryption method</span> +<span style="color: #839496"># Value: plain | sha1 | crypt</span> +<span style="color: #cb4b16">htpasswd_encryption</span> = <span style="color: #2aa198">crypt</span> + +<span style="color: #839496"># LDAP server URL, with protocol and port</span> +<span style="color: #cb4b16">ldap_url</span> = <span style="color: #2aa198">ldap://localhost:389/</span> +<span style="color: #839496"># LDAP base path</span> +<span style="color: #cb4b16">ldap_base</span> = <span style="color: #2aa198">ou=users,dc=example,dc=com</span> +<span style="color: #839496"># LDAP login attribute</span> +<span style="color: #cb4b16">ldap_attribute</span> = <span style="color: #2aa198">uid</span> +<span style="color: #839496"># LDAP filter string</span> +<span style="color: #839496"># placed as X in a query of the form (&(...)X)</span> +<span style="color: #839496"># example: (objectCategory=Person)(objectClass=User)(memberOf=cn=calenderusers,ou=users,dc=example,dc=org)</span> +<span style="color: #839496"># leave empty if no additional filter is needed</span> +<span style="color: #cb4b16">ldap_filter</span> = +<span style="color: #839496"># LDAP dn for initial login, used if LDAP server does not allow anonymous searches</span> +<span style="color: #839496"># Leave empty if searches are anonymous</span> +<span style="color: #cb4b16">ldap_binddn</span> = +<span style="color: #839496"># LDAP password for initial login, used with ldap_binddn</span> +<span style="color: #cb4b16">ldap_password</span> = +<span style="color: #839496"># LDAP scope of the search</span> +<span style="color: #cb4b16">ldap_scope</span> = <span style="color: #2aa198">OneLevel</span> + +<span style="color: #839496"># IMAP Configuration</span> +<span style="color: #cb4b16">imap_hostname</span> = <span style="color: #2aa198">localhost</span> +<span style="color: #cb4b16">imap_port</span> = <span style="color: #2aa198">143</span> +<span style="color: #cb4b16">imap_ssl</span> = <span style="color: #2aa198">False</span> + +<span style="color: #839496"># PAM group user should be member of</span> +<span style="color: #cb4b16">pam_group_membership</span> = + +<span style="color: #839496"># Path to the Courier Authdaemon socket</span> +<span style="color: #cb4b16">courier_socket</span> = + +<span style="color: #839496"># HTTP authentication request URL endpoint</span> +<span style="color: #cb4b16">http_url</span> = +<span style="color: #839496"># POST parameter to use for username</span> +<span style="color: #cb4b16">http_user_parameter</span> = +<span style="color: #839496"># POST parameter to use for password</span> +<span style="color: #cb4b16">http_password_parameter</span> = + + +<span style="color: #b58900">[git]</span> +<span style="color: #839496"># Git default options</span> +<span style="color: #cb4b16">committer</span> = <span style="color: #2aa198">Radicale <radicale@example.com></span> + + +<span style="color: #b58900">[rights]</span> +<span style="color: #839496"># Rights backend</span> +<span style="color: #839496"># Value: None | authenticated | owner_only | owner_write | from_file | custom</span> +<span style="color: #cb4b16">type</span> = <span style="color: #2aa198">None</span> + +<span style="color: #839496"># Custom rights handler</span> +<span style="color: #cb4b16">custom_handler</span> = + +<span style="color: #839496"># File for rights management from_file</span> +<span style="color: #cb4b16">file</span> = <span style="color: #2aa198">~/.config/radicale/rights</span> + + +<span style="color: #b58900">[storage]</span> +<span style="color: #839496"># Storage backend</span> +<span style="color: #839496"># Value: filesystem | multifilesystem | database | custom</span> +<span style="color: #cb4b16">type</span> = <span style="color: #2aa198">filesystem</span> + +<span style="color: #839496"># Custom storage handler</span> +<span style="color: #cb4b16">custom_handler</span> = + +<span style="color: #839496"># Folder for storing local collections, created if not present</span> +<span style="color: #cb4b16">filesystem_folder</span> = <span style="color: #2aa198">~/.config/radicale/collections</span> + +<span style="color: #839496"># Database URL for SQLAlchemy</span> +<span style="color: #839496"># dialect+driver://user:password@host/dbname[?key=value..]</span> +<span style="color: #839496"># For example: sqlite:///var/db/radicale.db, postgresql://user:password@localhost/radicale</span> +<span style="color: #839496"># See http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#sqlalchemy.create_engine</span> +<span style="color: #cb4b16">database_url</span> = + + +<span style="color: #b58900">[logging]</span> +<span style="color: #839496"># Logging configuration file</span> +<span style="color: #839496"># If no config is given, simple information is printed on the standard output</span> +<span style="color: #839496"># For more information about the syntax of the configuration file, see:</span> +<span style="color: #839496"># http://docs.python.org/library/logging.config.html</span> +<span style="color: #cb4b16">config</span> = <span style="color: #2aa198">/etc/radicale/logging</span> +<span style="color: #839496"># Set the default logging level to debug</span> +<span style="color: #cb4b16">debug</span> = <span style="color: #2aa198">False</span> +<span style="color: #839496"># Store all environment variables (including those set in the shell)</span> +<span style="color: #cb4b16">full_environment</span> = <span style="color: #2aa198">False</span> + + +<span style="color: #839496"># Additional HTTP headers</span> +<span style="color: #839496">#[headers]</span> +<span style="color: #839496">#Access-Control-Allow-Origin = *</span> +</pre></div><p>This configuration file is read each time the server is launched. If some +values are not given, the default ones are used. If no configuration file is +available, all the default values are used.</p></section><section id="idlogging-configuration-file"><header><h5><a href="#idid47">Logging Configuration File</a></h5></header><p>Radicale uses the default logging facility for Python. The default +configuration prints the information messages to the standard output. It is +possible to print debug messages thanks to:</p><pre>radicale --debug</pre><p>Radicale can also be configured to send the messages to the console, logging +files, syslog, etc. For more information about the syntax of the configuration +file, see: <a href="http://docs.python.org/library/logging.config.html" class="reference external">http://docs.python.org/library/logging.config.html</a>. Here is an +example of logging configuration file:</p><div class="highlight"><pre style="line-height: 125%"><span style="color: #839496"># Loggers, handlers and formatters keys</span> + +<span style="color: #b58900">[loggers]</span> +<span style="color: #839496"># Loggers names, main configuration slots</span> +<span style="color: #cb4b16">keys</span> = <span style="color: #2aa198">root</span> + +<span style="color: #b58900">[handlers]</span> +<span style="color: #839496"># Logging handlers, defining logging output methods</span> +<span style="color: #cb4b16">keys</span> = <span style="color: #2aa198">console,file</span> + +<span style="color: #b58900">[formatters]</span> +<span style="color: #839496"># Logging formatters</span> +<span style="color: #cb4b16">keys</span> = <span style="color: #2aa198">simple,full</span> + + +<span style="color: #839496"># Loggers</span> + +<span style="color: #b58900">[logger_root]</span> +<span style="color: #839496"># Root logger</span> +<span style="color: #cb4b16">level</span> = <span style="color: #2aa198">DEBUG</span> +<span style="color: #cb4b16">handlers</span> = <span style="color: #2aa198">console,file</span> + + +<span style="color: #839496"># Handlers</span> + +<span style="color: #b58900">[handler_console]</span> +<span style="color: #839496"># Console handler</span> +<span style="color: #cb4b16">class</span> = <span style="color: #2aa198">StreamHandler</span> +<span style="color: #cb4b16">level</span> = <span style="color: #2aa198">INFO</span> +<span style="color: #cb4b16">args</span> = <span style="color: #2aa198">(sys.stdout,)</span> +<span style="color: #cb4b16">formatter</span> = <span style="color: #2aa198">simple</span> + +<span style="color: #b58900">[handler_file]</span> +<span style="color: #839496"># File handler</span> +<span style="color: #cb4b16">class</span> = <span style="color: #2aa198">FileHandler</span> +<span style="color: #cb4b16">args</span> = <span style="color: #2aa198">('/var/log/radicale',)</span> +<span style="color: #cb4b16">formatter</span> = <span style="color: #2aa198">full</span> + + +<span style="color: #839496"># Formatters</span> + +<span style="color: #b58900">[formatter_simple]</span> +<span style="color: #839496"># Simple output format</span> +<span style="color: #cb4b16">format</span> = <span style="color: #2aa198">%(message)s</span> + +<span style="color: #b58900">[formatter_full]</span> +<span style="color: #839496"># Full output format</span> +<span style="color: #cb4b16">format</span> = <span style="color: #2aa198">%(asctime)s - %(levelname)s: %(message)s</span> +</pre></div></section><section id="idcommand-line-options"><header><h5><a href="#idid48">Command Line Options</a></h5></header><p>All the options of the <samp>server</samp> part can be changed with command line +options. These options are available by typing:</p><pre>radicale --help</pre></section></section><section id="idwsgi-cgi-and-fastcgi"><header><h4><a href="#idid49">WSGI, CGI and FastCGI</a></h4></header><p>Radicale comes with a <a href="http://wsgi.org/" class="reference external">WSGI</a> support, allowing the software +to be used behind any HTTP server supporting WSGI such as Apache.</p><p>Moreover, it is possible to use <a href="http://trac.saddi.com/flup/wiki/FlupServers" class="reference external">flup</a> to wrap Radicale into a CGI, +FastCGI, SCGI or AJP application, and therefore use it with Lighttpd, Nginx or +even Tomcat.</p><section id="idapache-and-mod-wsgi"><header><h5><a href="#idid50">Apache and mod_wsgi</a></h5></header><p>To use Radicale with Apache's <samp>mod_wsgi</samp>, you first have to install the +Radicale module in your Python path and write your <samp>.wsgi</samp> file (in +<samp>/var/www</samp> for example):</p><div class="highlight"><pre style="line-height: 125%"><span style="color: #b58900">import</span> <span style="color: #cb4b16">radicale</span> +<span style="color: #cb4b16">radicale</span>.<span style="color: #cb4b16">log</span>.<span style="color: #cb4b16">start</span>() +<span style="color: #cb4b16">application</span> = <span style="color: #cb4b16">radicale</span>.<span style="color: #cb4b16">Application</span>() +</pre></div><aside class="note "><p>The <samp>hosts</samp>, <samp>daemon</samp>, <samp>pid</samp>, <samp>ssl</samp>, <samp>certificate</samp>, <samp>key</samp>, +<samp>protocol</samp> and <samp>ciphers</samp> keys of the <samp>[server]</samp> part of the +configuration are ignored.</p></aside><p>Next you have to create the Apache virtual host (adapt the configuration +to your environment):</p><div class="highlight"><pre style="line-height: 125%"><span style="color: #cb4b16"><VirtualHost</span> <span style="color: #2aa198">*:80</span><span style="color: #cb4b16">></span> + <span style="color: #cb4b16">ServerName</span> cal.yourdomain.org + + <span style="color: #cb4b16">WSGIDaemonProcess</span> radicale <span style="color: #b58900">user</span>=www-data <span style="color: #b58900">group</span>=www-data threads=1 + <span style="color: #cb4b16">WSGIScriptAlias</span> / <span style="color: #2aa198">/var/www/radicale.wsgi</span> + + <span style="color: #cb4b16"><Directory</span> <span style="color: #2aa198">/var/www</span><span style="color: #cb4b16">></span> + <span style="color: #cb4b16">WSGIProcessGroup</span> radicale + <span style="color: #cb4b16">WSGIApplicationGroup</span> %{GLOBAL} + <span style="color: #cb4b16">AllowOverride</span> <span style="color: #b58900">None</span> + <span style="color: #cb4b16">Order</span> allow,deny + <span style="color: #cb4b16">allow</span> from <span style="color: #b58900">all</span> + <span style="color: #cb4b16"></Directory></span> +<span style="color: #cb4b16"></VirtualHost></span> +</pre></div><aside class="warning "><p>You should use the root of the (sub)domain (<samp>WSGIScriptAlias /</samp>), else +some CalDAV features may not work.</p></aside><p>If you want to use authentication with Apache, you <em>really</em> should use one of +the Apache authentication modules, instead of the ones from Radicale: they're +just better.</p><p>Deactivate any rights and module in Radicale and use your favourite Apache +authentication backend. You can then restrict the access: allow the <samp>alice</samp> +user to access <samp>/alice/*</samp> URLs, and everything should work as expected.</p><p>Here is one example of Apache configuration file:</p><div class="highlight"><pre style="line-height: 125%"><span style="color: #cb4b16"><VirtualHost</span> <span style="color: #2aa198">*:80</span><span style="color: #cb4b16">></span> + <span style="color: #cb4b16">ServerName</span> radicale.local + + <span style="color: #cb4b16">WSGIDaemonProcess</span> radicale <span style="color: #b58900">user</span>=radicale <span style="color: #b58900">group</span>=radicale threads=1 + <span style="color: #cb4b16">WSGIScriptAlias</span> / <span style="color: #2aa198">/usr/share/radicale/radicale.wsgi</span> + + <span style="color: #cb4b16"><Directory</span> <span style="color: #2aa198">/usr/share/radicale/</span><span style="color: #cb4b16">></span> + <span style="color: #cb4b16">WSGIProcessGroup</span> radicale + <span style="color: #cb4b16">WSGIApplicationGroup</span> %{GLOBAL} + + <span style="color: #cb4b16">AuthType</span> Basic + <span style="color: #cb4b16">AuthName</span> <span style="color: #2aa198">"Radicale Authentication"</span> + <span style="color: #cb4b16">AuthBasicProvider</span> file + <span style="color: #cb4b16">AuthUserFile</span> <span style="color: #2aa198">/usr/share/radicale/radicale.passwd</span> + <span style="color: #cb4b16">Require</span> valid-user + + <span style="color: #cb4b16">AllowOverride</span> <span style="color: #b58900">None</span> + <span style="color: #cb4b16">Order</span> allow,deny + <span style="color: #cb4b16">allow</span> from <span style="color: #b58900">all</span> + + <span style="color: #cb4b16">RewriteEngine</span> <span style="color: #b58900">On</span> + <span style="color: #cb4b16">RewriteCond</span> %{REMOTE_USER}%{PATH_INFO} !^([^/]+/)\1 + <span style="color: #cb4b16">RewriteRule</span> .* - [Forbidden] + <span style="color: #cb4b16"></Directory></span> +<span style="color: #cb4b16"></VirtualHost></span> +</pre></div><p>If you're still convinced that access control is better with Radicale, you have +to add <samp>WSGIPassAuthorization On</samp> in your Apache configuration files, as +explained in <a href="http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#User_Authentication" class="reference external">the mod_wsgi documentation</a>.</p><aside class="note "><p>Read-only calendars or address books can also be served by a simple Apache +HTTP server, as Radicale stores full-text icalendar and vcard files with the +default configuration.</p></aside></section></section><section id="idauthentication"><header><h4><a href="#idid51">Authentication</a></h4></header><p>Authentication is possible through:</p><ul><li>Courier-Authdaemon socket</li><li>htpasswd file, including list of plain user/password couples</li><li>HTTP, checking status code of a POST request</li><li>IMAP</li><li>LDAP</li><li>PAM</li><li>Remote user given by HTTP server</li></ul><p>Check the <samp>[auth]</samp> section of your configuration file to know the different +options offered by these authentication modules.</p><p>Some authentication methods need additional modules, see <a href="#idpython-versions-and-os-support" class="reference internal">Python Versions and +OS Support</a> for further information.</p><p>You can also write and use a custom module handle authentication if you use a +different technology.</p><p>Please note that these modules have not been verified by security experts. If +you need a really secure way to handle authentication, you should put Radicale +behind a real HTTP server and use its authentication and rights management +methods.</p></section><section id="idrights-management"><header><h4><a href="#idid52">Rights Management</a></h4></header><p>You can set read and write rights for collections according to the authenticated +user and the owner of the collection.</p><p>The <em>owner of a collection</em> is determined by the URL of the collection. For +example, <samp>http://my.server.com:5232/anna/calendar.ics/</samp> is owned by the user +called <samp>anna</samp>.</p><p>The <em>authenticated user</em> is the login used for authentication.</p><p>5 different configurations are available, you can choose the one you want in +your configuration file. You can also write and use a custom module handle +rights management if you need a specific pattern.</p><section id="idnone"><header><h5><a href="#idid53">None</a></h5></header><p>Everybody (including anonymous users) has read and write access to all collections.</p></section><section id="idauthenticated"><header><h5><a href="#idid54">Authenticated</a></h5></header><p>An authenticated users has read and write access to all collections, anonymous +users have no access to these collections.</p></section><section id="idowner-only"><header><h5><a href="#idid55">Owner Only</a></h5></header><p>Only owners have read and write access to their own collections. The other +users, authenticated or anonymous, have no access to these collections.</p></section><section id="idowner-write"><header><h5><a href="#idid56">Owner Write</a></h5></header><p>Authenticated users have read access to all collections, but only owners have +write access to their own collections. Anonymous users have no access to +collections.</p></section><section id="idfrom-file"><header><h5><a href="#idid57">From File</a></h5></header><p>Rights are based on a regex-based file whose name is specified in the config +(section "right", key "file").</p><p>Authentication login is matched against the "user" key, and collection's path +is matched against the "collection" key. You can use Python's ConfigParser +interpolation values %(login)s and %(path)s. You can also get groups from the +user regex in the collection with {0}, {1}, etc.</p><p>For example, for the "user" key, ".+" means "authenticated user" and ".*" +means "anybody" (including anonymous users).</p><p>Section names are only used for naming the rule.</p><p>Leading or ending slashes are trimmed from collection's path.</p><p>Example:</p><div class="highlight"><pre style="line-height: 125%"><span style="color: #839496"># This means all users starting with "admin" may read any collection</span> +<span style="color: #b58900">[admin]</span> +<span style="color: #dc322f">user:</span> <span style="color: #dc322f">^admin.*$</span> +<span style="color: #dc322f">collection:</span> <span style="color: #dc322f">.*</span> +<span style="color: #dc322f">permission:</span> <span style="color: #dc322f">r</span> + +<span style="color: #839496"># This means all users may read and write any collection starting with public.</span> +<span style="color: #839496"># We do so by just not testing against the user string.</span> +<span style="color: #b58900">[public]</span> +<span style="color: #dc322f">user:</span> <span style="color: #dc322f">.*</span> +<span style="color: #dc322f">collection:</span> <span style="color: #dc322f">^public(/.+)?$</span> +<span style="color: #dc322f">permission:</span> <span style="color: #dc322f">rw</span> + +<span style="color: #839496"># A little more complex: give read access to users from a domain for all</span> +<span style="color: #839496"># collections of all the users (ie. user@domain.tld can read domain/\*).</span> +<span style="color: #b58900">[domain-wide-access]</span> +<span style="color: #dc322f">user:</span> <span style="color: #dc322f">^.+@(.+)\..+$</span> +<span style="color: #dc322f">collection:</span> <span style="color: #dc322f">^{0}/.+$</span> +<span style="color: #dc322f">permission:</span> <span style="color: #dc322f">r</span> + +<span style="color: #839496"># Allow authenticated user to read all collections</span> +<span style="color: #b58900">[allow-everyone-read]</span> +<span style="color: #dc322f">user:</span> <span style="color: #dc322f">.+</span> +<span style="color: #dc322f">collection:</span> <span style="color: #dc322f">.*</span> +<span style="color: #dc322f">permission:</span> <span style="color: #dc322f">r</span> + +<span style="color: #839496"># Give write access to owners</span> +<span style="color: #b58900">[owner-write]</span> +<span style="color: #dc322f">user:</span> <span style="color: #dc322f">.+</span> +<span style="color: #dc322f">collection:</span> <span style="color: #dc322f">^%(login)s/.+$</span> +<span style="color: #dc322f">permission:</span> <span style="color: #dc322f">w</span> +</pre></div></section></section><section id="idgit-support"><header><h4><a href="#idid58">Git Support</a></h4></header><aside class="note "><p>If the project doesn't comply with the requirements to use Git, Radicale will still work. +Your collections will run fine but without the versionning system.</p></aside><p>Git is now automatically supported on Radicale. It depends on <a href="https://github.com/jelmer/dulwich" class="reference external">dulwich</a>.</p><section id="idconfigure-radicale"><header><h5><a href="#idid59">Configure Radicale</a></h5></header><p>Radicale automatically detects the <em>.git</em> folder in the path you configured for +the filesystem_folder variable in the <samp>[storage]</samp> section of your configuration file. +Make sure a repository is created at this location or create one (using <em>git init +.</em> for instance) else it won't work.</p><p>To summarize :</p><ul><li>Configure your Git installation</li><li>Get Radicale and dulwich</li><li>Create the repository where your collections are stored</li><li>Run Radicale and it should work</li></ul></section><section id="idhow-it-works"><header><h5><a href="#idid60">How it works</a></h5></header><p>Radicale will automatically commit any changes on your collections. It +will use your git config to find parameters such as the committer and that's all.</p></section><section id="idissues"><header><h5><a href="#idid61">Issues</a></h5></header><p>A dulwich project ported on Python 3 exists but it seems that it doesn't follow the +current api (committer is mandatory and not retrieved from the git config by +default). Until this problem isn't fixed, the Git support for Radicale on +Python 3 will not be ensured.</p></section></section></section><section id="idpython-versions-and-os-support"><header><h3><a href="#idid62">Python Versions and OS Support</a></h3></header><section id="idtls-support"><header><h4><a href="#idid63">TLS Support</a></h4></header><p>Python 2.6 suffered <a href="http://bugs.python.org/issue5103" class="reference external">a bug</a> causing huge +timeout problems with TLS. The bug is fixed since Python 2.6.6.</p><p>IMAP authentication over TLS requires Python 3.2.</p><p>Python 2.7 and Python 3.x do not suffer this bug.</p></section><section id="idcrypt-support"><header><h4><a href="#idid64">Crypt Support</a></h4></header><p>With the htpasswd access, many encryption methods are available, and crypt is the +default one in Radicale. Unfortunately, the <samp>crypt</samp> module is unavailable on +Windows, you have to pick another method on this OS.</p></section><section id="idimap-authentication"><header><h4><a href="#idid65">IMAP Authentication</a></h4></header><p>The IMAP authentication module relies on the imaplib module, available with 2.x +versions of Python. However, TLS is only available in Python 3.2. Older versions +of Python or a non-modern server who does not support STARTTLS can only +authenticate against <samp>localhost</samp> as passwords are transmitted in PLAIN. Legacy +SSL mode on port 993 is not supported.</p></section><section id="idldap-authentication"><header><h4><a href="#idid66">LDAP Authentication</a></h4></header><p>The LDAP authentication module relies on <a href="http://www.python-ldap.org/" class="reference external">the python-ldap module</a>, and thus only works with 2.x versions +of Python.</p></section><section id="idpam-authentication"><header><h4><a href="#idid67">PAM Authentication</a></h4></header><p>The PAM authentication module relies on <a href="http://atlee.ca/software/pam/" class="reference external">the pam module</a>, and thus only works with 2.x versions of +Python.</p><p>Bear in mind that on Linux systems, if you're authenticating against PAM +files (i.e. <samp>/etc/shadow</samp>), the user running Radicale must have the right +permissions. For instance, you might want to add the <samp>radicale</samp> user +to the <samp>shadow</samp> group.</p></section><section id="idhttp-authentication"><header><h4><a href="#idid68">HTTP Authentication</a></h4></header><p>The HTTP authentication module relies on <a href="http://docs.python-requests.org/en/latest/" class="reference external">the requests module</a>.</p></section><section id="iddaemon-mode"><header><h4><a href="#idid69">Daemon Mode</a></h4></header><p>The daemon mode relies on forks, and thus only works on Unix-like OSes +(incuding Linux, OS X, BSD).</p></section></section></article> + </section> + + + <footer> + <ul> + + + <li> + + <a href="http://community.kozea.fr/">A Kozea Project</a> + + </li> + + + <li> + + <a href="http://validator.w3.org/check?uri=referer">Optimized for Standards</a> + + </li> + + </ul> + </footer> + + + <aside id="ribbon"> + <a href="https://github.com/Kozea/Radicale">Fork me on GitHub</a> + </aside> + + + + +</body></html>
\ No newline at end of file diff --git a/rfcs/Simplify lower-level WebDAV api · Issue #50 · gaye_dav.html b/rfcs/Simplify lower-level WebDAV api · Issue #50 · gaye_dav.html new file mode 100644 index 0000000..093ada2 --- /dev/null +++ b/rfcs/Simplify lower-level WebDAV api · Issue #50 · gaye_dav.html @@ -0,0 +1,1878 @@ +<!DOCTYPE html> +<html class="" lang="en"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta http-equiv="Content-Language" content="en"> + + + <title>Simplify lower-level WebDAV api · Issue #50 · gaye/dav</title> + <link rel="search" type="application/opensearchdescription+xml" href="https://github.com/opensearch.xml" title="GitHub"> + <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> + <link rel="apple-touch-icon" sizes="57x57" href="urn:not-loaded:https://github.com/apple-touch-icon-114.png"> + <link rel="apple-touch-icon" sizes="114x114" href="urn:not-loaded:https://github.com/apple-touch-icon-114.png"> + <link rel="apple-touch-icon" sizes="72x72" href="urn:not-loaded:https://github.com/apple-touch-icon-144.png"> + <link rel="apple-touch-icon" sizes="144x144" href="urn:not-loaded:https://github.com/apple-touch-icon-144.png"> + <meta property="fb:app_id" content="1401488693436528"> + + <meta content="@github" name="twitter:site"><meta content="summary" name="twitter:card"><meta content="Simplify lower-level WebDAV api · Issue #50 · gaye/dav" name="twitter:title"><meta content="Right now using the WebDAV bits looks like + +var dav = require('dav'); + +var client = new dav.Client( + new dav.transport.Basic( + new dav.Credentials({ + username: 'xxx', + password: 'xxx' + " name="twitter:description"><meta content="https://avatars0.githubusercontent.com/u/535859?v=3&s=400" name="twitter:image:src"> + <meta content="GitHub" property="og:site_name"><meta content="object" property="og:type"><meta content="https://avatars0.githubusercontent.com/u/535859?v=3&s=400" property="og:image"><meta content="Simplify lower-level WebDAV api · Issue #50 · gaye/dav" property="og:title"><meta content="https://github.com/gaye/dav/issues/50" property="og:url"><meta content="Right now using the WebDAV bits looks like + +var dav = require('dav'); + +var client = new dav.Client( + new dav.transport.Basic( + new dav.Credentials({ + username: 'xxx', + password: 'xxx' + }) + ), + { + baseUrl: 'https://m..." property="og:description"> + <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> + <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> + <link rel="assets" href="https://assets-cdn.github.com/"> + <link rel="web-socket" href="wss://live.github.com/_sockets/MTk4OTk5OjE1MmZhNDI3Y2IxNzUxNTU1MDhkZGRhODZmMTQzMDJmOjExODc3OGUyMmNkYjZhNDViZTU4M2E0NzQyZGQyNzIxZmZkMzc1ZDgzNjQzZjkzZjRkZjZhOTZmYmUxNTM0N2Q=--74f843d1de1a5a27b44bd0e5d9fdcbe6a966b78e"> + <meta name="pjax-timeout" content="1000"> + <link rel="sudo-modal" href="https://github.com/sessions/sudo_modal"> + + <meta name="msapplication-TileImage" content="/windows-tile.png"> + <meta name="msapplication-TileColor" content="#ffffff"> + <meta name="selected-link" value="repo_issues" data-pjax-transient=""> + <meta name="google-analytics" content="UA-3769691-2"> + + <meta content="collector.githubapp.com" name="octolytics-host"><meta content="collector-cdn.github.com" name="octolytics-script-host"><meta content="github" name="octolytics-app-id"><meta content="53D0FC9F:1418:B854A38:552EA860" name="octolytics-dimension-request_id"><meta content="198999" name="octolytics-actor-id"><meta content="mcepl" name="octolytics-actor-login"><meta content="26667c59118a81b548139a896fa111ae07b11934d67d7ed9d1350c5adbca76a4" name="octolytics-actor-hash"> + + <meta content="Rails, view, issues#show" name="analytics-event"> + <meta class="js-ga-set" name="dimension1" content="Logged In"> + <meta class="js-ga-set" name="dimension2" content="Header v3"> + <meta name="is-dotcom" content="true"> + <meta name="hostname" content="github.com"> + <meta name="user-login" content="mcepl"> + + + <link rel="icon" type="image/x-icon" href="index_files/favicon_ico"> + + + <meta content="authenticity_token" name="csrf-param"> +<meta content="WOXrMcwvb9Av4DCbDePAWkRXUtXzhjBH8kZJgIeuKbFUl83fPHx1T5mii1DG2QBSIG9743xRk/YaE6LPspuXQg==" name="csrf-token"> + + <style media="all" rel="stylesheet">/* Effective stylesheet produced by snapshot save */
+html { font-family: sans-serif; }
+body { margin: 0px; }
+article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; }
+audio:not([controls]) { display: none; height: 0px; }
+a { background: transparent none repeat scroll 0% 0%; }
+a:active, a:hover { outline: 0px none; }
+b, strong { font-weight: bold; }
+h1 { font-size: 2em; margin: 0.67em 0px; }
+img { border: 0px none; }
+svg:not(:root) { overflow: hidden; }
+pre { overflow: auto; }
+code, kbd, pre, samp { font-family: monospace,monospace; font-size: 1em; }
+button, input, optgroup, select, textarea { color: inherit; font: inherit; margin: 0px; }
+button { overflow: visible; }
+button, select { text-transform: none; }
+button, html input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; }
+button::-moz-focus-inner, input::-moz-focus-inner { border: 0px none; padding: 0px; }
+input { line-height: normal; }
+input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0px; }
+textarea { overflow: auto; }
+* { box-sizing: border-box; }
+input, select, textarea, button { font: 13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"; }
+body { font: 13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255); }
+a { color: rgb(65, 131, 196); text-decoration: none; }
+a:hover, a:active { text-decoration: underline; }
+hr::before, .rule::before { display: table; content: ""; }
+hr::after, .rule::after { display: table; clear: both; content: ""; }
+h1, h2, h3, h4, h5, h6 { margin-top: 15px; margin-bottom: 15px; line-height: 1.1; }
+h1 { font-size: 30px; }
+h2 { font-size: 21px; }
+h3 { font-size: 16px; }
+.text-muted { color: rgb(153, 153, 153); }
+.text-emphasized { font-weight: bold; color: rgb(51, 51, 51); }
+ul, ol { padding: 0px; margin-top: 0px; margin-bottom: 0px; }
+tt, code { font-family: Consolas,"Liberation Mono",Menlo,Courier,monospace; font-size: 12px; }
+pre { margin-top: 0px; margin-bottom: 0px; font: 12px Consolas,"Liberation Mono",Menlo,Courier,monospace; }
+.container { width: 980px; margin-right: auto; margin-left: auto; }
+.container::before { display: table; content: ""; }
+.container::after { display: table; clear: both; content: ""; }
+.columns::before { display: table; content: ""; }
+.columns::after { display: table; clear: both; content: ""; }
+.form-control, input[type="text"], input[type="password"], input[type="email"], input[type="number"], input[type="tel"], input[type="url"], textarea { min-height: 34px; padding: 7px 8px; font-size: 13px; color: rgb(51, 51, 51); vertical-align: middle; background-color: rgb(255, 255, 255); background-repeat: no-repeat; background-position: right center; border: 1px solid rgb(204, 204, 204); border-radius: 3px; outline: medium none; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.075) inset; }
+.form-control.focus, .form-control:focus, input.focus[type="text"], input[type="text"]:focus, .focused .drag-and-drop, input.focus[type="password"], input[type="password"]:focus, input.focus[type="email"], input[type="email"]:focus, input.focus[type="number"], input[type="number"]:focus, input.focus[type="tel"], input[type="tel"]:focus, input.focus[type="url"], input[type="url"]:focus, textarea.focus, textarea:focus { border-color: rgb(81, 167, 232); box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.075) inset, 0px 0px 5px rgba(81, 167, 232, 0.5); }
+input.input-contrast, .input-contrast { background-color: rgb(250, 250, 250); }
+input.input-contrast:focus, .input-contrast:focus { background-color: rgb(255, 255, 255); }
+input.input-mini { min-height: 26px; padding-top: 4px; padding-bottom: 4px; font-size: 12px; }
+.input-monospace { font-family: Consolas,"Liberation Mono",Menlo,Courier,monospace; }
+dl.form.required > dt > label::after { padding-left: 5px; color: rgb(159, 16, 6); content: "*"; }
+.hfields::before { display: table; content: ""; }
+.hfields::after { display: table; clear: both; content: ""; }
+.drag-and-drop { padding: 7px 10px; margin: 0px; font-size: 13px; line-height: 16px; color: rgb(170, 170, 170); background-color: rgb(250, 250, 250); border-width: 0px 1px 1px; border-style: none solid solid; border-color: -moz-use-text-color rgb(204, 204, 204) rgb(204, 204, 204); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; }
+.drag-and-drop .default, .drag-and-drop .loading, .drag-and-drop .error { display: none; }
+.drag-and-drop .error { color: rgb(189, 44, 0); }
+.drag-and-drop img { vertical-align: top; }
+.is-default .drag-and-drop .default { display: inline-block; }
+.drag-and-drop-error-info { font-weight: normal; color: rgb(170, 170, 170); }
+.drag-and-drop-error-info a { color: rgb(65, 131, 196); }
+.manual-file-chooser { position: absolute; width: 240px; padding: 5px; margin-left: -80px; cursor: pointer; opacity: 0.0001; }
+.manual-file-chooser:hover + .manual-file-chooser-text { text-decoration: underline; }
+.upload-enabled textarea { display: block; border-bottom: 1px dashed rgb(221, 221, 221); border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; }
+.previewable-comment-form { position: relative; }
+.previewable-comment-form .tabnav { position: relative; padding: 10px 10px 0px; }
+.previewable-comment-form .comment { border: 1px solid rgb(202, 202, 202); }
+.previewable-comment-form .comment-form-error { margin-bottom: 10px; }
+.previewable-comment-form .write-content, .previewable-comment-form .preview-content { display: none; padding: 0px 10px 10px; }
+.previewable-comment-form.write-selected .write-content, .previewable-comment-form.preview-selected .preview-content { display: block; }
+.previewable-comment-form textarea { display: block; width: 100%; min-height: 100px; max-height: 500px; padding: 10px; resize: vertical; }
+.input-group { display: table; }
+.input-group input { position: relative; width: 100%; }
+.input-group input:focus { z-index: 2; }
+.input-group input, .input-group-button { display: table-cell; }
+.input-group-button { width: 1%; vertical-align: middle; }
+.input-group input:first-child, .input-group-button:first-child .btn { border-top-right-radius: 0px; border-bottom-right-radius: 0px; }
+.input-group input:last-child, .input-group-button:last-child .btn { border-top-left-radius: 0px; border-bottom-left-radius: 0px; }
+.form-actions::before { display: table; content: ""; }
+.form-actions::after { display: table; clear: both; content: ""; }
+.form-actions .btn { float: right; }
+.status-indicator-success::before { color: rgb(108, 198, 68); content: ""; }
+.status-indicator-failed::before { color: rgb(189, 44, 0); content: ""; }
+.flash, .flash-global { position: relative; font-size: 14px; line-height: 1.6; color: rgb(34, 68, 102); background-color: rgb(226, 238, 249); border: 1px solid rgb(186, 198, 211); }
+.flash.flash-error, .flash-global.flash-error { color: rgb(153, 17, 17); background-color: rgb(252, 222, 222); border-color: rgb(210, 178, 178); }
+.flash .flash-close, .flash-global .flash-close { float: right; padding: 17px; margin-top: -15px; margin-right: -15px; margin-left: 20px; color: inherit; text-decoration: none; cursor: pointer; opacity: 0.6; }
+.flash .flash-close:hover, .flash-global .flash-close:hover { opacity: 1; }
+.flash a, .flash-global a { font-weight: bold; }
+.flash { padding: 15px; border-radius: 3px; }
+.avatar { display: inline-block; overflow: hidden; line-height: 1; vertical-align: middle; border-radius: 3px; }
+.btn { position: relative; display: inline-block; padding: 6px 12px; font-size: 13px; font-weight: bold; line-height: 20px; color: rgb(51, 51, 51); white-space: nowrap; vertical-align: middle; cursor: pointer; background-color: rgb(238, 238, 238); background-image: linear-gradient(rgb(252, 252, 252), rgb(238, 238, 238)); border: 1px solid rgb(213, 213, 213); border-radius: 3px; -moz-user-select: none; }
+.btn .octicon { vertical-align: text-top; }
+.btn:focus { text-decoration: none; border-color: rgb(81, 167, 232); outline: medium none; box-shadow: 0px 0px 5px rgba(81, 167, 232, 0.5); }
+.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { text-decoration: none; background-color: rgb(221, 221, 221); background-image: linear-gradient(rgb(238, 238, 238), rgb(221, 221, 221)); border-color: rgb(204, 204, 204); }
+.btn:active, .btn.selected, .btn.selected:hover, .btn.zeroclipboard-is-active { background-color: rgb(220, 220, 220); background-image: none; border-color: rgb(181, 181, 181); box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15) inset; }
+.btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { color: rgba(102, 102, 102, 0.5); cursor: default; background-color: rgba(229, 229, 229, 0.5); background-image: none; border-color: rgba(197, 197, 197, 0.5); box-shadow: none; }
+.btn-primary { color: rgb(255, 255, 255); text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.15); background-color: rgb(96, 176, 68); background-image: linear-gradient(rgb(138, 221, 109), rgb(96, 176, 68)); border-color: rgb(92, 169, 65); }
+.btn-primary:hover { color: rgb(255, 255, 255); background-color: rgb(86, 158, 61); background-image: linear-gradient(rgb(121, 216, 88), rgb(86, 158, 61)); border-color: rgb(74, 153, 62); }
+.btn-primary:active, .btn-primary.selected { text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.15); background-color: rgb(86, 158, 61); background-image: none; border-color: rgb(65, 135, 55); }
+.btn-primary:disabled, .btn-primary:disabled:hover, .btn-primary.disabled, .btn-primary.disabled:hover { color: rgb(254, 254, 254); background-color: rgb(173, 211, 159); background-image: linear-gradient(rgb(195, 236, 180), rgb(173, 211, 159)); border-color: rgb(185, 220, 172) rgb(185, 220, 172) rgb(167, 200, 155); }
+.btn-with-count { float: left; border-top-right-radius: 0px; border-bottom-right-radius: 0px; }
+.btn-sm { padding: 2px 10px; }
+.social-count { float: left; padding: 2px 7px; font-size: 11px; font-weight: bold; line-height: 20px; color: rgb(51, 51, 51); vertical-align: middle; background-color: rgb(255, 255, 255); border-width: 1px 1px 1px 0px; border-style: solid solid solid none; border-color: rgb(221, 221, 221) rgb(221, 221, 221) rgb(221, 221, 221) -moz-use-text-color; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-top-right-radius: 3px; border-bottom-right-radius: 3px; }
+.social-count:hover, .social-count:active { text-decoration: none; }
+.social-count:hover { color: rgb(65, 131, 196); cursor: pointer; }
+.btn-group::before { display: table; content: ""; }
+.btn-group::after { display: table; clear: both; content: ""; }
+.btn-group .btn:not(:first-child):not(:last-child) { border-radius: 0px; }
+.menu-item:first-child::before { border-top-left-radius: 2px; }
+.menu-item:last-child::before { border-bottom-left-radius: 2px; }
+.menu-item.selected::before { position: absolute; top: 0px; left: 0px; bottom: 0px; width: 2px; content: ""; background-color: rgb(210, 105, 17); }
+.tabnav { margin-top: 0px; margin-bottom: 15px; border-bottom: 1px solid rgb(221, 221, 221); }
+.tabnav-tabs { margin-bottom: -1px; }
+.tabnav-tab { display: inline-block; padding: 8px 12px; font-size: 14px; line-height: 20px; color: rgb(102, 102, 102); text-decoration: none; border-width: 1px 1px 0px; border-style: solid solid none; border-color: transparent transparent -moz-use-text-color; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.tabnav-tab.selected { color: rgb(51, 51, 51); background-color: rgb(255, 255, 255); border-color: rgb(221, 221, 221); border-radius: 3px 3px 0px 0px; }
+.tabnav-tab:hover { text-decoration: none; }
+.tabnav-extra { display: inline-block; padding-top: 10px; margin-left: 10px; font-size: 12px; color: rgb(102, 102, 102); }
+.tabnav-extra > .octicon { margin-right: 2px; }
+a.tabnav-extra:hover { color: rgb(65, 131, 196); text-decoration: none; }
+.state { display: inline-block; padding: 4px 8px; font-weight: bold; line-height: 20px; color: rgb(255, 255, 255); text-align: center; border-radius: 3px; background-color: rgb(153, 153, 153); }
+.state-open, .state-proposed, .state-reopened { background-color: rgb(108, 198, 68); }
+.tooltipped { position: relative; }
+.tooltipped::after { position: absolute; z-index: 1000000; display: none; padding: 5px 8px; font: 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"; color: rgb(255, 255, 255); text-align: center; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-wrap: break-word; white-space: pre; pointer-events: none; content: attr(aria-label); background: rgba(0, 0, 0, 0.8) none repeat scroll 0% 0%; border-radius: 3px; }
+.tooltipped::before { position: absolute; z-index: 1000001; display: none; width: 0px; height: 0px; color: rgba(0, 0, 0, 0.8); pointer-events: none; content: ""; border: 5px solid transparent; }
+.tooltipped:hover::before, .tooltipped:hover::after, .tooltipped:active::before, .tooltipped:active::after, .tooltipped:focus::before, .tooltipped:focus::after { display: inline-block; text-decoration: none; }
+.tooltipped-multiline:hover::after, .tooltipped-multiline:active::after, .tooltipped-multiline:focus::after { display: table-cell; }
+.tooltipped-s::after, .tooltipped-se::after, .tooltipped-sw::after { top: 100%; right: 50%; margin-top: 5px; }
+.tooltipped-s::before, .tooltipped-se::before, .tooltipped-sw::before { top: auto; right: 50%; bottom: -5px; margin-right: -5px; border-bottom-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-se::after { right: auto; left: 50%; margin-left: -15px; }
+.tooltipped-sw::after { margin-right: -15px; }
+.tooltipped-n::after, .tooltipped-ne::after, .tooltipped-nw::after { right: 50%; bottom: 100%; margin-bottom: 5px; }
+.tooltipped-n::before, .tooltipped-ne::before, .tooltipped-nw::before { top: -5px; right: 50%; bottom: auto; margin-right: -5px; border-top-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-ne::after { right: auto; left: 50%; margin-left: -15px; }
+.tooltipped-nw::after { margin-right: -15px; }
+.tooltipped-s::after, .tooltipped-n::after { transform: translateX(50%); }
+.tooltipped-w::after { right: 100%; bottom: 50%; margin-right: 5px; transform: translateY(50%); }
+.tooltipped-w::before { top: 50%; bottom: 50%; left: -5px; margin-top: -5px; border-left-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-e::after { bottom: 50%; left: 100%; margin-left: 5px; transform: translateY(50%); }
+.tooltipped-e::before { top: 50%; right: -5px; bottom: 50%; margin-top: -5px; border-right-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-multiline::after { width: -moz-max-content; max-width: 250px; word-wrap: normal; white-space: pre-line; border-collapse: separate; }
+.tooltipped-multiline.tooltipped-s::after, .tooltipped-multiline.tooltipped-n::after { right: auto; left: 50%; transform: translateX(-50%); }
+.tooltipped-multiline.tooltipped-w::after, .tooltipped-multiline.tooltipped-e::after { right: 100%; }
+@media not all {
+ .tooltipped-multiline::after { width: 250px; }
+}
+.tooltipped-sticky::before, .tooltipped-sticky::after { display: inline-block; }
+.tooltipped-sticky.tooltipped-multiline::after { display: table-cell; }
+.fullscreen-overlay-enabled.dark-theme .tooltipped::after { color: rgb(0, 0, 0); background: rgba(255, 255, 255, 0.8) none repeat scroll 0% 0%; }
+.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s::before, .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se::before, .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw::before { border-bottom-color: rgba(255, 255, 255, 0.8); }
+.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n::before, .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne::before, .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw::before { border-top-color: rgba(255, 255, 255, 0.8); }
+.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e::before { border-right-color: rgba(255, 255, 255, 0.8); }
+.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w::before { border-left-color: rgba(255, 255, 255, 0.8); }
+.flex-table { display: table; }
+.flex-table-item { display: table-cell; width: 1%; white-space: nowrap; vertical-align: middle; }
+.flex-table-item-primary { width: 99%; }
+.css-truncate.css-truncate-target, .css-truncate .css-truncate-target { display: inline-block; max-width: 125px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: top; }
+.sunken-menu { position: relative; padding-top: 15px; padding-bottom: 15px; background-image: linear-gradient(to right, rgb(246, 246, 246) 0%, rgb(255, 255, 255) 8px); box-shadow: 1px 0px 0px rgb(238, 238, 238) inset; }
+.sunken-menu::before, .sunken-menu::after { position: absolute; left: 0px; width: 100%; height: 15px; content: ""; background-color: transparent; }
+.sunken-menu::before { top: 0px; background-color: transparent; background-image: linear-gradient(rgb(255, 255, 255), rgba(255, 255, 255, 0)); }
+.sunken-menu::after { bottom: 0px; background-color: transparent; background-image: linear-gradient(rgba(255, 255, 255, 0), rgb(255, 255, 255)); }
+.sunken-menu-separator { position: relative; height: 5px; margin: 8px 0px 6px 1px; background-image: radial-gradient(farthest-side at left top , rgb(244, 244, 244), rgba(244, 244, 244, 0)); }
+.sunken-menu-separator::before { position: absolute; top: 0px; width: 100%; height: 1px; content: ""; background-image: linear-gradient(to right, rgb(238, 238, 238) 70%, rgb(255, 255, 255) 100%); }
+.sunken-menu-group { list-style-type: none; }
+.sunken-menu-item { display: block; padding: 8px 10px; margin-top: 5px; margin-bottom: 5px; border: 1px solid transparent; outline: 0px none; }
+.sunken-menu-item .octicon { left: -1px; width: 16px; color: rgb(153, 153, 153); text-align: center; }
+.sunken-menu-item .mini-loader { position: absolute; top: 9px; left: 11px; display: none; }
+.sunken-menu-item:focus, .sunken-menu-item:hover { text-decoration: none; box-shadow: 2px 0px 0px rgb(204, 204, 204) inset; }
+.sunken-menu-item:focus .octicon, .sunken-menu-item:hover .octicon { color: rgb(51, 51, 51); }
+.sunken-menu-item.selected { font-weight: bold; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255); border-color: rgb(238, 238, 238) rgb(238, 238, 238) rgb(238, 238, 238) transparent; border-radius: 0px 3px 3px 0px; box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.05); }
+.sunken-menu-item.selected::after { position: absolute; top: 0px; right: 0px; bottom: 0px; width: 3px; content: ""; background-color: rgb(210, 105, 17); border-radius: 0px 3px 3px 0px; }
+.sunken-menu-item.selected .octicon { color: rgb(51, 51, 51); }
+@keyframes mini-nav-loader {
+ 0%, 90% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+@font-face { + font-family: "octicons"; + font-style: normal; + font-weight: normal; + src: url("urn:not-loaded:https://assets-cdn.github.com/assets/octicons/octicons/octicons-d5329fb2f700a56fe0b9ae5c301fabbdf5d77c1293b1fa1d35de9357530e2326.eot?#iefix") format("embedded-opentype"), url(data:application/octet-stream;base64,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) format("woff"), url("urn:not-loaded:https://assets-cdn.github.com/assets/octicons/octicons/octicons-39c6d7739e9153806ef211d2a0f75044891634c4f67425e6250b0d8c6283c2c7.ttf") format("truetype"), url("urn:not-loaded:https://assets-cdn.github.com/assets/octicons/octicons/octicons-c11b1be24a2862c1dc8880c22867d8d01315c9d7da5167c42119eb1bcce2e33c.svg#octicons") format("svg"); +}
+.octicon, .mega-octicon { font: 16px/1 octicons; display: inline-block; text-decoration: none; text-rendering: auto; -moz-user-select: none; }
+.mega-octicon { font-size: 32px; }
+.octicon-alert::before { content: ""; }
+.octicon-alignment-align::before { content: ""; }
+.octicon-alignment-aligned-to::before { content: ""; }
+.octicon-alignment-unalign::before { content: ""; }
+.octicon-arrow-down::before { content: ""; }
+.octicon-arrow-left::before { content: ""; }
+.octicon-arrow-right::before { content: ""; }
+.octicon-arrow-small-down::before { content: ""; }
+.octicon-arrow-small-left::before { content: ""; }
+.octicon-arrow-small-right::before { content: ""; }
+.octicon-arrow-small-up::before { content: ""; }
+.octicon-arrow-up::before { content: ""; }
+.octicon-beer::before { content: ""; }
+.octicon-book::before { content: ""; }
+.octicon-bookmark::before { content: ""; }
+.octicon-briefcase::before { content: ""; }
+.octicon-broadcast::before { content: ""; }
+.octicon-browser::before { content: ""; }
+.octicon-bug::before { content: ""; }
+.octicon-calendar::before { content: ""; }
+.octicon-check::before { content: ""; }
+.octicon-checklist::before { content: ""; }
+.octicon-chevron-down::before { content: ""; }
+.octicon-chevron-left::before { content: ""; }
+.octicon-chevron-right::before { content: ""; }
+.octicon-chevron-up::before { content: ""; }
+.octicon-circle-slash::before { content: ""; }
+.octicon-circuit-board::before { content: ""; }
+.octicon-clippy::before { content: ""; }
+.octicon-clock::before { content: ""; }
+.octicon-cloud-download::before { content: ""; }
+.octicon-cloud-upload::before { content: ""; }
+.octicon-code::before { content: ""; }
+.octicon-color-mode::before { content: ""; }
+.octicon-comment-add::before, .octicon-comment::before { content: ""; }
+.octicon-comment-discussion::before { content: ""; }
+.octicon-credit-card::before { content: ""; }
+.octicon-dash::before { content: ""; }
+.octicon-dashboard::before { content: ""; }
+.octicon-database::before { content: ""; }
+.octicon-device-camera::before { content: ""; }
+.octicon-device-camera-video::before { content: ""; }
+.octicon-device-desktop::before { content: ""; }
+.octicon-device-mobile::before { content: ""; }
+.octicon-diff::before { content: ""; }
+.octicon-diff-added::before { content: ""; }
+.octicon-diff-ignored::before { content: ""; }
+.octicon-diff-modified::before { content: ""; }
+.octicon-diff-removed::before { content: ""; }
+.octicon-diff-renamed::before { content: ""; }
+.octicon-ellipsis::before { content: ""; }
+.octicon-eye-unwatch::before, .octicon-eye-watch::before, .octicon-eye::before { content: ""; }
+.octicon-file-binary::before { content: ""; }
+.octicon-file-code::before { content: ""; }
+.octicon-file-directory::before { content: ""; }
+.octicon-file-media::before { content: ""; }
+.octicon-file-pdf::before { content: ""; }
+.octicon-file-submodule::before { content: ""; }
+.octicon-file-symlink-directory::before { content: ""; }
+.octicon-file-symlink-file::before { content: ""; }
+.octicon-file-text::before { content: ""; }
+.octicon-file-zip::before { content: ""; }
+.octicon-flame::before { content: ""; }
+.octicon-fold::before { content: ""; }
+.octicon-gear::before { content: ""; }
+.octicon-gift::before { content: ""; }
+.octicon-gist::before { content: ""; }
+.octicon-gist-secret::before { content: ""; }
+.octicon-git-branch-create::before, .octicon-git-branch-delete::before, .octicon-git-branch::before { content: ""; }
+.octicon-git-commit::before { content: ""; }
+.octicon-git-compare::before { content: ""; }
+.octicon-git-merge::before { content: ""; }
+.octicon-git-pull-request-abandoned::before, .octicon-git-pull-request::before { content: ""; }
+.octicon-globe::before { content: ""; }
+.octicon-graph::before { content: ""; }
+.octicon-heart::before { content: "♥"; }
+.octicon-history::before { content: ""; }
+.octicon-home::before { content: ""; }
+.octicon-horizontal-rule::before { content: ""; }
+.octicon-hourglass::before { content: ""; }
+.octicon-hubot::before { content: ""; }
+.octicon-inbox::before { content: ""; }
+.octicon-info::before { content: ""; }
+.octicon-issue-closed::before { content: ""; }
+.octicon-issue-opened::before { content: ""; }
+.octicon-issue-reopened::before { content: ""; }
+.octicon-jersey::before { content: ""; }
+.octicon-jump-down::before { content: ""; }
+.octicon-jump-left::before { content: ""; }
+.octicon-jump-right::before { content: ""; }
+.octicon-jump-up::before { content: ""; }
+.octicon-key::before { content: ""; }
+.octicon-keyboard::before { content: ""; }
+.octicon-law::before { content: ""; }
+.octicon-light-bulb::before { content: ""; }
+.octicon-link::before { content: ""; }
+.octicon-link-external::before { content: ""; }
+.octicon-list-ordered::before { content: ""; }
+.octicon-list-unordered::before { content: ""; }
+.octicon-location::before { content: ""; }
+.octicon-gist-private::before, .octicon-mirror-private::before, .octicon-git-fork-private::before, .octicon-lock::before { content: ""; }
+.octicon-logo-github::before { content: ""; }
+.octicon-mail::before { content: ""; }
+.octicon-mail-read::before { content: ""; }
+.octicon-mail-reply::before { content: ""; }
+.octicon-mark-github::before { content: ""; }
+.octicon-markdown::before { content: ""; }
+.octicon-megaphone::before { content: ""; }
+.octicon-mention::before { content: ""; }
+.octicon-microscope::before { content: ""; }
+.octicon-milestone::before { content: ""; }
+.octicon-mirror-public::before, .octicon-mirror::before { content: ""; }
+.octicon-mortar-board::before { content: ""; }
+.octicon-move-down::before { content: ""; }
+.octicon-move-left::before { content: ""; }
+.octicon-move-right::before { content: ""; }
+.octicon-move-up::before { content: ""; }
+.octicon-mute::before { content: ""; }
+.octicon-no-newline::before { content: ""; }
+.octicon-octoface::before { content: ""; }
+.octicon-organization::before { content: ""; }
+.octicon-package::before { content: ""; }
+.octicon-paintcan::before { content: ""; }
+.octicon-pencil::before { content: ""; }
+.octicon-person-add::before, .octicon-person-follow::before, .octicon-person::before { content: ""; }
+.octicon-pin::before { content: ""; }
+.octicon-playback-fast-forward::before { content: ""; }
+.octicon-playback-pause::before { content: ""; }
+.octicon-playback-play::before { content: ""; }
+.octicon-playback-rewind::before { content: ""; }
+.octicon-plug::before { content: ""; }
+.octicon-repo-create::before, .octicon-gist-new::before, .octicon-file-directory-create::before, .octicon-file-add::before, .octicon-plus::before { content: ""; }
+.octicon-podium::before { content: ""; }
+.octicon-primitive-dot::before { content: ""; }
+.octicon-primitive-square::before { content: ""; }
+.octicon-pulse::before { content: ""; }
+.octicon-puzzle::before { content: ""; }
+.octicon-question::before { content: ""; }
+.octicon-quote::before { content: ""; }
+.octicon-radio-tower::before { content: ""; }
+.octicon-repo-delete::before, .octicon-repo::before { content: ""; }
+.octicon-repo-clone::before { content: ""; }
+.octicon-repo-force-push::before { content: ""; }
+.octicon-gist-fork::before, .octicon-repo-forked::before { content: ""; }
+.octicon-repo-pull::before { content: ""; }
+.octicon-repo-push::before { content: ""; }
+.octicon-rocket::before { content: ""; }
+.octicon-rss::before { content: ""; }
+.octicon-ruby::before { content: ""; }
+.octicon-screen-full::before { content: ""; }
+.octicon-screen-normal::before { content: ""; }
+.octicon-search-save::before, .octicon-search::before { content: ""; }
+.octicon-server::before { content: ""; }
+.octicon-settings::before { content: ""; }
+.octicon-log-in::before, .octicon-sign-in::before { content: ""; }
+.octicon-log-out::before, .octicon-sign-out::before { content: ""; }
+.octicon-split::before { content: ""; }
+.octicon-squirrel::before { content: ""; }
+.octicon-star-add::before, .octicon-star-delete::before, .octicon-star::before { content: ""; }
+.octicon-steps::before { content: ""; }
+.octicon-stop::before { content: ""; }
+.octicon-repo-sync::before, .octicon-sync::before { content: ""; }
+.octicon-tag-remove::before, .octicon-tag-add::before, .octicon-tag::before { content: ""; }
+.octicon-telescope::before { content: ""; }
+.octicon-terminal::before { content: ""; }
+.octicon-three-bars::before { content: ""; }
+.octicon-thumbsdown::before { content: ""; }
+.octicon-thumbsup::before { content: ""; }
+.octicon-tools::before { content: ""; }
+.octicon-trashcan::before { content: ""; }
+.octicon-triangle-down::before { content: ""; }
+.octicon-triangle-left::before { content: ""; }
+.octicon-triangle-right::before { content: ""; }
+.octicon-triangle-up::before { content: ""; }
+.octicon-unfold::before { content: ""; }
+.octicon-unmute::before { content: ""; }
+.octicon-versions::before { content: ""; }
+.octicon-remove-close::before, .octicon-x::before { content: ""; }
+.octicon-zap::before { content: "⚡"; }
+h2.ghead::after { content: "."; height: 0px; display: block; visibility: hidden; clear: both; }
+.svg-tip::after { box-sizing: border-box; position: absolute; left: 50%; height: 5px; width: 5px; bottom: -10px; margin: 0px 0px 0px -5px; content: " "; border-width: 5px; border-style: solid; border-color: rgba(0, 0, 0, 0.8) transparent transparent; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.uniques-graph .x.axis .tick:nth-child(14) line { stroke: rgb(29, 127, 179); stroke-width: 2px; }
+table.capped-list tr:nth-child(2n) { background-color: rgb(252, 252, 252); }
+.traffic-graph-stats .summary-stats::before { display: table; content: ""; }
+.traffic-graph-stats .summary-stats::after { display: table; clear: both; content: ""; }
+.markdown-body { overflow: hidden; font-family: "Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif; font-size: 16px; line-height: 1.6; word-wrap: break-word; }
+.markdown-body > :first-child { margin-top: 0px ! important; }
+.markdown-body > :last-child { margin-bottom: 0px ! important; }
+.markdown-body a:not([href]) { color: inherit; text-decoration: none; }
+.markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre { margin-top: 0px; margin-bottom: 16px; }
+.markdown-body blockquote > :first-child { margin-top: 0px; }
+.markdown-body blockquote > :last-child { margin-bottom: 0px; }
+.markdown-body table tr:nth-child(2n) { background-color: rgb(248, 248, 248); }
+.markdown-body code, .markdown-body tt { padding: 0.2em 0px; margin: 0px; font-size: 85%; background-color: rgba(0, 0, 0, 0.04); border-radius: 3px; }
+.markdown-body code::before, .markdown-body code::after, .markdown-body tt::before, .markdown-body tt::after { letter-spacing: -0.2em; content: " "; }
+.markdown-body pre > code { padding: 0px; margin: 0px; font-size: 100%; word-break: normal; white-space: pre; background: transparent none repeat scroll 0% 0%; border: 0px none; }
+.markdown-body .highlight { margin-bottom: 16px; }
+.markdown-body .highlight pre, .markdown-body pre { padding: 16px; overflow: auto; font-size: 85%; line-height: 1.45; background-color: rgb(247, 247, 247); border-radius: 3px; }
+.markdown-body .highlight pre { margin-bottom: 0px; word-break: normal; }
+.markdown-body pre { word-wrap: normal; }
+.markdown-body pre code, .markdown-body pre tt { display: inline; max-width: initial; padding: 0px; margin: 0px; overflow: initial; line-height: inherit; word-wrap: normal; background-color: transparent; border: 0px none; }
+.markdown-body pre code::before, .markdown-body pre code::after, .markdown-body pre tt::before, .markdown-body pre tt::after { content: normal; }
+.pl-c { color: rgb(150, 152, 150); }
+.pl-c1, .pl-s .pl-v { color: rgb(0, 134, 179); }
+.pl-e, .pl-en { color: rgb(121, 93, 163); }
+.pl-k { color: rgb(167, 29, 93); }
+.pl-pds, .pl-s, .pl-s .pl-pse .pl-s1, .pl-sr, .pl-sr .pl-cce, .pl-sr .pl-sra, .pl-sr .pl-sre { color: rgb(24, 54, 145); }
+body { word-wrap: break-word; }
+.labels { position: relative; }
+.facebox { position: absolute; top: 0px; left: 0px; z-index: 100; padding-bottom: 40px; }
+.facebox-popup { position: relative; background-color: rgb(255, 255, 255); border: 1px solid rgba(0, 0, 0, 0.25); border-radius: 5px; box-shadow: 0px 0px 18px rgba(0, 0, 0, 0.4); background-clip: padding-box; }
+.facebox-content { width: 455px; padding: 15px; }
+.facebox-content::before { display: table; content: ""; }
+.facebox-content::after { display: table; clear: both; content: ""; }
+.facebox-close { position: absolute; top: 8px; right: 5px; padding: 10px; background-color: transparent; border: 0px none; opacity: 0.25; cursor: pointer; }
+.facebox-close:hover { opacity: 1; }
+.facebox-header { margin: -15px -15px 15px; padding: 15px; border-bottom: 1px solid rgb(229, 229, 229); font-size: 18px; font-weight: normal; }
+.select-menu-button::after { display: inline-block; width: 0px; height: 0px; content: ""; vertical-align: -2px; border-width: 4px; border-style: solid; border-color: -moz-use-text-color transparent transparent; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.select-menu-button.primary::after { border-top-color: rgb(255, 255, 255); }
+.select-menu-loading-overlay::before { position: absolute; left: 50%; top: 50%; margin: -16px 0px 0px -16px; width: 32px; content: ""; font: 32px/1 "octicons"; display: inline-block; text-decoration: none; text-indent: 0px; }
+@keyframes pulse {
+ 0% { color: rgba(170, 170, 170, 0.1); }
+ 10% { color: rgb(170, 170, 170); }
+ 100% { color: rgba(170, 170, 170, 0.1); }
+}
+.select-menu-modal-holder { position: absolute; display: none; z-index: 21; }
+.select-menu-modal { position: relative; width: 300px; margin-top: 4px; margin-bottom: 20px; overflow: hidden; font-size: 12px; color: rgb(102, 102, 102); background-color: rgb(255, 255, 255); background-clip: padding-box; border: 1px solid rgba(200, 200, 200, 0.4); border-radius: 3px; box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15); }
+.select-menu-header { padding: 8px 10px; background: rgb(245, 245, 245) none repeat scroll 0% 0%; border-bottom: 1px solid rgba(200, 200, 200, 0.4); }
+.select-menu-header .select-menu-title { font-weight: bold; color: rgb(51, 51, 51); text-shadow: 0px 1px 0px rgb(255, 255, 255); }
+.select-menu-header .octicon { display: block; float: right; color: rgb(204, 204, 204); cursor: pointer; }
+.select-menu-header .octicon:hover { color: rgb(85, 85, 85); }
+.select-menu-list { max-height: 400px; overflow: auto; position: relative; }
+.select-menu-item { cursor: pointer; border-bottom: 1px solid rgb(238, 238, 238); display: table; table-layout: fixed; width: 100%; overflow: hidden; color: inherit; }
+.select-menu-item:hover { text-decoration: none; }
+.select-menu-item .octicon { vertical-align: middle; }
+.select-menu-item .octicon-check { visibility: hidden; }
+.select-menu-item input[type="radio"] { display: none; }
+.select-menu-item .select-menu-item-icon { display: table-cell; color: transparent; vertical-align: top; padding: 8px 0px 8px 8px; width: 24px; text-align: center; }
+.select-menu-item.select-menu-action, .select-menu-item.selected { color: rgb(51, 51, 51); }
+.select-menu-item.select-menu-action .description, .select-menu-item.selected .description { color: rgb(102, 102, 102); }
+.select-menu-item.select-menu-action .octicon-check, .select-menu-item.selected .octicon-check { visibility: visible; }
+.select-menu-item.select-menu-action > .octicon, .select-menu-item.selected > .octicon { color: rgb(51, 51, 51); }
+.select-menu-item .hidden-select-button-text { display: none; }
+.select-menu-item.last-visible, .select-menu-list:last-child .select-menu-item:last-child { border-bottom: 0px none; border-radius: 0px 0px 3px 3px; }
+.select-menu-item-text { display: table-cell; vertical-align: top; padding: 8px 0px 8px 8px; text-align: left; }
+.select-menu-item-text:first-child { margin-left: 5px; }
+.select-menu-item-text .description { color: rgb(153, 153, 153); font-size: 12px; max-width: 265px; display: block; margin-top: 3px; }
+.select-menu-item-heading { display: block; margin-top: 0px; margin-bottom: 0px; font-size: 14px; font-weight: bold; line-height: 1.1; }
+.modal-backdrop { display: none; -moz-user-select: none; }
+.dropdown { position: relative; }
+.dropdown-caret { display: inline-block; width: 0px; height: 0px; content: ""; vertical-align: -2px; border-width: 4px; border-style: solid; border-color: -moz-use-text-color transparent transparent; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.dropdown-menu { position: absolute; top: 100%; left: 50%; z-index: 100; width: 160px; margin-top: 2px; margin-left: -80px; padding-top: 5px; padding-bottom: 5px; list-style: outside none none; background-color: rgb(255, 255, 255); background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 4px; box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15); }
+.dropdown-menu::before { position: absolute; top: -16px; left: 72px; display: inline-block; content: ""; border-width: 8px; border-style: solid; border-color: transparent transparent rgba(0, 0, 0, 0.15); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.dropdown-menu::after { position: absolute; top: -14px; left: 73px; display: inline-block; content: ""; border-width: 7px; border-style: solid; border-color: transparent transparent rgb(255, 255, 255); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.dropdown-menu > li > a, .dropdown-menu > li .sign-out-button { display: block; padding: 4px 10px 4px 35px; color: rgb(51, 51, 51); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; background: transparent none repeat scroll 0% 0%; }
+.dropdown-menu > li > a > .octicon, .dropdown-menu > li .sign-out-button > .octicon { float: left; margin-top: 1px; margin-left: -25px; opacity: 0.5; }
+.dropdown-menu > li > a:hover, .dropdown-menu > li > a.zeroclipboard-is-hover, .dropdown-menu > li .sign-out-button:hover, .dropdown-menu > li .sign-out-button.zeroclipboard-is-hover { color: rgb(255, 255, 255); text-decoration: none; background-color: rgb(65, 131, 196); }
+.dropdown-menu > li > a:hover > .octicon, .dropdown-menu > li > a.zeroclipboard-is-hover > .octicon, .dropdown-menu > li .sign-out-button:hover > .octicon, .dropdown-menu > li .sign-out-button.zeroclipboard-is-hover > .octicon { color: inherit; opacity: 1; }
+.sign-out-button { width: 100%; text-align: left; }
+.sign-out-button > .octicon-sign-out { padding-left: 3px; }
+.dropdown-divider { height: 1px; margin: 8px 1px; background-color: rgb(229, 229, 229); }
+.dropdown-header { padding: 4px 15px; font-size: 12px; color: rgb(153, 153, 153); }
+.dropdown-menu-content { display: none; }
+.dropdown-menu-w::before { top: 10px; right: -16px; left: auto; border-color: transparent transparent transparent rgba(0, 0, 0, 0.15); }
+.dropdown-menu-w::after { top: 11px; right: -14px; left: auto; border-color: transparent transparent transparent rgb(255, 255, 255); }
+.dropdown-menu-e::before { top: 10px; left: -16px; border-color: transparent rgba(0, 0, 0, 0.15) transparent transparent; }
+.dropdown-menu-e::after { top: 11px; left: -14px; border-color: transparent rgb(255, 255, 255) transparent transparent; }
+.dropdown-menu-sw::before { left: auto; right: 9px; }
+.dropdown-menu-sw::after { left: auto; right: 10px; }
+include-fragment, poll-include-fragment { display: block; }
+.pagination::before { display: table; content: ""; }
+.pagination::after { display: table; clear: both; content: ""; }
+.header { padding-top: 10px; padding-bottom: 10px; min-width: 1000px; background-color: rgb(245, 245, 245); border-bottom: 1px solid rgb(229, 229, 229); }
+.header-logo-invertocat { float: left; margin-right: 10px; margin-left: -2px; color: rgb(51, 51, 51); white-space: nowrap; }
+.header-logo-invertocat .octicon-mark-github { float: left; width: 28px; height: 28px; font-size: 28px; }
+.header-logo-invertocat:hover { color: rgb(65, 131, 196); text-decoration: none; }
+.notification-indicator .mail-status { position: absolute; top: -2px; right: 2px; z-index: 2; display: none; width: 14px; height: 14px; color: rgb(255, 255, 255); text-align: center; background-color: rgb(65, 131, 196); background-image: linear-gradient(rgb(123, 169, 214), rgb(65, 131, 196)); background-repeat: repeat-x; background-clip: padding-box; border-radius: 50%; border: 2px solid rgb(243, 243, 243); }
+.notification-indicator:hover .mail-status { background-color: rgb(65, 131, 196); }
+.site-search { position: relative; float: left; }
+.site-search form { position: relative; float: left; width: 360px; margin-right: 10px; }
+.site-search input[type="text"] { position: relative; width: 100%; min-height: 28px; padding: 4px 20px 4px 8px; font-size: 12px; }
+.site-search .scope-badge { position: absolute; top: 3px; left: 3px; bottom: 3px; z-index: 10; display: none; padding: 3px 6px; font-size: 12px; color: rgb(119, 119, 119); background-color: rgb(238, 238, 238); border-radius: 2px; transition: all 0.1s ease-in-out 0s; }
+.site-search.repo-scope .scope-badge { display: block; }
+.site-search.repo-scope input[type="text"] { padding-left: 100px; }
+.site-search.repo-scope input[type="text"]:focus + .scope-badge, .site-search.repo-scope .focused .drag-and-drop + .scope-badge, .focused .site-search.repo-scope .drag-and-drop + .scope-badge { background-color: rgb(228, 238, 247); color: rgb(65, 131, 196); }
+.header-nav { list-style: outside none none; }
+.header-nav-item { float: left; }
+.header-nav-item.active .tooltipped::before, .header-nav-item.active .tooltipped::after { display: none; }
+.header-nav-item .dropdown-menu { margin-top: 13px; width: 180px; }
+.header-nav-link { display: block; padding: 4px 8px; font-size: 13px; font-weight: bold; line-height: 20px; color: rgb(51, 51, 51); }
+.header-nav-link:hover, .header-nav-link:focus { color: rgb(65, 131, 196); text-decoration: none; }
+.header-nav-link:hover .dropdown-caret, .header-nav-link:focus .dropdown-caret { border-top-color: rgb(65, 131, 196); }
+.user-nav { margin-right: -8px; }
+.user-nav .header-nav-link { height: 28px; }
+.user-nav .octicon { width: 18px; height: 18px; text-align: center; }
+.user-nav .octicon-inbox { font-size: 20px; }
+.user-nav .octicon-sign-out { padding-top: 2px; }
+.user-nav .octicon-plus { float: left; width: 16px; height: 18px; font-size: 18px; }
+.user-nav .avatar { float: left; margin-right: 5px; }
+.user-nav .name { float: left; white-space: nowrap; }
+.sign-out-button { background: transparent none repeat scroll 0% 0%; border: 0px none; }
+.accessibility-aid { height: 1px; width: 1px; clip: rect(1px, 1px, 1px, 1px); overflow: hidden; position: absolute; margin: 0px; }
+.accessibility-aid:focus { height: auto; width: auto; clip: auto; z-index: 1; top: 0px; line-height: 49px; padding: 0px 10px; background: rgb(245, 245, 245) none repeat scroll 0% 0%; font-weight: bold; text-decoration: none; color: rgb(51, 51, 51); }
+.site-footer { position: relative; margin-top: 40px; padding-top: 40px; padding-bottom: 40px; font-size: 12px; line-height: 1.5; color: rgb(119, 119, 119); border-top: 1px solid rgb(238, 238, 238); }
+.site-footer::before { display: table; content: ""; }
+.site-footer::after { display: table; clear: both; content: ""; }
+.site-footer .octicon-mark-github { position: absolute; top: 38px; left: 50%; height: 24px; width: 24px; margin-left: -12px; font-size: 24px; color: rgb(204, 204, 204); }
+.site-footer .octicon-mark-github:hover { color: rgb(187, 187, 187); }
+.site-footer-links { margin: 0px; list-style: outside none none; }
+.site-footer-links li { display: inline-block; line-height: 16px; }
+.site-footer-links li + li { margin-left: 10px; }
+.billing-plans .coupon.expiring .coupon-label::after { border-bottom-color: rgb(223, 110, 0); }
+.coupon-label::after { position: absolute; bottom: 100%; left: 15px; width: 0px; height: 0px; pointer-events: none; content: " "; border-style: solid; border-color: transparent transparent rgb(108, 198, 68); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-width: 5px; }
+.suggester-container { position: absolute; top: 58px; left: 10px; z-index: 30; }
+.timeline-new-comment .suggester-container { top: 52px; }
+.suggester { position: relative; top: 0px; left: 0px; display: none; min-width: 180px; margin-top: 20px; background: rgb(255, 255, 255) none repeat scroll 0% 0%; border: 1px solid rgb(221, 221, 221); border-radius: 3px; box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1); }
+.breadcrumb .separator::before, .breadcrumb .separator::after { content: " "; }
+.blob-interaction-bar::before { display: table; content: ""; }
+.blob-interaction-bar::after { display: table; clear: both; content: ""; }
+.file-commit-form .commit-form::after, .file-commit-form .commit-form::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.file-commit-form .commit-form::after { border-width: 7px; border-right-color: rgb(255, 255, 255); margin-top: 1px; margin-left: 2px; }
+.file-commit-form .commit-form::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.branch-action-body::after, .branch-action-body::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.branch-action-body::after { border-width: 7px; border-right-color: rgb(255, 255, 255); margin-top: 1px; margin-left: 2px; }
+.branch-action-body::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.branch-action-state-clean .branch-action-body::before { border-right-color: rgb(149, 201, 126); }
+.branch-action-state-unknown .branch-action-body::before, .branch-action-state-unstable .branch-action-body::before { border-right-color: rgb(226, 204, 122); }
+.branch-action-state-merged .branch-action-body::before { border-right-color: rgb(136, 110, 173); }
+.merge-branch-form .commit-form::before { border-right-color: rgb(149, 201, 126); }
+.merge-branch-form.error .commit-form::before { border-right-color: rgb(233, 122, 116); }
+.starring-container .unstarred, .starring-container.on .starred { display: block; }
+.starring-container.on .unstarred, .starring-container .starred { display: none; }
+.code-list .blob-num::before { content: normal; }
+.container-preview:not(.show-code) .commit-create, .container-preview:not(.show-code) .actions { display: none; }
+.comment-body { width: 100%; padding: 15px; overflow: visible; font-size: 14px; }
+.comment-body .highlight { overflow: visible ! important; background-color: transparent; }
+.comment-form-textarea { width: 100%; max-width: 100%; height: 100px; min-height: 100px; margin: 0px; font-size: 14px; line-height: 1.6; }
+.comment-form-error, .comment-form-stale { display: none; padding: 5px 10px; margin: 0px 10px; font-weight: bold; color: rgb(153, 0, 0); background-color: rgb(255, 234, 234); border: 1px solid rgb(226, 160, 160); }
+.commits-listing::before { position: absolute; top: 0px; bottom: 0px; left: 14px; z-index: -1; display: block; width: 2px; content: ""; background-color: rgb(243, 243, 243); }
+.full-commit .branches-list li::before { padding-right: 6px; font-weight: normal; content: "+"; }
+.full-commit .branches-list li:first-child::before { padding-right: 0px; content: ""; }
+.full-commit .branches-list li.pull-request::before { margin-left: -8px; content: ""; }
+.file-history-tease .participation::before { display: table; content: ""; }
+.file-history-tease .participation::after { display: table; clear: both; content: ""; }
+.commit-build-statuses.active .tooltipped::before, .commit-build-statuses.active .tooltipped::after { display: none; }
+.existing-pull .list-group-item::before { display: table; content: ""; }
+.existing-pull .list-group-item::after { display: table; clear: both; content: ""; }
+.context-loader-container .context-loader { display: none; }
+.page-context-loader { margin-left: 10px; display: none; }
+@keyframes broadCastMaskFade {
+ 0% { opacity: 0; }
+ 30% { opacity: 1; }
+ 70% { opacity: 1; }
+ 100% { opacity: 0; }
+}
+.news .alert .mega-octicon::before { color: inherit; }
+@keyframes slideUp {
+ 0% { transform: translate3d(0px, 500px, 0px); }
+ 100% { transform: translate3d(0px, 0px, 0px); }
+}
+.discussion-timeline { position: relative; width: 760px; float: left; }
+.discussion-timeline::before { display: block; content: ""; position: absolute; top: 0px; bottom: 0px; left: 79px; width: 2px; background-color: rgb(243, 243, 243); z-index: -1; }
+.discussion-sidebar { position: sticky; top: 0px; z-index: 21; float: right; width: 140px; }
+.discussion-sidebar-item { padding-top: 15px; font-size: 12px; color: rgb(153, 153, 153); }
+.discussion-sidebar-item .btn .octicon { margin-right: 0px; }
+.discussion-sidebar-item + .discussion-sidebar-item { margin-top: 15px; border-top: 1px solid rgb(238, 238, 238); }
+.discussion-sidebar-heading { margin-top: 0px; margin-bottom: 10px; font-size: 12px; line-height: 16px; color: rgb(119, 119, 119); }
+.sidebar-notifications { position: relative; }
+.sidebar-notifications .thread-subscription-status { margin: 0px; padding: 0px; border: 0px none; }
+.sidebar-notifications .thread-subscription-status .thread-subscribe-form { display: block; }
+.sidebar-notifications .thread-subscription-status .mega-octicon { display: none; }
+.sidebar-notifications .thread-subscription-status .reason { padding: 0px; margin: 5px 0px 0px; font-size: 11px; color: rgb(153, 153, 153); }
+.sidebar-notifications .thread-subscription-status .btn-sm { display: block; width: 100%; }
+.participation .participant-avatar { float: left; margin: 3px 0px 0px 3px; }
+.participation a { color: rgb(153, 153, 153); }
+.participation a:hover { color: rgb(65, 131, 196); text-decoration: none; }
+.participation-avatars { margin-left: -3px; }
+.participation-avatars::before { display: table; content: ""; }
+.participation-avatars::after { display: table; clear: both; content: ""; }
+.inline-comment-form .form-actions, .timeline-new-comment .form-actions { padding: 0px 10px 10px; }
+.gh-header-actions { float: right; margin-top: 3px; }
+.gh-header-actions .btn-sm { float: left; margin-left: 5px; }
+.gh-header-title { margin-top: 0px; margin-bottom: 0px; margin-right: 150px; font-weight: normal; line-height: 1.1; word-wrap: break-word; }
+.gh-header-number { font-weight: 300; color: rgb(170, 170, 170); letter-spacing: -1px; }
+.gh-header-edit::before { display: table; content: ""; }
+.gh-header-edit::after { display: table; clear: both; content: ""; }
+.gh-header-meta { margin-top: 9px; font-size: 14px; line-height: 20px; color: rgb(119, 119, 119); padding-bottom: 20px; border-bottom: 1px solid rgb(238, 238, 238); }
+.gh-header.issue .gh-header-meta { margin-bottom: 15px; }
+.gh-header-meta .flex-table-item { vertical-align: top; }
+.gh-header-meta .flex-table-item-primary { padding-top: 4px; white-space: normal; word-wrap: break-word; }
+.gh-header-meta .state { margin-right: 8px; }
+.gh-header-meta .author { color: rgb(85, 85, 85); font-weight: bold; }
+.gh-header-meta .noun { text-transform: lowercase; }
+.timeline-comment-wrapper > .timeline-comment::after, .timeline-comment-wrapper > .timeline-comment::before, .timeline-new-comment .timeline-comment::after, .timeline-new-comment .timeline-comment::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.timeline-comment-wrapper > .timeline-comment::after, .timeline-new-comment .timeline-comment::after { border-width: 7px; border-right-color: rgb(247, 247, 247); margin-top: 1px; margin-left: 2px; }
+.timeline-comment-wrapper > .timeline-comment::before, .timeline-new-comment .timeline-comment::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.timeline-comment-wrapper { position: relative; padding-left: 64px; margin-top: 15px; margin-bottom: 15px; border-top: 2px solid rgb(255, 255, 255); border-bottom: 2px solid rgb(255, 255, 255); }
+.timeline-comment-wrapper:first-child { margin-top: 0px; }
+.discussion-timeline-actions .timeline-comment-wrapper:first-child { margin-top: 15px; }
+.timeline-comment-wrapper .timeline-comment.current-user::after, .timeline-comment-wrapper .timeline-comment.current-user::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.timeline-comment-wrapper .timeline-comment.current-user::after { border-width: 7px; border-right-color: rgb(242, 248, 250); margin-top: 1px; margin-left: 2px; }
+.timeline-comment-wrapper .timeline-comment.current-user::before { border-right-color: rgb(191, 204, 209); border-width: 8px; }
+.timeline-comment-wrapper .timeline-comment.unread-item::after, .timeline-comment-wrapper .timeline-comment.unread-item::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.timeline-comment-wrapper .timeline-comment.unread-item::after { border-width: 7px; border-right-color: rgb(255, 249, 234); margin-top: 1px; margin-left: 2px; }
+.timeline-comment-wrapper .timeline-comment.unread-item::before { border-right-color: rgb(223, 216, 194); border-width: 8px; }
+.timeline-comment-avatar { float: left; margin-left: -64px; border-radius: 3px; }
+.timeline-comment { position: relative; background-color: rgb(255, 255, 255); border: 1px solid rgb(221, 221, 221); border-radius: 3px; }
+.timeline-comment.will-transition-once::before, .timeline-comment.will-transition-once::after { transition: border-right-color 0.65s ease-in-out 0s; }
+.timeline-comment:empty { display: none; }
+.timeline-comment .comment + .comment::before, .timeline-comment .comment + .comment::after { display: none; }
+.timeline-comment-header { padding-left: 15px; padding-right: 15px; color: rgb(153, 153, 153); background-color: rgb(247, 247, 247); border-bottom: 1px solid rgb(238, 238, 238); border-top-left-radius: 3px; border-top-right-radius: 3px; }
+.timeline-comment-header .author { font-weight: bold; color: rgb(85, 85, 85); }
+.timeline-comment-header .timestamp { white-space: nowrap; color: inherit; }
+.timeline-comment-label { float: right; margin: 8px 0px 0px 10px; padding: 2px 5px; font-size: 12px; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 3px; }
+.timeline-comment-header-text { max-width: 78%; padding-top: 10px; padding-bottom: 10px; }
+.discussion-item-ref .state { padding: 1px 5px; margin-top: -4px; margin-left: 8px; font-size: 12px; }
+.discussion-item-ref .state .octicon { width: 1em; font-size: 14px; }
+.timeline-new-comment { max-width: 780px; margin-bottom: 0px; }
+.timeline-new-comment .comment-form-head { margin-bottom: 10px; }
+.timeline-new-comment .previewable-comment-form .comment-body { padding: 5px 5px 15px; border-bottom: 1px solid rgb(238, 238, 238); }
+.discussion-item { position: relative; margin: 15px 0px 15px 79px; padding-left: 25px; }
+.discussion-item .author { color: rgb(85, 85, 85); font-weight: bold; }
+.discussion-item .timestamp { color: inherit; white-space: nowrap; }
+.discussion-item-icon { float: left; width: 32px; height: 32px; margin-top: -7px; margin-left: -40px; line-height: 28px; color: rgb(102, 102, 102); text-align: center; background-color: rgb(243, 243, 243); border: 2px solid rgb(255, 255, 255); border-radius: 50%; }
+.discussion-item-header { min-height: 30px; padding-top: 5px; padding-bottom: 5px; color: rgb(119, 119, 119); line-height: 20px; word-wrap: break-word; }
+.discussion-item-header .avatar { float: left; margin-top: 2px; margin-right: 5px; }
+.discussion-item-header:last-child { padding-bottom: 0px; }
+.discussion-item-ref-title { margin-top: 0px; margin-bottom: 0px; line-height: 1.2; }
+.discussion-item-ref-title .issue-num { font-weight: normal; color: rgb(153, 153, 153); }
+.discussion-item-ref-title .title-link { color: rgb(51, 51, 51); }
+.discussion-item-ref-title .title-link:hover { color: rgb(65, 131, 196); text-decoration: none; }
+.discussion-item-ref-title .title-link:hover .issue-num { color: inherit; }
+.new-discussion-timeline .previewable-comment-form .comment-form-head.tabnav { background: rgb(247, 247, 247) none repeat scroll 0% 0%; padding: 6px 10px 0px; border-radius: 3px 3px 0px 0px; }
+.new-discussion-timeline .previewable-comment-form .comment { border: 0px none; }
+.new-discussion-timeline .previewable-comment-form .comment-body { padding: 5px 5px 15px; border-bottom: 1px solid rgb(238, 238, 238); background-color: transparent; }
+.new-discussion-timeline .composer .timeline-comment::after { border-right-color: rgb(255, 255, 255); }
+.discussion-timeline-actions { border-top: 2px solid rgb(243, 243, 243); background-color: rgb(255, 255, 255); }
+.git-lfs-setup-list li::before { content: counter(step-counter, decimal) "."; margin-right: 10px; font-weight: bold; }
+.explore-section:nth-child(2n) { background: rgb(249, 249, 249) none repeat scroll 0% 0%; }
+.explore-section:nth-child(2n) .repo-collection > ul { background: rgb(255, 255, 255) none repeat scroll 0% 0%; }
+.explore-section:nth-child(2n+1):last-child { padding-bottom: 0px; border-bottom: 0px none; }
+@keyframes fadein {
+ 0% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+.form-signup-home dl.form.errored dd.error::after, .form-signup-home dl.form.errored dd.warning::after { position: absolute; left: 10px; bottom: 100%; height: 0px; width: 0px; content: ""; border-style: solid; border-color: transparent transparent rgb(51, 51, 51); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-width: 8px; pointer-events: none; }
+.form-signup-home dl.successed::after, .form-signup-home dl.errored::after { position: absolute; top: 15px; right: 10px; text-shadow: none; font: 16px/1 "octicons"; display: inline-block; text-decoration: none; }
+.form-signup-home dl.successed::after { content: ""; color: rgb(108, 198, 68); }
+.form-signup-home dl.errored::after { content: ""; color: rgb(189, 44, 0); }
+.form-signup-home dl.is-loading::after { position: absolute; top: 15px; right: 10px; display: block; width: 16px; height: 16px; content: ""; background-image: url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-16px.gif"); }
+@media not all, not all, only screen and (min-resolution: 2dppx) {
+ .form-signup-home dl.is-loading::after { background-image: url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif"); background-size: 16px 16px; }
+}
+@keyframes cloud1animation {
+ 0% { transform: translateX(-70px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud2animation {
+ 0% { transform: translateX(50px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud3animation {
+ 0% { transform: translateX(-150px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud4animation {
+ 0% { transform: translateX(125px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud5animation {
+ 0% { transform: translateX(-80px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud6animation {
+ 0% { transform: translateX(-200px); }
+ 100% { transform: translateX(0px); }
+}
+.issue-list-meta::before { display: table; content: ""; }
+.issue-list-meta::after { display: table; clear: both; content: ""; }
+.new-label .label-edit::before { display: table; content: ""; }
+.new-label .label-edit::after { display: table; clear: both; content: ""; }
+.label-edit::before { display: table; content: ""; }
+.label-edit::after { display: table; clear: both; content: ""; }
+.label-colors::before { left: 8px; }
+.label-colors::after { left: 9px; }
+@keyframes ellipsis {
+ 0% { width: 2px; }
+ 100% { width: 12px; }
+}
+.context-loader.large-format-loader { position: fixed; display: none; top: 0px; left: 0px; bottom: 0px; right: 0px; margin: 0px; width: auto; padding: 190px 0px 0px; font-weight: normal; background: rgba(255, 255, 255, 0.8) none repeat scroll 0% 0%; border: 0px none; z-index: 9999; text-align: center; color: rgb(153, 153, 153); }
+.request-reviewers-list::before { display: table; content: ""; }
+.request-reviewers-list::after { display: table; clear: both; content: ""; }
+.clearfix::before { display: table; content: ""; }
+.clearfix::after { display: table; clear: both; content: ""; }
+.right { float: right; }
+.left { float: left; }
+</style> + <style media="all" rel="stylesheet">/* Effective stylesheet produced by snapshot save */
+.marketing-section::before { display: table; content: ""; }
+.marketing-section::after { display: table; clear: both; content: ""; }
+@keyframes rotate {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(-360deg); }
+}
+@keyframes teamDev {
+ 3% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 27% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 30% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+}
+@keyframes teamDesign {
+ 34% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 37% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 60% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 63% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+}
+@keyframes teamMarketing {
+ 67% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 70% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+ 94% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+}
+@keyframes teamDevDesign {
+ 3% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 27% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 30% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 34% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 37% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 60% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 63% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+}
+@keyframes teamDevDesignMarketing {
+ 3% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 27% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 30% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 34% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 37% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 60% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 63% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 67% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 70% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+ 94% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+}
+@keyframes bounceIn {
+ 0% { opacity: 0; transform: scale(0.3); }
+ 50% { opacity: 1; transform: scale(1.05); }
+ 70% { transform: scale(0.9); }
+ 100% { transform: scale(1); }
+}
+@keyframes fadeIn {
+ 0% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+.segmented-nav-tab::before { display: table; content: ""; }
+.segmented-nav-tab::after { display: table; clear: both; content: ""; }
+.table-list-header::before { display: table; content: ""; }
+.table-list-header::after { display: table; clear: both; content: ""; }
+.subnav::before { display: table; content: ""; }
+.subnav::after { display: table; clear: both; content: ""; }
+.boxed-group-list > li.approved::before { margin-right: 5px; font: 16px/1 "octicons"; display: inline-block; text-decoration: none; content: ""; color: rgb(94, 192, 81); }
+.boxed-group-list > li.rejected::before { margin-right: 5px; font: 16px/1 "octicons"; display: inline-block; text-decoration: none; content: ""; color: rgb(188, 0, 0); }
+#ajax-error-message { display: none; position: fixed; top: -200px; left: 50%; width: 974px; z-index: 9999; margin: 0px 3px 0px -487px; transition: top 0.5s ease-in-out 0s; }
+#ajax-error-message > .octicon-alert { vertical-align: text-top; }
+.simple-conversation-list.varied-states > li::before { display: table; content: ""; }
+.simple-conversation-list.varied-states > li::after { display: table; clear: both; content: ""; }
+.pagehead { position: relative; padding-top: 20px; padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px solid rgb(238, 238, 238); }
+.pagehead ul.pagehead-actions { z-index: 21; float: right; margin: 0px; }
+.pagehead .path-divider { margin: 0px 0.25em; }
+.pagehead h1 { margin-top: 0px; margin-bottom: 0px; font-size: 20px; font-weight: normal; line-height: 28px; }
+.pagehead h1 strong { font-weight: bold; }
+.pagehead h1 a { white-space: nowrap; }
+.pagehead-actions > li { float: left; margin: 0px 10px 0px 0px; font-size: 11px; color: rgb(51, 51, 51); list-style-type: none; }
+.pagehead-actions > li:last-child { margin-right: 0px; }
+.pagehead-actions .octicon-mute { color: rgb(204, 0, 0); }
+.pagehead-actions .select-menu { position: relative; }
+.pagehead-actions .select-menu::before { display: table; content: ""; }
+.pagehead-actions .select-menu::after { display: table; clear: both; content: ""; }
+.pagehead-actions .select-menu-modal-holder { top: 100%; }
+.context-loader { position: absolute; top: 0px; left: 50%; z-index: 20; width: 154px; padding: 10px 10px 10px 30px; margin-left: -75px; font-size: 12px; font-weight: bold; color: rgb(102, 102, 102); background: rgb(238, 238, 238) url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-16px.gif") no-repeat scroll 10px 50%; border-width: 1px; border-style: solid; border-color: rgb(255, 255, 255) rgb(221, 221, 221) rgb(221, 221, 221); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-radius: 0px 0px 5px 5px; }
+@media not all, screen and (max--moz-device-pixel-ratio: 2) {
+ .context-loader { background: rgb(238, 238, 238) url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-32-EAF2F5.gif") no-repeat scroll 10px 50% / 16px auto; }
+}
+.press-info::before { display: table; content: ""; }
+.press-info::after { display: table; clear: both; content: ""; }
+.hubbers-list::before { display: table; content: ""; }
+.hubbers-list::after { display: table; clear: both; content: ""; }
+.billing-addon-items table tr:nth-child(2n) { background-color: rgb(250, 250, 250); }
+.payment-methods .selected-payment-method::before { display: table; content: ""; }
+.payment-methods .selected-payment-method::after { display: table; clear: both; content: ""; }
+#bt-pp-cancel::before { font-size: 16px ! important; content: ""; }
+.branch-group::before { display: table; content: ""; }
+.branch-group::after { display: table; clear: both; content: ""; }
+@keyframes branch-bar-slide {
+ 0% { width: 0%; }
+ 100% { width: 100%; }
+}
+.capped-card::before { display: table; content: ""; }
+.capped-card::after { display: table; clear: both; content: ""; }
+.capped-card:nth-child(2n+1) { margin-left: 0px; }
+.capped-card:nth-child(2n) { margin-right: 0px; }
+.capped-card-content::before { display: table; content: ""; }
+.capped-card-content::after { display: table; clear: both; content: ""; }
+.clone-url .input-group { width: 100%; }
+.clone-url input.input-mini { font-size: 11px; color: rgb(153, 153, 153); }
+.commit-form::after, .commit-form::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.commit-form::after { border-width: 7px; border-right-color: rgb(255, 255, 255); margin-top: 1px; margin-left: 2px; }
+.commit-form::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.commit-form-actions::before { display: table; content: ""; }
+.commit-form-actions::after { display: table; clear: both; content: ""; }
+.diff-table tr:not(:last-child) .line-comments { border-top: 1px solid rgb(238, 238, 238); border-bottom: 1px solid rgb(238, 238, 238); }
+.blob-num::before { content: attr(data-line-number); }
+.blob-expanded + tr:not(.blob-expanded) .blob-num, .blob-expanded + tr:not(.blob-expanded) .blob-code { border-top: 1px solid rgb(238, 238, 238); }
+tr:not(.blob-expanded) + .blob-expanded .blob-num, tr:not(.blob-expanded) + .blob-expanded .blob-code { border-top: 1px solid rgb(238, 238, 238); }
+.file-header::before { display: table; content: ""; }
+.file-header::after { display: table; clear: both; content: ""; }
+.write-content { position: relative; }
+.fullscreen-overlay { display: none; position: fixed; top: 0px; bottom: 0px; left: 0px; right: 0px; background: rgb(255, 255, 255) none repeat scroll 0% 0%; text-shadow: none; z-index: 1000; }
+.fullscreen-overlay .fullscreen-container { max-width: 800px; height: 100%; margin: 0px auto; padding: 30px 0px; }
+.fullscreen-overlay .textarea-wrap { width: 100%; height: 100%; position: relative; }
+.fullscreen-overlay textarea { width: 100%; height: 100%; padding: 20px; border: 0px none; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: rgb(153, 153, 153); font-size: 21px; line-height: 1.6em; resize: none; transition: color 0.15s ease-in-out 0s; box-shadow: none; }
+.fullscreen-overlay textarea:focus, .fullscreen-overlay textarea:hover { outline: medium none; color: rgb(51, 51, 51); }
+.fullscreen-overlay .fullscreen-sidebar { position: absolute; top: 30px; right: 30px; text-align: right; z-index: 1002; }
+.fullscreen-overlay .fullscreen-sidebar .exit-fullscreen, .fullscreen-overlay .fullscreen-sidebar .theme-switcher { color: rgb(179, 179, 179); float: right; clear: right; margin-bottom: 15px; }
+.fullscreen-overlay .fullscreen-sidebar .exit-fullscreen:hover, .fullscreen-overlay .fullscreen-sidebar .theme-switcher:hover { color: rgb(51, 51, 51); text-shadow: 0px 0px 10px rgb(255, 255, 255); }
+.fullscreen-overlay .fullscreen-sidebar .theme-switcher { margin-right: 8px; }
+.fullscreen-overlay .suggester-container { top: 5px; left: 0px; }
+.issues-listing { position: relative; }
+.new-issue-form .discussion-timeline::before { display: none; }
+.new-pr-form::before { display: table; content: ""; }
+.new-pr-form::after { display: table; clear: both; content: ""; }
+.new-pr-form .discussion-timeline::before { display: none; }
+.thread-subscription-status { margin: 40px 0px 20px; padding: 10px; color: rgb(119, 119, 119); background-color: rgb(255, 255, 255); border: 1px solid rgb(238, 238, 238); border-radius: 3px; }
+.thread-subscription-status .mega-octicon { vertical-align: middle; margin-right: 10px; margin-left: 4px; color: rgb(204, 204, 204); }
+.thread-subscription-status .btn-sm > .octicon { margin-right: 1px; }
+.thread-subscription-status .reason { display: inline-block; margin: 0px 10px; vertical-align: middle; }
+.thread-subscription-status .thread-subscribe-form { display: inline-block; vertical-align: middle; }
+.ellipsis-button::before { content: "…"; }
+.oauth-permissions-details.default:not(.delete) .no-access, .oauth-permissions-details.default:not(.delete) .default-access, .oauth-permissions-details.none .no-access, .oauth-permissions-details.none .default-access { display: inline; }
+.oauth-permissions-details.default:not(.delete) .access-details, .oauth-permissions-details.default:not(.delete) .permission-title, .oauth-permissions-details.none .access-details, .oauth-permissions-details.none .permission-title { color: rgb(153, 153, 153); }
+.oauth-permissions-details.default:not(.delete) .mega-octicon, .oauth-permissions-details.none .mega-octicon { color: rgb(204, 204, 204); }
+.member-avatar-group::before { display: table; content: ""; }
+.member-avatar-group::after { display: table; clear: both; content: ""; }
+.member-row::before { display: table; content: ""; }
+.member-row::after { display: table; clear: both; content: ""; }
+.org-list .list-item::before { display: table; content: ""; }
+.org-list .list-item::after { display: table; clear: both; content: ""; }
+.permission-level-cell .select-menu-button::after { position: absolute; top: 10px; right: 10px; }
+.invitation-role-group::before { display: table; content: ""; }
+.invitation-role-group::after { display: table; clear: both; content: ""; }
+.migrate-org-roles .tooltipped::after { width: 300px; white-space: normal; }
+.migrate-org-avatar-list::before { display: table; content: ""; }
+.migrate-org-avatar-list::after { display: table; clear: both; content: ""; }
+.migrate-org-avatar-list .tooltipped::after { width: auto; white-space: nowrap; }
+.team-grid::before { display: table; content: ""; }
+.team-grid::after { display: table; clear: both; content: ""; }
+.typeahead-result::before { display: table; content: ""; }
+.typeahead-result::after { display: table; clear: both; content: ""; }
+.manage-user-info::before { display: table; content: ""; }
+.manage-user-info::after { display: table; clear: both; content: ""; }
+.org-migration-actions::before { display: table; content: ""; }
+.org-migration-actions::after { display: table; clear: both; content: ""; }
+.manage-repo-access-header::before { display: table; content: ""; }
+.manage-repo-access-header::after { display: table; clear: both; content: ""; }
+.ldap-memberships-list .ldap-group-form > div:not(.table-list-cell) { display: none ! important; }
+.invited .team-member-list .list-item::before { display: table; content: ""; }
+.invited .team-member-list .list-item::after { display: table; clear: both; content: ""; }
+.invited-banner::before { display: table; content: ""; }
+.invited-banner::after { display: table; clear: both; content: ""; }
+.owner-select-grid::before { display: table; content: ""; }
+.owner-select-grid::after { display: table; clear: both; content: ""; }
+.theme-selector-actions::before { display: table; content: ""; }
+.theme-selector-actions::after { display: table; clear: both; content: ""; }
+.vcard-stats::before { display: table; content: ""; }
+.vcard-stats::after { display: table; clear: both; content: ""; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable .unchanged:not(.vicinity) { display: none; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:first-child::before { margin-top: 1em; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable::before { font-family: "octicons"; content: ""; color: rgb(211, 211, 211); display: block; text-align: center; font-size: 24px; letter-spacing: 2px; line-height: 0; margin-top: 1em; margin-bottom: 1em; padding: 0px; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:hover::before { color: rgb(0, 0, 0); }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child::before { content: "Sorry, no visible changes to display."; color: rgb(211, 211, 211); font-size: 18px; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child:hover::before { color: rgb(0, 0, 0); }
+.prose-diff :not(.changed) > :not(.github-user-ins):not(.github-user-del) > .removed, .prose-diff :not(.changed) > :not(.github-user-ins):not(.github-user-del) > del { text-decoration: none; }
+.prose-diff > .markdown-body li ul.removed:not(.github-user-ins) { text-decoration: line-through; }
+.prose-diff > .markdown-body li.added.moved-up::before { font-family: "octicons"; content: ""; color: rgb(211, 211, 211); }
+.prose-diff > .markdown-body li.added.moved-down::before { font-family: "octicons"; content: ""; color: rgb(211, 211, 211); }
+.prose-diff > .markdown-body li.removed:not(.moved) { color: rgb(170, 51, 51); background: rgb(255, 234, 234) none repeat scroll 0% 0%; }
+.prose-diff > .markdown-body li.removed:not(.moved):not(.github-user-ins) { text-decoration: line-through; }
+.prose-diff > .markdown-body .added:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins + .added:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins:not(.github-user-del):not(.github-user-ins) { text-decoration: none; }
+.prose-diff > .markdown-body ins pre:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins code:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins > div:not(.github-user-del):not(.github-user-ins) { text-decoration: none; }
+.tabnav-callout::before { position: absolute; top: 50%; right: 100%; margin-top: -7px; display: inline-block; content: ""; border: 7px solid transparent; }
+.callout-review::before { border-right-color: rgb(252, 235, 155); }
+.callout-success::before { border-right-color: rgb(216, 240, 205); }
+.radio-group::before { display: table; content: ""; }
+.radio-group::after { display: table; clear: both; content: ""; }
+:checked + .radio-label { z-index: 1; position: relative; border-color: rgb(65, 131, 196); }
+.recommended-showcase-link:nth-child(2n+1) { margin-left: 4%; }
+.release-timeline-tags > li::before { display: table; content: ""; }
+.release-timeline-tags > li::after { display: table; clear: both; content: ""; }
+.release-timeline-tags .date::after { box-sizing: border-box; content: " "; display: block; position: absolute; top: 50%; right: -7px; z-index: 10; width: 12px; height: 12px; margin-top: -6px; background-color: rgb(238, 238, 238); border: 2px solid rgb(255, 255, 255); border-radius: 6px; }
+.release-timeline-tags .expander .date::after { display: none; }
+.release::before { display: table; content: ""; }
+.release::after { display: table; clear: both; content: ""; }
+.uploaded-files > li.delete:nth-child(2) { border-top-right-radius: 3px; border-top-left-radius: 3px; }
+.uploaded-files > li:nth-child(2) { border-top: 0px none; }
+.releases-target-menu .select-menu-button::before { top: 14px; }
+.render-container.is-render-ready.is-render-requested:not(.is-render-failed) { background: transparent none repeat scroll 0% 0%; height: 500px; padding: 0px; }
+.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer { display: block; }
+.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-error, .render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-fatal, .render-container.is-render-ready.is-render-requested:not(.is-render-failed) .octospinner { display: none; }
+.pagehead.repohead h1 { color: rgb(102, 102, 102); padding-left: 34px; position: relative; float: left; }
+.pagehead.repohead h1.private .mega-octicon::before { color: rgb(233, 219, 165); }
+.pagehead.repohead h1 .octicon-lock, .pagehead.repohead h1 .octicon-repo, .pagehead.repohead h1 .octicon-mirror, .pagehead.repohead h1 .octicon-repo-forked, .pagehead.repohead h1 .octicon-gist, .pagehead.repohead h1 .octicon-gist-secret { position: absolute; left: 0px; top: 12px; line-height: 32px; margin-top: -13px; color: rgb(187, 187, 187); }
+.filter-bar::before { display: table; content: ""; }
+.filter-bar::after { display: table; clear: both; content: ""; }
+.repo-container { min-height: 345px; }
+.repo-nav .full-word { display: none; }
+.only-with-full-nav { display: none; }
+.repository-with-sidebar::before { display: table; content: ""; }
+.repository-with-sidebar::after { display: table; clear: both; content: ""; }
+.repository-with-sidebar .repository-sidebar { float: right; width: 38px; }
+.repository-with-sidebar .repository-sidebar .sidebar-button { width: 100%; margin: 0px 0px 10px; text-align: center; }
+.repository-with-sidebar .repository-sidebar h3 { margin-bottom: 5px; font-size: 11px; font-weight: normal; color: rgb(153, 153, 153); }
+.repository-with-sidebar .repository-sidebar .clone-url { display: none; margin-top: -5px; }
+.repository-with-sidebar .repository-sidebar .clone-url.open { display: block; }
+.repository-with-sidebar .repository-sidebar .clone-options { margin: 8px 0px 15px; font-size: 11px; color: rgb(102, 102, 102); }
+.repository-with-sidebar .repository-sidebar .clone-options .octicon-question { position: relative; bottom: 1px; font-size: 11px; color: rgb(0, 0, 0); cursor: pointer; }
+.repository-with-sidebar .repository-content { float: left; width: 920px; }
+.repository-with-sidebar.with-full-navigation .sunken-menu-group .tooltipped::before, .repository-with-sidebar.with-full-navigation .sunken-menu-group .tooltipped::after { display: none; }
+.repository-meta::before { display: table; content: ""; }
+.repository-meta::after { display: table; clear: both; content: ""; }
+.file-navigation::before { display: table; content: ""; }
+.file-navigation::after { display: table; clear: both; content: ""; }
+.fork-select-fragment { text-align: center; }
+.pagehead.repohead .select-menu .select-menu-modal-holder { z-index: 25; }
+.audit-search-form::before { display: table; content: ""; }
+.audit-search-form::after { display: table; clear: both; content: ""; }
+.graticule :nth-child(2n) { stroke-dasharray: 2, 2; }
+.export-actions .select-menu-button::after { position: absolute; right: 15px; top: 50%; margin-top: -2px; }
+.audit-log-export-button.disabled::after { display: none; }
+.context-loader-container .large-format-loader { position: fixed; top: 0px; left: 0px; bottom: 0px; right: 0px; padding-top: 190px; background: rgba(255, 255, 255, 0.8) none repeat scroll 0% 0%; z-index: 9999; text-align: center; color: rgb(153, 153, 153); }
+.two-factor-recovery-code::before { content: "□"; font-size: 26px; margin-right: 10px; color: rgb(234, 234, 234); position: relative; top: 1px; }
+.markdown-body .sms-or-app::before { display: table; content: ""; }
+.markdown-body .sms-or-app::after { display: table; clear: both; content: ""; }
+.two-factor-setup-container .select-menu .select-menu-button::before { top: 14px; }
+li.session-device.session-current .sessions-more-info::after { border-top-color: rgb(255, 255, 255); }
+.setup-form .octicon-alert::before { color: rgb(189, 44, 0); }
+.setup-form .octicon-check::before { color: rgb(108, 198, 68); }
+.collection-card:nth-child(3n+3) { margin-right: 0px; }
+.signup-plans tr:nth-child(2n+1) td { background-color: rgb(245, 245, 245); }
+.signup-plans-personal tr:nth-child(2n+1) td { background-color: rgb(240, 245, 250); }
+.signup-plans-orgs tr:nth-child(2n+1) td { background-color: rgb(246, 252, 244); }
+#user-content-toc ul ul li::before { float: left; margin-top: -0.2em; margin-right: 0.2em; font-size: 1.2em; line-height: 1; color: rgb(170, 170, 170); content: "⌞"; }
+.wiki-wrapper .wiki-auxiliary-content.markdown-body.wiki-writable > :nth-child(2) { margin-top: 0px ! important; }
+.wiki-wrapper .wiki-custom-sidebar > :nth-child(2) { margin-top: 0px; }
+</style> + + + + + <meta http-equiv="x-pjax-version" content="be127a1bc145075f45563e8af963c3fb"> + + + <meta name="description" content="dav - WebDAV, CalDAV, and CardDAV client for nodejs and the browser."> + <meta name="go-import" content="github.com/gaye/dav git https://github.com/gaye/dav.git"> + + <meta content="535859" name="octolytics-dimension-user_id"><meta content="gaye" name="octolytics-dimension-user_login"><meta content="20107688" name="octolytics-dimension-repository_id"><meta content="gaye/dav" name="octolytics-dimension-repository_nwo"><meta content="true" name="octolytics-dimension-repository_public"><meta content="false" name="octolytics-dimension-repository_is_fork"><meta content="20107688" name="octolytics-dimension-repository_network_root_id"><meta content="gaye/dav" name="octolytics-dimension-repository_network_root_nwo"> + <link href="https://github.com/gaye/dav/commits/master.atom" rel="alternate" title="Recent Commits to dav:master" type="application/atom+xml"> + + <script async="" type="text/javascript">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script></head> + + + <body class="logged_in env-production linux vis-public"> + <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a> + <div class="wrapper"> + + + + + + <div class="header header-logged-in true" role="banner"> + <div class="container clearfix"> + + <a class="header-logo-invertocat" href="https://github.com/" data-hotkey="g d" aria-label="Homepage" data-ga-click="Header, go to dashboard, icon:logo"> + <span class="mega-octicon octicon-mark-github"></span> +</a> + + + <div class="site-search repo-scope js-site-search" role="search"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/search" class="js-site-search-form" data-global-search-url="/search" data-repo-search-url="/gaye/dav/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"></div> + <input class="js-site-search-field is-clearable" data-hotkey="s" name="q" placeholder="Search" data-global-scope-placeholder="Search GitHub" data-repo-scope-placeholder="Search" tabindex="1" autocapitalize="off" type="text"> + <div class="scope-badge">This repository</div> +</form> + </div> + + <ul class="header-nav left" role="navigation"> + <li class="header-nav-item explore"> + <a class="header-nav-link" href="https://github.com/explore" data-ga-click="Header, go to explore, text:explore">Explore</a> + </li> + <li class="header-nav-item"> + <a class="header-nav-link" href="https://gist.github.com/" data-ga-click="Header, go to gist, text:gist">Gist</a> + </li> + <li class="header-nav-item"> + <a class="header-nav-link" href="https://github.com/blog" data-ga-click="Header, go to blog, text:blog">Blog</a> + </li> + <li class="header-nav-item"> + <a class="header-nav-link" href="https://help.github.com/" data-ga-click="Header, go to help, text:help">Help</a> + </li> + </ul> + + +<ul class="header-nav user-nav right" id="user-links"> + <li class="header-nav-item dropdown js-menu-container"> + <a class="header-nav-link name" href="https://github.com/mcepl" data-ga-click="Header, go to profile, text:username"> + <img alt="@mcepl" class="avatar" data-user="198999" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAE00lEQVRYw8WXS4wUVRSGv1NVbTfMA3lIIEMMkYcIBCNqYjRGVkh4uEGjEY0uIEY2LkxYiTruXZAYgiFKMECi4kKJLxI3GI1ECTGgkKDEIEyYGehBpme6arr7Hhfd1V3dXS96mnAnlTt9bt1b/z3n/P89V1RVqbV8fh/npg4xJS53ojkVm/t0EwMDbzdsPj4RIZcbYvus05y3JsNXEEADfZdty8s2P99chaoiIqgqjoiEAyEwOQpsnE06s4lUneU7zQlEuNE04v9btXXYgpisINqmXcXtvAueirT5phoepw1c2pDdRpBBp1mqSluYNeKhpe+2DVBthDiZJDFe3XJ5ESe+2IoxdmDI8Dr7yNEsU6ObYO/96QgmLZ5MJklEG5o5yXN/rOLIkRcxprqqLYZdHGS2uvWP6UbY8EJnxFPVzklyak6er1/7EMcp47ozcN2ZFIsz0KIgLuACHvAKHF+YQpYimhWMd1sOEp4nfj/aN45tV9pc0PRaf8QaUbYWqbFuSaAkbucS/1pKBvt+qstMpyQJ/3rE65L+FGolicVtatLJ8diig/UQhzIZeObyAI9cnxObh1FJ1PRahA6uvw47L7cv0aSDkSQBTh7bwuZTD/Pvjv2M9t9s3+k/i6lU7HiS/A0r57dvfskEfPkRDC4B3owmiRMXJqPC0aPP4h3eRlZMW32kanHTzYaSRAFR0J1w1gqptrQ6zrvNJViQJIkniQCqguvOiKs9wsNc+6h4MWmXmSZJtBM61ERetCNdbiOJ48c7zJMWii0VLCqpFratCuP04Wg5JRDFwwOm2khSD3EcSV7lALv4FE2zd4ECvTyov+NqLhXADCWUQdD3k0kS5sEcHrPVS30lcbSMqzk8si2j4bONWlg4ySRp00GJzpvQE0uiElYTzzYh4U4SW1H7E+2YDK+EgWsgtu0yIhqZg4lX0TiSIMBmuPYylPtDJl+CeTtAx8PxW5Zhz543GFh7qm3Mm+jhu8Mv8ZltQk+SVCQZ3QBPb4Xj94TvbuUcOOuESVLj1+rVZ1n32MnQ+Q+tOcO6iR6+UTojyd7FyRd3Cb0+S6RwB4dOzx/ltI5OjyRpyi1JEvBbuBG2ksRKJMkdbrHlVpqyP/pI1Pi5ceulLbeSQC4pgJp4khQKvd25k6QKcyBf1uer9ZxMAVmQLEhWyWa9+pPJlDh0aBtrri6Y3p3ER2uMVDeTgiRLi7Vic7DhhSnxUAaxA2XmMTE87nsxAaTWyrumq7AG2tjYD3r42grlDv0dzC/SkZHPg5AUVVVjjKqqlsue5vO/6L6hpdUpJjDdhPRdtO0fXqDDI8e1VCrW8RhjFGOMtj6FwhU9MLRdl3lztbdiNRbs8tNbEV3m3a0fX3leb9z4S8Ow1AH6iP3HdW/o8PAnuju/XjcWZnXdg5sne3X32FN69epeLRavaSsOvxc/1D5Zgmw2xlAoXKRU+p73rK+4kPmVb3vHpiW8Gyf6WOqt5R224Dgb6OlZgW3b0ZzUSJWmCejk5AUumTOcKP2EMT9ybuYZPuiZSgVqYTnDW2MPAE+wLvsk91pryOWW4ziZZGWL82Dwd5VQhkqlgOp/XJ8a4c/x30DOI1wEGcESryYVd4HOQ1kMuoK5fY+y8q6FQD+O04eI3VQQBKWu1fY/7H7d6/Cmr/YAAAAASUVORK5CYII=" width="20" height="20"> + <span class="css-truncate"> + <span class="css-truncate-target">mcepl</span> + </span> + </a> + </li> + + <li class="header-nav-item dropdown js-menu-container"> + <a class="header-nav-link js-menu-target tooltipped tooltipped-s" href="https://github.com/new" aria-label="Create new..." data-ga-click="Header, create new, icon:add"> + <span class="octicon octicon-plus"></span> + <span class="dropdown-caret"></span> + </a> + + <div class="dropdown-menu-content js-menu-content"> + <ul class="dropdown-menu"> + +<li> + <a href="https://github.com/new" data-ga-click="Header, create new repository, icon:repo"><span class="octicon octicon-repo"></span> New repository</a> +</li> +<li> + <a href="https://github.com/organizations/new" data-ga-click="Header, create new organization, icon:organization"><span class="octicon octicon-organization"></span> New organization</a> +</li> + + + <li class="dropdown-divider"> + <li class="dropdown-header"> + <span title="gaye/dav">This repository</span> + </li> + <li> + <a href="https://github.com/gaye/dav/issues/new" data-ga-click="Header, create new issue, icon:issue"><span class="octicon octicon-issue-opened"></span> New issue</a> + </li> + + </ul> + </div> + </li> + + <li class="header-nav-item"> + <a href="https://github.com/notifications" aria-label="You have no unread notifications" class="header-nav-link notification-indicator tooltipped tooltipped-s" data-ga-click="Header, go to notifications, icon:read" data-hotkey="g n"> + <span class="mail-status all-read"></span> + <span class="octicon octicon-inbox"></span> +</a> + </li> + + <li class="header-nav-item"> + <a class="header-nav-link tooltipped tooltipped-s" href="https://github.com/settings/profile" id="account_settings" aria-label="Settings" data-ga-click="Header, go to settings, icon:settings"> + <span class="octicon octicon-gear"></span> + </a> + </li> + + <li class="header-nav-item"> + <form accept-charset="UTF-8" action="https://github.com/logout" class="logout-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="yoIJb9kFz/hG/7zwEezvM8Mmk+qhHHWWYRSOF0UNaO/Oh6yfzmi5/FgzsiFg15j2aYHgsstV/m7E18oETuuXAQ==" type="hidden"></div> + <button class="header-nav-link sign-out-button tooltipped tooltipped-s" aria-label="Sign out" data-ga-click="Header, sign out, icon:logout"> + <span class="octicon octicon-sign-out"></span> + </button> +</form> </li> + +</ul> + + + + + </div> +</div> + + + + + + + <div id="start-of-content" class="accessibility-aid"></div> + <div class="site" itemscope="" itemtype="http://schema.org/WebPage"> + <div id="js-flash-container"> + + </div> + <div class="pagehead repohead instapaper_ignore readability-menu"> + <div class="container"> + +<ul class="pagehead-actions"> + + <li> + <form accept-charset="UTF-8" action="https://github.com/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="BDfSUBZIcxHG1alcOdyaYvk+WnVnPvrExLWb8GKBSKN5H13WJR4dk6KxgDwV18uRC95nYOrBzirutxxJnWjkow==" type="hidden"></div> <input id="repository_id" name="repository_id" value="20107688" type="hidden"> + + <div class="select-menu js-menu-container js-select-menu"> + <a href="https://github.com/gaye/dav/subscription" class="btn btn-sm btn-with-count select-menu-button js-menu-target" role="button" tabindex="0" aria-haspopup="true" data-ga-click="Repository, click Watch settings, action:issues#show"> + <span class="js-select-button"> + <span class="octicon octicon-eye"></span> + Watch + </span> + </a> + <a class="social-count js-social-count" href="https://github.com/gaye/dav/watchers"> + 9 + </a> + + <div class="select-menu-modal-holder"> + <div class="select-menu-modal subscription-menu-modal js-menu-content" aria-hidden="true"> + <div class="select-menu-header"> + <span class="select-menu-title">Notifications</span> + <span class="octicon octicon-x js-menu-close" role="button" aria-label="Close"></span> + </div> + + <div class="select-menu-list js-navigation-container" role="menu"> + + <div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0"> + <span class="select-menu-item-icon octicon octicon-check"></span> + <div class="select-menu-item-text"> + <input checked id="do_included" name="do" value="included" type="radio"> + <span class="select-menu-item-heading">Not watching</span> + <span class="description">Be notified when participating or @mentioned.</span> + <span class="js-select-button-text hidden-select-button-text"> + <span class="octicon octicon-eye"></span> + Watch + </span> + </div> + </div> + + <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0"> + <span class="select-menu-item-icon octicon octicon octicon-check"></span> + <div class="select-menu-item-text"> + <input id="do_subscribed" name="do" value="subscribed" type="radio"> + <span class="select-menu-item-heading">Watching</span> + <span class="description">Be notified of all conversations.</span> + <span class="js-select-button-text hidden-select-button-text"> + <span class="octicon octicon-eye"></span> + Unwatch + </span> + </div> + </div> + + <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0"> + <span class="select-menu-item-icon octicon octicon-check"></span> + <div class="select-menu-item-text"> + <input id="do_ignore" name="do" value="ignore" type="radio"> + <span class="select-menu-item-heading">Ignoring</span> + <span class="description">Never be notified.</span> + <span class="js-select-button-text hidden-select-button-text"> + <span class="octicon octicon-mute"></span> + Stop ignoring + </span> + </div> + </div> + + </div> + + </div> + </div> + </div> +</form> + </li> + + <li> + + <div class="js-toggler-container js-social-container starring-container "> + + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/unstar" class="js-toggler-form starred js-unstar-button" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="/sW0MeAXFu8Cx/s3Bq+e8Pffk3cFcgVXYf6gQzYXPOei9/Wx5zGBmSMrp+Xti7xm1aSqi/oPbFyG7UjkFj1MDQ==" type="hidden"></div> + <button class="btn btn-sm btn-with-count js-toggler-target" aria-label="Unstar this repository" title="Unstar gaye/dav" data-ga-click="Repository, click unstar button, action:issues#show; text:Unstar"> + <span class="octicon octicon-star"></span> + Unstar + </button> + <a class="social-count js-social-count" href="https://github.com/gaye/dav/stargazers"> + 36 + </a> +</form> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/star" class="js-toggler-form unstarred js-star-button" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="FIJpXUY9kjRY98nsd6zMt1L33TnbzxnDfzYGafEHzRqyc/+iKCnj8SVYe1be64jQ5Ggi4AzvnGJl3mJdFuBnfA==" type="hidden"></div> + <button class="btn btn-sm btn-with-count js-toggler-target" aria-label="Star this repository" title="Star gaye/dav" data-ga-click="Repository, click star button, action:issues#show; text:Star"> + <span class="octicon octicon-star"></span> + Star + </button> + <a class="social-count js-social-count" href="https://github.com/gaye/dav/stargazers"> + 36 + </a> +</form> </div> + + </li> + + <li> + <a href="#fork-destination-box" class="btn btn-sm btn-with-count" title="Fork your own copy of gaye/dav to your account" aria-label="Fork your own copy of gaye/dav to your account" rel="facebox" data-ga-click="Repository, show fork modal, action:issues#show; text:Fork"> + <span class="octicon octicon-repo-forked"></span> + Fork + </a> + <a href="https://github.com/gaye/dav/network" class="social-count">8</a> + + <div id="fork-destination-box" style="display: none;"> + <h2 class="facebox-header">Where should we fork this repository?</h2> + <include-fragment src="" class="js-fork-select-fragment fork-select-fragment" data-url="/gaye/dav/fork?fragment=1"> + <img alt="Loading" src="data:image/gif;base64,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" width="64" height="64"> + </include-fragment> + </div> + </li> + +</ul> + + <h1 itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public"> + <span class="mega-octicon octicon-repo"></span> + <span class="author"><a href="https://github.com/gaye" class="url fn" itemprop="url" rel="author"><span itemprop="title">gaye</span></a></span><!-- + --><span class="path-divider">/</span><!-- + --><strong><a href="https://github.com/gaye/dav" class="js-current-repository" data-pjax="#js-repo-pjax-container">dav</a></strong> + + <span class="page-context-loader"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> + </span> + + </h1> + </div><!-- /.container --> + </div><!-- /.repohead --> + + <div class="container"> + <div class="repository-with-sidebar repo-container new-discussion-timeline"> + <div class="repository-sidebar clearfix"> + +<nav class="sunken-menu repo-nav js-repo-nav js-sidenav-container-pjax js-octicon-loaders" role="navigation" data-pjax="#js-repo-pjax-container" data-issue-count-url="/gaye/dav/issues/counts"> + <ul class="sunken-menu-group"> + <li class="tooltipped tooltipped-w" aria-label="Code"> + <a href="https://github.com/gaye/dav" aria-label="Code" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /gaye/dav"> + <span class="octicon octicon-code"></span> <span class="full-word">Code</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Issues"> + <a href="https://github.com/gaye/dav/issues" aria-label="Issues" class="selected js-selected-navigation-item sunken-menu-item" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /gaye/dav/issues"> + <span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span> + <span class="js-issue-replace-counter"></span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Pull requests"> + <a href="https://github.com/gaye/dav/pulls" aria-label="Pull requests" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g p" data-selected-links="repo_pulls /gaye/dav/pulls"> + <span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull requests</span> + <span class="js-pull-replace-counter"></span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Wiki"> + <a href="https://github.com/gaye/dav/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g w" data-selected-links="repo_wiki /gaye/dav/wiki"> + <span class="octicon octicon-book"></span> <span class="full-word">Wiki</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + </ul> + <div class="sunken-menu-separator"></div> + <ul class="sunken-menu-group"> + + <li class="tooltipped tooltipped-w" aria-label="Pulse"> + <a href="https://github.com/gaye/dav/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-selected-links="pulse /gaye/dav/pulse"> + <span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Graphs"> + <a href="https://github.com/gaye/dav/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-selected-links="repo_graphs repo_contributors /gaye/dav/graphs"> + <span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + </ul> + + +</nav> + + <div class="only-with-full-nav"> + +<div class="clone-url open" data-protocol-type="http" data-url="/users/set_protocol?protocol_selector=http&protocol_type=clone"> + <h3><span class="text-emphasized">HTTPS</span> clone URL</h3> + <div class="input-group js-zeroclipboard-container"> + <input class="input-mini input-monospace js-url-field js-zeroclipboard-target" value="https://github.com/gaye/dav.git" readonly type="text"> + <span class="input-group-button"> + + </span> + </div> +</div> + + +<div class="clone-url " data-protocol-type="ssh" data-url="/users/set_protocol?protocol_selector=ssh&protocol_type=clone"> + <h3><span class="text-emphasized">SSH</span> clone URL</h3> + <div class="input-group js-zeroclipboard-container"> + <input class="input-mini input-monospace js-url-field js-zeroclipboard-target" value="git@github.com:gaye/dav.git" readonly type="text"> + <span class="input-group-button"> + + </span> + </div> +</div> + + +<div class="clone-url " data-protocol-type="subversion" data-url="/users/set_protocol?protocol_selector=subversion&protocol_type=clone"> + <h3><span class="text-emphasized">Subversion</span> checkout URL</h3> + <div class="input-group js-zeroclipboard-container"> + <input class="input-mini input-monospace js-url-field js-zeroclipboard-target" value="https://github.com/gaye/dav" readonly type="text"> + <span class="input-group-button"> + + </span> + </div> +</div> + + + +<p class="clone-options">You can clone with + <a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>, <a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>, or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>. + <a href="https://help.github.com/articles/which-remote-url-should-i-use" class="help tooltipped tooltipped-n" aria-label="Get help on which URL is right for you."> + <span class="octicon octicon-question"></span> + </a> +</p> + + + + + <a href="https://github.com/gaye/dav/archive/master.zip" class="btn btn-sm sidebar-button" aria-label="Download the contents of gaye/dav as a zip file" title="Download the contents of gaye/dav as a zip file" rel="nofollow"> + <span class="octicon octicon-cloud-download"></span> + Download ZIP + </a> + </div> + </div><!-- /.repository-sidebar --> + + <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container=""> + +<style type="text/css" media="screen"><!--
+/* Effective stylesheet produced by snapshot save */
+--></style> + +<div class="issues-listing" data-pjax=""> + <div class="context-loader large-format-loader"> + <p><img alt="" src="data:image/gif;base64,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" width="64" height="64"></p> + <p>Loading…</p> +</div> + + <div id="show_issue" class="js-issues-results"> + + + <div id="partial-discussion-header" class="gh-header js-details-container js-socket-channel js-updatable-content issue" data-channel="gaye/dav:issue:36737375" data-url="/gaye/dav/issues/50/show_partial?partial=title"> + + <div class="gh-header-show "> + <div class="gh-header-actions"> + <a href="https://github.com/gaye/dav/issues/new" class="btn btn-sm btn-primary right" data-hotkey="c"> + New issue + </a> + </div> + + <h1 class="gh-header-title"> + <span class="js-issue-title">Simplify lower-level WebDAV api</span> + <span class="gh-header-number">#50</span> + </h1> + </div> + + + <div class="flex-table gh-header-meta"> + <div class="flex-table-item"> + <div class="state state-open"> + <span class="octicon octicon-issue-opened"></span> + Open + </div> + </div> + <div class="flex-table-item flex-table-item-primary"> + <a href="https://github.com/gaye" class="author">gaye</a> opened this <span class="noun">Issue</span> <time title="29 Jun 2014 03:47 GMT+2" datetime="2014-06-29T01:47:38Z" is="relative-time">on 29 Jun 2014</time> + · 1 comment + </div> + </div> +</div> + + + <div id="discussion_bucket" class="tab-content clearfix"> + <div class="discussion-sidebar"> + <div id="partial-discussion-stats" class="discussion-stats js-socket-channel js-updatable-content" data-channel="gaye/dav:issue:36737375" data-url="/gaye/dav/issues/50/show_partial?partial=discussion_stats"> +</div> + + + +<div class="discussion-sidebar-item sidebar-labels js-discussion-sidebar-item"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/issues/50?partial=sidebar%2Fshow%2Flabels" class="js-issue-sidebar-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="_method" value="put" type="hidden"><input name="authenticity_token" value="ggHuGugPar+fu76OOkvCAePHl3BRaTKuOLRVERhuIep+0PCImFBbgQmGSeeB5pKILSi3GQp3G4Hz5Y+px6STsw==" type="hidden"></div> + + <h3 class="discussion-sidebar-heading"> + Labels + </h3> + + + <div class="labels css-truncate"> + None yet +</div> + +</form></div> + +<div class="discussion-sidebar-item sidebar-milestone js-discussion-sidebar-item"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/issues/50/set_milestone?partial=sidebar%2Fshow%2Fmilestone" class="js-issue-sidebar-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="_method" value="put" type="hidden"><input name="authenticity_token" value="0XKlYT6jwfZEZathe4sSBm6Xl3r0rv2vXvvoF1wcl5unnRrZeD2NkFB+vbmeYsIhroR2CUSIyr1aknXXQmDUMw==" type="hidden"></div> + + <h3 class="discussion-sidebar-heading"> + Milestone + </h3> + + + <span class="text-muted">No milestone</span> + +</form></div> + +<div class="discussion-sidebar-item sidebar-assignee js-discussion-sidebar-item"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/issues/50?partial=sidebar%2Fshow%2Fassignee" class="js-issue-sidebar-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="_method" value="put" type="hidden"><input name="authenticity_token" value="UMWNv7CsGXpy7piXVb5aoATUhouLh5xdEdRArseuNg55YwkoOCYmgwjK0aMn02YkQc46dDMITGYiQncTYPXYwg==" type="hidden"></div> + + <h3 class="discussion-sidebar-heading"> + Assignee + </h3> + + + <span class="css-truncate"> + <span class="text-muted">No one assigned</span> +</span> + +</form></div> + + <div class="discussion-sidebar-item sidebar-notifications"> + <h3 class="discussion-sidebar-heading">Notifications</h3> + <div class="thread-subscription-status js-thread-subscription-status js-socket-channel js-updatable-content" data-channel="gaye/dav:thread-subscription:36737375:mcepl" data-url="/notifications/thread_subscription?repository_id=20107688&thread_class=Issue&thread_id=36737375"> + + <span class="mega-octicon octicon-radio-tower"></span> + + <form accept-charset="UTF-8" action="https://github.com/notifications/thread" class="thread-subscribe-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="Wsgqr1Ewklnvg4gYCBTvpo5xUVSqMu/K1/060RjmCd6qpUXCuGSjrSTWKHLDgcD5M4Ra6xBn3ftk+5aK4lyk6A==" type="hidden"></div> <input name="repository_id" value="20107688" type="hidden"> + <input name="thread_id" value="36737375" type="hidden"> + <input name="thread_class" value="Issue" type="hidden"> + <input name="id" value="subscribe" type="hidden"> + + <button class="btn btn-sm" type="submit" data-disable-with=""> + <span class="octicon octicon-eye"></span> + Subscribe + </button> +</form> + <p class="reason">You're not receiving notifications from this thread.</p> +</div> + + </div> + +<div id="partial-users-participants" class="discussion-sidebar-item js-socket-channel js-updatable-content" data-channel="gaye/dav:issue:36737375" data-url="/gaye/dav/issues/50/show_partial?partial=participants"> + <div class="participation"> + + <h3 class="discussion-sidebar-heading"> + 2 participants + </h3> + <div class="participation-avatars"> + <a class="participant-avatar tooltipped tooltipped-s" aria-label="gaye" href="https://github.com/gaye"><img alt="@gaye" class="avatar" data-user="535859" src="data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACgAKAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AIY25qWa8gs4TLPIsaDuxxUEVcf4hcaxrsVh5p+zxAEhCMljn+lZtLqUld2Rsaf41ae+VJYY1tnk2Bg3IB6E9q7qIhlBBBB6EVneEfhpol8qrcNdh8HJVwB09MVG9vD4U8S3Wim63242tFvI4yOgpypqS5olShKm7SN+MVLtpIQGAYdDU+2suRkM4aRvKt5JMZ2qTXltq92Z57kO4mD7m9vT+deuxpmue1zRvsn2m+tlAjmTEuOobP3vp2rdjha+ps6HF4iHh/TtXfUpVhmcnEQYH72MHb34B5I6+xpvxG0G9tpLfWJ2lmNyMAsORjYBn8zya3/h2HvvDbWTFWx1EgY45zxz1qx420TUdZ1fSbEyummW1uWlfd/rHLYxj1wOuO5pps6KyjGF2S6Gs7aRaG5XbKYxuFafl0+2t1ihjjXoihR+FWPLp8p57qpHCBkhjMkjKiL1ZjgCuX13xarxPYaWhlkkBRpSOMd8A9eK3Na/5At1/u15xZf8hSL6n+VdFGlGdrnLXxE4Xt0Vz0/4e318lrGWWRLcHb0xzXpOoX8N2kUESqRGcl/w/wD11wHgz/kAj/frqrf77V04ShFx9o90eJxNmVek44aGkZK777vT0LIYIwU9+BUvP92q0v8Ar4v98VcredGne9jwaGZ4tRtzvT0f5o//2Q==" width="20" height="20"> </a> + <a class="participant-avatar tooltipped tooltipped-s" aria-label="millermedeiros" href="https://github.com/millermedeiros"><img alt="@millermedeiros" class="avatar" data-user="155633" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAEt0lEQVRYw+2X328UVRTHP+fOTHe23YVuK9IKtNDFEMtPQWPEQBSNIYZHYuKLPPrkf+ADbz5q/COMMT5RY0wwUUSNigpIW6FohRawpb+77bbb2Znrw+5sZ3dnt7tLG/rATSYz851z55x7z/mec64ku7s1m3iYWufsE8C3NPgcHD4eJrtRmCkiZUaUClLB2GqYrBNW2EFEQOvinROh8L0BjHXAlL+Dkv8g+WcJCEujOxDwTqOYGXzxjSxzWamRgfeq2DoYuaEkCZtbL2aGWU4N5KjVzTwiVkaSaqPWHSyERQjp6sWqk0SkLLaQkDVXSFWV4rkezNR+msjjOsQAHwuTqYoFFDWKmYSQJGw882yWM++ncDLCtYs2N76zcZ3cpI0kidRSi59/c4njZ9NYkfzqNCzOCouziukHBv/9bXHvlsnsmIHnyvrWYmogSe/JTME4XzSW0MQSLtv3uDz3ygrag7kJxZ0/Lfov2UyOGtVdUuMw2lpbz+t8UtQlhNAiiAiJ7S4dSSeXTLUuKm0+JkqItHh09GQ58GqG5rjHyGATnhdwXf5/RaGwBmYkWlvPF7Ewz9wgNjJgkUkrdvU6iFp71SLQ0ZMl0eFxt78J1y3+X5iOSpiR2Lr1fLXE7FNqfNjk4R2Trl4Hy67Nd+07PXqOrHDvL5PllDSUuKXehjXW5vL6uUV2H3ZCU2LYWJwVvvhwCzNjZt0xqNB6lRz+c5VrYUrR90mc2fHiqdVGS6vmtXfTILomHcFLVUvSOhATQZlEp0vr0x6/f2Vz86emwPp0WV/oYzv2OWxp9wpFQZfoqIStWUnCsnzPkRU8F65dtFmYUYwNL3PynTTKWDWqzFWGpm2Hy9yksTGVxJcRBT1HVxgZtFiYUaDh+jc2qSmD0++lsGzN/IRBalpht2jad7g51wLxNo9ozGPfSxm6Djh4nvDj583MjKn6261SGr/w1jKiNFu2eXTscbk/JLTvdJkbN8g6MHzVYnTQInnM4de+KAPf24ho3v5gns69WQAOnVrm+Nk00diqCQ/vGFzpa67cblWtJIXEDPeHTBBQt8GwNOk5RefeLIffWOZKXxSA3Ycc3CyMDlq5ZXkw9EtTwcBtXW5JfMLkqFn1TGL6VaGQwQPCOlApHtw2CzKzYwanzi1w+bNmhAhahP0nllGmZnTQYn5SFeYOXI5w9PQy8Xav8N+5CUU05pGeV4wMWMWVKaBXa40KI4l/+UYWWJXHFuZyqcaOaeLtHoKm+6ADwI1vbTSrczNLigsfx7l302RixOCPr22m7xsYFlz6tIWsI6skKdHbEEk0YFpgNmk6k1l6T2QwLc2eww6pKYPhq01FHbJIztWDP0R4apdL8tgKrgMXPopzt98qc29D7Vbp2Pdyho6eLKkphR3z2H8iw93+XBfzYMgqkt19aIUXzyxx6+cIytBE45p/r1uM/WPVpEuSXV36UQ7aB1/PEIl6/PZltCLBlAFeNoftPZYhNa0YHzZr0iHJ7m6ttS60N0Uk8duvvMuCRPKlIs0azxWyGcpbpkDSbhRrqJIEZTJLUpa8HsuZZNMd3NksB/eaKsljxFTd8Re4r4mVtlENYI9Mkk1zcH9Ckick2SCS/A/o5/nVx5zr4AAAAABJRU5ErkJggg==" width="20" height="20"> </a> + </div> + </div> +</div> + + + + + </div> + + <div class="discussion-timeline js-quote-selection-container"> + + <div class="js-discussion js-socket-channel" data-channel="gaye/dav:marked-as-read:36737375"> + + + <div class="timeline-comment-wrapper js-comment-container"> + <a href="https://github.com/gaye"><img alt="@gaye" class="timeline-comment-avatar" data-user="535859" src="data:image/jpeg;base64,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" width="48" height="48"></a> + <div id="issue-36737375" class="comment timeline-comment js-comment js-task-list-container owner-comment" data-body-version="9f37549a0b61246ccaffcc785a191e3e"> + + <div class="timeline-comment-header "> + + + <span class="timeline-comment-label">Owner</span> + + + <div class="timeline-comment-header-text"> + + <strong> + <a href="https://github.com/gaye" class="author">gaye</a> + </strong> + + commented + + <a href="#issue-36737375" class="timestamp"> + <time title="29 Jun 2014 03:47 GMT+2" datetime="2014-06-29T01:47:38Z" is="relative-time">on 29 Jun 2014</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body markdown-format js-comment-body"> + <p>Right now using the WebDAV bits looks like</p> + +<pre><code>var dav = require('dav'); + +var client = new dav.Client( + new dav.transport.Basic( + new dav.Credentials({ + username: 'xxx', + password: 'xxx' + }) + ), + { + baseUrl: 'https://mail.mozilla.com' + } +); + +var req = dav.request.basic({ + method: 'PUT', + data: 'BEGIN:VCALENDAR\nEND:VCALENDAR', + etag: '12345' +}); + +// req instanceof dav.Request + +client.send(req, { url: '/calendars/123.ics' }) +.then(function(response) { + // response instanceof XMLHttpRequest +}); +</code></pre> + +<p>This is quite verbose and I think there's room for some cleanup.</p> + </div> + </div> + + </div> +</div> + + </div> + + <div class="discussion-item discussion-item-ref"> + <div class="discussion-item-header" id="ref-issue-66981967"> + <span class="octicon octicon-bookmark discussion-item-icon"></span> + + <img alt="@millermedeiros" class="avatar" data-user="155633" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACl0lEQVRYw+2Wy0tUYRjGf985Z86cuaijpmaCY6Z0sShSF90QwjbZyk2LgiD/h1Yt/CdaRKsiCGoRLRIKwigzBCsisxmSES+j4o0cPXM51xYj3WfMYUKCeZbn43znd57vfZ/3E/vCYZcdlMQOqwRQAigBbAkgJJdQnY0k/5u4UPItev0OXZd1Dp0ySCxLjDzysTonszonk0kWxzyRLwm7r25wuCvz23PbhpUZmakxD7F3KvMTCiCK70Bi+c9/KctQ22RT22TT0ZNmfkLhyc0ga0vytgHkqlCoP9diPKqQ1gWNbSYih+NCQFm1Q0u7QTzqQf8iFQ8ABAsxD3OfFRrbTFRfvnpxOXg6w/qKxPKMUtw2nBlXuXs9xEIsv8WKB8716expNYufAxldEAg5fBj0sraY+zVJhqPd6eID1DZZaAGXoQd+7vVXMD2e2+aasPVTjoBbaA2ApLgICTovpMjoEh9faFimIDriZVejRVW9w+uHPiZGVSp322hBF0lxWZxU6Lqkc/aKTmuHwdhzbfttCC4nepNIAkK1Dorq0n4+RTIh+DSkofldMinB6GMftilQVDhzMYmqQe+19W+7lFU7heUACF7dD2y2m0t3n86bAR9CcvGXO9S3WkSGVWwzG0LjL7109KTwBbOWJxMCVXOJDHsLP4IfYWJvPdTttUFA83GT5mMmg3cCbKxmu8MyBPGogqq5zEYUHFsgBDy9FcQyRCEOfJe/3KGlw0DVHA6cNKhusIlHlM0YzipYZdPaaSAkaNhvsTwrM3CjIu/c+GuAdFIw+d5Dck2ios7h2e0AC7/MAMsQRIa9LE3LBCsdwkfMLYeWKORaXhO2WJrait1FksGxReHDKJe2/ni2Zhy7dCUrAZQA/gOAry0E5nMVAk9oAAAAAElFTkSuQmCC" width="16" height="16"> + <a href="https://github.com/millermedeiros" class="author" truncate="true">millermedeiros</a> + + referenced + this issue + <a class="timestamp" href="#ref-issue-66981967"> + <time title="7 Apr 2015 22:23 GMT+2" datetime="2015-04-07T20:23:56Z" is="relative-time">8 days ago</time> + </a> + </div> + + <span class="state state-open right"> + <span class="octicon octicon-issue-opened"></span> + Open + </span> + + + + <h3 class="discussion-item-ref-title"> + <a href="https://github.com/gaye/dav/issues/71" class="title-link"> + convert all models into JSDoc @typedef + <span class="issue-num">#71</span> +</a> </h3> + + </div> + + + <div class="timeline-comment-wrapper js-comment-container"> + <a href="https://github.com/millermedeiros"><img alt="@millermedeiros" class="timeline-comment-avatar" data-user="155633" src="data:image/png;base64,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" width="48" height="48"></a> + <div id="issuecomment-90722974" class="comment timeline-comment js-comment js-task-list-container " data-body-version="8759c6f0c88e728fe2a3be6f81421a33"> + + <div class="timeline-comment-header "> + + + + + <div class="timeline-comment-header-text"> + + <strong> + <a href="https://github.com/millermedeiros" class="author">millermedeiros</a> + </strong> + + commented + + <a href="#issuecomment-90722974" class="timestamp"> + <time title="7 Apr 2015 22:32 GMT+2" datetime="2015-04-07T20:32:37Z" is="relative-time">8 days ago</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body markdown-format js-comment-body"> + <p>if you remove the unnecessary constructors it gets a little bit simpler:</p> + +<div class="highlight highlight-js"><pre><span class="pl-k">var</span> dav <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>dav<span class="pl-pds">'</span></span>); + +<span class="pl-c">// use `dav.transport.Basic` by default if single argument & no `send()` method</span> +<span class="pl-k">var</span> client <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">dav.Client</span>({ + baseUrl<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>https://mail.mozilla.com<span class="pl-pds">'</span></span>, + credentials<span class="pl-k">:</span> { + username<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>xxx<span class="pl-pds">'</span></span>, + password<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>xxx<span class="pl-pds">'</span></span> + } +}); + +<span class="pl-k">var</span> req <span class="pl-k">=</span> { + method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>, + data<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>BEGIN:VCALENDAR<span class="pl-cce">\n</span>END:VCALENDAR<span class="pl-pds">'</span></span>, + etag<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>12345<span class="pl-pds">'</span></span> +}; +client.<span class="pl-c1">send</span>(req, <span class="pl-s"><span class="pl-pds">'</span>/calendars/123.ics<span class="pl-pds">'</span></span>).then(response <span class="pl-k">=></span> { + <span class="pl-c">// response instanceof XMLHttpRequest</span> +});</pre></div> + +<p>see: <a href="https://github.com/gaye/dav/pull/70" class="issue-link" title="Simplify request logic">#70</a>, <a href="https://github.com/gaye/dav/issues/71" class="issue-link" title="convert all models into JSDoc @typedef">#71</a> </p> + </div> + </div> + + </div> +</div> + + </div> + + + +<!-- Rendered timeline since 2015-04-07 13:32:37 --> +<div id="partial-timeline-marker" class="js-timeline-marker js-socket-channel js-updatable-content" data-channel="gaye/dav:issue:36737375" data-url="/gaye/dav/issues/50/show_partial?partial=timeline_marker&since=1428438757" data-mark-as-read-url="/gaye/dav/notifications/mark?ids=35788224" data-last-modified="Tue, 07 Apr 2015 20:32:37 GMT"> +</div> + + + </div> + + <div class="discussion-timeline-actions"> + + +<div class="timeline-comment-wrapper timeline-new-comment js-comment-container "> + <a href="https://github.com/mcepl"><img alt="@mcepl" class="timeline-comment-avatar" data-user="198999" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAK2klEQVR42u2dW6htVRmAv3/Mueaac6690523w1HTgjzRUyEUkWVXjKweAsMwUDBfyofIOF3QJyXLCHpQAoNAKiOoh0B9Uyo0FRIiyZCoo+i5eE7i8RzPus/x9zDGuuy957pfztzHOWEx/7X2XHOO9Y9/fOMf/z/G2GKtVRFBVemde4dqmyNHfoBqE5F/AhYR6F0yjTztdYvIxTuEU6c2EYk5cODXiFS36XZYDkWk/+Hw2VUAgAUsDbEgtnf/4WdNluf5zjzPKMqhgGSI11eebntyuOu7viW4iyybmy9Qp85HNp+lTkZ5TD4SFZ7hfFJq3oB367Yn76qA4Vpy7xWw1CVzraA8Jh8WEIvsMNjcFqCzgFRL3c5FpDE6NiJCXj+wsyX0mSulPJW8w/LzdCsimJ1NIlfxrLlD3evyKLWVCCoggvKsv0TQGhE0bhxQIqhEUImgEkElgkoElQgqB2LlQKxEUImgEkElXpaPoLAICKpmht//+VpiG3Dbbb9AFbrdcEy7VozPzj3H1aDKBbw+ngI95fwQzgRw8Q1QD0sE9Y9m4GLnlUobVaHTqfiMnIz8MaqgqLtCxxRPgIo71wOv+DUidZyOw50Zmu1ZmxGWr8uVW8bytWueBOD+g/fRbkccPHgfrVaVLAtGjCAzlxfGDHKtebf3ytfvgFSc5YOriPwvLEnOsfyxGbGz6gUJtAKXbdOkgQ2yIevJA6uiAwdu2w/OfZSCxEA0ZP2lF5R/3P6V3yGNlK177mTjTMprr10ypjg6ZMYjimeAKnADkJwdT67wCBqW25UMOl0QZWAwO7/QQ47sKt7I24cOQSvFzhwIKuZAbKoHz1+0ciA2eyMeiaAxhpd/m4IhqLjh6LEPpo+gEX16vlyGo0sElQgqEVQiqERQiaASQSWCzjUEVTND1ZqBhZ2LCFJILaRZARH0h798nGaQcdNHn6Jl7DmJoNTCS0+5Ctj4xJJiQb3aWDQWFNtgyqDMFPJIu94dCxJmeKwsXrY0g5qd4j7ThqOXhaA77vgpYdjhJzc/hE0aHLz5IdqV7twIUhVQWR6CWkAwH4LSDI4/BrU68D2gBRwtGIJU3avdjrAmg3oKlc5cTV3qKagMtcAFEaRA012Y1udAT9cpXVtDD9GCIchaQ7OZcNddd6MqxPfcRSzzAVdV+N+Ji4aSMQsgyAJ10M85BB0P5uuC0tP+/hV//6IhqCe02xGqQuVMza8vm+cHC+pf23/dAghquA9qMl8F0PL3CXM94iIMxJySrDWoCqdPb67UA5qIINnh+by1FsfsLA7EZhsSTSkPW8uMAzFZ7XhrafOClhoLWnrAyP0iVbdc1hmSTmjm/mt2DSGfIiJoVUGjQTllMoLWEe95eyBop+zL58G+DUHirV9BdPUhnwIiKM8WdYTJzC8LTrvSbwPejR4xPWWlcpEQZLAgSiAZVs1K274Axm+b8CbnISihdpFVb58iDFxrfbNYAzER1/R7HaF6RPTsdLmyDjpchkbMIit/riLTxZTWPRB7Qj+FAhkBq95HRoHTbALCh/VZVKFJzOr3r1HOo2f5+4vnBfXsZdU7KYkIgvbjT/2irZpA4g19xrD2WhC0xRvrSfmJq+pQXaS1SewjBfE2M1hNA1Aibbt+oGgIWu/mVeo63B6MlRzlr6FERQtHr+XH6s5YkHrndHWDwD0xEFt17EVyW5rsmiGdHztabmxqqrHm2YgFrST2MiK2k9/qR8WOhJVM+nnbIEjHhaPze7/tsSMtLIKWOhDr94sMZY6YMwfeHXi0+fmwAYJ0WwF3Z/dFlDDs9uV5Drdqc4cuipUR82Lk88PJAjEWn0ARBqPrvFYuYwvnNNRTeBw33Gh9zikzrWa8u8SFQpDg1mJ9FzSGYze6ZUFzOTwN2PdZoAEcH1ecyWl5YyxJ0uDRR68nSZpk+47OXB6bBbzw+GdoNhLuvff7tNtRQREESAQa+RZQ8RgZihNNI/f6zFGtfHoEDf6SJE1XAWkjFwXj5KwbEFVbqDXbHYNCIehut/b24utyloLOeKR1N3uhZqbfDXmsbyTK1tYbpGmd/e98Y75C3fQw1W7Ar/YfIc4CvlQ0BJ0J/OLnJY6FdOLfZ5uc6CZ7LVamVm8Nc9EQdPF17u1SVqBPcDTmQdDU6Bi3oj/I+PqnHy+mF7TUFehTXjItgna1qUVW9IdZMb2gsxFuORsImi+IukcXaEyOyEyzRCMHQWsq/zSxoMKvESsUguYof4mgEkElgkoElQgqEVQiqERQiaA9gaA082uydLkIyrLAJVWKtmXZsmJBy5KPPwK0ID3hVjYuGguy1tBuRzz22OeJojZ84+eF2rIsLASC/Ap0gFqD/nqsPrdzyOHyBX6auoCoDmeEdxW52YzJsoCo60K27SBbbq5+LyMotfDS0w4/eqd/TtW/RnoPFgUu4HUUoTXuYuCBB76JiPLgFS/TDrvc/oVHXCWUCBqwv2aB9o7k/lgE+b9pL/crI7JaSqdTQQTiLJwc7y4OgoR229DBrBRB9QA2rvWfvTKtXZ3y53fNZI03rsOjAzqdgA7BMhBUASISv3VAQ8o97McdCe6feQpRn6FzI8jaCt3unYRa55lj/wWaXLX/2Hq8iD0qP3diA6FKIj/DSApEi3pBMYIl1QQwJNb4rRfs6ryIvSYrxCqI4vVUxUiKSMLu9c7bZbHWjl92oRZQTp48hKrl8Mmv0hTLtVc+T7P897bORFV46vCVJCqcH/0GEcNFF34AkQCR8evlJnhBijGBr4QYESXVYFD5UmIHP58pUSFVg5AgCMaEiJiJ845EdbZpte12E2vbHDp0N3XqXHPgQZqm+/a0fBvw5ItfJiXl0kt/jDERGxtbM90j1DmnNRsTYeiSaIxYt6GOAs1z3EuKtRd/jYhtgDFVRKP+moRZ9SnWWh2HoLzt7d37DlYzDr32JKqWTufbNMTysctfpGn0nERNbIWnj15KokKn8yOMhFx12fUeNxE7cT5Kh1N7Qbm9dv8cgc2oUUPJ6JBisCRaRawFOqDQMLqnPZxEcRNXNfScT0lU6FJDcC3AmHDigGtuL2hynMP6kd9bqHb59+HfotqgEt0PdHj/5Uf3NHL+c/wCVEPOvHUrIjFXXnIrRiokyZZXZLDQ/Sd6QZNkMD7LkwAdEq2imlGxxrlge9xTSv3OXVYrCBFCAlQwJpxZV0vxgqaN/nU6bQBeffVhhyN+SV1afOiKf9AwxRw/JFb42yvvJbER1t4ChOzbd4sLFqbvmC5UP2sL0JWvag+9OcUYMSQag7VALxTszpkf1LXX6s0I9AONjvFGEoyJUK30ANFvFqvQ1cxe0DTycEFVe2OELqqWl0/8C1VLu/NHr/wnyOjwp63nycTyrY3Ve1CxFf565H0kGmLtJ4GAIPgiRgzv2Xe153o4ZEDM5eGsxAuaxVNycqUfVbXWkpKCWCrUfAXUvA+VkqklsV0GyQj/Gt4IQjU/QbRL9patg77KVYIhwVAjJaGCJXUVQA3BIJJgTDCmRctS5YW9oPmzQ90+ghTl1JmTABx/8++ABV4EMkRe9hp9yRfc5QGMdLfVh/rYu2rN3/fdfmB0GW7L3AOAYWPjg4gIl2xe6BHUU7YPsYhZa7+zsBc0u9fUq/3If+7Ooad/qjGq1g9sMtCKz3b1vI4AEUUI+uvS1Fu822s08Pev+H1HIyBANUbEkGrqN3xK1vJ7J8n/B6Hpc8y1RCwMAAAAAElFTkSuQmCC" width="48" height="48"></a> + + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/issue_comments" class="js-new-comment-form" data-remote="true" data-type="json" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="y6qtcUj53XrDWX2fInTm4Pg1lOLb4LihV4QSentCJ+AyciVV4pOZks9a0kEGQtD/IvkurD+WzTKGfjViJeqYHQ==" type="hidden"></div> + <div class="timeline-comment"> + <input name="issue" value="50" type="hidden"> + +<div class="js-previewable-comment-form js-suggester-container previewable-comment-form write-selected" data-preview-url="/preview?repository=20107688"> + <div class="comment-form-head tabnav"> + <div class="right"> + <a class="tabnav-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"> + <span class="octicon octicon-markdown"></span> + Markdown supported + </a> + +<a href="#fullscreen" class="enable-fullscreen js-enable-fullscreen tooltipped-n + tabnav-extra"> + <span class="octicon octicon-screen-full"></span> + Edit in fullscreen +</a> + + </div> + <nav class="tabnav-tabs"> + <a href="#" class="tabnav-tab write-tab js-write-tab selected">Write</a> + <a href="#" class="tabnav-tab preview-tab js-preview-tab">Preview</a> + </nav> + </div> + + <div class="comment-form-error js-comment-form-error" style="display:none"> There was an error creating your Issue. +</div> + <div class="write-content js-write-bucket js-uploadable-container js-upload-markdown-image upload-enabled is-default" data-upload-policy-url="/upload/policies/assets"> + + <textarea name="comment[body]" tabindex="1" id="new_comment_field" placeholder="Leave a comment" aria-label="Comment body" class="input-contrast comment-form-textarea js-comment-field js-task-list-field js-quick-submit js-size-to-fit js-quote-selection-target js-session-resumable js-suggester-field"></textarea><img style="cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0px ! important; margin: 0px ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important; left: 868px ! important; top: 1652px ! important;" title="It's All Text!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAADdklEQVQ4y42UP4xVRRjFfzP37q7LxgBvV8FEjDEhxsJEo52VFhqpNBTIkqgFyZIIFhLtqdRCo3aiW5gYlMQoHYmxtsFCAyJ/tsDg7sLuu/fy3p25f969830W7/qWECCeZv5lzplv5pwxdPhjRSLnwsKunn1oz2573hhouAMKGO4LEfAOshSKspbBoHrh4qXLmqSJ29i8eTUGuLSmkc/lZV+Ew6mVfdkQrLFsm42Iok5BAHs7893HbaPkLlCPoB1pSDJ/0kZT/xRFfa6pq89igNzr3rblvbrS51eHzQNtgDiyTE0ZDAZF7l/eHUsqigIiMpUXzd7c17uq0tkgOhMDOK9HEV5qgrWuMBhtsSZgLKhKx6YdW9c3sPjaTk79lG31z2QTcWMgBPCFzKRpPp9lG3tnZnc8HQPMbrPvJH2hqi31KBBC6Db+d3TZqgTGbN0gL8ftl6dSUEVRDh+YZ/l0hqoQdMo0TRMVZbHn0cefPWsBNjchHxqyLJC7Ed4HfCnseWSapcUeCzsjvFd8qTy8EPPW/h0sLc4D4AvBF4GlxR6+EI4cWiCODUuHevhSqWtoW0Oa9Kdurq9FFmAjgf4tQzaoGDohL5W8EPa9+CBfn07Z/+oO8lLIC+H1V7bzw9khX32fjisshNxvVXviiw0ATny+gSvGe1wR8N6RpCkxQJJAXYIvAqGVzgCGIMrhAz1EFO8VjNK2yoXLFdLdsi8UdCzovUyM4wtBEeqyJEv7eO/wvhgLrq+ViLSENhCCTnweWcOnywkr10YTKw69ML8zZnZmnAnnQ/em4IqxwUQUG0E2aMhv9VlbvUI+6DM3l4wFs4EbP7gqop1hUD5Z7nPkYI+5bZY3j6+CEc78POTdt3vMTHeChU4M5EoFBGsNH76/izeOnmdzfYUsXSVIzI31CycNwIFj1z4ObftBWQ5QgWh6DmuiLUd2V3Z7Oia4Y05VCKFmVCa4wTWGyZ9UfoO6HmQqo5MxQOnzi8PB+mXvkidDqLHRLNZOd4E3d0m33iX93Zq2NPUAN7hK5a6DtkgYFSKjK8ba6zHA9b9/+7FtysfqKj/YjIqnmtYRGo+G6h7k94aqoKFGpUIlYKK41VD9ZZBvMHw3+ZCeeO6j7ah5JoSw38zsPqahIrTlVuj/t2BAZUSo+4TRjd+ldedsNP2tBvdrsvpL+y+TkkabJ8Dt4AAAAABJRU5ErkJggg=="> + + <p class="drag-and-drop"> + <span class="default"> + Attach images by dragging & dropping or + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <a class="manual-file-chooser-text" href="#">selecting them</a>. + </span> + <span class="loading"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> Uploading your images… + </span> + <span class="error bad-file"> + Unfortunately, we don't support that file type. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a PNG, GIF, or JPG. + </span> + </span> + <span class="error too-big"> + Yowza, that's a big file. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with an image file smaller than 10MB. + </span> + </span> + <span class="error empty"> + This file is empty. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a file that's not empty. + </span> + </span> + <span class="error bad-browser"> + This browser doesn't support image attachments. + <span class="drag-and-drop-error-info"> + We recommend updating to the latest + <a href="http://windows.microsoft.com/ie">Internet Explorer</a>, + <a href="https://chrome.google.com/">Google Chrome</a>, or + <a href="https://www.mozilla.org/firefox">Firefox</a>. + </span> + </span> + <span class="error failed-request"> + Something went really wrong, and we can't process that image. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again.</a> + </span> + </span> + </p> + + </div> + + <div class="preview-content"> + <div class="comment"> + <div class="comment-content"> + <div class="comment-body markdown-body js-preview-body"> + <p>Nothing to preview</p> + </div> + </div> +</div> + + </div> + + + <div class="suggester-container"> + <div class="suggester js-suggester js-navigation-container" data-url="/gaye/dav/suggestions/issue/36737375"> + </div> + </div> +</div> + + <div class="form-actions"> + <div id="partial-new-comment-form-actions" class="js-socket-channel js-updatable-content" data-channel="gaye/dav:issue:36737375:state" data-url="/gaye/dav/issues/50/show_partial?partial=form_actions"> + + <button type="submit" class="btn btn-primary" tabindex="2" data-disable-with="" data-disable-invalid=""> + Comment + </button> + + +</div> + + + </div> + </div> +</form> +</div> + + + </div> + </div> + + </div> + <div class="clear"></div> + </div> + +</div> + + + </div> + + </div><!-- /.repo-container --> + <div class="modal-backdrop"></div> + </div><!-- /.container --> + </div><!-- /.site --> + + + </div><!-- /.wrapper --> + + <div class="container"> + <div class="site-footer" role="contentinfo"> + <ul class="site-footer-links right"> + <li><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li> + <li><a href="https://developer.github.com/" data-ga-click="Footer, go to api, text:api">API</a></li> + <li><a href="https://training.github.com/" data-ga-click="Footer, go to training, text:training">Training</a></li> + <li><a href="https://shop.github.com/" data-ga-click="Footer, go to shop, text:shop">Shop</a></li> + <li><a href="https://github.com/blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li> + <li><a href="https://github.com/about" data-ga-click="Footer, go to about, text:about">About</a></li> + + </ul> + + <a href="https://github.com/" aria-label="Homepage"> + <span class="mega-octicon octicon-mark-github" title="GitHub"></span> +</a> + <ul class="site-footer-links"> + <li>© 2015 <span title="0.12762s from github-fe131-cp1-prd.iad.github.net">GitHub</span>, Inc.</li> + <li><a href="https://github.com/site/terms" data-ga-click="Footer, go to terms, text:terms">Terms</a></li> + <li><a href="https://github.com/site/privacy" data-ga-click="Footer, go to privacy, text:privacy">Privacy</a></li> + <li><a href="https://github.com/security" data-ga-click="Footer, go to security, text:security">Security</a></li> + <li><a href="https://github.com/contact" data-ga-click="Footer, go to contact, text:contact">Contact</a></li> + </ul> + </div> +</div> + + + <div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay"> + <div class="fullscreen-container js-suggester-container"> + <div class="textarea-wrap"> + <textarea name="fullscreen-contents" id="fullscreen-contents" class="fullscreen-contents js-fullscreen-contents" placeholder=""></textarea><img style="cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0px ! important; margin: 0px ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important;" title="It's All Text!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAADdklEQVQ4y42UP4xVRRjFfzP37q7LxgBvV8FEjDEhxsJEo52VFhqpNBTIkqgFyZIIFhLtqdRCo3aiW5gYlMQoHYmxtsFCAyJ/tsDg7sLuu/fy3p25f969830W7/qWECCeZv5lzplv5pwxdPhjRSLnwsKunn1oz2573hhouAMKGO4LEfAOshSKspbBoHrh4qXLmqSJ29i8eTUGuLSmkc/lZV+Ew6mVfdkQrLFsm42Iok5BAHs7893HbaPkLlCPoB1pSDJ/0kZT/xRFfa6pq89igNzr3rblvbrS51eHzQNtgDiyTE0ZDAZF7l/eHUsqigIiMpUXzd7c17uq0tkgOhMDOK9HEV5qgrWuMBhtsSZgLKhKx6YdW9c3sPjaTk79lG31z2QTcWMgBPCFzKRpPp9lG3tnZnc8HQPMbrPvJH2hqi31KBBC6Db+d3TZqgTGbN0gL8ftl6dSUEVRDh+YZ/l0hqoQdMo0TRMVZbHn0cefPWsBNjchHxqyLJC7Ed4HfCnseWSapcUeCzsjvFd8qTy8EPPW/h0sLc4D4AvBF4GlxR6+EI4cWiCODUuHevhSqWtoW0Oa9Kdurq9FFmAjgf4tQzaoGDohL5W8EPa9+CBfn07Z/+oO8lLIC+H1V7bzw9khX32fjisshNxvVXviiw0ATny+gSvGe1wR8N6RpCkxQJJAXYIvAqGVzgCGIMrhAz1EFO8VjNK2yoXLFdLdsi8UdCzovUyM4wtBEeqyJEv7eO/wvhgLrq+ViLSENhCCTnweWcOnywkr10YTKw69ML8zZnZmnAnnQ/em4IqxwUQUG0E2aMhv9VlbvUI+6DM3l4wFs4EbP7gqop1hUD5Z7nPkYI+5bZY3j6+CEc78POTdt3vMTHeChU4M5EoFBGsNH76/izeOnmdzfYUsXSVIzI31CycNwIFj1z4ObftBWQ5QgWh6DmuiLUd2V3Z7Oia4Y05VCKFmVCa4wTWGyZ9UfoO6HmQqo5MxQOnzi8PB+mXvkidDqLHRLNZOd4E3d0m33iX93Zq2NPUAN7hK5a6DtkgYFSKjK8ba6zHA9b9/+7FtysfqKj/YjIqnmtYRGo+G6h7k94aqoKFGpUIlYKK41VD9ZZBvMHw3+ZCeeO6j7ah5JoSw38zsPqahIrTlVuj/t2BAZUSo+4TRjd+ldedsNP2tBvdrsvpL+y+TkkabJ8Dt4AAAAABJRU5ErkJggg=="> + <div class="suggester-container"> + <div class="suggester fullscreen-suggester js-suggester js-navigation-container"></div> + </div> + </div> + </div> + <div class="fullscreen-sidebar"> + <a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped tooltipped-w" aria-label="Exit Zen Mode"> + <span class="mega-octicon octicon-screen-normal"></span> + </a> + <a href="#" class="theme-switcher js-theme-switcher tooltipped tooltipped-w" aria-label="Switch themes"> + <span class="octicon octicon-color-mode"></span> + </a> + </div> +</div> + + + + + + + <div id="ajax-error-message" class="flash flash-error"> + <span class="octicon octicon-alert"></span> + <a href="#" class="octicon octicon-x flash-close js-ajax-error-dismiss" aria-label="Dismiss error"></a> + Something went wrong with that request. Please try again. + </div> + + + <script crossorigin="anonymous">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> + <script async="async" crossorigin="anonymous">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> + + + + + + + + <div class="facebox" id="facebox" style="display:none;"> <div class="facebox-popup"> <div class="facebox-content"> </div> <button type="button" class="facebox-close js-facebox-close" aria-label="Close modal"> <span class="octicon octicon-remove-close"></span> </button> </div> </div></body></html>
\ No newline at end of file diff --git a/rfcs/Simplify request logic by millermedeiros · Pull Request #70 · gaye_dav.html b/rfcs/Simplify request logic by millermedeiros · Pull Request #70 · gaye_dav.html new file mode 100644 index 0000000..9a19d47 --- /dev/null +++ b/rfcs/Simplify request logic by millermedeiros · Pull Request #70 · gaye_dav.html @@ -0,0 +1,10049 @@ +<!DOCTYPE html> +<html class="" lang="en"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta http-equiv="Content-Language" content="en"> + + + <title>Simplify request logic by millermedeiros · Pull Request #70 · gaye/dav</title> + <link rel="search" type="application/opensearchdescription+xml" href="https://github.com/opensearch.xml" title="GitHub"> + <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> + <link rel="apple-touch-icon" sizes="57x57" href="urn:not-loaded:https://github.com/apple-touch-icon-114.png"> + <link rel="apple-touch-icon" sizes="114x114" href="urn:not-loaded:https://github.com/apple-touch-icon-114.png"> + <link rel="apple-touch-icon" sizes="72x72" href="urn:not-loaded:https://github.com/apple-touch-icon-144.png"> + <link rel="apple-touch-icon" sizes="144x144" href="urn:not-loaded:https://github.com/apple-touch-icon-144.png"> + <meta property="fb:app_id" content="1401488693436528"> + + <meta content="@github" name="twitter:site"><meta content="summary" name="twitter:card"><meta content="Simplify request logic by millermedeiros · Pull Request #70 · gaye/dav" name="twitter:title"><meta content="Centralize the XHR header logic into the transport itself since it's needed by all the requests, removing the need of the individual transformRequest calls. +Remove request.basic since it can be repres" name="twitter:description"><meta content="https://avatars1.githubusercontent.com/u/155633?v=3&s=400" name="twitter:image:src"> + <meta content="GitHub" property="og:site_name"><meta content="object" property="og:type"><meta content="https://avatars1.githubusercontent.com/u/155633?v=3&s=400" property="og:image"><meta content="Simplify request logic by millermedeiros · Pull Request #70 · gaye/dav" property="og:title"><meta content="https://github.com/gaye/dav/pull/70" property="og:url"><meta content="Centralize the XHR header logic into the transport itself since it's needed by all the requests, removing the need of the individual transformRequest calls. +Remove request.basic since it can be represented as a plain object. +Instead of u..." property="og:description"> + <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> + <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> + <link rel="assets" href="https://assets-cdn.github.com/"> + <link rel="web-socket" href="wss://live.github.com/_sockets/MTk4OTk5OjE1MmZhNDI3Y2IxNzUxNTU1MDhkZGRhODZmMTQzMDJmOjhjOTEwM2M3YWE1NjAzMzM3OTcwZThlYTA1Y2MzMThjOWE4YTU2ZGU3ODgyMDYwNTAwYzllYjRjNzZiZjk4OWU=--18adc7d0d9f6c29d3d7693ee4bb8d65be5d2240d"> + <meta name="pjax-timeout" content="1000"> + <link rel="sudo-modal" href="https://github.com/sessions/sudo_modal"> + + <meta name="msapplication-TileImage" content="/windows-tile.png"> + <meta name="msapplication-TileColor" content="#ffffff"> + <meta name="selected-link" value="repo_pulls" data-pjax-transient=""> + <meta name="google-analytics" content="UA-3769691-2"> + + <meta content="collector.githubapp.com" name="octolytics-host"><meta content="collector-cdn.github.com" name="octolytics-script-host"><meta content="github" name="octolytics-app-id"><meta content="53D0FC9F:1417:9F91047:552EA892" name="octolytics-dimension-request_id"><meta content="198999" name="octolytics-actor-id"><meta content="mcepl" name="octolytics-actor-login"><meta content="26667c59118a81b548139a896fa111ae07b11934d67d7ed9d1350c5adbca76a4" name="octolytics-actor-hash"> + + <meta content="Rails, view, pull_requests#show" name="analytics-event"> + <meta class="js-ga-set" name="dimension1" content="Logged In"> + <meta class="js-ga-set" name="dimension2" content="Header v3"> + <meta name="is-dotcom" content="true"> + <meta name="hostname" content="github.com"> + <meta name="user-login" content="mcepl"> + + + <link rel="icon" type="image/x-icon" href="index_files/favicon_ico"> + + + <meta content="authenticity_token" name="csrf-param"> +<meta content="4N4dcbPsFyUnRZ6CAYNu9rEXTN63maQeWzK+gbiOeuDApSPnrRmFNEbHXRyiW8ent++Vy/dtWrfKQnbHUo/h0A==" name="csrf-token"> + + <style media="all" rel="stylesheet">/* Effective stylesheet produced by snapshot save */
+html { font-family: sans-serif; }
+body { margin: 0px; }
+article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; }
+audio:not([controls]) { display: none; height: 0px; }
+a { background: transparent none repeat scroll 0% 0%; }
+a:active, a:hover { outline: 0px none; }
+b, strong { font-weight: bold; }
+h1 { font-size: 2em; margin: 0.67em 0px; }
+img { border: 0px none; }
+svg:not(:root) { overflow: hidden; }
+pre { overflow: auto; }
+code, kbd, pre, samp { font-family: monospace,monospace; font-size: 1em; }
+button, input, optgroup, select, textarea { color: inherit; font: inherit; margin: 0px; }
+button { overflow: visible; }
+button, select { text-transform: none; }
+button, html input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; }
+button[disabled], html input[disabled] { cursor: default; }
+button::-moz-focus-inner, input::-moz-focus-inner { border: 0px none; padding: 0px; }
+input { line-height: normal; }
+input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0px; }
+textarea { overflow: auto; }
+table { border-collapse: collapse; border-spacing: 0px; }
+td, th { padding: 0px; }
+* { box-sizing: border-box; }
+input, select, textarea, button { font: 13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"; }
+body { font: 13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255); }
+a { color: rgb(65, 131, 196); text-decoration: none; }
+a:hover, a:active { text-decoration: underline; }
+hr::before, .rule::before { display: table; content: ""; }
+hr::after, .rule::after { display: table; clear: both; content: ""; }
+h1, h2, h3, h4, h5, h6 { margin-top: 15px; margin-bottom: 15px; line-height: 1.1; }
+h1 { font-size: 30px; }
+h2 { font-size: 21px; }
+h3 { font-size: 16px; }
+.text-muted { color: rgb(153, 153, 153); }
+.text-emphasized { font-weight: bold; color: rgb(51, 51, 51); }
+ul, ol { padding: 0px; margin-top: 0px; margin-bottom: 0px; }
+tt, code { font-family: Consolas,"Liberation Mono",Menlo,Courier,monospace; font-size: 12px; }
+pre { margin-top: 0px; margin-bottom: 0px; font: 12px Consolas,"Liberation Mono",Menlo,Courier,monospace; }
+.container { width: 980px; margin-right: auto; margin-left: auto; }
+.container::before { display: table; content: ""; }
+.container::after { display: table; clear: both; content: ""; }
+.columns::before { display: table; content: ""; }
+.columns::after { display: table; clear: both; content: ""; }
+label { font-size: 13px; font-weight: bold; }
+.form-control, input[type="text"], input[type="password"], input[type="email"], input[type="number"], input[type="tel"], input[type="url"], textarea { min-height: 34px; padding: 7px 8px; font-size: 13px; color: rgb(51, 51, 51); vertical-align: middle; background-color: rgb(255, 255, 255); background-repeat: no-repeat; background-position: right center; border: 1px solid rgb(204, 204, 204); border-radius: 3px; outline: medium none; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.075) inset; }
+.form-control.focus, .form-control:focus, input.focus[type="text"], input[type="text"]:focus, .focused .drag-and-drop, input.focus[type="password"], input[type="password"]:focus, input.focus[type="email"], input[type="email"]:focus, input.focus[type="number"], input[type="number"]:focus, input.focus[type="tel"], input[type="tel"]:focus, input.focus[type="url"], input[type="url"]:focus, textarea.focus, textarea:focus { border-color: rgb(81, 167, 232); box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.075) inset, 0px 0px 5px rgba(81, 167, 232, 0.5); }
+input.input-contrast, .input-contrast { background-color: rgb(250, 250, 250); }
+input.input-contrast:focus, .input-contrast:focus { background-color: rgb(255, 255, 255); }
+input.input-mini { min-height: 26px; padding-top: 4px; padding-bottom: 4px; font-size: 12px; }
+.input-monospace { font-family: Consolas,"Liberation Mono",Menlo,Courier,monospace; }
+dl.form.required > dt > label::after { padding-left: 5px; color: rgb(159, 16, 6); content: "*"; }
+.hfields::before { display: table; content: ""; }
+.hfields::after { display: table; clear: both; content: ""; }
+.drag-and-drop { padding: 7px 10px; margin: 0px; font-size: 13px; line-height: 16px; color: rgb(170, 170, 170); background-color: rgb(250, 250, 250); border-width: 0px 1px 1px; border-style: none solid solid; border-color: -moz-use-text-color rgb(204, 204, 204) rgb(204, 204, 204); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; }
+.drag-and-drop .default, .drag-and-drop .loading, .drag-and-drop .error { display: none; }
+.drag-and-drop .error { color: rgb(189, 44, 0); }
+.drag-and-drop img { vertical-align: top; }
+.is-default .drag-and-drop .default { display: inline-block; }
+.drag-and-drop-error-info { font-weight: normal; color: rgb(170, 170, 170); }
+.drag-and-drop-error-info a { color: rgb(65, 131, 196); }
+.manual-file-chooser { position: absolute; width: 240px; padding: 5px; margin-left: -80px; cursor: pointer; opacity: 0.0001; }
+.manual-file-chooser:hover + .manual-file-chooser-text { text-decoration: underline; }
+.upload-enabled textarea { display: block; border-bottom: 1px dashed rgb(221, 221, 221); border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; }
+.previewable-comment-form { position: relative; }
+.previewable-comment-form .tabnav { position: relative; padding: 10px 10px 0px; }
+.previewable-comment-form .comment { border: 1px solid rgb(202, 202, 202); }
+.previewable-comment-form .comment-form-error { margin-bottom: 10px; }
+.previewable-comment-form .write-content, .previewable-comment-form .preview-content { display: none; padding: 0px 10px 10px; }
+.previewable-comment-form.write-selected .write-content, .previewable-comment-form.preview-selected .preview-content { display: block; }
+.previewable-comment-form textarea { display: block; width: 100%; min-height: 100px; max-height: 500px; padding: 10px; resize: vertical; }
+.input-group { display: table; }
+.input-group input { position: relative; width: 100%; }
+.input-group input:focus { z-index: 2; }
+.input-group input, .input-group-button { display: table-cell; }
+.input-group-button { width: 1%; vertical-align: middle; }
+.input-group input:first-child, .input-group-button:first-child .btn { border-top-right-radius: 0px; border-bottom-right-radius: 0px; }
+.input-group input:last-child, .input-group-button:last-child .btn { border-top-left-radius: 0px; border-bottom-left-radius: 0px; }
+.form-actions::before { display: table; content: ""; }
+.form-actions::after { display: table; clear: both; content: ""; }
+.form-actions .btn { float: right; }
+.form-actions .btn + .btn { margin-right: 5px; }
+.status-indicator-success::before { color: rgb(108, 198, 68); content: ""; }
+.status-indicator-failed::before { color: rgb(189, 44, 0); content: ""; }
+.flash, .flash-global { position: relative; font-size: 14px; line-height: 1.6; color: rgb(34, 68, 102); background-color: rgb(226, 238, 249); border: 1px solid rgb(186, 198, 211); }
+.flash.flash-warn, .flash-global.flash-warn { color: rgb(76, 74, 66); background-color: rgb(255, 249, 234); border-color: rgb(223, 216, 194); }
+.flash.flash-error, .flash-global.flash-error { color: rgb(153, 17, 17); background-color: rgb(252, 222, 222); border-color: rgb(210, 178, 178); }
+.flash .flash-close, .flash-global .flash-close { float: right; padding: 17px; margin-top: -15px; margin-right: -15px; margin-left: 20px; color: inherit; text-decoration: none; cursor: pointer; opacity: 0.6; }
+.flash .flash-close:hover, .flash-global .flash-close:hover { opacity: 1; }
+.flash a, .flash-global a { font-weight: bold; }
+.flash { padding: 15px; border-radius: 3px; }
+.avatar { display: inline-block; overflow: hidden; line-height: 1; vertical-align: middle; border-radius: 3px; }
+.avatar-small { border-radius: 2px; }
+.avatar-parent-child { position: relative; }
+.counter { display: inline-block; padding: 2px 5px; font-size: 11px; font-weight: bold; line-height: 1; color: rgb(119, 119, 119); background-color: rgb(238, 238, 238); border-radius: 20px; }
+.btn { position: relative; display: inline-block; padding: 6px 12px; font-size: 13px; font-weight: bold; line-height: 20px; color: rgb(51, 51, 51); white-space: nowrap; vertical-align: middle; cursor: pointer; background-color: rgb(238, 238, 238); background-image: linear-gradient(rgb(252, 252, 252), rgb(238, 238, 238)); border: 1px solid rgb(213, 213, 213); border-radius: 3px; -moz-user-select: none; }
+.btn .octicon { vertical-align: text-top; }
+.btn:focus { text-decoration: none; border-color: rgb(81, 167, 232); outline: medium none; box-shadow: 0px 0px 5px rgba(81, 167, 232, 0.5); }
+.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active { text-decoration: none; background-color: rgb(221, 221, 221); background-image: linear-gradient(rgb(238, 238, 238), rgb(221, 221, 221)); border-color: rgb(204, 204, 204); }
+.btn:active, .btn.selected, .btn.selected:hover, .btn.zeroclipboard-is-active { background-color: rgb(220, 220, 220); background-image: none; border-color: rgb(181, 181, 181); box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15) inset; }
+.btn:disabled, .btn:disabled:hover, .btn.disabled, .btn.disabled:hover { color: rgba(102, 102, 102, 0.5); cursor: default; background-color: rgba(229, 229, 229, 0.5); background-image: none; border-color: rgba(197, 197, 197, 0.5); box-shadow: none; }
+.btn-primary { color: rgb(255, 255, 255); text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.15); background-color: rgb(96, 176, 68); background-image: linear-gradient(rgb(138, 221, 109), rgb(96, 176, 68)); border-color: rgb(92, 169, 65); }
+.btn-primary:hover { color: rgb(255, 255, 255); background-color: rgb(86, 158, 61); background-image: linear-gradient(rgb(121, 216, 88), rgb(86, 158, 61)); border-color: rgb(74, 153, 62); }
+.btn-primary:active, .btn-primary.selected { text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.15); background-color: rgb(86, 158, 61); background-image: none; border-color: rgb(65, 135, 55); }
+.btn-primary:disabled, .btn-primary:disabled:hover, .btn-primary.disabled, .btn-primary.disabled:hover { color: rgb(254, 254, 254); background-color: rgb(173, 211, 159); background-image: linear-gradient(rgb(195, 236, 180), rgb(173, 211, 159)); border-color: rgb(185, 220, 172) rgb(185, 220, 172) rgb(167, 200, 155); }
+.btn-outline { color: rgb(65, 131, 196); background-color: rgb(255, 255, 255); background-image: none; border: 1px solid rgb(229, 229, 229); }
+.btn-outline:hover, .btn-outline:active, .btn-outline.selected, .btn-outline.selected:hover, .btn-outline.zeroclipboard-is-hover, .btn-outline.zeroclipboard-is-active { color: rgb(255, 255, 255); background-color: rgb(65, 131, 196); background-image: none; border-color: rgb(65, 131, 196); }
+.btn-outline:disabled, .btn-outline:disabled:hover, .btn-outline.disabled, .btn-outline.disabled:hover { color: rgb(119, 119, 119); background-color: rgb(255, 255, 255); background-image: none; border-color: rgb(229, 229, 229); }
+.btn-with-count { float: left; border-top-right-radius: 0px; border-bottom-right-radius: 0px; }
+.btn-sm { padding: 2px 10px; }
+.hidden-text-expander { display: block; }
+.hidden-text-expander.inline { position: relative; top: -1px; display: inline-block; margin-left: 5px; line-height: 0; }
+.hidden-text-expander a { display: inline-block; height: 12px; padding: 0px 5px; font-size: 12px; font-weight: bold; line-height: 6px; color: rgb(85, 85, 85); text-decoration: none; vertical-align: middle; background: rgb(221, 221, 221) none repeat scroll 0% 0%; border-radius: 1px; }
+.hidden-text-expander a:hover { text-decoration: none; background-color: rgb(204, 204, 204); }
+.hidden-text-expander a:active { color: rgb(255, 255, 255); background-color: rgb(65, 131, 196); }
+.social-count { float: left; padding: 2px 7px; font-size: 11px; font-weight: bold; line-height: 20px; color: rgb(51, 51, 51); vertical-align: middle; background-color: rgb(255, 255, 255); border-width: 1px 1px 1px 0px; border-style: solid solid solid none; border-color: rgb(221, 221, 221) rgb(221, 221, 221) rgb(221, 221, 221) -moz-use-text-color; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-top-right-radius: 3px; border-bottom-right-radius: 3px; }
+.social-count:hover, .social-count:active { text-decoration: none; }
+.social-count:hover { color: rgb(65, 131, 196); cursor: pointer; }
+.btn-group { display: inline-block; vertical-align: middle; }
+.btn-group::before { display: table; content: ""; }
+.btn-group::after { display: table; clear: both; content: ""; }
+.btn-group .btn { position: relative; float: left; }
+.btn-group .btn:not(:first-child):not(:last-child) { border-radius: 0px; }
+.btn-group .btn:first-child { border-top-right-radius: 0px; border-bottom-right-radius: 0px; }
+.btn-group .btn:last-child { border-top-left-radius: 0px; border-bottom-left-radius: 0px; }
+.btn-group .btn:hover, .btn-group .btn:focus, .btn-group .btn:active, .btn-group .btn.selected { z-index: 2; }
+.btn-group .btn + .btn { margin-left: -1px; box-shadow: 1px 0px 0px rgba(255, 255, 255, 0.2) inset; }
+.btn-group .btn + .btn:hover { box-shadow: none; }
+.btn-group .btn + .btn:active, .btn-group .btn + .btn.selected { box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.15) inset; }
+.btn-group + .btn-group, .btn-group + .btn { margin-left: 5px; }
+.btn-link { display: inline-block; padding: 0px; font-size: inherit; color: rgb(65, 131, 196); white-space: nowrap; cursor: pointer; background-color: transparent; border: 0px none; -moz-user-select: none; }
+.btn-link:hover, .btn-link:focus { text-decoration: underline; }
+.btn-link:focus { outline: medium none; }
+.menu-item:first-child::before { border-top-left-radius: 2px; }
+.menu-item:last-child::before { border-bottom-left-radius: 2px; }
+.menu-item.selected::before { position: absolute; top: 0px; left: 0px; bottom: 0px; width: 2px; content: ""; background-color: rgb(210, 105, 17); }
+.tabnav { margin-top: 0px; margin-bottom: 15px; border-bottom: 1px solid rgb(221, 221, 221); }
+.tabnav .counter { margin-left: 5px; }
+.tabnav-tabs { margin-bottom: -1px; }
+.tabnav-tab { display: inline-block; padding: 8px 12px; font-size: 14px; line-height: 20px; color: rgb(102, 102, 102); text-decoration: none; border-width: 1px 1px 0px; border-style: solid solid none; border-color: transparent transparent -moz-use-text-color; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.tabnav-tab.selected { color: rgb(51, 51, 51); background-color: rgb(255, 255, 255); border-color: rgb(221, 221, 221); border-radius: 3px 3px 0px 0px; }
+.tabnav-tab:hover { text-decoration: none; }
+.tabnav-extra { display: inline-block; padding-top: 10px; margin-left: 10px; font-size: 12px; color: rgb(102, 102, 102); }
+.tabnav-extra > .octicon { margin-right: 2px; }
+a.tabnav-extra:hover { color: rgb(65, 131, 196); text-decoration: none; }
+.state { display: inline-block; padding: 4px 8px; font-weight: bold; line-height: 20px; color: rgb(255, 255, 255); text-align: center; border-radius: 3px; background-color: rgb(153, 153, 153); }
+.state-open, .state-proposed, .state-reopened { background-color: rgb(108, 198, 68); }
+.tooltipped { position: relative; }
+.tooltipped::after { position: absolute; z-index: 1000000; display: none; padding: 5px 8px; font: 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol"; color: rgb(255, 255, 255); text-align: center; text-decoration: none; text-shadow: none; text-transform: none; letter-spacing: normal; word-wrap: break-word; white-space: pre; pointer-events: none; content: attr(aria-label); background: rgba(0, 0, 0, 0.8) none repeat scroll 0% 0%; border-radius: 3px; }
+.tooltipped::before { position: absolute; z-index: 1000001; display: none; width: 0px; height: 0px; color: rgba(0, 0, 0, 0.8); pointer-events: none; content: ""; border: 5px solid transparent; }
+.tooltipped:hover::before, .tooltipped:hover::after, .tooltipped:active::before, .tooltipped:active::after, .tooltipped:focus::before, .tooltipped:focus::after { display: inline-block; text-decoration: none; }
+.tooltipped-multiline:hover::after, .tooltipped-multiline:active::after, .tooltipped-multiline:focus::after { display: table-cell; }
+.tooltipped-s::after, .tooltipped-se::after, .tooltipped-sw::after { top: 100%; right: 50%; margin-top: 5px; }
+.tooltipped-s::before, .tooltipped-se::before, .tooltipped-sw::before { top: auto; right: 50%; bottom: -5px; margin-right: -5px; border-bottom-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-se::after { right: auto; left: 50%; margin-left: -15px; }
+.tooltipped-sw::after { margin-right: -15px; }
+.tooltipped-n::after, .tooltipped-ne::after, .tooltipped-nw::after { right: 50%; bottom: 100%; margin-bottom: 5px; }
+.tooltipped-n::before, .tooltipped-ne::before, .tooltipped-nw::before { top: -5px; right: 50%; bottom: auto; margin-right: -5px; border-top-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-ne::after { right: auto; left: 50%; margin-left: -15px; }
+.tooltipped-nw::after { margin-right: -15px; }
+.tooltipped-s::after, .tooltipped-n::after { transform: translateX(50%); }
+.tooltipped-w::after { right: 100%; bottom: 50%; margin-right: 5px; transform: translateY(50%); }
+.tooltipped-w::before { top: 50%; bottom: 50%; left: -5px; margin-top: -5px; border-left-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-e::after { bottom: 50%; left: 100%; margin-left: 5px; transform: translateY(50%); }
+.tooltipped-e::before { top: 50%; right: -5px; bottom: 50%; margin-top: -5px; border-right-color: rgba(0, 0, 0, 0.8); }
+.tooltipped-multiline::after { width: -moz-max-content; max-width: 250px; word-wrap: normal; white-space: pre-line; border-collapse: separate; }
+.tooltipped-multiline.tooltipped-s::after, .tooltipped-multiline.tooltipped-n::after { right: auto; left: 50%; transform: translateX(-50%); }
+.tooltipped-multiline.tooltipped-w::after, .tooltipped-multiline.tooltipped-e::after { right: 100%; }
+@media not all {
+ .tooltipped-multiline::after { width: 250px; }
+}
+.tooltipped-sticky::before, .tooltipped-sticky::after { display: inline-block; }
+.tooltipped-sticky.tooltipped-multiline::after { display: table-cell; }
+.fullscreen-overlay-enabled.dark-theme .tooltipped::after { color: rgb(0, 0, 0); background: rgba(255, 255, 255, 0.8) none repeat scroll 0% 0%; }
+.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s::before, .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se::before, .fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-sw::before { border-bottom-color: rgba(255, 255, 255, 0.8); }
+.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-n::before, .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-ne::before, .fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-nw::before { border-top-color: rgba(255, 255, 255, 0.8); }
+.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-e::before { border-right-color: rgba(255, 255, 255, 0.8); }
+.fullscreen-overlay-enabled.dark-theme .tooltipped.tooltipped-w::before { border-left-color: rgba(255, 255, 255, 0.8); }
+.flex-table { display: table; }
+.flex-table-item { display: table-cell; width: 1%; white-space: nowrap; vertical-align: middle; }
+.flex-table-item-primary { width: 99%; }
+.css-truncate.css-truncate-target, .css-truncate .css-truncate-target { display: inline-block; max-width: 125px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: top; }
+.css-truncate.expandable.zeroclipboard-is-hover .css-truncate-target, .css-truncate.expandable.zeroclipboard-is-hover.css-truncate-target, .css-truncate.expandable:hover .css-truncate-target, .css-truncate.expandable.css-truncate-target:hover { max-width: 10000px ! important; }
+.sunken-menu { position: relative; padding-top: 15px; padding-bottom: 15px; background-image: linear-gradient(to right, rgb(246, 246, 246) 0%, rgb(255, 255, 255) 8px); box-shadow: 1px 0px 0px rgb(238, 238, 238) inset; }
+.sunken-menu::before, .sunken-menu::after { position: absolute; left: 0px; width: 100%; height: 15px; content: ""; background-color: transparent; }
+.sunken-menu::before { top: 0px; background-color: transparent; background-image: linear-gradient(rgb(255, 255, 255), rgba(255, 255, 255, 0)); }
+.sunken-menu::after { bottom: 0px; background-color: transparent; background-image: linear-gradient(rgba(255, 255, 255, 0), rgb(255, 255, 255)); }
+.sunken-menu-separator { position: relative; height: 5px; margin: 8px 0px 6px 1px; background-image: radial-gradient(farthest-side at left top , rgb(244, 244, 244), rgba(244, 244, 244, 0)); }
+.sunken-menu-separator::before { position: absolute; top: 0px; width: 100%; height: 1px; content: ""; background-image: linear-gradient(to right, rgb(238, 238, 238) 70%, rgb(255, 255, 255) 100%); }
+.sunken-menu-group { list-style-type: none; }
+.sunken-menu-item { display: block; padding: 8px 10px; margin-top: 5px; margin-bottom: 5px; border: 1px solid transparent; outline: 0px none; }
+.sunken-menu-item .octicon { left: -1px; width: 16px; color: rgb(153, 153, 153); text-align: center; }
+.sunken-menu-item .mini-loader { position: absolute; top: 9px; left: 11px; display: none; }
+.sunken-menu-item:focus, .sunken-menu-item:hover { text-decoration: none; box-shadow: 2px 0px 0px rgb(204, 204, 204) inset; }
+.sunken-menu-item:focus .octicon, .sunken-menu-item:hover .octicon { color: rgb(51, 51, 51); }
+.sunken-menu-item.selected { font-weight: bold; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255); border-color: rgb(238, 238, 238) rgb(238, 238, 238) rgb(238, 238, 238) transparent; border-radius: 0px 3px 3px 0px; box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.05); }
+.sunken-menu-item.selected::after { position: absolute; top: 0px; right: 0px; bottom: 0px; width: 3px; content: ""; background-color: rgb(210, 105, 17); border-radius: 0px 3px 3px 0px; }
+.sunken-menu-item.selected .octicon { color: rgb(51, 51, 51); }
+@keyframes mini-nav-loader {
+ 0%, 90% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+@font-face { + font-family: "octicons"; + font-style: normal; + font-weight: normal; + src: url("urn:not-loaded:https://assets-cdn.github.com/assets/octicons/octicons/octicons-d5329fb2f700a56fe0b9ae5c301fabbdf5d77c1293b1fa1d35de9357530e2326.eot?#iefix") format("embedded-opentype"), url(data:application/octet-stream;base64,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) format("woff"), url("urn:not-loaded:https://assets-cdn.github.com/assets/octicons/octicons/octicons-39c6d7739e9153806ef211d2a0f75044891634c4f67425e6250b0d8c6283c2c7.ttf") format("truetype"), url("urn:not-loaded:https://assets-cdn.github.com/assets/octicons/octicons/octicons-c11b1be24a2862c1dc8880c22867d8d01315c9d7da5167c42119eb1bcce2e33c.svg#octicons") format("svg"); +}
+.octicon, .mega-octicon { font: 16px/1 octicons; display: inline-block; text-decoration: none; text-rendering: auto; -moz-user-select: none; }
+.mega-octicon { font-size: 32px; }
+.octicon-alert::before { content: ""; }
+.octicon-alignment-align::before { content: ""; }
+.octicon-alignment-aligned-to::before { content: ""; }
+.octicon-alignment-unalign::before { content: ""; }
+.octicon-arrow-down::before { content: ""; }
+.octicon-arrow-left::before { content: ""; }
+.octicon-arrow-right::before { content: ""; }
+.octicon-arrow-small-down::before { content: ""; }
+.octicon-arrow-small-left::before { content: ""; }
+.octicon-arrow-small-right::before { content: ""; }
+.octicon-arrow-small-up::before { content: ""; }
+.octicon-arrow-up::before { content: ""; }
+.octicon-beer::before { content: ""; }
+.octicon-book::before { content: ""; }
+.octicon-bookmark::before { content: ""; }
+.octicon-briefcase::before { content: ""; }
+.octicon-broadcast::before { content: ""; }
+.octicon-browser::before { content: ""; }
+.octicon-bug::before { content: ""; }
+.octicon-calendar::before { content: ""; }
+.octicon-check::before { content: ""; }
+.octicon-checklist::before { content: ""; }
+.octicon-chevron-down::before { content: ""; }
+.octicon-chevron-left::before { content: ""; }
+.octicon-chevron-right::before { content: ""; }
+.octicon-chevron-up::before { content: ""; }
+.octicon-circle-slash::before { content: ""; }
+.octicon-circuit-board::before { content: ""; }
+.octicon-clippy::before { content: ""; }
+.octicon-clock::before { content: ""; }
+.octicon-cloud-download::before { content: ""; }
+.octicon-cloud-upload::before { content: ""; }
+.octicon-code::before { content: ""; }
+.octicon-color-mode::before { content: ""; }
+.octicon-comment-add::before, .octicon-comment::before { content: ""; }
+.octicon-comment-discussion::before { content: ""; }
+.octicon-credit-card::before { content: ""; }
+.octicon-dash::before { content: ""; }
+.octicon-dashboard::before { content: ""; }
+.octicon-database::before { content: ""; }
+.octicon-device-camera::before { content: ""; }
+.octicon-device-camera-video::before { content: ""; }
+.octicon-device-desktop::before { content: ""; }
+.octicon-device-mobile::before { content: ""; }
+.octicon-diff::before { content: ""; }
+.octicon-diff-added::before { content: ""; }
+.octicon-diff-ignored::before { content: ""; }
+.octicon-diff-modified::before { content: ""; }
+.octicon-diff-removed::before { content: ""; }
+.octicon-diff-renamed::before { content: ""; }
+.octicon-ellipsis::before { content: ""; }
+.octicon-eye-unwatch::before, .octicon-eye-watch::before, .octicon-eye::before { content: ""; }
+.octicon-file-binary::before { content: ""; }
+.octicon-file-code::before { content: ""; }
+.octicon-file-directory::before { content: ""; }
+.octicon-file-media::before { content: ""; }
+.octicon-file-pdf::before { content: ""; }
+.octicon-file-submodule::before { content: ""; }
+.octicon-file-symlink-directory::before { content: ""; }
+.octicon-file-symlink-file::before { content: ""; }
+.octicon-file-text::before { content: ""; }
+.octicon-file-zip::before { content: ""; }
+.octicon-flame::before { content: ""; }
+.octicon-fold::before { content: ""; }
+.octicon-gear::before { content: ""; }
+.octicon-gift::before { content: ""; }
+.octicon-gist::before { content: ""; }
+.octicon-gist-secret::before { content: ""; }
+.octicon-git-branch-create::before, .octicon-git-branch-delete::before, .octicon-git-branch::before { content: ""; }
+.octicon-git-commit::before { content: ""; }
+.octicon-git-compare::before { content: ""; }
+.octicon-git-merge::before { content: ""; }
+.octicon-git-pull-request-abandoned::before, .octicon-git-pull-request::before { content: ""; }
+.octicon-globe::before { content: ""; }
+.octicon-graph::before { content: ""; }
+.octicon-heart::before { content: "♥"; }
+.octicon-history::before { content: ""; }
+.octicon-home::before { content: ""; }
+.octicon-horizontal-rule::before { content: ""; }
+.octicon-hourglass::before { content: ""; }
+.octicon-hubot::before { content: ""; }
+.octicon-inbox::before { content: ""; }
+.octicon-info::before { content: ""; }
+.octicon-issue-closed::before { content: ""; }
+.octicon-issue-opened::before { content: ""; }
+.octicon-issue-reopened::before { content: ""; }
+.octicon-jersey::before { content: ""; }
+.octicon-jump-down::before { content: ""; }
+.octicon-jump-left::before { content: ""; }
+.octicon-jump-right::before { content: ""; }
+.octicon-jump-up::before { content: ""; }
+.octicon-key::before { content: ""; }
+.octicon-keyboard::before { content: ""; }
+.octicon-law::before { content: ""; }
+.octicon-light-bulb::before { content: ""; }
+.octicon-link::before { content: ""; }
+.octicon-link-external::before { content: ""; }
+.octicon-list-ordered::before { content: ""; }
+.octicon-list-unordered::before { content: ""; }
+.octicon-location::before { content: ""; }
+.octicon-gist-private::before, .octicon-mirror-private::before, .octicon-git-fork-private::before, .octicon-lock::before { content: ""; }
+.octicon-logo-github::before { content: ""; }
+.octicon-mail::before { content: ""; }
+.octicon-mail-read::before { content: ""; }
+.octicon-mail-reply::before { content: ""; }
+.octicon-mark-github::before { content: ""; }
+.octicon-markdown::before { content: ""; }
+.octicon-megaphone::before { content: ""; }
+.octicon-mention::before { content: ""; }
+.octicon-microscope::before { content: ""; }
+.octicon-milestone::before { content: ""; }
+.octicon-mirror-public::before, .octicon-mirror::before { content: ""; }
+.octicon-mortar-board::before { content: ""; }
+.octicon-move-down::before { content: ""; }
+.octicon-move-left::before { content: ""; }
+.octicon-move-right::before { content: ""; }
+.octicon-move-up::before { content: ""; }
+.octicon-mute::before { content: ""; }
+.octicon-no-newline::before { content: ""; }
+.octicon-octoface::before { content: ""; }
+.octicon-organization::before { content: ""; }
+.octicon-package::before { content: ""; }
+.octicon-paintcan::before { content: ""; }
+.octicon-pencil::before { content: ""; }
+.octicon-person-add::before, .octicon-person-follow::before, .octicon-person::before { content: ""; }
+.octicon-pin::before { content: ""; }
+.octicon-playback-fast-forward::before { content: ""; }
+.octicon-playback-pause::before { content: ""; }
+.octicon-playback-play::before { content: ""; }
+.octicon-playback-rewind::before { content: ""; }
+.octicon-plug::before { content: ""; }
+.octicon-repo-create::before, .octicon-gist-new::before, .octicon-file-directory-create::before, .octicon-file-add::before, .octicon-plus::before { content: ""; }
+.octicon-podium::before { content: ""; }
+.octicon-primitive-dot::before { content: ""; }
+.octicon-primitive-square::before { content: ""; }
+.octicon-pulse::before { content: ""; }
+.octicon-puzzle::before { content: ""; }
+.octicon-question::before { content: ""; }
+.octicon-quote::before { content: ""; }
+.octicon-radio-tower::before { content: ""; }
+.octicon-repo-delete::before, .octicon-repo::before { content: ""; }
+.octicon-repo-clone::before { content: ""; }
+.octicon-repo-force-push::before { content: ""; }
+.octicon-gist-fork::before, .octicon-repo-forked::before { content: ""; }
+.octicon-repo-pull::before { content: ""; }
+.octicon-repo-push::before { content: ""; }
+.octicon-rocket::before { content: ""; }
+.octicon-rss::before { content: ""; }
+.octicon-ruby::before { content: ""; }
+.octicon-screen-full::before { content: ""; }
+.octicon-screen-normal::before { content: ""; }
+.octicon-search-save::before, .octicon-search::before { content: ""; }
+.octicon-server::before { content: ""; }
+.octicon-settings::before { content: ""; }
+.octicon-log-in::before, .octicon-sign-in::before { content: ""; }
+.octicon-log-out::before, .octicon-sign-out::before { content: ""; }
+.octicon-split::before { content: ""; }
+.octicon-squirrel::before { content: ""; }
+.octicon-star-add::before, .octicon-star-delete::before, .octicon-star::before { content: ""; }
+.octicon-steps::before { content: ""; }
+.octicon-stop::before { content: ""; }
+.octicon-repo-sync::before, .octicon-sync::before { content: ""; }
+.octicon-tag-remove::before, .octicon-tag-add::before, .octicon-tag::before { content: ""; }
+.octicon-telescope::before { content: ""; }
+.octicon-terminal::before { content: ""; }
+.octicon-three-bars::before { content: ""; }
+.octicon-thumbsdown::before { content: ""; }
+.octicon-thumbsup::before { content: ""; }
+.octicon-tools::before { content: ""; }
+.octicon-trashcan::before { content: ""; }
+.octicon-triangle-down::before { content: ""; }
+.octicon-triangle-left::before { content: ""; }
+.octicon-triangle-right::before { content: ""; }
+.octicon-triangle-up::before { content: ""; }
+.octicon-unfold::before { content: ""; }
+.octicon-unmute::before { content: ""; }
+.octicon-versions::before { content: ""; }
+.octicon-remove-close::before, .octicon-x::before { content: ""; }
+.octicon-zap::before { content: "⚡"; }
+h2.ghead::after { content: "."; height: 0px; display: block; visibility: hidden; clear: both; }
+.svg-tip::after { box-sizing: border-box; position: absolute; left: 50%; height: 5px; width: 5px; bottom: -10px; margin: 0px 0px 0px -5px; content: " "; border-width: 5px; border-style: solid; border-color: rgba(0, 0, 0, 0.8) transparent transparent; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.uniques-graph .x.axis .tick:nth-child(14) line { stroke: rgb(29, 127, 179); stroke-width: 2px; }
+table.capped-list tr:nth-child(2n) { background-color: rgb(252, 252, 252); }
+.traffic-graph-stats .summary-stats::before { display: table; content: ""; }
+.traffic-graph-stats .summary-stats::after { display: table; clear: both; content: ""; }
+.markdown-body { overflow: hidden; font-family: "Helvetica Neue",Helvetica,"Segoe UI",Arial,freesans,sans-serif; font-size: 16px; line-height: 1.6; word-wrap: break-word; }
+.markdown-body > :first-child { margin-top: 0px ! important; }
+.markdown-body > :last-child { margin-bottom: 0px ! important; }
+.markdown-body a:not([href]) { color: inherit; text-decoration: none; }
+.markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre { margin-top: 0px; margin-bottom: 16px; }
+.markdown-body ul, .markdown-body ol { padding-left: 2em; }
+.markdown-body blockquote > :first-child { margin-top: 0px; }
+.markdown-body blockquote > :last-child { margin-bottom: 0px; }
+.markdown-body table tr:nth-child(2n) { background-color: rgb(248, 248, 248); }
+.markdown-body img { max-width: 100%; box-sizing: border-box; }
+.markdown-body code, .markdown-body tt { padding: 0.2em 0px; margin: 0px; font-size: 85%; background-color: rgba(0, 0, 0, 0.04); border-radius: 3px; }
+.markdown-body code::before, .markdown-body code::after, .markdown-body tt::before, .markdown-body tt::after { letter-spacing: -0.2em; content: " "; }
+.markdown-body pre code::before, .markdown-body pre code::after, .markdown-body pre tt::before, .markdown-body pre tt::after { content: normal; }
+.pl-c { color: rgb(150, 152, 150); }
+.pl-c1, .pl-s .pl-v { color: rgb(0, 134, 179); }
+.pl-e, .pl-en { color: rgb(121, 93, 163); }
+.pl-s .pl-s1, .pl-smi { color: rgb(51, 51, 51); }
+.pl-k { color: rgb(167, 29, 93); }
+.pl-pds, .pl-s, .pl-s .pl-pse .pl-s1, .pl-sr, .pl-sr .pl-cce, .pl-sr .pl-sra, .pl-sr .pl-sre { color: rgb(24, 54, 145); }
+.pl-v { color: rgb(237, 106, 67); }
+body { word-wrap: break-word; }
+.labels { position: relative; }
+.facebox { position: absolute; top: 0px; left: 0px; z-index: 100; padding-bottom: 40px; }
+.facebox-popup { position: relative; background-color: rgb(255, 255, 255); border: 1px solid rgba(0, 0, 0, 0.25); border-radius: 5px; box-shadow: 0px 0px 18px rgba(0, 0, 0, 0.4); background-clip: padding-box; }
+.facebox-content { width: 455px; padding: 15px; }
+.facebox-content::before { display: table; content: ""; }
+.facebox-content::after { display: table; clear: both; content: ""; }
+.facebox-close { position: absolute; top: 8px; right: 5px; padding: 10px; background-color: transparent; border: 0px none; opacity: 0.25; cursor: pointer; }
+.facebox-close:hover { opacity: 1; }
+.facebox-header { margin: -15px -15px 15px; padding: 15px; border-bottom: 1px solid rgb(229, 229, 229); font-size: 18px; font-weight: normal; }
+.user-mention, .team-mention { font-weight: bold; color: rgb(51, 51, 51); white-space: nowrap; }
+.select-menu-button::after { display: inline-block; width: 0px; height: 0px; content: ""; vertical-align: -2px; border-width: 4px; border-style: solid; border-color: -moz-use-text-color transparent transparent; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.select-menu-button.primary::after { border-top-color: rgb(255, 255, 255); }
+.select-menu-loading-overlay::before { position: absolute; left: 50%; top: 50%; margin: -16px 0px 0px -16px; width: 32px; content: ""; font: 32px/1 "octicons"; display: inline-block; text-decoration: none; text-indent: 0px; }
+@keyframes pulse {
+ 0% { color: rgba(170, 170, 170, 0.1); }
+ 10% { color: rgb(170, 170, 170); }
+ 100% { color: rgba(170, 170, 170, 0.1); }
+}
+.select-menu-modal-holder { position: absolute; display: none; z-index: 21; }
+.select-menu-modal { position: relative; width: 300px; margin-top: 4px; margin-bottom: 20px; overflow: hidden; font-size: 12px; color: rgb(102, 102, 102); background-color: rgb(255, 255, 255); background-clip: padding-box; border: 1px solid rgba(200, 200, 200, 0.4); border-radius: 3px; box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15); }
+.select-menu-header { padding: 8px 10px; background: rgb(245, 245, 245) none repeat scroll 0% 0%; border-bottom: 1px solid rgba(200, 200, 200, 0.4); }
+.select-menu-header .select-menu-title { font-weight: bold; color: rgb(51, 51, 51); text-shadow: 0px 1px 0px rgb(255, 255, 255); }
+.select-menu-header .octicon { display: block; float: right; color: rgb(204, 204, 204); cursor: pointer; }
+.select-menu-header .octicon:hover { color: rgb(85, 85, 85); }
+.select-menu-list { max-height: 400px; overflow: auto; position: relative; }
+.select-menu-item { cursor: pointer; border-bottom: 1px solid rgb(238, 238, 238); display: table; table-layout: fixed; width: 100%; overflow: hidden; color: inherit; }
+.select-menu-item:hover { text-decoration: none; }
+.select-menu-item .octicon { vertical-align: middle; }
+.select-menu-item .octicon-check { visibility: hidden; }
+.select-menu-item input[type="radio"] { display: none; }
+.select-menu-item .select-menu-item-icon { display: table-cell; color: transparent; vertical-align: top; padding: 8px 0px 8px 8px; width: 24px; text-align: center; }
+.select-menu-item.select-menu-action, .select-menu-item.selected { color: rgb(51, 51, 51); }
+.select-menu-item.select-menu-action .description, .select-menu-item.selected .description { color: rgb(102, 102, 102); }
+.select-menu-item.select-menu-action .octicon-check, .select-menu-item.selected .octicon-check { visibility: visible; }
+.select-menu-item.select-menu-action > .octicon, .select-menu-item.selected > .octicon { color: rgb(51, 51, 51); }
+.select-menu-item .hidden-select-button-text { display: none; }
+.select-menu-item.last-visible, .select-menu-list:last-child .select-menu-item:last-child { border-bottom: 0px none; border-radius: 0px 0px 3px 3px; }
+.select-menu-item-text { display: table-cell; vertical-align: top; padding: 8px 0px 8px 8px; text-align: left; }
+.select-menu-item-text:first-child { margin-left: 5px; }
+.select-menu-item-text .description { color: rgb(153, 153, 153); font-size: 12px; max-width: 265px; display: block; margin-top: 3px; }
+.select-menu-item-heading { display: block; margin-top: 0px; margin-bottom: 0px; font-size: 14px; font-weight: bold; line-height: 1.1; }
+.modal-backdrop { display: none; -moz-user-select: none; }
+.dropdown { position: relative; }
+.dropdown-caret { display: inline-block; width: 0px; height: 0px; content: ""; vertical-align: -2px; border-width: 4px; border-style: solid; border-color: -moz-use-text-color transparent transparent; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.dropdown-menu { position: absolute; top: 100%; left: 50%; z-index: 100; width: 160px; margin-top: 2px; margin-left: -80px; padding-top: 5px; padding-bottom: 5px; list-style: outside none none; background-color: rgb(255, 255, 255); background-clip: padding-box; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 4px; box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15); }
+.dropdown-menu::before { position: absolute; top: -16px; left: 72px; display: inline-block; content: ""; border-width: 8px; border-style: solid; border-color: transparent transparent rgba(0, 0, 0, 0.15); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.dropdown-menu::after { position: absolute; top: -14px; left: 73px; display: inline-block; content: ""; border-width: 7px; border-style: solid; border-color: transparent transparent rgb(255, 255, 255); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; }
+.dropdown-menu > li > a, .dropdown-menu > li .sign-out-button { display: block; padding: 4px 10px 4px 35px; color: rgb(51, 51, 51); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; background: transparent none repeat scroll 0% 0%; }
+.dropdown-menu > li > a > .octicon, .dropdown-menu > li .sign-out-button > .octicon { float: left; margin-top: 1px; margin-left: -25px; opacity: 0.5; }
+.dropdown-menu > li > a:hover, .dropdown-menu > li > a.zeroclipboard-is-hover, .dropdown-menu > li .sign-out-button:hover, .dropdown-menu > li .sign-out-button.zeroclipboard-is-hover { color: rgb(255, 255, 255); text-decoration: none; background-color: rgb(65, 131, 196); }
+.dropdown-menu > li > a:hover > .octicon, .dropdown-menu > li > a.zeroclipboard-is-hover > .octicon, .dropdown-menu > li .sign-out-button:hover > .octicon, .dropdown-menu > li .sign-out-button.zeroclipboard-is-hover > .octicon { color: inherit; opacity: 1; }
+.sign-out-button { width: 100%; text-align: left; }
+.sign-out-button > .octicon-sign-out { padding-left: 3px; }
+.dropdown-divider { height: 1px; margin: 8px 1px; background-color: rgb(229, 229, 229); }
+.dropdown-header { padding: 4px 15px; font-size: 12px; color: rgb(153, 153, 153); }
+.dropdown-menu-content { display: none; }
+.dropdown-menu-w::before { top: 10px; right: -16px; left: auto; border-color: transparent transparent transparent rgba(0, 0, 0, 0.15); }
+.dropdown-menu-w::after { top: 11px; right: -14px; left: auto; border-color: transparent transparent transparent rgb(255, 255, 255); }
+.dropdown-menu-e::before { top: 10px; left: -16px; border-color: transparent rgba(0, 0, 0, 0.15) transparent transparent; }
+.dropdown-menu-e::after { top: 11px; left: -14px; border-color: transparent rgb(255, 255, 255) transparent transparent; }
+.dropdown-menu-sw::before { left: auto; right: 9px; }
+.dropdown-menu-sw::after { left: auto; right: 10px; }
+include-fragment, poll-include-fragment { display: block; }
+.pagination::before { display: table; content: ""; }
+.pagination::after { display: table; clear: both; content: ""; }
+.header { padding-top: 10px; padding-bottom: 10px; min-width: 1000px; background-color: rgb(245, 245, 245); border-bottom: 1px solid rgb(229, 229, 229); }
+.header-logo-invertocat { float: left; margin-right: 10px; margin-left: -2px; color: rgb(51, 51, 51); white-space: nowrap; }
+.header-logo-invertocat .octicon-mark-github { float: left; width: 28px; height: 28px; font-size: 28px; }
+.header-logo-invertocat:hover { color: rgb(65, 131, 196); text-decoration: none; }
+.notification-indicator .mail-status { position: absolute; top: -2px; right: 2px; z-index: 2; display: none; width: 14px; height: 14px; color: rgb(255, 255, 255); text-align: center; background-color: rgb(65, 131, 196); background-image: linear-gradient(rgb(123, 169, 214), rgb(65, 131, 196)); background-repeat: repeat-x; background-clip: padding-box; border-radius: 50%; border: 2px solid rgb(243, 243, 243); }
+.notification-indicator:hover .mail-status { background-color: rgb(65, 131, 196); }
+.site-search { position: relative; float: left; }
+.site-search form { position: relative; float: left; width: 360px; margin-right: 10px; }
+.site-search input[type="text"] { position: relative; width: 100%; min-height: 28px; padding: 4px 20px 4px 8px; font-size: 12px; }
+.site-search .scope-badge { position: absolute; top: 3px; left: 3px; bottom: 3px; z-index: 10; display: none; padding: 3px 6px; font-size: 12px; color: rgb(119, 119, 119); background-color: rgb(238, 238, 238); border-radius: 2px; transition: all 0.1s ease-in-out 0s; }
+.site-search.repo-scope .scope-badge { display: block; }
+.site-search.repo-scope input[type="text"] { padding-left: 100px; }
+.site-search.repo-scope input[type="text"]:focus + .scope-badge, .site-search.repo-scope .focused .drag-and-drop + .scope-badge, .focused .site-search.repo-scope .drag-and-drop + .scope-badge { background-color: rgb(228, 238, 247); color: rgb(65, 131, 196); }
+.header-nav { list-style: outside none none; }
+.header-nav-item { float: left; }
+.header-nav-item.active .tooltipped::before, .header-nav-item.active .tooltipped::after { display: none; }
+.header-nav-item .dropdown-menu { margin-top: 13px; width: 180px; }
+.header-nav-link { display: block; padding: 4px 8px; font-size: 13px; font-weight: bold; line-height: 20px; color: rgb(51, 51, 51); }
+.header-nav-link:hover, .header-nav-link:focus { color: rgb(65, 131, 196); text-decoration: none; }
+.header-nav-link:hover .dropdown-caret, .header-nav-link:focus .dropdown-caret { border-top-color: rgb(65, 131, 196); }
+.user-nav { margin-right: -8px; }
+.user-nav .header-nav-link { height: 28px; }
+.user-nav .octicon { width: 18px; height: 18px; text-align: center; }
+.user-nav .octicon-inbox { font-size: 20px; }
+.user-nav .octicon-sign-out { padding-top: 2px; }
+.user-nav .octicon-plus { float: left; width: 16px; height: 18px; font-size: 18px; }
+.user-nav .avatar { float: left; margin-right: 5px; }
+.user-nav .name { float: left; white-space: nowrap; }
+.sign-out-button { background: transparent none repeat scroll 0% 0%; border: 0px none; }
+.accessibility-aid { height: 1px; width: 1px; clip: rect(1px, 1px, 1px, 1px); overflow: hidden; position: absolute; margin: 0px; }
+.accessibility-aid:focus { height: auto; width: auto; clip: auto; z-index: 1; top: 0px; line-height: 49px; padding: 0px 10px; background: rgb(245, 245, 245) none repeat scroll 0% 0%; font-weight: bold; text-decoration: none; color: rgb(51, 51, 51); }
+.site-footer { position: relative; margin-top: 40px; padding-top: 40px; padding-bottom: 40px; font-size: 12px; line-height: 1.5; color: rgb(119, 119, 119); border-top: 1px solid rgb(238, 238, 238); }
+.site-footer::before { display: table; content: ""; }
+.site-footer::after { display: table; clear: both; content: ""; }
+.site-footer .octicon-mark-github { position: absolute; top: 38px; left: 50%; height: 24px; width: 24px; margin-left: -12px; font-size: 24px; color: rgb(204, 204, 204); }
+.site-footer .octicon-mark-github:hover { color: rgb(187, 187, 187); }
+.site-footer-links { margin: 0px; list-style: outside none none; }
+.site-footer-links li { display: inline-block; line-height: 16px; }
+.site-footer-links li + li { margin-left: 10px; }
+.billing-plans .coupon.expiring .coupon-label::after { border-bottom-color: rgb(223, 110, 0); }
+.coupon-label::after { position: absolute; bottom: 100%; left: 15px; width: 0px; height: 0px; pointer-events: none; content: " "; border-style: solid; border-color: transparent transparent rgb(108, 198, 68); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-width: 5px; }
+.suggester-container { position: absolute; top: 58px; left: 10px; z-index: 30; }
+.timeline-new-comment .suggester-container { top: 52px; }
+.suggester { position: relative; top: 0px; left: 0px; display: none; min-width: 180px; margin-top: 20px; background: rgb(255, 255, 255) none repeat scroll 0% 0%; border: 1px solid rgb(221, 221, 221); border-radius: 3px; box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1); }
+.breadcrumb .separator::before, .breadcrumb .separator::after { content: " "; }
+.blob-interaction-bar::before { display: table; content: ""; }
+.blob-interaction-bar::after { display: table; clear: both; content: ""; }
+.file-commit-form .commit-form::after, .file-commit-form .commit-form::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.file-commit-form .commit-form::after { border-width: 7px; border-right-color: rgb(255, 255, 255); margin-top: 1px; margin-left: 2px; }
+.file-commit-form .commit-form::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.merge-pr { padding-top: 10px; margin: 20px 0px 0px; border-top: 1px solid rgb(221, 221, 221); }
+.branch-status { padding: 10px 0px 0px; border-style: solid; border-color: rgb(238, 238, 238); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-width: 0px 0px 1px; }
+.branch-status .octicon { width: 16px; text-align: center; }
+.status-description { display: block; padding: 0px 15px 10px 12px; }
+.build-status-single .css-truncate-target { width: 80%; max-width: 80%; }
+.branch-action { padding-left: 64px; margin-top: 15px; margin-bottom: 15px; }
+.branch-action .merge-branch-heading { margin-bottom: 2px; }
+.branch-action-icon { float: left; width: 48px; height: 48px; margin-left: -64px; line-height: 48px; color: rgb(255, 255, 255); text-align: center; border-radius: 3px; }
+.branch-action-body { position: relative; background-color: rgb(255, 255, 255); border: 1px solid rgb(229, 229, 229); border-radius: 3px; }
+.branch-action-body::after, .branch-action-body::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.branch-action-body::after { border-width: 7px; border-right-color: rgb(255, 255, 255); margin-top: 1px; margin-left: 2px; }
+.branch-action-body::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.branch-action-body .merge-message, .branch-action-body .merge-branch-form { padding: 15px; }
+.branch-action-state-clean .branch-action-body::before { border-right-color: rgb(149, 201, 126); }
+.branch-action-state-unknown .branch-action-body::before, .branch-action-state-unstable .branch-action-body::before { border-right-color: rgb(226, 204, 122); }
+.branch-action-state-merged .branch-action-body::before { border-right-color: rgb(136, 110, 173); }
+.branch-action-state-dirty .branch-action-icon, .branch-action-state-closed-dirty .branch-action-icon { background-color: rgb(136, 136, 136); }
+.merge-branch-form .commit-form::before { border-right-color: rgb(149, 201, 126); }
+.merge-branch-form.error .commit-form::before { border-right-color: rgb(233, 122, 116); }
+.starring-container .unstarred, .starring-container.on .starred { display: block; }
+.starring-container.on .unstarred, .starring-container .starred { display: none; }
+.code-list .blob-num::before { content: normal; }
+.container-preview:not(.show-code) .commit-create, .container-preview:not(.show-code) .actions { display: none; }
+.details-collapse .collapse { position: relative; display: none; height: 0px; overflow: hidden; transition: height 0.35s ease-in-out 0s; }
+.comment .email-format { line-height: 1.5; }
+.comment-body { width: 100%; padding: 15px; overflow: visible; font-size: 14px; }
+.comment-form-textarea { width: 100%; max-width: 100%; height: 100px; min-height: 100px; margin: 0px; font-size: 14px; line-height: 1.6; }
+.comment-form-error, .comment-form-stale { display: none; padding: 5px 10px; margin: 0px 10px; font-weight: bold; color: rgb(153, 0, 0); background-color: rgb(255, 234, 234); border: 1px solid rgb(226, 160, 160); }
+.email-format { line-height: 1.5em ! important; }
+.email-format div { white-space: pre-wrap; }
+.commit .commit-title, .commit .commit-title a { color: rgb(78, 87, 91); }
+.commit .sha-block, .commit .sha { font-family: Consolas,"Liberation Mono",Menlo,Courier,monospace; font-size: 12px; }
+.commit-link { font-weight: normal; color: rgb(65, 131, 196); }
+.commit-desc { display: none; }
+.commit-desc pre { max-width: 700px; margin: 10px 0px; font-family: Consolas,"Liberation Mono",Menlo,Courier,monospace; font-size: 13px; line-height: 1.45; color: rgb(89, 96, 99); white-space: pre-wrap; }
+.commits-listing { position: relative; padding-bottom: 20px; margin-bottom: 15px; }
+.commits-listing::before { position: absolute; top: 0px; bottom: 0px; left: 14px; z-index: -1; display: block; width: 2px; content: ""; background-color: rgb(243, 243, 243); }
+.commits-listing-padded { padding-left: 39px; }
+.commit-group { margin-top: 10px; list-style-type: none; }
+.commit-group-title { margin-top: 15px; margin-left: -31px; color: rgb(119, 119, 119); }
+.commit-group-title .octicon-git-commit { margin-right: 17px; color: rgb(204, 204, 204); background: rgb(255, 255, 255) none repeat scroll 0% 0%; }
+.commits-list-item .commit-title { margin: 0px; font-size: 15px; font-weight: bold; color: rgb(51, 51, 51); }
+.commits-list-item .commit-meta { margin-top: 1px; font-weight: normal; color: rgb(153, 153, 153); }
+.commits-list-item .commit-author { color: rgb(119, 119, 119); }
+.commits-list-item .btn-outline { margin-top: 2px; }
+.commits-list-item .commit-desc pre { padding-left: 8px; margin-top: 5px; margin-bottom: 10px; font-size: 12px; color: rgb(89, 96, 99); border-left: 1px solid rgb(229, 229, 229); }
+.commits-list-item .commit-desc pre a { }
+.commit-avatar-cell { width: 47px; }
+.commit-avatar-cell.table-list-cell { padding-right: 0px; }
+.commit-indicator { margin-left: 5px; }
+.commit-links-cell { width: 230px; text-align: right; }
+.commit-links-group { margin-right: 5px; }
+.timeline-commits { width: 100%; margin-top: 5px; border-collapse: separate; }
+.timeline-commits td { padding-top: 4px; padding-right: 8px; padding-bottom: 4px; font-size: 12px; line-height: 16px; vertical-align: top; background-color: transparent; }
+.discussion-item .timeline-commits .commit-author { display: none; }
+.timeline-commits .commit-gravatar { width: 16px; padding-left: 10px; }
+.timeline-commits .commit-author { width: 200px; padding-right: 20px; white-space: nowrap; }
+.timeline-commits .author { font-weight: bold; color: rgb(85, 85, 85); }
+.timeline-commits .commit-message { min-height: 0px; max-width: 550px; }
+.timeline-commits .commit-message a { color: rgb(85, 85, 85); }
+.timeline-commits .commit-message a:hover { color: rgb(65, 131, 196); }
+.timeline-commits .commit-desc pre { padding-left: 10px; font-size: 11px; color: rgb(119, 119, 119); border-left: 1px solid rgb(238, 238, 238); overflow: visible; }
+.timeline-commits .hidden-text-expander { margin-top: 3px; margin-left: 0px; vertical-align: top; }
+.timeline-commits .hidden-text-expander a { height: 13px; background-color: rgb(238, 238, 238); }
+.timeline-commits .hidden-text-expander a:hover { color: rgb(255, 255, 255); background-color: rgb(65, 131, 196); }
+.timeline-commits .commit-meta { text-align: right; white-space: nowrap; }
+.timeline-commits .commit-meta .octicon { margin-right: 1px; margin-left: 1px; }
+.commit-icon { display: table-cell; width: 16px; color: rgb(204, 204, 204); }
+.commit-icon .octicon { background-color: rgb(255, 255, 255); }
+.commit-id { color: rgb(187, 187, 187); }
+.commit-id:hover { color: rgb(65, 131, 196); }
+.full-commit .branches-list li::before { padding-right: 6px; font-weight: normal; content: "+"; }
+.full-commit .branches-list li:first-child::before { padding-right: 0px; content: ""; }
+.full-commit .branches-list li.pull-request::before { margin-left: -8px; content: ""; }
+.file-history-tease .participation::before { display: table; content: ""; }
+.file-history-tease .participation::after { display: table; clear: both; content: ""; }
+.commit-build-statuses { position: relative; display: inline-block; text-align: left; }
+.commit-build-statuses.active .tooltipped::before, .commit-build-statuses.active .tooltipped::after { display: none; }
+.commit-ref { position: relative; display: inline-block; padding: 0px 5px; border-radius: 3px; font: 0.75em/2 Consolas,"Liberation Mono",Menlo,Courier,monospace; color: rgb(51, 100, 121); white-space: nowrap; background-color: rgb(232, 240, 248); }
+.commit-ref .user { color: rgb(89, 138, 159); }
+.table-of-contents { margin: 15px 0px; }
+.table-of-contents li { padding: 7px 0px; list-style-type: none; }
+.table-of-contents li + li { border-top: 1px solid rgb(238, 238, 238); }
+.table-of-contents li > .octicon { margin-right: 3px; vertical-align: -1px; }
+.table-of-contents .octicon-diff-removed { color: rgb(189, 44, 0); }
+.table-of-contents .octicon-diff-modified { color: rgb(208, 180, 76); }
+.table-of-contents .octicon-diff-added { color: rgb(108, 198, 68); }
+.toc-diff-stats { padding-left: 20px; line-height: 26px; }
+.toc-diff-stats .octicon { float: left; margin-top: 3px; margin-left: -20px; color: rgb(204, 204, 204); }
+.toc-diff-stats .btn-link { font-weight: bold; }
+.toc-diff-stats + .content { padding-top: 5px; }
+.existing-pull .list-group-item::before { display: table; content: ""; }
+.existing-pull .list-group-item::after { display: table; clear: both; content: ""; }
+.context-loader-container .context-loader { display: none; }
+.page-context-loader { margin-left: 10px; display: none; }
+@keyframes broadCastMaskFade {
+ 0% { opacity: 0; }
+ 30% { opacity: 1; }
+ 70% { opacity: 1; }
+ 100% { opacity: 0; }
+}
+.news .alert .mega-octicon::before { color: inherit; }
+@keyframes slideUp {
+ 0% { transform: translate3d(0px, 500px, 0px); }
+ 100% { transform: translate3d(0px, 0px, 0px); }
+}
+.diffstat { font-size: 12px; font-weight: bold; color: rgb(102, 102, 102); white-space: nowrap; cursor: default; }
+.diffstat-bar { margin-left: 3px; color: rgb(221, 221, 221); letter-spacing: 1px; text-align: left; font: 16px/1 "octicons"; display: inline-block; text-decoration: none; }
+.discussion-timeline { position: relative; width: 760px; float: left; }
+.discussion-timeline::before { display: block; content: ""; position: absolute; top: 0px; bottom: 0px; left: 79px; width: 2px; background-color: rgb(243, 243, 243); z-index: -1; }
+.discussion-sidebar { position: sticky; top: 0px; z-index: 21; float: right; width: 140px; }
+.discussion-sidebar-item { padding-top: 15px; font-size: 12px; color: rgb(153, 153, 153); }
+.discussion-sidebar-item .btn .octicon { margin-right: 0px; }
+.discussion-sidebar-item + .discussion-sidebar-item { margin-top: 15px; border-top: 1px solid rgb(238, 238, 238); }
+.discussion-sidebar-heading { margin-top: 0px; margin-bottom: 10px; font-size: 12px; line-height: 16px; color: rgb(119, 119, 119); }
+.sidebar-notifications { position: relative; }
+.sidebar-notifications .thread-subscription-status { margin: 0px; padding: 0px; border: 0px none; }
+.sidebar-notifications .thread-subscription-status .thread-subscribe-form { display: block; }
+.sidebar-notifications .thread-subscription-status .mega-octicon { display: none; }
+.sidebar-notifications .thread-subscription-status .reason { padding: 0px; margin: 5px 0px 0px; font-size: 11px; color: rgb(153, 153, 153); }
+.sidebar-notifications .thread-subscription-status .btn-sm { display: block; width: 100%; }
+.participation .participant-avatar { float: left; margin: 3px 0px 0px 3px; }
+.participation a { color: rgb(153, 153, 153); }
+.participation a:hover { color: rgb(65, 131, 196); text-decoration: none; }
+.participation-avatars { margin-left: -3px; }
+.participation-avatars::before { display: table; content: ""; }
+.participation-avatars::after { display: table; clear: both; content: ""; }
+.inline-comment-form .form-actions, .timeline-new-comment .form-actions { padding: 0px 10px 10px; }
+.gh-header-actions { float: right; margin-top: 3px; }
+.gh-header-title { margin-top: 0px; margin-bottom: 0px; margin-right: 150px; font-weight: normal; line-height: 1.1; word-wrap: break-word; }
+.gh-header-number { font-weight: 300; color: rgb(170, 170, 170); letter-spacing: -1px; }
+.gh-header-edit::before { display: table; content: ""; }
+.gh-header-edit::after { display: table; clear: both; content: ""; }
+.gh-header-meta { margin-top: 9px; font-size: 14px; line-height: 20px; color: rgb(119, 119, 119); padding-bottom: 20px; border-bottom: 1px solid rgb(238, 238, 238); }
+.gh-header.pull .gh-header-meta { border-bottom: 0px none; padding-bottom: 0px; }
+.gh-header-meta .flex-table-item { vertical-align: top; }
+.gh-header-meta .flex-table-item-primary { padding-top: 4px; white-space: normal; word-wrap: break-word; }
+.gh-header-meta .flex-table-item-primary .commit-ref .css-truncate-target, .gh-header-meta .flex-table-item-primary .commit-ref:hover .css-truncate-target { max-width: 780px ! important; }
+.gh-header-meta .state { margin-right: 8px; }
+.gh-header-meta .author { color: rgb(85, 85, 85); font-weight: bold; }
+.tabnav-pr { margin: 15px 0px 20px; border-color: rgb(229, 229, 229); }
+.tabnav-pr .tabnav-tab { position: relative; padding: 9px 14px; font-size: 13px; color: rgb(119, 119, 119); }
+.tabnav-pr .tabnav-tab.selected { color: rgb(51, 51, 51); border-color: rgb(229, 229, 229); }
+.tabnav-pr .diffstat-bar { padding-bottom: 3px; }
+.timeline-comment-wrapper > .timeline-comment::after, .timeline-comment-wrapper > .timeline-comment::before, .timeline-new-comment .timeline-comment::after, .timeline-new-comment .timeline-comment::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.timeline-comment-wrapper > .timeline-comment::after, .timeline-new-comment .timeline-comment::after { border-width: 7px; border-right-color: rgb(247, 247, 247); margin-top: 1px; margin-left: 2px; }
+.timeline-comment-wrapper > .timeline-comment::before, .timeline-new-comment .timeline-comment::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.timeline-comment-wrapper { position: relative; padding-left: 64px; margin-top: 15px; margin-bottom: 15px; border-top: 2px solid rgb(255, 255, 255); border-bottom: 2px solid rgb(255, 255, 255); }
+.timeline-comment-wrapper:first-child { margin-top: 0px; }
+.discussion-timeline-actions .timeline-comment-wrapper:first-child { margin-top: 15px; }
+.timeline-comment-wrapper .timeline-comment.current-user::after, .timeline-comment-wrapper .timeline-comment.current-user::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.timeline-comment-wrapper .timeline-comment.current-user::after { border-width: 7px; border-right-color: rgb(242, 248, 250); margin-top: 1px; margin-left: 2px; }
+.timeline-comment-wrapper .timeline-comment.current-user::before { border-right-color: rgb(191, 204, 209); border-width: 8px; }
+.timeline-comment-wrapper .timeline-comment.unread-item::after, .timeline-comment-wrapper .timeline-comment.unread-item::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.timeline-comment-wrapper .timeline-comment.unread-item::after { border-width: 7px; border-right-color: rgb(255, 249, 234); margin-top: 1px; margin-left: 2px; }
+.timeline-comment-wrapper .timeline-comment.unread-item::before { border-right-color: rgb(223, 216, 194); border-width: 8px; }
+.timeline-comment-avatar { float: left; margin-left: -64px; border-radius: 3px; }
+.timeline-comment { position: relative; background-color: rgb(255, 255, 255); border: 1px solid rgb(221, 221, 221); border-radius: 3px; }
+.timeline-comment.will-transition-once::before, .timeline-comment.will-transition-once::after { transition: border-right-color 0.65s ease-in-out 0s; }
+.timeline-comment:empty { display: none; }
+.timeline-comment .comment + .comment::before, .timeline-comment .comment + .comment::after { display: none; }
+.timeline-comment-header { padding-left: 15px; padding-right: 15px; color: rgb(153, 153, 153); background-color: rgb(247, 247, 247); border-bottom: 1px solid rgb(238, 238, 238); border-top-left-radius: 3px; border-top-right-radius: 3px; }
+.timeline-comment-header .author { font-weight: bold; color: rgb(85, 85, 85); }
+.timeline-comment-header .timestamp { white-space: nowrap; color: inherit; }
+.comment-type-icon { color: inherit; }
+.timeline-comment-label { float: right; margin: 8px 0px 0px 10px; padding: 2px 5px; font-size: 12px; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 3px; }
+.timeline-comment-header-text { max-width: 78%; padding-top: 10px; padding-bottom: 10px; }
+.timeline-comment-header-avatar { float: left; margin-top: 10px; margin-right: 5px; }
+.discussion-item-ref .state { padding: 1px 5px; margin-top: -4px; margin-left: 8px; font-size: 12px; }
+.discussion-item-ref .state .octicon { width: 1em; font-size: 14px; }
+.timeline-new-comment { max-width: 780px; margin-bottom: 0px; }
+.timeline-new-comment .comment-form-head { margin-bottom: 10px; }
+.timeline-new-comment .previewable-comment-form .comment-body { padding: 5px 5px 15px; border-bottom: 1px solid rgb(238, 238, 238); }
+.discussion-item { position: relative; margin: 15px 0px 15px 79px; padding-left: 25px; }
+.discussion-item + .discussion-item { padding-top: 15px; border-top: 1px solid rgb(245, 245, 245); }
+.discussion-item .author { color: rgb(85, 85, 85); font-weight: bold; }
+.discussion-item .timestamp { color: inherit; white-space: nowrap; }
+.discussion-item-icon { float: left; width: 32px; height: 32px; margin-top: -7px; margin-left: -40px; line-height: 28px; color: rgb(102, 102, 102); text-align: center; background-color: rgb(243, 243, 243); border: 2px solid rgb(255, 255, 255); border-radius: 50%; }
+.discussion-item-header { min-height: 30px; padding-top: 5px; padding-bottom: 5px; color: rgb(119, 119, 119); line-height: 20px; word-wrap: break-word; }
+.discussion-item-header .avatar { float: left; margin-top: 2px; margin-right: 5px; }
+.discussion-item-header:last-child { padding-bottom: 0px; }
+.discussion-item-body { margin-top: 5px; }
+.discussion-item-ref-title { margin-top: 0px; margin-bottom: 0px; line-height: 1.2; }
+.discussion-item-ref-title .issue-num { font-weight: normal; color: rgb(153, 153, 153); }
+.discussion-item-ref-title .title-link { color: rgb(51, 51, 51); }
+.discussion-item-ref-title .title-link:hover { color: rgb(65, 131, 196); text-decoration: none; }
+.discussion-item-ref-title .title-link:hover .issue-num { color: inherit; }
+.discussion-commits .discussion-item-body { margin-top: 0px; margin-left: -31px; }
+.new-discussion-timeline .previewable-comment-form .comment-form-head.tabnav { background: rgb(247, 247, 247) none repeat scroll 0% 0%; padding: 6px 10px 0px; border-radius: 3px 3px 0px 0px; }
+.new-discussion-timeline .previewable-comment-form .comment { border: 0px none; }
+.new-discussion-timeline .previewable-comment-form .comment-body { padding: 5px 5px 15px; border-bottom: 1px solid rgb(238, 238, 238); background-color: transparent; }
+.new-discussion-timeline .composer .timeline-comment::after { border-right-color: rgb(255, 255, 255); }
+.discussion-timeline-actions { border-top: 2px solid rgb(243, 243, 243); background-color: rgb(255, 255, 255); }
+.discussion-timeline-actions .merge-pr { padding-top: 0px; border-top: 0px none; }
+.git-lfs-setup-list li::before { content: counter(step-counter, decimal) "."; margin-right: 10px; font-weight: bold; }
+.explore-section:nth-child(2n) { background: rgb(249, 249, 249) none repeat scroll 0% 0%; }
+.explore-section:nth-child(2n) .repo-collection > ul { background: rgb(255, 255, 255) none repeat scroll 0% 0%; }
+.explore-section:nth-child(2n+1):last-child { padding-bottom: 0px; border-bottom: 0px none; }
+@keyframes fadein {
+ 0% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+.form-signup-home dl.form.errored dd.error::after, .form-signup-home dl.form.errored dd.warning::after { position: absolute; left: 10px; bottom: 100%; height: 0px; width: 0px; content: ""; border-style: solid; border-color: transparent transparent rgb(51, 51, 51); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-width: 8px; pointer-events: none; }
+.form-signup-home dl.successed::after, .form-signup-home dl.errored::after { position: absolute; top: 15px; right: 10px; text-shadow: none; font: 16px/1 "octicons"; display: inline-block; text-decoration: none; }
+.form-signup-home dl.successed::after { content: ""; color: rgb(108, 198, 68); }
+.form-signup-home dl.errored::after { content: ""; color: rgb(189, 44, 0); }
+.form-signup-home dl.is-loading::after { position: absolute; top: 15px; right: 10px; display: block; width: 16px; height: 16px; content: ""; background-image: url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-16px.gif"); }
+@media not all, not all, only screen and (min-resolution: 2dppx) {
+ .form-signup-home dl.is-loading::after { background-image: url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif"); background-size: 16px 16px; }
+}
+@keyframes cloud1animation {
+ 0% { transform: translateX(-70px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud2animation {
+ 0% { transform: translateX(50px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud3animation {
+ 0% { transform: translateX(-150px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud4animation {
+ 0% { transform: translateX(125px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud5animation {
+ 0% { transform: translateX(-80px); }
+ 100% { transform: translateX(0px); }
+}
+@keyframes cloud6animation {
+ 0% { transform: translateX(-200px); }
+ 100% { transform: translateX(0px); }
+}
+.issue-list-meta::before { display: table; content: ""; }
+.issue-list-meta::after { display: table; clear: both; content: ""; }
+.new-label .label-edit::before { display: table; content: ""; }
+.new-label .label-edit::after { display: table; clear: both; content: ""; }
+.label-edit::before { display: table; content: ""; }
+.label-edit::after { display: table; clear: both; content: ""; }
+.label-colors::before { left: 8px; }
+.label-colors::after { left: 9px; }
+@keyframes ellipsis {
+ 0% { width: 2px; }
+ 100% { width: 12px; }
+}
+.context-loader.large-format-loader { position: fixed; display: none; top: 0px; left: 0px; bottom: 0px; right: 0px; margin: 0px; width: auto; padding: 190px 0px 0px; font-weight: normal; background: rgba(255, 255, 255, 0.8) none repeat scroll 0% 0%; border: 0px none; z-index: 9999; text-align: center; color: rgb(153, 153, 153); }
+.request-reviewers-list::before { display: table; content: ""; }
+.request-reviewers-list::after { display: table; clear: both; content: ""; }
+.clearfix::before { display: table; content: ""; }
+.clearfix::after { display: table; clear: both; content: ""; }
+.right { float: right; }
+.left { float: left; }
+.text-diff-added { color: rgb(85, 165, 50); }
+.text-diff-deleted { color: rgb(189, 44, 0); }
+.text-error, .text-failure { color: rgb(189, 44, 0); }
+</style> + <style media="all" rel="stylesheet">/* Effective stylesheet produced by snapshot save */
+.marketing-section::before { display: table; content: ""; }
+.marketing-section::after { display: table; clear: both; content: ""; }
+@keyframes rotate {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(-360deg); }
+}
+@keyframes teamDev {
+ 3% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 27% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 30% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+}
+@keyframes teamDesign {
+ 34% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 37% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 60% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 63% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+}
+@keyframes teamMarketing {
+ 67% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 70% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+ 94% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+}
+@keyframes teamDevDesign {
+ 3% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 27% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 30% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 34% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 37% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 60% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 63% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+}
+@keyframes teamDevDesignMarketing {
+ 3% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 27% { border-color: rgb(189, 44, 0); color: rgb(189, 44, 0); }
+ 30% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 34% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 37% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 60% { border-color: rgb(108, 198, 68); color: rgb(108, 198, 68); }
+ 63% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 67% { border-color: rgb(204, 204, 204); color: rgb(187, 187, 187); }
+ 70% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+ 94% { border-color: rgb(255, 153, 51); color: rgb(255, 153, 51); }
+}
+@keyframes bounceIn {
+ 0% { opacity: 0; transform: scale(0.3); }
+ 50% { opacity: 1; transform: scale(1.05); }
+ 70% { transform: scale(0.9); }
+ 100% { transform: scale(1); }
+}
+@keyframes fadeIn {
+ 0% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+.segmented-nav-tab::before { display: table; content: ""; }
+.segmented-nav-tab::after { display: table; clear: both; content: ""; }
+.table-list { display: table; table-layout: fixed; width: 100%; color: rgb(153, 153, 153); border-bottom: 1px solid rgb(229, 229, 229); }
+.table-list-bordered .table-list-cell:first-child { border-left: 1px solid rgb(238, 238, 238); }
+.table-list-bordered .table-list-cell:last-child { border-right: 1px solid rgb(238, 238, 238); }
+.table-list-item { position: relative; list-style: outside none none; display: table-row; }
+.table-list-cell { position: relative; display: table-cell; padding: 8px 10px; font-size: 12px; vertical-align: top; border-top: 1px solid rgb(238, 238, 238); }
+.table-list-header::before { display: table; content: ""; }
+.table-list-header::after { display: table; clear: both; content: ""; }
+.subnav::before { display: table; content: ""; }
+.subnav::after { display: table; clear: both; content: ""; }
+.boxed-group-list > li.approved::before { margin-right: 5px; font: 16px/1 "octicons"; display: inline-block; text-decoration: none; content: ""; color: rgb(94, 192, 81); }
+.boxed-group-list > li.rejected::before { margin-right: 5px; font: 16px/1 "octicons"; display: inline-block; text-decoration: none; content: ""; color: rgb(188, 0, 0); }
+#ajax-error-message { display: none; position: fixed; top: -200px; left: 50%; width: 974px; z-index: 9999; margin: 0px 3px 0px -487px; transition: top 0.5s ease-in-out 0s; }
+#ajax-error-message > .octicon-alert { vertical-align: text-top; }
+.simple-conversation-list.varied-states > li::before { display: table; content: ""; }
+.simple-conversation-list.varied-states > li::after { display: table; clear: both; content: ""; }
+.pagehead { position: relative; padding-top: 20px; padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px solid rgb(238, 238, 238); }
+.pagehead ul.pagehead-actions { z-index: 21; float: right; margin: 0px; }
+.pagehead .path-divider { margin: 0px 0.25em; }
+.pagehead h1 { margin-top: 0px; margin-bottom: 0px; font-size: 20px; font-weight: normal; line-height: 28px; }
+.pagehead h1 strong { font-weight: bold; }
+.pagehead h1 a { white-space: nowrap; }
+.pagehead-actions > li { float: left; margin: 0px 10px 0px 0px; font-size: 11px; color: rgb(51, 51, 51); list-style-type: none; }
+.pagehead-actions > li:last-child { margin-right: 0px; }
+.pagehead-actions .octicon-mute { color: rgb(204, 0, 0); }
+.pagehead-actions .select-menu { position: relative; }
+.pagehead-actions .select-menu::before { display: table; content: ""; }
+.pagehead-actions .select-menu::after { display: table; clear: both; content: ""; }
+.pagehead-actions .select-menu-modal-holder { top: 100%; }
+.context-loader { position: absolute; top: 0px; left: 50%; z-index: 20; width: 154px; padding: 10px 10px 10px 30px; margin-left: -75px; font-size: 12px; font-weight: bold; color: rgb(102, 102, 102); background: rgb(238, 238, 238) url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-16px.gif") no-repeat scroll 10px 50%; border-width: 1px; border-style: solid; border-color: rgb(255, 255, 255) rgb(221, 221, 221) rgb(221, 221, 221); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-radius: 0px 0px 5px 5px; }
+@media not all, screen and (max--moz-device-pixel-ratio: 2) {
+ .context-loader { background: rgb(238, 238, 238) url("urn:not-loaded:https://assets-cdn.github.com/images/spinners/octocat-spinner-32-EAF2F5.gif") no-repeat scroll 10px 50% / 16px auto; }
+}
+.protip { margin-top: 20px; text-align: center; }
+.press-info::before { display: table; content: ""; }
+.press-info::after { display: table; clear: both; content: ""; }
+.hubbers-list::before { display: table; content: ""; }
+.hubbers-list::after { display: table; clear: both; content: ""; }
+.billing-addon-items table tr:nth-child(2n) { background-color: rgb(250, 250, 250); }
+.payment-methods .selected-payment-method::before { display: table; content: ""; }
+.payment-methods .selected-payment-method::after { display: table; clear: both; content: ""; }
+#bt-pp-cancel::before { font-size: 16px ! important; content: ""; }
+.branch-group::before { display: table; content: ""; }
+.branch-group::after { display: table; clear: both; content: ""; }
+@keyframes branch-bar-slide {
+ 0% { width: 0%; }
+ 100% { width: 100%; }
+}
+.capped-card::before { display: table; content: ""; }
+.capped-card::after { display: table; clear: both; content: ""; }
+.capped-card:nth-child(2n+1) { margin-left: 0px; }
+.capped-card:nth-child(2n) { margin-right: 0px; }
+.capped-card-content::before { display: table; content: ""; }
+.capped-card-content::after { display: table; clear: both; content: ""; }
+.clone-url .input-group { width: 100%; }
+.clone-url input.input-mini { font-size: 11px; color: rgb(153, 153, 153); }
+.commit-form::after, .commit-form::before { position: absolute; top: 11px; left: -16px; right: 100%; width: 0px; height: 0px; display: block; content: " "; border-color: transparent; border-style: solid solid outset; pointer-events: none; }
+.commit-form::after { border-width: 7px; border-right-color: rgb(255, 255, 255); margin-top: 1px; margin-left: 2px; }
+.commit-form::before { border-right-color: rgb(221, 221, 221); border-width: 8px; }
+.commit-form-actions::before { display: table; content: ""; }
+.commit-form-actions::after { display: table; clear: both; content: ""; }
+.blob-wrapper { overflow-x: auto; overflow-y: hidden; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; }
+.tab-size-8 { -moz-tab-size: 8; }
+.diff-table { width: 100%; border-collapse: separate; }
+.diff-table .line-comments { padding: 10px; vertical-align: top; }
+.diff-table tr:not(:last-child) .line-comments { border-top: 1px solid rgb(238, 238, 238); border-bottom: 1px solid rgb(238, 238, 238); }
+.blob-num { width: 1%; min-width: 50px; white-space: nowrap; font-family: Consolas,"Liberation Mono",Menlo,Courier,monospace; font-size: 12px; line-height: 18px; color: rgba(0, 0, 0, 0.3); vertical-align: top; text-align: right; border-style: solid; border-color: rgb(238, 238, 238); -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; border-image: none; border-width: 0px 1px 0px 0px; cursor: pointer; -moz-user-select: none; padding-left: 10px; padding-right: 10px; }
+.blob-num:hover { color: rgba(0, 0, 0, 0.6); }
+.blob-num::before { content: attr(data-line-number); }
+.blob-num.non-expandable { cursor: default; }
+.blob-num.non-expandable:hover { color: rgba(0, 0, 0, 0.3); }
+.blob-code { position: relative; padding-left: 10px; padding-right: 10px; font-family: Consolas,"Liberation Mono",Menlo,Courier,monospace; font-size: 12px; color: rgb(51, 51, 51); vertical-align: top; white-space: pre; overflow: visible; word-wrap: normal; }
+.blob-code .x-first { border-top-left-radius: 0.2em; border-bottom-left-radius: 0.2em; }
+.blob-code .x-last { border-top-right-radius: 0.2em; border-bottom-right-radius: 0.2em; }
+.blob-num-hunk, .blob-code-hunk, .blob-num-expandable, .blob-code-expandable { vertical-align: middle; color: rgba(0, 0, 0, 0.3); border-color: rgb(213, 228, 242); }
+.blob-num-hunk, .blob-num-expandable { background-color: rgb(240, 245, 250); }
+.blob-code-hunk, .blob-code-expandable { padding-top: 4px; padding-bottom: 4px; background-color: rgb(248, 250, 253); border-width: 1px 0px; }
+.blob-expanded + tr:not(.blob-expanded) .blob-num, .blob-expanded + tr:not(.blob-expanded) .blob-code { border-top: 1px solid rgb(238, 238, 238); }
+tr:not(.blob-expanded) + .blob-expanded .blob-num, tr:not(.blob-expanded) + .blob-expanded .blob-code { border-top: 1px solid rgb(238, 238, 238); }
+.blob-num-expandable { padding: 0px; font-size: 12px; text-align: center; }
+.blob-num-expandable .diff-expander { display: block; width: auto; height: auto; margin-right: -1px; padding: 4px 11px 4px 10px; cursor: pointer; color: rgb(153, 153, 153); }
+.blob-num-expandable .diff-expander:hover { color: rgb(255, 255, 255); text-shadow: none; background-color: rgb(65, 131, 196); border-color: rgb(65, 131, 196); }
+.blob-code-addition { background-color: rgb(234, 255, 234); }
+.blob-code-addition .x { background-color: rgb(166, 243, 166); }
+.blob-num-addition { background-color: rgb(219, 255, 219); border-color: rgb(193, 233, 193); }
+.blob-code-deletion { background-color: rgb(255, 236, 236); }
+.blob-code-deletion .x { background-color: rgb(248, 203, 203); }
+.blob-num-deletion { background-color: rgb(255, 221, 221); border-color: rgb(241, 192, 192); }
+.add-line-comment { position: relative; z-index: 5; float: left; width: 20px; height: 20px; margin: -1px -10px -1px -20px; line-height: 20px; color: rgb(255, 255, 255); text-align: center; text-indent: 0px; cursor: pointer; background-color: rgb(65, 131, 196); background-image: linear-gradient(rgb(84, 144, 202), rgb(65, 131, 196)); background-repeat: repeat-x; border-radius: 3px; box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.15); opacity: 0; transform: scale(0.8, 0.8); transition: transform 0.1s ease-in-out 0s; }
+.add-line-comment:hover { transform: scale(1, 1); }
+.inline-comment-form { border: 1px solid rgb(221, 221, 221); border-radius: 3px; }
+.inline-review-comment { margin-top: 0px ! important; margin-bottom: 10px ! important; }
+.inline-review-comment tr:last-child { border-bottom-left-radius: 2px; border-bottom-right-radius: 2px; }
+.inline-review-comment tr:last-child .blob-num, .inline-review-comment tr:last-child .blob-code { padding-bottom: 8px; }
+.inline-review-comment tr:last-child .blob-num:first-child, .inline-review-comment tr:last-child .blob-code:first-child { border-bottom-left-radius: 2px; }
+.inline-review-comment tr:last-child .blob-num:last-child, .inline-review-comment tr:last-child .blob-code:last-child { border-bottom-right-radius: 2px; }
+.timeline-inline-comments { width: 100%; table-layout: fixed; }
+.timeline-inline-comments .inline-comments, .show-inline-notes .inline-comments { display: table-row; }
+.inline-comments { display: none; }
+.inline-comments .line-comments .comment-content { position: relative; }
+.inline-comments .timeline-comment { margin-bottom: 10px; }
+.inline-comments .inline-comment-form, .inline-comments .inline-comment-form-container { max-width: 780px; }
+.inline-comments .ajax-indicator { display: none; vertical-align: bottom; }
+.comment-holder { max-width: 780px; }
+.inline-comment-form-container .inline-comment-form, .inline-comment-form-container.open .add-line-note-button { display: none; }
+.inline-comment-form-container .add-line-note-button, .inline-comment-form-container.open .inline-comment-form { display: block; }
+.file { position: relative; margin-top: 20px; margin-bottom: 15px; border: 1px solid rgb(221, 221, 221); border-radius: 3px; }
+.file .empty { background: transparent none repeat scroll 0% 0%; }
+.file-header { padding: 5px 10px; background-color: rgb(247, 247, 247); border-bottom: 1px solid rgb(216, 216, 216); border-top-left-radius: 2px; border-top-right-radius: 2px; }
+.file-header::before { display: table; content: ""; }
+.file-header::after { display: table; clear: both; content: ""; }
+.file-actions { float: right; padding-top: 3px; }
+.file-info { float: left; line-height: 32px; }
+.show-file-notes { display: none; }
+.has-inline-notes .show-file-notes { display: inline-block; margin-right: 10px; -moz-user-select: none; }
+.octicon-btn { display: inline-block; margin-left: 5px; padding: 5px; line-height: 1; color: rgb(119, 119, 119); vertical-align: middle; background: transparent none repeat scroll 0% 0%; border: 0px none; outline: medium none; }
+.octicon-btn:hover { color: rgb(65, 131, 196); }
+.octicon-btn.disabled { color: rgb(187, 187, 187); cursor: default; }
+.octicon-btn.disabled:hover { color: rgb(187, 187, 187); }
+.write-content { position: relative; }
+.fullscreen-overlay { display: none; position: fixed; top: 0px; bottom: 0px; left: 0px; right: 0px; background: rgb(255, 255, 255) none repeat scroll 0% 0%; text-shadow: none; z-index: 1000; }
+.fullscreen-overlay .fullscreen-container { max-width: 800px; height: 100%; margin: 0px auto; padding: 30px 0px; }
+.fullscreen-overlay .textarea-wrap { width: 100%; height: 100%; position: relative; }
+.fullscreen-overlay textarea { width: 100%; height: 100%; padding: 20px; border: 0px none; background: rgb(255, 255, 255) none repeat scroll 0% 0%; color: rgb(153, 153, 153); font-size: 21px; line-height: 1.6em; resize: none; transition: color 0.15s ease-in-out 0s; box-shadow: none; }
+.fullscreen-overlay textarea:focus, .fullscreen-overlay textarea:hover { outline: medium none; color: rgb(51, 51, 51); }
+.fullscreen-overlay .fullscreen-sidebar { position: absolute; top: 30px; right: 30px; text-align: right; z-index: 1002; }
+.fullscreen-overlay .fullscreen-sidebar .exit-fullscreen, .fullscreen-overlay .fullscreen-sidebar .theme-switcher { color: rgb(179, 179, 179); float: right; clear: right; margin-bottom: 15px; }
+.fullscreen-overlay .fullscreen-sidebar .exit-fullscreen:hover, .fullscreen-overlay .fullscreen-sidebar .theme-switcher:hover { color: rgb(51, 51, 51); text-shadow: 0px 0px 10px rgb(255, 255, 255); }
+.fullscreen-overlay .fullscreen-sidebar .theme-switcher { margin-right: 8px; }
+.fullscreen-overlay .suggester-container { top: 5px; left: 0px; }
+.issues-listing { position: relative; }
+.new-issue-form .discussion-timeline::before { display: none; }
+.new-pr-form::before { display: table; content: ""; }
+.new-pr-form::after { display: table; clear: both; content: ""; }
+.new-pr-form .discussion-timeline::before { display: none; }
+.merge-branch-heading { margin: 0px; }
+.merge-branch-description { margin-top: 0px; margin-right: 160px; margin-bottom: 0px; color: rgb(119, 119, 119); }
+.thread-subscription-status { margin: 40px 0px 20px; padding: 10px; color: rgb(119, 119, 119); background-color: rgb(255, 255, 255); border: 1px solid rgb(238, 238, 238); border-radius: 3px; }
+.thread-subscription-status .mega-octicon { vertical-align: middle; margin-right: 10px; margin-left: 4px; color: rgb(204, 204, 204); }
+.thread-subscription-status .btn-sm > .octicon { margin-right: 1px; }
+.thread-subscription-status .reason { display: inline-block; margin: 0px 10px; vertical-align: middle; }
+.thread-subscription-status .thread-subscribe-form { display: inline-block; vertical-align: middle; }
+.ellipsis-button::before { content: "…"; }
+.oauth-permissions-details.default:not(.delete) .no-access, .oauth-permissions-details.default:not(.delete) .default-access, .oauth-permissions-details.none .no-access, .oauth-permissions-details.none .default-access { display: inline; }
+.oauth-permissions-details.default:not(.delete) .access-details, .oauth-permissions-details.default:not(.delete) .permission-title, .oauth-permissions-details.none .access-details, .oauth-permissions-details.none .permission-title { color: rgb(153, 153, 153); }
+.oauth-permissions-details.default:not(.delete) .mega-octicon, .oauth-permissions-details.none .mega-octicon { color: rgb(204, 204, 204); }
+.member-avatar-group::before { display: table; content: ""; }
+.member-avatar-group::after { display: table; clear: both; content: ""; }
+.member-row::before { display: table; content: ""; }
+.member-row::after { display: table; clear: both; content: ""; }
+.org-list .list-item::before { display: table; content: ""; }
+.org-list .list-item::after { display: table; clear: both; content: ""; }
+.permission-level-cell .select-menu-button::after { position: absolute; top: 10px; right: 10px; }
+.invitation-role-group::before { display: table; content: ""; }
+.invitation-role-group::after { display: table; clear: both; content: ""; }
+.migrate-org-roles .tooltipped::after { width: 300px; white-space: normal; }
+.migrate-org-avatar-list::before { display: table; content: ""; }
+.migrate-org-avatar-list::after { display: table; clear: both; content: ""; }
+.migrate-org-avatar-list .tooltipped::after { width: auto; white-space: nowrap; }
+.team-grid::before { display: table; content: ""; }
+.team-grid::after { display: table; clear: both; content: ""; }
+.typeahead-result::before { display: table; content: ""; }
+.typeahead-result::after { display: table; clear: both; content: ""; }
+.manage-user-info::before { display: table; content: ""; }
+.manage-user-info::after { display: table; clear: both; content: ""; }
+.org-migration-actions::before { display: table; content: ""; }
+.org-migration-actions::after { display: table; clear: both; content: ""; }
+.manage-repo-access-header::before { display: table; content: ""; }
+.manage-repo-access-header::after { display: table; clear: both; content: ""; }
+.ldap-memberships-list .ldap-group-form > div:not(.table-list-cell) { display: none ! important; }
+.invited .team-member-list .list-item::before { display: table; content: ""; }
+.invited .team-member-list .list-item::after { display: table; clear: both; content: ""; }
+.invited-banner::before { display: table; content: ""; }
+.invited-banner::after { display: table; clear: both; content: ""; }
+.owner-select-grid::before { display: table; content: ""; }
+.owner-select-grid::after { display: table; clear: both; content: ""; }
+.theme-selector-actions::before { display: table; content: ""; }
+.theme-selector-actions::after { display: table; clear: both; content: ""; }
+.vcard-stats::before { display: table; content: ""; }
+.vcard-stats::after { display: table; clear: both; content: ""; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable .unchanged:not(.vicinity) { display: none; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:first-child::before { margin-top: 1em; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable::before { font-family: "octicons"; content: ""; color: rgb(211, 211, 211); display: block; text-align: center; font-size: 24px; letter-spacing: 2px; line-height: 0; margin-top: 1em; margin-bottom: 1em; padding: 0px; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:hover::before { color: rgb(0, 0, 0); }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child::before { content: "Sorry, no visible changes to display."; color: rgb(211, 211, 211); font-size: 18px; }
+.prose-diff.collapsed .rich-diff-level-zero.expandable:only-child:hover::before { color: rgb(0, 0, 0); }
+.prose-diff :not(.changed) > :not(.github-user-ins):not(.github-user-del) > .removed, .prose-diff :not(.changed) > :not(.github-user-ins):not(.github-user-del) > del { text-decoration: none; }
+.prose-diff > .markdown-body li ul.removed:not(.github-user-ins) { text-decoration: line-through; }
+.prose-diff > .markdown-body li.added.moved-up::before { font-family: "octicons"; content: ""; color: rgb(211, 211, 211); }
+.prose-diff > .markdown-body li.added.moved-down::before { font-family: "octicons"; content: ""; color: rgb(211, 211, 211); }
+.prose-diff > .markdown-body li.removed:not(.moved) { color: rgb(170, 51, 51); background: rgb(255, 234, 234) none repeat scroll 0% 0%; }
+.prose-diff > .markdown-body li.removed:not(.moved):not(.github-user-ins) { text-decoration: line-through; }
+.prose-diff > .markdown-body .added:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins + .added:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins:not(.github-user-del):not(.github-user-ins) { text-decoration: none; }
+.prose-diff > .markdown-body ins pre:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins code:not(.github-user-del):not(.github-user-ins), .prose-diff > .markdown-body ins > div:not(.github-user-del):not(.github-user-ins) { text-decoration: none; }
+.pull-request-tab-content { display: none; }
+.pull-request-tab-content.is-visible { display: block; }
+.stale-files-tab { display: none; margin-bottom: 10px; }
+.files-bucket { margin-bottom: 15px; }
+.tabnav-callout::before { position: absolute; top: 50%; right: 100%; margin-top: -7px; display: inline-block; content: ""; border: 7px solid transparent; }
+.callout-review::before { border-right-color: rgb(252, 235, 155); }
+.callout-success::before { border-right-color: rgb(216, 240, 205); }
+.radio-group::before { display: table; content: ""; }
+.radio-group::after { display: table; clear: both; content: ""; }
+:checked + .radio-label { z-index: 1; position: relative; border-color: rgb(65, 131, 196); }
+.recommended-showcase-link:nth-child(2n+1) { margin-left: 4%; }
+.release-timeline-tags > li::before { display: table; content: ""; }
+.release-timeline-tags > li::after { display: table; clear: both; content: ""; }
+.release-timeline-tags .date::after { box-sizing: border-box; content: " "; display: block; position: absolute; top: 50%; right: -7px; z-index: 10; width: 12px; height: 12px; margin-top: -6px; background-color: rgb(238, 238, 238); border: 2px solid rgb(255, 255, 255); border-radius: 6px; }
+.release-timeline-tags .expander .date::after { display: none; }
+.release::before { display: table; content: ""; }
+.release::after { display: table; clear: both; content: ""; }
+.uploaded-files > li.delete:nth-child(2) { border-top-right-radius: 3px; border-top-left-radius: 3px; }
+.uploaded-files > li:nth-child(2) { border-top: 0px none; }
+.releases-target-menu .select-menu-button::before { top: 14px; }
+.render-container.is-render-ready.is-render-requested:not(.is-render-failed) { background: transparent none repeat scroll 0% 0%; height: 500px; padding: 0px; }
+.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer { display: block; }
+.render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-error, .render-container.is-render-ready.is-render-requested:not(.is-render-failed) .render-viewer-fatal, .render-container.is-render-ready.is-render-requested:not(.is-render-failed) .octospinner { display: none; }
+.pagehead.repohead h1 { color: rgb(102, 102, 102); padding-left: 34px; position: relative; float: left; }
+.pagehead.repohead h1.private .mega-octicon::before { color: rgb(233, 219, 165); }
+.pagehead.repohead h1 .octicon-lock, .pagehead.repohead h1 .octicon-repo, .pagehead.repohead h1 .octicon-mirror, .pagehead.repohead h1 .octicon-repo-forked, .pagehead.repohead h1 .octicon-gist, .pagehead.repohead h1 .octicon-gist-secret { position: absolute; left: 0px; top: 12px; line-height: 32px; margin-top: -13px; color: rgb(187, 187, 187); }
+.filter-bar::before { display: table; content: ""; }
+.filter-bar::after { display: table; clear: both; content: ""; }
+.repo-container { min-height: 345px; }
+.repo-nav .full-word { display: none; }
+.only-with-full-nav { display: none; }
+.repository-with-sidebar::before { display: table; content: ""; }
+.repository-with-sidebar::after { display: table; clear: both; content: ""; }
+.repository-with-sidebar .repository-sidebar { float: right; width: 38px; }
+.repository-with-sidebar .repository-sidebar .sidebar-button { width: 100%; margin: 0px 0px 10px; text-align: center; }
+.repository-with-sidebar .repository-sidebar h3 { margin-bottom: 5px; font-size: 11px; font-weight: normal; color: rgb(153, 153, 153); }
+.repository-with-sidebar .repository-sidebar .clone-url { display: none; margin-top: -5px; }
+.repository-with-sidebar .repository-sidebar .clone-url.open { display: block; }
+.repository-with-sidebar .repository-sidebar .clone-options { margin: 8px 0px 15px; font-size: 11px; color: rgb(102, 102, 102); }
+.repository-with-sidebar .repository-sidebar .clone-options .octicon-question { position: relative; bottom: 1px; font-size: 11px; color: rgb(0, 0, 0); cursor: pointer; }
+.repository-with-sidebar .repository-content { float: left; width: 920px; }
+.repository-with-sidebar.with-full-navigation .sunken-menu-group .tooltipped::before, .repository-with-sidebar.with-full-navigation .sunken-menu-group .tooltipped::after { display: none; }
+.repository-meta::before { display: table; content: ""; }
+.repository-meta::after { display: table; clear: both; content: ""; }
+.file-navigation::before { display: table; content: ""; }
+.file-navigation::after { display: table; clear: both; content: ""; }
+.fork-select-fragment { text-align: center; }
+.pagehead.repohead .select-menu .select-menu-modal-holder { z-index: 25; }
+.audit-search-form::before { display: table; content: ""; }
+.audit-search-form::after { display: table; clear: both; content: ""; }
+.graticule :nth-child(2n) { stroke-dasharray: 2, 2; }
+.export-actions .select-menu-button::after { position: absolute; right: 15px; top: 50%; margin-top: -2px; }
+.audit-log-export-button.disabled::after { display: none; }
+.context-loader-container .large-format-loader { position: fixed; top: 0px; left: 0px; bottom: 0px; right: 0px; padding-top: 190px; background: rgba(255, 255, 255, 0.8) none repeat scroll 0% 0%; z-index: 9999; text-align: center; color: rgb(153, 153, 153); }
+.two-factor-recovery-code::before { content: "□"; font-size: 26px; margin-right: 10px; color: rgb(234, 234, 234); position: relative; top: 1px; }
+.markdown-body .sms-or-app::before { display: table; content: ""; }
+.markdown-body .sms-or-app::after { display: table; clear: both; content: ""; }
+.two-factor-setup-container .select-menu .select-menu-button::before { top: 14px; }
+li.session-device.session-current .sessions-more-info::after { border-top-color: rgb(255, 255, 255); }
+.setup-form .octicon-alert::before { color: rgb(189, 44, 0); }
+.setup-form .octicon-check::before { color: rgb(108, 198, 68); }
+.collection-card:nth-child(3n+3) { margin-right: 0px; }
+.signup-plans tr:nth-child(2n+1) td { background-color: rgb(245, 245, 245); }
+.signup-plans-personal tr:nth-child(2n+1) td { background-color: rgb(240, 245, 250); }
+.signup-plans-orgs tr:nth-child(2n+1) td { background-color: rgb(246, 252, 244); }
+#user-content-toc ul ul li::before { float: left; margin-top: -0.2em; margin-right: 0.2em; font-size: 1.2em; line-height: 1; color: rgb(170, 170, 170); content: "⌞"; }
+.wiki-wrapper .wiki-auxiliary-content.markdown-body.wiki-writable > :nth-child(2) { margin-top: 0px ! important; }
+.wiki-wrapper .wiki-custom-sidebar > :nth-child(2) { margin-top: 0px; }
+</style> + + + + + <meta http-equiv="x-pjax-version" content="be127a1bc145075f45563e8af963c3fb"> + + <link data-pjax-transient="" rel="alternate" type="text/x-diff" href="https://github.com/gaye/dav/pull/70.diff"> + <link data-pjax-transient="" rel="alternate" type="text/x-patch" href="https://github.com/gaye/dav/pull/70.patch"> + <style type="text/css" media="screen"><!--
+/* Effective stylesheet produced by snapshot save */
+--></style> + + <meta name="diff-view" content="unified" data-pjax-transient=""> + + <meta name="session-resume-id" content="/gaye/dav/pull/70" data-pjax-transient=""> + + <meta name="description" content="dav - WebDAV, CalDAV, and CardDAV client for nodejs and the browser."> + <meta name="go-import" content="github.com/gaye/dav git https://github.com/gaye/dav.git"> + + <meta content="535859" name="octolytics-dimension-user_id"><meta content="gaye" name="octolytics-dimension-user_login"><meta content="20107688" name="octolytics-dimension-repository_id"><meta content="gaye/dav" name="octolytics-dimension-repository_nwo"><meta content="true" name="octolytics-dimension-repository_public"><meta content="false" name="octolytics-dimension-repository_is_fork"><meta content="20107688" name="octolytics-dimension-repository_network_root_id"><meta content="gaye/dav" name="octolytics-dimension-repository_network_root_nwo"> + <link href="https://github.com/gaye/dav/commits/simplify_requests.atom" rel="alternate" title="Recent Commits to dav:simplify_requests" type="application/atom+xml"> + + <script async="" type="text/javascript">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script></head> + + + <body class="logged_in env-production linux vis-public"> + <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a> + <div class="wrapper"> + + + + + + <div class="header header-logged-in true" role="banner"> + <div class="container clearfix"> + + <a class="header-logo-invertocat" href="https://github.com/" data-hotkey="g d" aria-label="Homepage" data-ga-click="Header, go to dashboard, icon:logo"> + <span class="mega-octicon octicon-mark-github"></span> +</a> + + + <div class="site-search repo-scope js-site-search" role="search"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/search" class="js-site-search-form" data-global-search-url="/search" data-repo-search-url="/gaye/dav/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"></div> + <input class="js-site-search-field is-clearable" data-hotkey="s" name="q" placeholder="Search" data-global-scope-placeholder="Search GitHub" data-repo-scope-placeholder="Search" tabindex="1" autocapitalize="off" type="text"> + <div class="scope-badge">This repository</div> +</form> + </div> + + <ul class="header-nav left" role="navigation"> + <li class="header-nav-item explore"> + <a class="header-nav-link" href="https://github.com/explore" data-ga-click="Header, go to explore, text:explore">Explore</a> + </li> + <li class="header-nav-item"> + <a class="header-nav-link" href="https://gist.github.com/" data-ga-click="Header, go to gist, text:gist">Gist</a> + </li> + <li class="header-nav-item"> + <a class="header-nav-link" href="https://github.com/blog" data-ga-click="Header, go to blog, text:blog">Blog</a> + </li> + <li class="header-nav-item"> + <a class="header-nav-link" href="https://help.github.com/" data-ga-click="Header, go to help, text:help">Help</a> + </li> + </ul> + + +<ul class="header-nav user-nav right" id="user-links"> + <li class="header-nav-item dropdown js-menu-container"> + <a class="header-nav-link name" href="https://github.com/mcepl" data-ga-click="Header, go to profile, text:username"> + <img alt="@mcepl" class="avatar" data-user="198999" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAE00lEQVRYw8WXS4wUVRSGv1NVbTfMA3lIIEMMkYcIBCNqYjRGVkh4uEGjEY0uIEY2LkxYiTruXZAYgiFKMECi4kKJLxI3GI1ECTGgkKDEIEyYGehBpme6arr7Hhfd1V3dXS96mnAnlTt9bt1b/z3n/P89V1RVqbV8fh/npg4xJS53ojkVm/t0EwMDbzdsPj4RIZcbYvus05y3JsNXEEADfZdty8s2P99chaoiIqgqjoiEAyEwOQpsnE06s4lUneU7zQlEuNE04v9btXXYgpisINqmXcXtvAueirT5phoepw1c2pDdRpBBp1mqSluYNeKhpe+2DVBthDiZJDFe3XJ5ESe+2IoxdmDI8Dr7yNEsU6ObYO/96QgmLZ5MJklEG5o5yXN/rOLIkRcxprqqLYZdHGS2uvWP6UbY8EJnxFPVzklyak6er1/7EMcp47ozcN2ZFIsz0KIgLuACHvAKHF+YQpYimhWMd1sOEp4nfj/aN45tV9pc0PRaf8QaUbYWqbFuSaAkbucS/1pKBvt+qstMpyQJ/3rE65L+FGolicVtatLJ8diig/UQhzIZeObyAI9cnxObh1FJ1PRahA6uvw47L7cv0aSDkSQBTh7bwuZTD/Pvjv2M9t9s3+k/i6lU7HiS/A0r57dvfskEfPkRDC4B3owmiRMXJqPC0aPP4h3eRlZMW32kanHTzYaSRAFR0J1w1gqptrQ6zrvNJViQJIkniQCqguvOiKs9wsNc+6h4MWmXmSZJtBM61ERetCNdbiOJ48c7zJMWii0VLCqpFratCuP04Wg5JRDFwwOm2khSD3EcSV7lALv4FE2zd4ECvTyov+NqLhXADCWUQdD3k0kS5sEcHrPVS30lcbSMqzk8si2j4bONWlg4ySRp00GJzpvQE0uiElYTzzYh4U4SW1H7E+2YDK+EgWsgtu0yIhqZg4lX0TiSIMBmuPYylPtDJl+CeTtAx8PxW5Zhz543GFh7qm3Mm+jhu8Mv8ZltQk+SVCQZ3QBPb4Xj94TvbuUcOOuESVLj1+rVZ1n32MnQ+Q+tOcO6iR6+UTojyd7FyRd3Cb0+S6RwB4dOzx/ltI5OjyRpyi1JEvBbuBG2ksRKJMkdbrHlVpqyP/pI1Pi5ceulLbeSQC4pgJp4khQKvd25k6QKcyBf1uer9ZxMAVmQLEhWyWa9+pPJlDh0aBtrri6Y3p3ER2uMVDeTgiRLi7Vic7DhhSnxUAaxA2XmMTE87nsxAaTWyrumq7AG2tjYD3r42grlDv0dzC/SkZHPg5AUVVVjjKqqlsue5vO/6L6hpdUpJjDdhPRdtO0fXqDDI8e1VCrW8RhjFGOMtj6FwhU9MLRdl3lztbdiNRbs8tNbEV3m3a0fX3leb9z4S8Ow1AH6iP3HdW/o8PAnuju/XjcWZnXdg5sne3X32FN69epeLRavaSsOvxc/1D5Zgmw2xlAoXKRU+p73rK+4kPmVb3vHpiW8Gyf6WOqt5R224Dgb6OlZgW3b0ZzUSJWmCejk5AUumTOcKP2EMT9ybuYZPuiZSgVqYTnDW2MPAE+wLvsk91pryOWW4ziZZGWL82Dwd5VQhkqlgOp/XJ8a4c/x30DOI1wEGcESryYVd4HOQ1kMuoK5fY+y8q6FQD+O04eI3VQQBKWu1fY/7H7d6/Cmr/YAAAAASUVORK5CYII=" width="20" height="20"> + <span class="css-truncate"> + <span class="css-truncate-target">mcepl</span> + </span> + </a> + </li> + + <li class="header-nav-item dropdown js-menu-container"> + <a class="header-nav-link js-menu-target tooltipped tooltipped-s" href="https://github.com/new" aria-label="Create new..." data-ga-click="Header, create new, icon:add"> + <span class="octicon octicon-plus"></span> + <span class="dropdown-caret"></span> + </a> + + <div class="dropdown-menu-content js-menu-content"> + <ul class="dropdown-menu"> + +<li> + <a href="https://github.com/new" data-ga-click="Header, create new repository, icon:repo"><span class="octicon octicon-repo"></span> New repository</a> +</li> +<li> + <a href="https://github.com/organizations/new" data-ga-click="Header, create new organization, icon:organization"><span class="octicon octicon-organization"></span> New organization</a> +</li> + + + <li class="dropdown-divider"> + <li class="dropdown-header"> + <span title="gaye/dav">This repository</span> + </li> + <li> + <a href="https://github.com/gaye/dav/issues/new" data-ga-click="Header, create new issue, icon:issue"><span class="octicon octicon-issue-opened"></span> New issue</a> + </li> + + </ul> + </div> + </li> + + <li class="header-nav-item"> + <a href="https://github.com/notifications" aria-label="You have no unread notifications" class="header-nav-link notification-indicator tooltipped tooltipped-s" data-ga-click="Header, go to notifications, icon:read" data-hotkey="g n"> + <span class="mail-status all-read"></span> + <span class="octicon octicon-inbox"></span> +</a> + </li> + + <li class="header-nav-item"> + <a class="header-nav-link tooltipped tooltipped-s" href="https://github.com/settings/profile" id="account_settings" aria-label="Settings" data-ga-click="Header, go to settings, icon:settings"> + <span class="octicon octicon-gear"></span> + </a> + </li> + + <li class="header-nav-item"> + <form accept-charset="UTF-8" action="https://github.com/logout" class="logout-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="e1eV7lA+jRXiFolPPs9uX/PUCXTtT5YgxqgO9SKP3Di6lVT8qvcZFiHCS69Kb0zfoL65uYrRXFNJDgCnyXBzTQ==" type="hidden"></div> + <button class="header-nav-link sign-out-button tooltipped tooltipped-s" aria-label="Sign out" data-ga-click="Header, sign out, icon:logout"> + <span class="octicon octicon-sign-out"></span> + </button> +</form> </li> + +</ul> + + + + + </div> +</div> + + + + + + + <div id="start-of-content" class="accessibility-aid"></div> + <div class="site" itemscope="" itemtype="http://schema.org/WebPage"> + <div id="js-flash-container"> + + </div> + <div class="pagehead repohead instapaper_ignore readability-menu"> + <div class="container"> + +<ul class="pagehead-actions"> + + <li> + <form accept-charset="UTF-8" action="https://github.com/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="jELeGM4nb45+UJ6kZX9h+5P8BF71Dq+JrWHq4tpyUVp0ISPB9yjh93aaWM9AslDReA3l/fq3rCF1ylVKLgLX0g==" type="hidden"></div> <input id="repository_id" name="repository_id" value="20107688" type="hidden"> + + <div class="select-menu js-menu-container js-select-menu"> + <a href="https://github.com/gaye/dav/subscription" class="btn btn-sm btn-with-count select-menu-button js-menu-target" role="button" tabindex="0" aria-haspopup="true" data-ga-click="Repository, click Watch settings, action:pull_requests#show"> + <span class="js-select-button"> + <span class="octicon octicon-eye"></span> + Watch + </span> + </a> + <a class="social-count js-social-count" href="https://github.com/gaye/dav/watchers"> + 9 + </a> + + <div class="select-menu-modal-holder"> + <div class="select-menu-modal subscription-menu-modal js-menu-content" aria-hidden="true"> + <div class="select-menu-header"> + <span class="select-menu-title">Notifications</span> + <span class="octicon octicon-x js-menu-close" role="button" aria-label="Close"></span> + </div> + + <div class="select-menu-list js-navigation-container" role="menu"> + + <div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0"> + <span class="select-menu-item-icon octicon octicon-check"></span> + <div class="select-menu-item-text"> + <input checked id="do_included" name="do" value="included" type="radio"> + <span class="select-menu-item-heading">Not watching</span> + <span class="description">Be notified when participating or @mentioned.</span> + <span class="js-select-button-text hidden-select-button-text"> + <span class="octicon octicon-eye"></span> + Watch + </span> + </div> + </div> + + <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0"> + <span class="select-menu-item-icon octicon octicon octicon-check"></span> + <div class="select-menu-item-text"> + <input id="do_subscribed" name="do" value="subscribed" type="radio"> + <span class="select-menu-item-heading">Watching</span> + <span class="description">Be notified of all conversations.</span> + <span class="js-select-button-text hidden-select-button-text"> + <span class="octicon octicon-eye"></span> + Unwatch + </span> + </div> + </div> + + <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0"> + <span class="select-menu-item-icon octicon octicon-check"></span> + <div class="select-menu-item-text"> + <input id="do_ignore" name="do" value="ignore" type="radio"> + <span class="select-menu-item-heading">Ignoring</span> + <span class="description">Never be notified.</span> + <span class="js-select-button-text hidden-select-button-text"> + <span class="octicon octicon-mute"></span> + Stop ignoring + </span> + </div> + </div> + + </div> + + </div> + </div> + </div> +</form> + </li> + + <li> + + <div class="js-toggler-container js-social-container starring-container "> + + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/unstar" class="js-toggler-form starred js-unstar-button" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="HfTUbLRv8b1emBpZ8c2vnfdf3lap6olBnbpkivF/wz2hhkESO7b57J99VgoTqjYgaftdTa5FtaRKogthqZqu0g==" type="hidden"></div> + <button class="btn btn-sm btn-with-count js-toggler-target" aria-label="Unstar this repository" title="Unstar gaye/dav" data-ga-click="Repository, click unstar button, action:pull_requests#show; text:Unstar"> + <span class="octicon octicon-star"></span> + Unstar + </button> + <a class="social-count js-social-count" href="https://github.com/gaye/dav/stargazers"> + 36 + </a> +</form> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/star" class="js-toggler-form unstarred js-star-button" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="lMJoWKhCNdJ+nrEexKY+0FBbzLEHINIdsLzkabdtf1kOoNcygYJ0fOeamewvbGPXC458ITlmb+F6pMnPla+RNg==" type="hidden"></div> + <button class="btn btn-sm btn-with-count js-toggler-target" aria-label="Star this repository" title="Star gaye/dav" data-ga-click="Repository, click star button, action:pull_requests#show; text:Star"> + <span class="octicon octicon-star"></span> + Star + </button> + <a class="social-count js-social-count" href="https://github.com/gaye/dav/stargazers"> + 36 + </a> +</form> </div> + + </li> + + <li> + <a href="#fork-destination-box" class="btn btn-sm btn-with-count" title="Fork your own copy of gaye/dav to your account" aria-label="Fork your own copy of gaye/dav to your account" rel="facebox" data-ga-click="Repository, show fork modal, action:pull_requests#show; text:Fork"> + <span class="octicon octicon-repo-forked"></span> + Fork + </a> + <a href="https://github.com/gaye/dav/network" class="social-count">8</a> + + <div id="fork-destination-box" style="display: none;"> + <h2 class="facebox-header">Where should we fork this repository?</h2> + <include-fragment src="" class="js-fork-select-fragment fork-select-fragment" data-url="/gaye/dav/fork?fragment=1"> + <img alt="Loading" src="data:image/gif;base64,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" width="64" height="64"> + </include-fragment> + </div> + </li> + +</ul> + + <h1 itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public"> + <span class="mega-octicon octicon-repo"></span> + <span class="author"><a href="https://github.com/gaye" class="url fn" itemprop="url" rel="author"><span itemprop="title">gaye</span></a></span><!-- + --><span class="path-divider">/</span><!-- + --><strong><a href="https://github.com/gaye/dav" class="js-current-repository" data-pjax="#js-repo-pjax-container">dav</a></strong> + + <span class="page-context-loader"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> + </span> + + </h1> + </div><!-- /.container --> + </div><!-- /.repohead --> + + <div class="container"> + <div class="repository-with-sidebar repo-container new-discussion-timeline"> + <div class="repository-sidebar clearfix"> + +<nav class="sunken-menu repo-nav js-repo-nav js-sidenav-container-pjax js-octicon-loaders" role="navigation" data-pjax="#js-repo-pjax-container" data-issue-count-url="/gaye/dav/issues/counts"> + <ul class="sunken-menu-group"> + <li class="tooltipped tooltipped-w" aria-label="Code"> + <a href="https://github.com/gaye/dav" aria-label="Code" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /gaye/dav"> + <span class="octicon octicon-code"></span> <span class="full-word">Code</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Issues"> + <a href="https://github.com/gaye/dav/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /gaye/dav/issues"> + <span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span> + <span class="js-issue-replace-counter"></span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Pull requests"> + <a href="https://github.com/gaye/dav/pulls" aria-label="Pull requests" class="selected js-selected-navigation-item sunken-menu-item" data-hotkey="g p" data-selected-links="repo_pulls /gaye/dav/pulls"> + <span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull requests</span> + <span class="js-pull-replace-counter"></span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Wiki"> + <a href="https://github.com/gaye/dav/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g w" data-selected-links="repo_wiki /gaye/dav/wiki"> + <span class="octicon octicon-book"></span> <span class="full-word">Wiki</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + </ul> + <div class="sunken-menu-separator"></div> + <ul class="sunken-menu-group"> + + <li class="tooltipped tooltipped-w" aria-label="Pulse"> + <a href="https://github.com/gaye/dav/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-selected-links="pulse /gaye/dav/pulse"> + <span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + + <li class="tooltipped tooltipped-w" aria-label="Graphs"> + <a href="https://github.com/gaye/dav/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-selected-links="repo_graphs repo_contributors /gaye/dav/graphs"> + <span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span> + <img alt="" class="mini-loader" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> +</a> </li> + </ul> + + +</nav> + + <div class="only-with-full-nav"> + +<div class="clone-url open" data-protocol-type="http" data-url="/users/set_protocol?protocol_selector=http&protocol_type=clone"> + <h3><span class="text-emphasized">HTTPS</span> clone URL</h3> + <div class="input-group js-zeroclipboard-container"> + <input class="input-mini input-monospace js-url-field js-zeroclipboard-target" value="https://github.com/gaye/dav.git" readonly type="text"> + <span class="input-group-button"> + + </span> + </div> +</div> + + +<div class="clone-url " data-protocol-type="ssh" data-url="/users/set_protocol?protocol_selector=ssh&protocol_type=clone"> + <h3><span class="text-emphasized">SSH</span> clone URL</h3> + <div class="input-group js-zeroclipboard-container"> + <input class="input-mini input-monospace js-url-field js-zeroclipboard-target" value="git@github.com:gaye/dav.git" readonly type="text"> + <span class="input-group-button"> + + </span> + </div> +</div> + + +<div class="clone-url " data-protocol-type="subversion" data-url="/users/set_protocol?protocol_selector=subversion&protocol_type=clone"> + <h3><span class="text-emphasized">Subversion</span> checkout URL</h3> + <div class="input-group js-zeroclipboard-container"> + <input class="input-mini input-monospace js-url-field js-zeroclipboard-target" value="https://github.com/gaye/dav" readonly type="text"> + <span class="input-group-button"> + + </span> + </div> +</div> + + + +<p class="clone-options">You can clone with + <a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>, <a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>, or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>. + <a href="https://help.github.com/articles/which-remote-url-should-i-use" class="help tooltipped tooltipped-n" aria-label="Get help on which URL is right for you."> + <span class="octicon octicon-question"></span> + </a> +</p> + + + + + <a href="https://github.com/gaye/dav/archive/master.zip" class="btn btn-sm sidebar-button" aria-label="Download the contents of gaye/dav as a zip file" title="Download the contents of gaye/dav as a zip file" rel="nofollow"> + <span class="octicon octicon-cloud-download"></span> + Download ZIP + </a> + </div> + </div><!-- /.repository-sidebar --> + + <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container=""> + + +<!-- base sha1: "e7e196cf37a41885efdb36c35e494ed416db8d21" --> +<!-- head sha1: "fb1b3aae56494020d88f2e0b24de531f8142295e" --> + +<div class="issues-listing" data-pjax=""> + <div class="context-loader large-format-loader"> + <p><img alt="" src="data:image/gif;base64,R0lGODlhgACAALMPAP38/LKxsfPy8svLy5eXl+fm5tjX1/Dv78/Ozr6+vtLR0fj399/f3+7t7e/u7gAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAAAPACwAAAAAgACAAAAE//DJSau9OOvNu/9gKHrKkJwoOgzI6L5wPJlBbd94Hpxy78cnnXCoS/yOyEuCyGziEoOkVOasWmvT7Gh57Q614AwjSvGaca0JIRDWMhAsBYV7NpcJeHYbCUf4yRN1ZkZqeIZ6ezElfowIBmWCXRWGlASJLwYsjY0UA0QsHnB0OYQSlZWIlySam38MkDYJaUA4k6eVqh1jra1yE0uASJ6pAbenqbkVmbytwbnGxskWfcybA4/S0NHSEtXNCK/cD9q3paqs3izh4oXkh6q73n/Y7BUJ7u978em+9RjF+JBN2Vftmj8O+NaEQccL1MEOCQUeYdis30MOAMlJ7EHRGr2LHf/uuTPnQx6cdSA/4EOiQN4AlClVuvuxrGDMFys5pitwEyc5kiNcwpxwoIFRBwcE+DvgwGgDBxlmwqjZ8GMFB1izGj0gTUDTrFgbaJDqoiMjixaegtXKNVFRtWsbKP2n0YVJDQLgrg3bVkvevWv7Xsi4LQTVZhu8Ao47t4IAAUybOp2MNWljCnn1LoY6lpyIdEMrRN6sFSpkyZpJo0aqtKhqrQi1GTaLAO2F13FT4wZ8dHdTjJ4/0HaGwbfx477FxoYGFMPhRi876EZOHbny5YU30LZdvLp379c3ED7V3IIBatA/fF9vXeatjRlKsOKOYTT7+6TDiyePaQVxvPgFSBr/CPnIwIBVHEwn4H2XcbDECA40+IKCC36nHwxJYZCZXDJU6GGEMXj1lGAUgLXVCx96eOEHb8F2QWpPSbhBih+uuIFrjFmgGGAkJkYhjd71iNd0PdpnYgg/AlmdjRlMd6GTIOyo5IJCZmCkixQQCUKSU1LH5AV/AXaZlCbKqCGXXSJXJQZaErXYlxZcmeZ9cF61WYl3foDmnMbVSYGcv03Qpgd78umbmWDqFt50iOpYqKG4rfniYnMtoGiUkFa4JaUSkIllB4Bm6h0Im7XlaVikihqgnxMM+ECoqapKJ6a8SQCrerLO+sGpgQIqqQW56uoBr8oB2qiOwbJH617Fcrpr/7LrRXnpq84OC+13y8Zla7UdhHntcb86Nq2xSH6L3LGOvbmtmOWamxy6mI27WLh2ursbqxMQuy5gIYRqr7bZHkntYiHw+m9gBav7gL7tHvwmvH/maTDErTpMGsUSuOptmQlbzKMIgyqKsQSPBotvltUOyqLHCBes6AIVEwwyy6iKAGh4N7tQcqYcirBZeAyLsPHBOs9bAaMu+AutC0Nn1aCCL+Bob9QK41lr1DsD+RQMUKbLrdBZ10ivBlCnxdvYGkgt6tYh9raWjLmNfGPY68X4g4gCI9tUhlJk1uWJU7TI2Ytod4qV0KutelThMOQl95BcOS600r7x3RNRRmWwYf9rMFTHuAtfPZ7vV5VpUJmIoHsn+qaSyS34p7f1OjN4YJytZ6kzstazB5S/drLLD4P6c4KHY0y301MoiC+FPprGau+7SeEvxdNv8FQDSdF7POw+KN8ws4lh1RqcBlO3Ops/j6y09WGZBiJmag//AG7nx6naCBRKat/CcuWVFIenGljN9iLA0vmgadwblvIaBRe1kMxW2duLUgAGMM38IH8oys+Q4lIahVFQYBbsAYV+Zzb5nak98xPYB8HSA9WQ0FEaJFuhlLPCAa6lQ6r53AUo5yO3maiGgQLi4JL2mh/gplv2sYyUaKjCJrKQajG8oAtfYCkXAZGJT4SQC+s3qSj/As+GVnRiVlKXHy4maouIC6MawTjG2ZFGhwp0IeO8hUU2BvGG0noNHFfmu2zV8Y5rPJx6uNSG+PEGYnTMmBgB2UYOIBB8e3jkD7u1yD/+cYhW4tIemcYl7DXPjpZUZBZPGKlkSDIua1qiKEG5SkEmqpOblMGedhevQIYyhaPMEppoKY3kaKiSrbwk+nDzwsARMl+mamAwl4nLNkImYi7EZD1O+T6SfcU+txQiao5WxpsYsmadUtAEgdnMvQjmZ9IEid9ati/epOYAV/IhJA3HLDO2YWP62d6hUMaWy9UHLtBME2b44s+5XUafvsxSLGNCzQottKAI7VNBeyCiiL7JIJMTvVvi6GS3jGbhNJS5l1Ms59FELOAx/lJiSVeakggAACH5BAkAAA8ALAAAAACAAIAAAAT/8MlJq7046827/2AoeoxinEM6nCczvnAsTwqipkiu74OtIqeZcChT/HbIpDL3MxCf0ItvSa0mVQZXdCvDWb9gXYpLHtXCaOuqzM4IGpVeen4tUAKDdlngaDgOFGd0gzkUCQGIeXpQfQ6OcBRyhGkDWhKImAEKi0IHfo6gAhRqNzoKgjeSSxWZmAmcMG+gs30UBkgqJgZ2HQwlRl46ThOtra+wII20s6ITPSkmvDK3OIrExa3IHbLLtIA0CpZQDAibE4fYrdbaFp7dy5DsD+nYx/IT7+8NzdoD9On3JOSD5yDgpX/Fhmn7NLARP4PzEGZSuIhbw30QLaCTqImTxXx+/zJm4IgIgZ6P+h6K1EjSXBmGA1d2aPny4jeZHEhSfAKzG0acHjb+29ITnkqgOSVCOXDxKNKk/+zNQEkr3tMQEqXGKDrL6lWsCHeOaIrBUwM/B5xqY3o2JAalMZiCVPsAXoObyPj09GoIodYQXEHhtRD4LiyzPulKdBmiYUE3gR8N3kLVmwa4IfiA3KCZrAUBAuS2Hf0prdM3kWdt8Csi8s8Mch2HDN3nrOOuttM+cHebrwWEIWJ3m2zhNm7jslPD4yC02F8Nrjsgn04due/fQz0Ir0qXgvLq4I1fx57u+YXUHsKrXz+e1T+xF/QuT7++PvX27usFt+2IeFn7APb2Af8262TWFgidBahgNyC4MkRogC0oITMgJGDeBg50B8J3E1aHHwgEmBRfWxpK1+GEJW6QAAEsBoABbv6ZeKKEH47E4o0EYFCUHylSMOOJNUaC45AFPpCgZR9U9qN9MV4QwJA4uljBdqAEOQGHS3oYApQ4EqYPglme2KQFXN7o5XAbhtmhlfOUSYBUR1bZo5FYqkndmBW4KaUEVD4CQp922semmznik0+agdIIopvevYNno4lKOOeTZUK6zJxKRqreoxKsWOYxC3DFZpya2rcol1KSWssHgJaq3qlQpvrlB64uOCijux1Ka60B3lppru8kwyuAbFLKJZ+OCjtsfcXiCuj/nEYua+qAzr4DrarSItdgtd1cm+16FXJ7KYJ1fjsLp52KSwu0D5RrriPQenossOMi+q540BoLJbJoKnuvgNv+2mpw/4qHlbq0ZFbwbehKQKgEqrIpgbvZvubBw9Fa29jCDbGrJ8Sisostxw07XOaeIbfGsU8jfDxxsgSvjGTAXFoTk8oy+ymCvkNSAKjEV+Zs8QcYQzyrCJma+0LRL3f7QqvfviBvrBVEBgNv/8JAaIGbXU1xlm4tjSsF2LJbQdKRGgbD1PueWVXJF2Dtatgw8Izjc1UNLYPcgfJIhN2FfiaZ2R6gpuZZcAfVs44la4Z0bV+DlNsiT+4pxBuAvGE2/20A6vbVBGZBdpYoiRtaXemN+R2LMn9o0J9eL6xHeIS1mY1YVxiuCnfkOpPhE7qRjfm63hpAbTAXShLfTtfQOWKkvbJzEZ0H6GkgC53aKbgF1HNyv4Efd0HIAe9VEcU89efHB+9u+I1c3ewZuMau8d8/UhAfKoXGISS3wR93QyNITZOEQyfQhA8jpKLXqpahwNY9aHpIk1/z7PcYSBwgLVQSRfnqgrt2JWwIAoTBRay3lyp1bYMb7AkIBwK0qrGQhFriYJUE0kEGzmCEMkgafvhzPBTW8IMxcAzqfOYYzrTFJz6coQx1ZsOrFXEIt9mGcEyTIP79UIlNHIHxWjjB9P+BIFRYvCITgSgC2fhPRziMYBjXOEbVjMUzUECb8qwnxgXW8TG0G8gQjWgTA7HRjn/EY+G+s0cOGK9326ijFQOZDA7pgW+JGeQfF9lGUEhSNh75Dt3coEgaMtKQHCqkH2UzJotQEpCVdB4MGcYOtFUpRlX0ZCpPKciz8ZCFooRBnYhnSlmi8pe1vBKW5sgJ62Aglkv8JS3RCLCMQJJBExBfL5N5ymUaCS+H3CRE0PYQ8P2hk9T05SPO4sK5POWZqwJZPjQITj36SB/BxInhZtbAvC3jgnZ5YTQj+Tl1KjFoaupmV3J5GIYQMVBkk0w/i2cx8sXwSgRdiSslFNGnOBQpPFxcaEJvuSa1afRykFOQbc74Ueux5YjiaYvnSsqJBYAGalRkqUxlEgEAIfkECQAADwAsAAAAAIAAgAAABP/wyUmrvTjrzbv/YCh6i2CeqLmMbOu+k3A4TV07eK7b9yHAwOBLZtMZj0hc8SBsOi+HYnJKNdZ8zyzsVu16czWteCT4mr3MsRojaFQa5ziy8ZsgFOtxGZ6WzOSAShQMAwgDeHlONGBvgYB1EgoIk4YGiUBRR5APVTxwczxUbhSFlIYDly1tSaMSZVZ8Jh4mM1I5fQ8GpqaHqSGLU5twPUFEwxW7uwOovhyrVbgzm01Eg6XJlAOWzRiZXa3c2NiF3BZndOUPy+LJzOlmcOkTCtfsk9rln50O0/L09tm2XXrWqZ88CQwMAaw0UN+UeAc1GKgnrtcagg8NRrRAcZxAMQ7/p2z88M8ePpCdcI3kMBHgySchj6BbCYKQyywxrWikuaGjMid/MvJksRCBEIwyh7pwiWiLKKUvXDKAUbDbkp2pat3I4DPbi6BzdspsoHIgMEZcAbrIeUsDW7JZuejMYLPi1BFdNCC1UvbJXiN9J7SsSOapXi8zK9BS4omLD4Nt2BrZALDpB8mJu32JJ4OGXMQ9fnj7xqGroRBgjwSmEOezI8/nONTFZpkD5g6vc8sBl8HkXQ6pd2CdIFm38R0eTBvtUNzD8eeGWXYd8PtwTN4aoGtPmrzdMtRyV1sIvv049gy6slkkYwPEq/LbQRT6DkRGiOLwH4GYiHf45fzPncdC/wK1xWCDfxwACB2CEiUQwIMY7AAXCwpCJ2AHAzyoYQAYXMfPLxVaKIKDG2q4HAXvqeYefiHGIR5HJW6YwHis3NeiiCDEuKEFb7l3o3YvVqCjhjwmESQFLP4Y2wcZDunOAykK98FfSjpy5ARDBjDjBOTRAEKXVQZy4QVZcjgBFSAkGeZmIJCoI5JGprnmcwyqk6VAbNVJ5ZxyXClBlswskNOYFkTJ52s5DrmloYJ8AOahcSSq46I1fgCpcYQKmaUfIll6aW6ZUuBmjJwmAcKnoLa56QNd+skJqo6EOkGTb7KaRJ1QwuoICAis2iWujOrqBQgK+Hqrj8LKQayxSACrZv+yOLha7JClamIjtF/gOm2tv16LbVUkMaviqd+SJp+4R6BWbichjFpitekiu26cqlKb6xwiPKtrZh24u+O9zYI4b8CS1voXv84MPG7BJW75wKC4SqDvp7JqOilx9H6pcFshbBujO2jmu3HFoq4KL3IjTDwnwv2aDLAVLOypKwtlNkKwCI+iyoIBWToscacjjJZsC/5q+OSr+LYgNMUOuFCzYsG4IHOVE7bwtM18wbB0mBC5UPSDPp8pYcQbbN0iHGRnYG+hSmCRRWRnV+2EuxnI3cErIuzhGqjE5EHkUXC1QXZnxrkNFQVRXBgZOq6aA0jjNBMQwImF6SNetHtQ6Ej/2iEQ4LnnYXeQOMzZecmqyLGqEcDnrJvJ3BQvYs5yBjkjJsYArOdOQOhQPGQbDlDKqRvnHOie+39As8GZrLWbkUUCxrPuKBXDDePDkSpX6kT0n3vLXQaviEZosIEQjwH3nrvuQc4bfMLZhyiazZ0X5lsAPfopUyEeWFDS0YYP6GCUrdCSrtRAjivokxx7hFI3MADvYX64nrVIR7qQCCGBBGgBu8AXEn3cBmmNquBkgIDBFxRnTFNLGgVRFq8XrA596lug79yir1GskIAjdFoJtZYXvdhiBzcMIQtzGLkECmFYzgDLY1JkwyHiUAc6NGIT8EOyCgjqiULE4gNH8EIY/8Jkg3nzoASCaLoWhqCL+PMLFQfnxCy6cYsgwKDnxDA1uzlDjCAsYxvh2AEEyDGDY2geyZg4xj02EYofQGMa1SA/Kd0Nj2Q8ZA48wIA/AjIPKezaYbQoST0icgP3k6MvUkiDFxGkk6gs5CcxgDtLcoOUpQSfIVX5xqZhoFiWvCQ3nsWyU9LSk7U8Xy51WQ54sGGWeeykLS2Qyximo5GrtE//OPlLZboCF4rkHk+mJoxFgCWVyfwlY3gjSqXIDxx7+kEkxakDXCTQmTSBG2AQJ4qYHCA4e0OZBEKpu8MpxiG8yV75KGA8ePpzNPT8EQXQaFB/cikzAhVTBbrn0BDA8i852Kxo/pRURY1eQG8KuoJHj+KZiI4FfiN9m1byyQobGC6liSgB4Yx0ApjalCYRAAAh+QQJAAAPACwAAAAAgACAAAAE//DJSau9OOvNu/9gKHqLYJ6ouYxs676TcDhNXTt4rtv3IcDA4Etm0xmPSFzxIGw6L4dicko11nzPLOxW7XpzNa14JPiavcyxGiNoVBrnOLLxm9DX4zI8LZnJ/0oUend4TjRgb4B/dRI7hIUvUUeMD1U8cHM8VG4UmGAOkC1tSZwSZVZ7Jh4mM1I5fA9+Rw2woR2HU5RwPUFEu4lTpbYao1WwM5RNRIJdj8MWks3Pdl5w0xVnzrae0teVX9besdybyZDkpA7m17iW63noc+/exe6Q9cGg4hrRm7Va+EjN29cJzZp4Rwh+6CdwDEIw/xQSe6hkoAuKNCxKtBBwVhaM2v82egDpRFZDkSO8COm4A6WLLhFHUBTmUmY5GPagLNGIp9WNDDMj3cQwi9Y0PVY0YLxIJaYEhEYhRYkXMgZFnhe6TPS3hqUOp7E2kRFLrNo6VkoucfFxlkuVDcZEPKxKweQmUDJouK3W4wdDskqDhbBrBGyjbBjN7O22dQqIubcUSf5Dk6hgD4TB8Ew8uTOiDhRHUvHguTTjDafkdUCalLTp13M+oKuBdcLUVwth6/68eoc6UTZApN4N+/GVXoYtcCZ+pvYDVSJ+A1nOvJqQAQzY2HBuuXpp7hYQDBiAQEF3vckzeH9d+cN4BPDFY5gt/cN62O03vI8PHzvHKelZdd//awFKwAB5/MVnXgWZ0RACdQNaBwKCCcKnHCnCRQhbgQ8oUGF/FyLBIYQansaBAR+Kl10MJ61GYolxuffhAAbUhWFuMJqWHwYUVkjBaLLlqCMIHs5YkIiPCWlabSgaSQ0StXmlpBwc9hiffw8sQFWGU5Y24Yw1PncjZl16KWOFNJoyZmRlTrbjBSmW14dj9rXp5pcpzpkECHbe+UGTH+p5BId9SvamBUUGGhaUXBb6B55oCmqEc8M5egYIBzrZIKWWPvpBppEuOolwLzrKIagJDiCpDtyVWqhzqPKnqqiTPtipYs5ZeeWquPF5KzghxIkArzkM9quEf8ZJLA4hVHos/5KQ+ihmbLY+26IHusK3oLM5cGctFdzFGSZLdGXA7bccSpAtAmE+QBV4rk55KI8zruhuEunS+q0D+SaaagETAFntvvNe4K+sNlIrF8HgPbDusCwq3Gy8JbKwbrtPJdGwvreyECeWTyLRwl+OtrDurD+uKQLJZYZjsbIVnFsfGRTrFhULClx8AVX5QlOzZy63gKKuIKcMRrkjsHwfHBtfwIB4CF9wCi1No7YYc8dpYcB7C+6c7ikiDPKzI3sUcqC9QLTBRBvg5eUZFjUxGIZ2tMXy0h89ixDA3iiP5QlYOPjgYEqKVN1BAnsnnsDKix0aiN0DU6ZG4pTzLRq+cPHLNv8IDWYjBuKVU45xBp3Pi8lzSXZmeAahVx4kneZa0waZZjrROuVdc9D5zDvT4EN6Yw/eBOi3BxB5a+bi4NehMi9ie/EBjK77W4EdImYyREjoxeoUQB/A4gsDyI8Oz9Gh9ubc0spJQnblfQHxt7MgJdKenO5uH7+P2lpr5Ajhfd8hsERjPqGEy+yvJfciHxC8ZzymXEY7clgfAg+owBcwEAZSEt58ICTBz1CwWBb8HxB2x6yJXK0dj/vg4BLiAgaCDwgq4YDbAneCCdrQg0Zo4QWbQBIWaAmHQExhDlnAwOg9oYdhq99hgrjCIeqNgblbCUjadkMhMlEfEyoiAJUBkq//KfEbTOwgCD9QxO+pgYSPW0UVm3hFEJTxhWNQ2g6wUg8xstGKY9wA/KAHRzVksIC9CeMS8VjCDZTRjKH4oxIMU8dB3vGRWMTAIQOwRTwocpHJEyQYCRnJCuxRhNegTlUauclH2rGTE5hkAKL4DMWwYY12PKUkDykROVbwAXuTQAnyEktHSpAtdchlKovYx338kRIESCYBKGkAqpniANCMQiOiCc1nFuBAAVAmASrAwEoSRGnCSIA2tfm9YTGgAHtIAzRpcE0JIG6cymygBPgYN1NcDRbwzGcys9k6feqTAp+0XD0FxBsJ+POgCD1o30JXzIGOI4/ZTKhEJ7rNYe6tP6EOtY0zKMpRhHIToxllXUdHmk95hnQEJE3pOE/qApWm1KQsbUFEXXpQmMYUCO+k6T69edMnJC6hF+2pUPcRAQAh+QQFAAAPACwAAAAAgACAAAAE//DJSau9OOvNu/9gKHqLYJ6ouYxs676TcDhNXTt4rtv3IcDA4Etm0xmPSFzxIGw6L4dicko11nzPLOxW7XpzNa14JPiavcyxGiNoVBrnOLLxm9DX4zI8LZnJ/0oUend4TjRgb4B/dRI7hIUvUUeMD1U8cHM8VG4UmGAOkC1tSZwSZVZ7Jh4mM1I5fA9+Rw2woR2HU5RwPUFEu4lTpbYao1WwM5RNRIJdj8MWks3Pdl5w0xVnzrae0teVX9besdybyZDkpA7m17iW63noc+/exe6Q9cGg4hrRm7Va+EjN29cJzZp4Rwh+6CdwDEIw/xQSe6hkoAuKNCxKtBBwVhaM2v82egDpRFZDkSO8COm4A6WLLhFHUBTmUmY5GPagLNGIp9WNDDMj3cQwi9Y0PVY0YLxIJaYEhEYhRYkXMgZFnhe6TPS3hqUOp7E2kRFLrNo6VkoucfFxlkuVDcZEPKxKweQmUDJouK3W4wdDskqDhbBrBGyjbBjN7O22dQqIubcUSf5Dk6hgD4TB8Ew8uTOiDhRHUvHguTTjDafkdUCalLTp13M+oKuBdcLUVwth6/68eoc6UTZApN4N+/GVXoYtcCZ+pvYDVSJ+A1nOvJoQLBfa0MZZ3bTz7IdiOkqeofvrygvdon8wW/oH87DX85ttbnhh4dThG/zg9V9mGiHkp9//aaCRopyB/A0IG3m2IVgQEgw+peB5+CVBiX2a8SfghHHJlsQxDnbwH4eAyJeVYxOM5iGJpZkITYgIRcgei95pGBs1SNTmFY1yyIhQHQtQJRyPpj1moSkhcjAikXGAMEUaGAbyHpOduYgNiiM6SeVkVjJzY5ZTbqlIlzEg+J+MYkpGJpJfHplgmoAM2WaOcsIpR4UehUXnm3Y2yWdr/zm3Y58Q4gmomysS6oWgZiIqmqLNCCqknkfI+A2kloQQJYCUJgTCkphy+mdLnRqhaahNnXrjpmviiKoV34G5qXuuvTpJCCqyRFcGs2Jq6YyFSjjLd8DaKqqRexZ732DG4vCr/64rHJaETba22uCNfSSZKKa7anAZm3mKMGiaLMQIzK0jgLolC14l81ALf8EJr7bfpruheeGUq+2sxApyL3NRtfDugbP8Cs2/5+njgnbJUoBKvxnEqx8cEIPHzXqn0FIxaosBHPATtymsnKWniKsXwpnsUUgb/SbAhlEsi6vuF9jVRAEBOPNqg18v/WGwCAgMgAADLiSA89EBeOuAD8dqCcjGHggdNAIGiBDA0VgTABenv6JsLdAIhB32AAMo8EHWWSettA/dvsilGAxILfbYAxDNAdpZc4DJc8hOBnUGcs899tl4H80xXmTO/EUWBgQueNUeFI70Brv4QB7KpDrh+P/cA4Qgec5l/RYFaq/9XYHggtcdwtWfU64EXrQ+J3GeizahAOqCj/A5AWpjYNJzdLTB9g9RdspJQnb9fEHcuA8+gtGf936BJ3uz14flt7bWGjlCbC72AJDrvnvnL1vxCYLak8o9EM1//8LuWussx/Gkpq8D++0HDQP0rSuVH/2fsV8OYHC79oEPCKzrn8461g4pCZBTnmqBArznviDAL36oMQlbhgNAB9bPVBKkoPOEcMEWBCmAH0Th/VgwNQParQkXJJ+mqCctD6pwgCPI39jC14QERs9kN4RgCnEYAhGOzWxa8KHkpLcaGl7KhlDEQQgap8OyqUGJkquTEIPYQSn/fmCCOkQAEtVwQZwxUX5R7GIXRaYB5lURAZDAYhY5wMEabjGKbMQAGKs4xkLIsXBnrEA91GjHNW6AimG04jD+CEheDfGOkMzjBAzQQj56o4yT44gTH2jIC5AtjDvcByYJ4DILnDCNhbSjJB9gRM5JhJF5m8AASlmCvBDyiULcoARmSQFKvlEk/FsiBQJAzAAkQAEMKMAB0rDMZeaymaaIAgMMkIBiMtGIB3TJ7iiAAGtaMwEHLEAB9qAPZzZAnLtMQDW9aUwKFBB1QrOZBIKJNemx857EVKc+97lOfHqTAm7kHA/licUK+POgCD2oDFnJuT7Kc5hYo0A/E0pRivZSSGiKfGgGcFZKCVT0oxalQEY1+oEBgPSk/uwoSVmA0pbec6UvmKhLQapSmLrApDNNaE1t2r2cWjOePC1E0NR5UH3CMahIJUgEAAAh+QQJAAAPACwBACoAeQBVAAAE//DJR8K8OOvNu/9gKD4BYRJjqq5si51w4s50vcK4Ze88n+C4nnDIAsaIyKTHeFI6nxOmCUpF/piyqpZXYm6/NikKTG6Jy2iVVJduewbSrHuuuRrp+Ez3nu+TpH59e0CBeWeFdIeIbmuLc42ObZCRaIqUZINBl2WWm1uZMJ6YgKJfoE2lW3ZAA6lacFiuWpOyT521Sbe4RKdTu06rOb9OusM8xcY2vWPJQ8GazUK00TtGbNQ9q3LYQxXcZa3fVgHX4hoODQ4CIgPk7uYd6egN6x0J7vjl8BIO/f7oBzbky7cPgwB5//rRy3Bv4LuCEhAmRCfQ4cN9Byb+q8fQIjmIEv8TNujg8SO8kP8WcmhX0lxGjf4+lNTX7CBMih8YzPyG8l9AEA09bjPW099IETNp4rqpMIWBpMmY9vs5gmXLXy+ZsgjqcVdWmEdZJFV6SSo6jmKTDi0rVaWLp2pFFfVpQ8HYTTalUq1h964jdGYdCEEwNsBaOnnbEunrN8+BuXSRMIaKGHLkJHALH9Zy0LLCvUoKu9v8pIFnhWifcN1J5jTOLVZZS2CgQIKAA6BVOMD9k4GBC1/BCiaTWegFBAOSK2BQIF2G4Rf6PRj+s0ABAwqSh5sA2W2Z1QQnFBiAoDzy8gYYMIjI73lY3wqQky8/4PeEm87nFMeHwcB88+YlV553AgQaYOCB2MUn338AIneBABp5N0dsJk3AYIMYBnhhhhjWd4FEDeSGB1cXMLAhhyimmOGDn1FyDwYqxihjg9tFJOIlJs6oo4zGZLfjjxzWuAt2AgK5o3bY0KadkUEqVxB2C56IonYDKGAfRBj4ZgCAVAaIAHZtRAAAIfkECQAADwAsAAAAAIAAgAAABP/wyUmrvTjrzbv/YCiOZGmeaKqubOu+cCzPdG3feK63AxHsQFqPQAwaX8Qk4chMBZTKplQ0hCan2M7TqvxlvxUFlwsuPxJjbsKc3aat7Omb640z59C63WjAR/dMfX5LgIGDhIVHg3qJQIONd36QR25vk0Zoc4yXOAh4m5w3n6FAlWOkO1VpqDt4rDqmcK84Ym+gszGuuDaqZLs2c7+8wcI0xMUzmXTIN7HMOW63zzJo0zEJAyoNDtzd3t/g4eLj5N8NNQYB6msn5e7v8O4CJwIO5xkJ6vrsI/H+//HujTjQYJsDDfoSqssGAqDDh+IEfiD4LQMDhQpBCDAIsePDAxr/OXbLMABjQhAiPaoMGCLlQQz5TEq7UG+lTX8gJ4LLIFMdyptA30nksLHihXQ9PxQNynRcTg8pMZSUCeJA06vhhm7YeSGmyZ9Yw3LTqsGqNww9Z1pwKZbpPA9LuaFNCpdtW6BPO4i8UCCt0rttwcq1gPSrTsBhG561oICuB8RhyWYwWmGq4ceQr0rGUHNwZccdMmvWuLiCV4yKRQfdTLM0hdMZ/6oOSnqkBdgnZc++GdK2adBEdwOt7fk18A1xhXfMS5Rj1+Mb7Cr39xau6wm49bWc3rFB9Q5xn1NNzd0h69a+jY8/XB7geQudX35eb709QObB009AAD26fX/ehWBW/3ETFIYRP5j9F893oV0nwUUyIQiegvDgx8FeF/i1HYXkvHcBhhZoWBWH5FiIHIi/0feBdBR6aMGABE5gGUYMbUhiNwGKwBVjIvZ2o34rUhZifxzASCIJyck3pIpVsThdCUYqmeJlAzmp2jYmuJRBY0SCZyVkDZgYpJBLUkkCRcphSU9BZE6ZmwpoirYNgybU41wG/L3ZwkZfrlSQmCgQdJ52solgJ5s3FbQNoCzQ+QEDnIX5wEaOIhflR5V+wQACNcKn6DyMbuVQqCnY40CmHRRgAKcDcKoBNwfYSUJHqGozVo4gMKDAAK0i4GunF4wlAakV9BnRDFkR+wCnvjbbLP+wFsBK6YgeuThCkjjWKoEBvTr764VyaUuBseSIO4J01nbrrasaFDWpi5c+9EK83Jj7ALfrPutfmAKQSm6HL6AbQr76tlvvAwQhB5S9UI2DqwcMqOsttMWOdVA9DPb75T3vMFxkOSMQXDAGML4rwEaxBhjfSDByXJGRyjbnMAkFSOzsAAZowJFBEtxzQKxRzmOOBEM/EJWtTpWAL8EUT5DkzjM/UHTRR6PAorUYiPxtBti64zKORHvzNZD9AHxCzVo3PQGi8IxtT9hgS92mjuXEnMHSIp/ItthTiw23sHI7KKA7Kyigta/gwRjryX4HDnjfgrN3LAs2r1vCAjv//bb/45vvSHeHHndQ+c1IZs65225L+YHXoXcQ8eEDQBpCfKhrnvq57tgNAt5M5+xj541DTna7VuoeAu/5DqAAccDHLXyMr35Zw66Hcyq7zI8Hr33kngp1A/LJL59f9s5vP3wFcZaYA/jJ+8616c/fTnyFO7C/bqvXw2d+8+Sfz6dQxlvB6O6HAPdRIC61O53mVNezPj0MCANcl4QkQDvbWZBzDDRa26bALNgdMCcIvODzXtIvCtALRxkMAvW0hqBtLGp/CcxKQSrmsNbVgFdMO6B0hAbDBXojLw5LoRRW6CwFIOiEe4NVlJJYNApmxYY6wKGzaHiX74hEUo3AoRFNmJkDOo4lgFJIAAJaCKZigdEMXQvLGQHxLz9Z41Bi+ZM1vKioRM1pju2yiqKMtcdY4VEECzjZCRcHxT++IgIAIfkEBQAADwAsAAAAAIAAgAAABP/wyUmrvTjrzbv/YCh6SWAGREqcQZKMcCzPkqneeI63dO/LKJ1wKHz9jshKkMhs3gLJKM1Jraak2FHCyiVmvxlFYEDpmnFGSUMAzhpYlOW5SxE4Gut2kmWqzM1QEw6Dd3l6NCV8PBN/dBQNhIOQhzFiiicUA0SLHAMlXhMHkZENB5QhiZcmaQ87rDFbNxWQo6SnHW+qfHErUp91tbWGtxcDuorEE7TBpA7JFanHcMnLzLbPD9KKZNgH1dZ3bMTaLK/Yd+CEw3oM5KvYGALfzOtf7e7wG97pd6Zg99rM5bswL5i/LPgGetgHrh6ShAo9yEvn0AfEiBILXkMSTZVAjBz/NKpDYkzaR5Ac+DnzYenYSZQp0x2cERCmDJHhEJnE4A2PgwPi4InCMwkDzgYzSh7LIKxUMjvfkGbAuRKGNg0anR7qGayihInWgqKSpgEsvZlSzDJDW0GUNakhcunaYIdfRQEC3BLdSwuo2AnyqA7aIFPEVQ1u7TrLW0gwKZ9AHzC0G/JtCKWqYqqU5Filz813OKitBYKsZtCoU1M+LewDZkUvlameTXsU3A04PZhmXbs36Ntl3/7F0HFaB9/IUQPH2nT4huIfEiefTu9DXUkOnJPAZJ26d2YgiLKFYSxE5++qtcdTr0EBAx/n0f/+EfkCgwEDEBigIV8++w5Q/YSB/wIIFJifAjH0J99y0X0WWjEFRohAfu+BoGB/DOozj0P3SRghfiCMduF042Ug4iBsGeDhh+aNuGCLXVmwIovduShfiTxVV0F+M3LjQXw2zmedRmJ1OCOCGQV5Y3hrUWAAjx762IF0SlKXIQbgUEBgj0xW+d2VF1A50gQzGtill979V0dBt0G54pBofocjQcyIU4CbH+4nUZzonTmKOEZGCYKYfPpmYZMPBCqhlLwV2huYFmT5gIpcfuColSHq+GSZh16KHKQVXGebBFuuyChhnn6aaYwPlCpojan2tmprrZaJwKyx0hYim6SWqeeeudaG6zWu5rlrsLPNacGJUhUb4f+vPyKb3rBjOmumn9LapeaarFo7YQjZKheCqMTaGgKh4bIK66iTlnkqXemqpOyymuJ5Lbbx2rYtBeiupOiHBYCbLzj7CmKNBHf2WOG6A0cyrwUaHWTvhNBG2/BG+A4S1MQIIDnoxQ6LwOwCZJorApCXghqmjr1WevLFXqGqbqITvwsgynzCEPGOZXp8bsMwnJgdzy6LMFm2MaC7nLc2L4TziEXpzPIElM5Y8bhPY/gwc+BZUHPTDXoadQyBBeOcqbfSl7VvkBQsGjpjWrApfj4fUbaNeGw9AldVeQ32BXWJ3Jh3RAnYhjxui+YU4iL3m1p9NvGLh4lEsaH3BbRdnmD/2zIEiKIGKEIFQ2+Jj0ALHqXzHTeWD2r+wNoqy9CV3iIpG3rMK7ONhdC4h2IZboO5vTYhpVs8M/AHlzWJPAtRF4XjBUMPfCl5dTD86j+IFLtsUwOusWSQkutb8Vx3lbjjfdOJzgN2/JWXY1KpRH6OksKIKP3BryEPUHmI74x08RuFZEbhOsr9TmTaY88yaKEGCRwAKGJiA7vY9Y3sgaOAEqCI8myjjt9N8BoV7MFRZjBCA6YmgGP6YCR6oMEZCE0SuIkPCmH4ABUSgj+FoQH60reswgnDhg8CIg9/lo4fqARA0vGLqGYYxGuQJmkttGBDYrCABWbQiVhc4egoMr+p/0QRaynMIg2fKAJtReGFkijdEq8Yxjbe8GU5PCNVtAKnMYqxiVqs4wW/sMMHAcuObsTjGz0AtyKC4Wj02JdZmMhINg6SLvA7BBqxA6A7NrKGAuQAIu+nh0lKQlmLdKQgRzlEbsmLGJ78pIksKUomlpJ9DmoIBuHzG+eEEpOBdKVROtO7NgiJXrlspShLycuIbDIYdfDHLYGoS/bNZIdjG8gkxQIJSABQmLgE5GOAc5QuZuGYfoRlWLI5SleGzGBdeaVC7nZOBzZkHg9syhQBY77Ihaoa3FQSNUkxy2dMhl9eAkY/7KnJdVxPXI/op01S6R2FElQNaNreQ4MTywXRcSCiPYBKRR/FOYzubig+9Ix4vOnRESwAL45TYklXipIIAAA7" width="64" height="64"></p> + <p>Loading…</p> +</div> + + <div class="view-pull-request clearfix js-issues-results"> + + + <div id="partial-discussion-header" class="gh-header js-details-container js-socket-channel js-updatable-content pull request" data-channel="gaye/dav:pull_request:32800343" data-url="/gaye/dav/pull/70/show_partial?partial=title"> + + <div class="gh-header-show "> + <div class="gh-header-actions"> + </div> + + <h1 class="gh-header-title"> + <span class="js-issue-title">Simplify request logic</span> + <span class="gh-header-number">#70</span> + </h1> + </div> + + + <div class="flex-table gh-header-meta"> + <div class="flex-table-item"> + <div class="state state-open"> + <span class="octicon octicon-git-pull-request"></span> + Open + </div> + </div> + <div class="flex-table-item flex-table-item-primary"> + <a href="https://github.com/millermedeiros" class="author pull-header-username css-truncate css-truncate-target expandable"> + millermedeiros + </a> + wants to merge 1 commit into + +<span class="commit-ref current-branch css-truncate js-selectable-text expandable"><span class="css-truncate-target user">gaye</span>:<span class="css-truncate-target">master</span></span> + +from + +<span class="commit-ref current-branch css-truncate js-selectable-text expandable"><span class="css-truncate-target user">millermedeiros</span>:<span class="css-truncate-target">simplify_requests</span></span> + + + + </div> + </div> +</div> + + + <div class="tabnav tabnav-pr js-socket-channel js-pull-request-tabs" data-channel="gaye/dav:branch:simplify_requests" data-url="/gaye/dav/pull/70/show_partial?partial=tabs"> + <div class="tabnav-extra right"> + <span class="diffstat" id="diffstat"> + <span class="text-diff-added"> + +168 + </span> + <span class="text-diff-deleted"> + −211 + </span> + <span class="diffstat-bar tooltipped tooltipped-s" aria-label="379 lines changed"> + <span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </span></div> + <nav class="tabnav-tabs"> + <a href="#" data-container-id="discussion_bucket" class="tabnav-tab selected js-pull-request-tab"> + <span class="octicon octicon-comment-discussion"></span> + Conversation + + <span id="conversation_tab_counter" class="counter"> + 4 + </span> + </a> + <a href="https://github.com/gaye/dav/pull/70/commits" data-container-id="commits_bucket" class="tabnav-tab js-pull-request-tab"> + <span class="octicon octicon-git-commit"></span> + Commits + + <span id="commits_tab_counter" class="counter"> + 1 + </span> + </a> + <a href="https://github.com/gaye/dav/pull/70/files" data-container-id="files_bucket" class="tabnav-tab js-pull-request-tab"> + <span class="octicon octicon-diff"></span> + Files changed + + <span id="files_tab_counter" class="counter"> + 23 + </span> + + </a> + </nav> +</div> + + + <div id="discussion_bucket" class="tab-content clearfix pull-request-tab-content is-visible"> + <div class="discussion-sidebar"> + <div id="partial-discussion-stats" class="discussion-stats js-socket-channel js-updatable-content" data-channel="gaye/dav:issue:66979647" data-url="/gaye/dav/issues/70/show_partial?partial=discussion_stats"> +</div> + + + +<div class="discussion-sidebar-item sidebar-labels js-discussion-sidebar-item"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/issues/70?partial=sidebar%2Fshow%2Flabels" class="js-issue-sidebar-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="_method" value="put" type="hidden"><input name="authenticity_token" value="HSruim3Q/c7xLkea75/dUOHkxNv5YwtmQrm1wCZb7TvPxLbt+TDytjXjF0IWy4LIP3Xi+Yh5NY1vXl4j8XM2Sg==" type="hidden"></div> + + <h3 class="discussion-sidebar-heading"> + Labels + </h3> + + + <div class="labels css-truncate"> + None yet +</div> + +</form></div> + +<div class="discussion-sidebar-item sidebar-milestone js-discussion-sidebar-item"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/issues/70/set_milestone?partial=sidebar%2Fshow%2Fmilestone" class="js-issue-sidebar-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="_method" value="put" type="hidden"><input name="authenticity_token" value="nU8Gd/ze5Q6GQ4NLeabJDge/bpt8yafcxe3kRjHHJtCBJcZODMqB75Tr4AYIfe0syE4VRMKlL8giQCg3gH0Y2g==" type="hidden"></div> + + <h3 class="discussion-sidebar-heading"> + Milestone + </h3> + + + <span class="text-muted">No milestone</span> + +</form></div> + +<div class="discussion-sidebar-item sidebar-assignee js-discussion-sidebar-item"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/issues/70?partial=sidebar%2Fshow%2Fassignee" class="js-issue-sidebar-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="_method" value="put" type="hidden"><input name="authenticity_token" value="JycGC+CqtTibbzVm7MDj/6li8SpG6oiuz/MlGaXk4/ReC7jfYpDLtc10dIhdhFElnVTvq0LAFmbLuTyGiiqrKA==" type="hidden"></div> + + <h3 class="discussion-sidebar-heading"> + Assignee + </h3> + + + <span class="css-truncate"> + <span class="text-muted">No one assigned</span> +</span> + +</form></div> + + <div class="discussion-sidebar-item sidebar-notifications"> + <h3 class="discussion-sidebar-heading">Notifications</h3> + <div class="thread-subscription-status js-thread-subscription-status js-socket-channel js-updatable-content" data-channel="gaye/dav:thread-subscription:66979647:mcepl" data-url="/notifications/thread_subscription?repository_id=20107688&thread_class=Issue&thread_id=66979647"> + + <span class="mega-octicon octicon-radio-tower"></span> + + <form accept-charset="UTF-8" action="https://github.com/notifications/thread" class="thread-subscribe-form" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="TK/HHDPdWDV++jPkA7lDofYQ/ZUPPsT06TcLyDJhGDk42plY+yWRlCozGXBKtmaqTG17gBbkJgtgrUPBfb8GcA==" type="hidden"></div> <input name="repository_id" value="20107688" type="hidden"> + <input name="thread_id" value="66979647" type="hidden"> + <input name="thread_class" value="Issue" type="hidden"> + <input name="id" value="subscribe" type="hidden"> + + <button class="btn btn-sm" type="submit" data-disable-with=""> + <span class="octicon octicon-eye"></span> + Subscribe + </button> +</form> + <p class="reason">You're not receiving notifications from this thread.</p> +</div> + + </div> + +<div id="partial-users-participants" class="discussion-sidebar-item js-socket-channel js-updatable-content" data-channel="gaye/dav:issue:66979647" data-url="/gaye/dav/issues/70/show_partial?partial=participants"> + <div class="participation"> + + <h3 class="discussion-sidebar-heading"> + 3 participants + </h3> + <div class="participation-avatars"> + <a class="participant-avatar tooltipped tooltipped-s" aria-label="millermedeiros" href="https://github.com/millermedeiros"><img alt="@millermedeiros" class="avatar" data-user="155633" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAEt0lEQVRYw+2X328UVRTHP+fOTHe23YVuK9IKtNDFEMtPQWPEQBSNIYZHYuKLPPrkf+ADbz5q/COMMT5RY0wwUUSNigpIW6FohRawpb+77bbb2Znrw+5sZ3dnt7tLG/rATSYz851z55x7z/mec64ku7s1m3iYWufsE8C3NPgcHD4eJrtRmCkiZUaUClLB2GqYrBNW2EFEQOvinROh8L0BjHXAlL+Dkv8g+WcJCEujOxDwTqOYGXzxjSxzWamRgfeq2DoYuaEkCZtbL2aGWU4N5KjVzTwiVkaSaqPWHSyERQjp6sWqk0SkLLaQkDVXSFWV4rkezNR+msjjOsQAHwuTqYoFFDWKmYSQJGw882yWM++ncDLCtYs2N76zcZ3cpI0kidRSi59/c4njZ9NYkfzqNCzOCouziukHBv/9bXHvlsnsmIHnyvrWYmogSe/JTME4XzSW0MQSLtv3uDz3ygrag7kJxZ0/Lfov2UyOGtVdUuMw2lpbz+t8UtQlhNAiiAiJ7S4dSSeXTLUuKm0+JkqItHh09GQ58GqG5rjHyGATnhdwXf5/RaGwBmYkWlvPF7Ewz9wgNjJgkUkrdvU6iFp71SLQ0ZMl0eFxt78J1y3+X5iOSpiR2Lr1fLXE7FNqfNjk4R2Trl4Hy67Nd+07PXqOrHDvL5PllDSUuKXehjXW5vL6uUV2H3ZCU2LYWJwVvvhwCzNjZt0xqNB6lRz+c5VrYUrR90mc2fHiqdVGS6vmtXfTILomHcFLVUvSOhATQZlEp0vr0x6/f2Vz86emwPp0WV/oYzv2OWxp9wpFQZfoqIStWUnCsnzPkRU8F65dtFmYUYwNL3PynTTKWDWqzFWGpm2Hy9yksTGVxJcRBT1HVxgZtFiYUaDh+jc2qSmD0++lsGzN/IRBalpht2jad7g51wLxNo9ozGPfSxm6Djh4nvDj583MjKn6261SGr/w1jKiNFu2eXTscbk/JLTvdJkbN8g6MHzVYnTQInnM4de+KAPf24ho3v5gns69WQAOnVrm+Nk00diqCQ/vGFzpa67cblWtJIXEDPeHTBBQt8GwNOk5RefeLIffWOZKXxSA3Ycc3CyMDlq5ZXkw9EtTwcBtXW5JfMLkqFn1TGL6VaGQwQPCOlApHtw2CzKzYwanzi1w+bNmhAhahP0nllGmZnTQYn5SFeYOXI5w9PQy8Xav8N+5CUU05pGeV4wMWMWVKaBXa40KI4l/+UYWWJXHFuZyqcaOaeLtHoKm+6ADwI1vbTSrczNLigsfx7l302RixOCPr22m7xsYFlz6tIWsI6skKdHbEEk0YFpgNmk6k1l6T2QwLc2eww6pKYPhq01FHbJIztWDP0R4apdL8tgKrgMXPopzt98qc29D7Vbp2Pdyho6eLKkphR3z2H8iw93+XBfzYMgqkt19aIUXzyxx6+cIytBE45p/r1uM/WPVpEuSXV36UQ7aB1/PEIl6/PZltCLBlAFeNoftPZYhNa0YHzZr0iHJ7m6ttS60N0Uk8duvvMuCRPKlIs0azxWyGcpbpkDSbhRrqJIEZTJLUpa8HsuZZNMd3NksB/eaKsljxFTd8Re4r4mVtlENYI9Mkk1zcH9Ckick2SCS/A/o5/nVx5zr4AAAAABJRU5ErkJggg==" width="20" height="20"> </a> + <a class="participant-avatar tooltipped tooltipped-s" aria-label="coveralls" href="https://github.com/coveralls"><img alt="@coveralls" class="avatar" data-user="2354108" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2ODApLCBxdWFsaXR5ID0gOTAK/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgAKAAoAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/SL8K474q/Eiz+GPgvWtamQXFxY2M95Ha5x5hRGYAnsCRjP5A1ueIfENt4esjNM26RuI4geXP+HvXzc/xQHjX4na3oyQveQabbKdQvwmbeC4dh5dtu6btm47evHrUQhzavYc5W0R88/A7/go18Q5/iJe2njzS7fVNCdzG0dhafZ5LI8lSrc7gQCNrnJ4wRzn9DPBfjvRPH+lC/0S8ju4gELoDh4iyB1DL2JVga/ND4uayur/ABJ8QyskcRiumtwVULuWNVQEnucqeT7V3+k3njT4D3mh+PNPtpB4Y1aztgZom3QSr5ar5cv9x8g43Dr0zyK3lSTWm5kqjTP0Q/CivNPhx8ePDnj+ysGS9hgurtxDHEzgFpcE+Xt6hsAnHoCQSKK5GnHRm6aeqMjxD4M8b6z4j1WB3tWtp5SbDVwQVt4WP3ZIicl4+QAPlf5SSuWxc13wXofwk+EU2n6Rp081pBKLi4KJ51zdzO2JJpDxvdicknjHoAAPVa5X4n2y3ng27gd2RHeMNtONy7wSv0IGD7E1ak20iXFJNn5g6+iar4y1KVAtqJ7uVkS4wgTLscE9Bivvb9k3UrXxf8BrXSb+KC+jsZbjTbq2nVZEZdxYKynII2yAc8GvhE6Je+JTr+rWqeZbaf8A6Zct3CPKIwR/wKQfhmvqr9jXxBDpPim+8NgqpvtFtdRyP4pVJB/HZKg+kdddVXj6GFN2ketfD/8AZY8AfDP4g3fi/RNPuI9QlQpbW89w0tvYbgQ/2dG+5uBIPJwCQuASKK9dorhbb3OpJLYSvOvj/rZ8P/DLVLxdu6NGYBm28hGI7HuAPxooqofEiZ/Cz5q/Yq8F2/jLRPiXaX6D7Ne2cGnBhzt8wTFz9RiMivLPC/iq9+DHxc8O6tqrC3GlSfZNRQZ+SFJHt5vrhFZhx1AoorsWs5RZzvSKZ+lisHUMpDKRkEcgiiiiuA6rn//Z" width="20" height="20"> </a> + <a class="participant-avatar tooltipped tooltipped-s" aria-label="gaye" href="https://github.com/gaye"><img alt="@gaye" class="avatar" data-user="535859" src="data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACgAKAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AIY25qWa8gs4TLPIsaDuxxUEVcf4hcaxrsVh5p+zxAEhCMljn+lZtLqUld2Rsaf41ae+VJYY1tnk2Bg3IB6E9q7qIhlBBBB6EVneEfhpol8qrcNdh8HJVwB09MVG9vD4U8S3Wim63242tFvI4yOgpypqS5olShKm7SN+MVLtpIQGAYdDU+2suRkM4aRvKt5JMZ2qTXltq92Z57kO4mD7m9vT+deuxpmue1zRvsn2m+tlAjmTEuOobP3vp2rdjha+ps6HF4iHh/TtXfUpVhmcnEQYH72MHb34B5I6+xpvxG0G9tpLfWJ2lmNyMAsORjYBn8zya3/h2HvvDbWTFWx1EgY45zxz1qx420TUdZ1fSbEyummW1uWlfd/rHLYxj1wOuO5pps6KyjGF2S6Gs7aRaG5XbKYxuFafl0+2t1ihjjXoihR+FWPLp8p57qpHCBkhjMkjKiL1ZjgCuX13xarxPYaWhlkkBRpSOMd8A9eK3Na/5At1/u15xZf8hSL6n+VdFGlGdrnLXxE4Xt0Vz0/4e318lrGWWRLcHb0xzXpOoX8N2kUESqRGcl/w/wD11wHgz/kAj/frqrf77V04ShFx9o90eJxNmVek44aGkZK777vT0LIYIwU9+BUvP92q0v8Ar4v98VcredGne9jwaGZ4tRtzvT0f5o//2Q==" width="20" height="20"> </a> + </div> + </div> +</div> + + + + +</div> + +<div class="discussion-timeline pull-discussion-timeline js-quote-selection-container"> + + <div class="js-discussion js-socket-channel" data-channel="gaye/dav:marked-as-read:32800343"> + + + <div class="timeline-comment-wrapper js-comment-container"> + <a href="https://github.com/millermedeiros"><img alt="@millermedeiros" class="timeline-comment-avatar" data-user="155633" src="data:image/png;base64,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" width="48" height="48"></a> + <div id="issue-66979647" class="comment timeline-comment js-comment js-task-list-container " data-body-version="edad37a0f14250f585211193650b42a3"> + + <div class="timeline-comment-header "> + + + + + <div class="timeline-comment-header-text"> + + <strong> + <a href="https://github.com/millermedeiros" class="author">millermedeiros</a> + </strong> + + commented + + <a href="#issue-66979647" class="timestamp"> + <time title="7 Apr 2015 22:07 GMT+2" datetime="2015-04-07T20:07:18Z" is="relative-time">8 days ago</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body markdown-format js-comment-body"> + <ul class="task-list"> +<li>Centralize the XHR header logic into the transport itself since it's needed by all the requests, removing the need of the individual <code>transformRequest</code> calls.</li> +<li>Remove <code>request.basic</code> since it can be represented as a plain object.</li> +<li>Instead of using <code>instanceof</code> we check if generated requests contains the desired properties.</li> +<li>Remove the <code>Request</code> constructor since it wasn't doing anything and was introducing an extra level of indirection and used a JSDoc <code>@typedef</code> instead.</li> +<li>Simplified the way XML templates are interpolated in the requests.</li> +</ul> + </div> + </div> + + </div> +</div> + + </div> + +<div class="discussion-item discussion-commits" id="commits-pushed-fb1b3aa"> + <div class="discussion-item-body"> + <table class="timeline-commits"> + + +<tbody><tr class="commit js-details-container js-socket-channel js-updatable-content" data-channel="gaye/dav:commit:fb1b3aae56494020d88f2e0b24de531f8142295e" data-url="/gaye/dav/commit/fb1b3aae56494020d88f2e0b24de531f8142295e/show_partial?partial=condensed"> + + <td class="commit-icon"> + <span class="octicon octicon-git-commit"></span> + </td> + + <td class="commit-gravatar"> + <a href="https://github.com/millermedeiros"><img alt="@millermedeiros" class="avatar avatar-small" data-user="155633" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACl0lEQVRYw+2Wy0tUYRjGf985Z86cuaijpmaCY6Z0sShSF90QwjbZyk2LgiD/h1Yt/CdaRKsiCGoRLRIKwigzBCsisxmSES+j4o0cPXM51xYj3WfMYUKCeZbn43znd57vfZ/3E/vCYZcdlMQOqwRQAigBbAkgJJdQnY0k/5u4UPItev0OXZd1Dp0ySCxLjDzysTonszonk0kWxzyRLwm7r25wuCvz23PbhpUZmakxD7F3KvMTCiCK70Bi+c9/KctQ22RT22TT0ZNmfkLhyc0ga0vytgHkqlCoP9diPKqQ1gWNbSYih+NCQFm1Q0u7QTzqQf8iFQ8ABAsxD3OfFRrbTFRfvnpxOXg6w/qKxPKMUtw2nBlXuXs9xEIsv8WKB8716expNYufAxldEAg5fBj0sraY+zVJhqPd6eID1DZZaAGXoQd+7vVXMD2e2+aasPVTjoBbaA2ApLgICTovpMjoEh9faFimIDriZVejRVW9w+uHPiZGVSp322hBF0lxWZxU6Lqkc/aKTmuHwdhzbfttCC4nepNIAkK1Dorq0n4+RTIh+DSkofldMinB6GMftilQVDhzMYmqQe+19W+7lFU7heUACF7dD2y2m0t3n86bAR9CcvGXO9S3WkSGVWwzG0LjL7109KTwBbOWJxMCVXOJDHsLP4IfYWJvPdTttUFA83GT5mMmg3cCbKxmu8MyBPGogqq5zEYUHFsgBDy9FcQyRCEOfJe/3KGlw0DVHA6cNKhusIlHlM0YzipYZdPaaSAkaNhvsTwrM3CjIu/c+GuAdFIw+d5Dck2ios7h2e0AC7/MAMsQRIa9LE3LBCsdwkfMLYeWKORaXhO2WJrait1FksGxReHDKJe2/ni2Zhy7dCUrAZQA/gOAry0E5nMVAk9oAAAAAElFTkSuQmCC" width="16" height="16"></a> + </td> + + <td class="commit-author"> + <strong><a href="https://github.com/millermedeiros" class="author" rel="contributor">millermedeiros</a></strong> + </td> + + <td class="commit-message"> + <code><a href="https://github.com/millermedeiros/dav/commit/fb1b3aae56494020d88f2e0b24de531f8142295e" class="message" data-pjax="true" title="Simplify request logic + + - Centralize the XHR header logic into the transport itself since it's + needed by all the requests, removing the need of the individual + `transformRequest` calls. + + - Remove `request.basic` since it can be represented as a plain object. + + - Instead of using `instanceof` we check if generated requests contains + the desired properties. + + - Remove the `Request` constructor since it wasn't doing anything and + was introducing an extra level of indirection and used a JSDoc + @typedef instead. + + - Simplified the way XML templates are interpolated in the requests.">Simplify request logic</a></code> + + <span class="hidden-text-expander inline"> + <a href="#" class="js-details-target">…</a> + </span> + <div class="commit-desc"><pre> - Centralize the XHR header logic into the transport itself since it's + needed by all the requests, removing the need of the individual + `transformRequest` calls. + + - Remove `request.basic` since it can be represented as a plain object. + + - Instead of using `instanceof` we check if generated requests contains + the desired properties. + + - Remove the `Request` constructor since it wasn't doing anything and + was introducing an extra level of indirection and used a JSDoc + <a href="https://github.com/typedef" class="user-mention">@typedef</a> instead. + + - Simplified the way XML templates are interpolated in the requests.</pre></div> + + </td> + + <td class="commit-meta"> + + + <div class="commit-build-statuses"> + <a class="text-failure tooltipped tooltipped-w" aria-label="Failure: The Travis CI build failed" href="https://travis-ci.org/gaye/dav/builds/57538680"> + <span class="octicon octicon-x"></span> + </a> + </div> + + + <code><a href="https://github.com/millermedeiros/dav/commit/fb1b3aae56494020d88f2e0b24de531f8142295e" class="commit-id">fb1b3aa</a></code> + </td> +</tr> + + </tbody></table> + </div> +</div> + + <div class="timeline-comment-wrapper js-comment-container"> + <a href="https://github.com/coveralls"><img alt="@coveralls" class="timeline-comment-avatar" data-user="2354108" src="data:image/jpeg;base64,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" width="48" height="48"></a> + <div id="issuecomment-90717037" class="comment timeline-comment js-comment js-task-list-container " data-body-version="6b51857d8026f02936fa944a76903d12"> + + <div class="timeline-comment-header "> + + + + + <div class="timeline-comment-header-text"> + + <strong> + <a href="https://github.com/coveralls" class="author">coveralls</a> + </strong> + + commented + + <a href="#issuecomment-90717037" class="timestamp"> + <time title="7 Apr 2015 22:12 GMT+2" datetime="2015-04-07T20:12:27Z" is="relative-time">8 days ago</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body markdown-format js-comment-body"> + <p><a href="https://coveralls.io/builds/2284430"><img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5OSIgaGVpZ2h0PSIyMCI+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4Mj0iMCIgeTI9IjEwMCUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2JiYiIgc3RvcC1vcGFjaXR5PSIuMSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1vcGFjaXR5PSIuMSIvPjwvbGluZWFyR3JhZGllbnQ+PHJlY3Qgcng9IjMiIHdpZHRoPSI5OSIgaGVpZ2h0PSIyMCIgZmlsbD0iIzU1NSIvPjxyZWN0IHJ4PSIzIiB4PSI2MyIgd2lkdGg9IjM2IiBoZWlnaHQ9IjIwIiBmaWxsPSIjOTdDQTAwIi8+PHBhdGggZmlsbD0iIzk3Q0EwMCIgZD0iTTYzIDBoNHYyMGgtNHoiLz48cmVjdCByeD0iMyIgd2lkdGg9Ijk5IiBoZWlnaHQ9IjIwIiBmaWxsPSJ1cmwoI2EpIi8+PGcgZmlsbD0iI2ZmZiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9IkRlamFWdSBTYW5zLFZlcmRhbmEsR2VuZXZhLHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTEiPjx0ZXh0IHg9IjMyLjUiIHk9IjE1IiBmaWxsPSIjMDEwMTAxIiBmaWxsLW9wYWNpdHk9Ii4zIj5jb3ZlcmFnZTwvdGV4dD48dGV4dCB4PSIzMi41IiB5PSIxNCI+Y292ZXJhZ2U8L3RleHQ+PHRleHQgeD0iODAiIHk9IjE1IiBmaWxsPSIjMDEwMTAxIiBmaWxsLW9wYWNpdHk9Ii4zIj45NSU8L3RleHQ+PHRleHQgeD0iODAiIHk9IjE0Ij45NSU8L3RleHQ+PC9nPjwvc3ZnPg==" alt="Coverage Status" data-canonical-src="https://coveralls.io/builds/2284430/badge" style="max-width:100%;"></a></p> + +<p>Coverage decreased (-0.02%) to 94.69% when pulling <strong><a href="https://github.com/gaye/dav/commit/fb1b3aae56494020d88f2e0b24de531f8142295e" class="commit-link"><tt>fb1b3aa</tt></a> on millermedeiros:simplify_requests</strong> into <strong><a href="https://github.com/gaye/dav/commit/e7e196cf37a41885efdb36c35e494ed416db8d21" class="commit-link"><tt>e7e196c</tt></a> on gaye:master</strong>.</p> + </div> + </div> + + </div> +</div> + + </div> + + <div class="discussion-item discussion-item-ref"> + <div class="discussion-item-header" id="ref-issue-36737375"> + <span class="octicon octicon-bookmark discussion-item-icon"></span> + + <img alt="@millermedeiros" class="avatar" data-user="155633" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACl0lEQVRYw+2Wy0tUYRjGf985Z86cuaijpmaCY6Z0sShSF90QwjbZyk2LgiD/h1Yt/CdaRKsiCGoRLRIKwigzBCsisxmSES+j4o0cPXM51xYj3WfMYUKCeZbn43znd57vfZ/3E/vCYZcdlMQOqwRQAigBbAkgJJdQnY0k/5u4UPItev0OXZd1Dp0ySCxLjDzysTonszonk0kWxzyRLwm7r25wuCvz23PbhpUZmakxD7F3KvMTCiCK70Bi+c9/KctQ22RT22TT0ZNmfkLhyc0ga0vytgHkqlCoP9diPKqQ1gWNbSYih+NCQFm1Q0u7QTzqQf8iFQ8ABAsxD3OfFRrbTFRfvnpxOXg6w/qKxPKMUtw2nBlXuXs9xEIsv8WKB8716expNYufAxldEAg5fBj0sraY+zVJhqPd6eID1DZZaAGXoQd+7vVXMD2e2+aasPVTjoBbaA2ApLgICTovpMjoEh9faFimIDriZVejRVW9w+uHPiZGVSp322hBF0lxWZxU6Lqkc/aKTmuHwdhzbfttCC4nepNIAkK1Dorq0n4+RTIh+DSkofldMinB6GMftilQVDhzMYmqQe+19W+7lFU7heUACF7dD2y2m0t3n86bAR9CcvGXO9S3WkSGVWwzG0LjL7109KTwBbOWJxMCVXOJDHsLP4IfYWJvPdTttUFA83GT5mMmg3cCbKxmu8MyBPGogqq5zEYUHFsgBDy9FcQyRCEOfJe/3KGlw0DVHA6cNKhusIlHlM0YzipYZdPaaSAkaNhvsTwrM3CjIu/c+GuAdFIw+d5Dck2ios7h2e0AC7/MAMsQRIa9LE3LBCsdwkfMLYeWKORaXhO2WJrait1FksGxReHDKJe2/ni2Zhy7dCUrAZQA/gOAry0E5nMVAk9oAAAAAElFTkSuQmCC" width="16" height="16"> + <a href="https://github.com/millermedeiros" class="author" truncate="true">millermedeiros</a> + + referenced + this pull request + <a class="timestamp" href="#ref-issue-36737375"> + <time title="7 Apr 2015 22:32 GMT+2" datetime="2015-04-07T20:32:37Z" is="relative-time">8 days ago</time> + </a> + </div> + + <span class="state state-open right"> + <span class="octicon octicon-issue-opened"></span> + Open + </span> + + + + <h3 class="discussion-item-ref-title"> + <a href="https://github.com/gaye/dav/issues/50" class="title-link"> + Simplify lower-level WebDAV api + <span class="issue-num">#50</span> +</a> </h3> + + </div> + + + +<div id="diff-for-comment-27918728" class="discussion-item "> + <div class="discussion-item-header"> + <span class="octicon octicon-code discussion-item-icon"></span> + <img alt="@gaye" class="avatar" data-user="535859" src="data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACAAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AIomrG1vxWmnzCztGDXQYb8rkKKv3V2lhYTXUn3Y1LGua8H3ul/2ibjUPLEksm8ebHuySenIqLeRcI8ztex2Ph3XY9Tt1SdlS67rgjcPUV00S1meLdW0Kfw1Y3+j2qC6t7gKzpB5fGDnJxireg366rpsV0oxu4I9CKU6SvdCemjOX1DTF1PTpbRmKiQdj37Z9q53w5Yx6T4o0tbqBZXikZJFk4VuCPToQa7N5oLSEy3EixxjqzHFcrPr0WpeI7NrOyMkcTbRIyn94fT6fWteST1JpVoRnZnpmtW1po/hPWnNk0yysgt4+QSzMAAB7HnPeq/hLSX0zQbeCWIRynLOM55Pr+GK6ey1CK40QreJ++ICrHjBBqBMIQD3reGGnKN7Hm4/O8LSr+yctfLWz7O3U//Z" width="16" height="16"> + <a href="https://github.com/gaye" class="author">gaye</a> + commented on the diff + <a href="#discussion-diff-27918728" class="discussion-anchor-link timestamp"><span><time title="7 Apr 2015 22:48 GMT+2" datetime="2015-04-07T20:48:26Z" is="relative-time">8 days ago</time></span></a> + </div> + <div class="discussion-item-body"> + +<a name="discussion-diff-27918728"></a> +<div id="discussion-diff-27918728" class="file inline-review-comment"> + <div class="file-header" data-path="lib/request/address_book_query.js"> + <div class="file-actions"> + <a href="https://github.com/gaye/dav/pull/70/files#r27918728">View full changes</a> + </div> + <span class="file-info" title="lib/request/address_book_query.js"> + lib/request/address_book_query.js + </span> + </div> + <div class="blob-wrapper"> + <table class="diff-table"> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#discussion-diff-27918728" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/88f2a539252f5c738674a0571eb99dc48f61bbb3?diff=unified&left_hunk_size=12&mode=100644&next_line_num_left=10&next_line_num_right=10&path=lib%2Frequest%2Faddress_book_query.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=8" data-left-range="1-9" data-right-range="1-9"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -10,12 +10,8 @@ var collectionQuery = require('./collection_query'),</td> + </tr> + + <tr> + <td id="discussion-diff-27918728L10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="discussion-diff-27918728R10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"> <span class="pl-c"> * (Array.<Object>) props - list of props to request.</span></td> + </tr> + + <tr> + <td id="discussion-diff-27918728L11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="discussion-diff-27918728R11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"> <span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="discussion-diff-27918728L12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="discussion-diff-27918728R12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"> <span class="pl-c1">module</span>.<span class="pl-en">exports</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="discussion-diff-27918728L13" data-line-number="13" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion">- <span class="pl-k">return</span> collectionQuery(</td> + </tr> + + <tr> + <td id="discussion-diff-27918728L14" data-line-number="14" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion">- template.addressBookQuery({</td> + </tr> + + <tr> + <td id="discussion-diff-27918728L15" data-line-number="15" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion">- props<span class="pl-k">:</span> options.props <span class="pl-k">||</span> []</td> + </tr> + + + </tbody></table> + </div> +</div> + +<table class="timeline-inline-comments"> + <tbody><tr class="inline-comments js-inline-comments-container"> + +<td class="line-comments js-line-comments js-quote-selection-container" colspan="3"> + <div class="comment-holder js-comments-holder"> + <div id="discussion_r27918728" class="comment timeline-comment js-comment js-task-list-container commit-comment owner-comment" data-body-version="a92b07612dcaf6af7f5cf96e946cd8a2"> + + <div class="timeline-comment-header commit"> + <img alt="@gaye" class="avatar timeline-comment-header-avatar" data-user="535859" src="data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACgAKAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AIY25qWa8gs4TLPIsaDuxxUEVcf4hcaxrsVh5p+zxAEhCMljn+lZtLqUld2Rsaf41ae+VJYY1tnk2Bg3IB6E9q7qIhlBBBB6EVneEfhpol8qrcNdh8HJVwB09MVG9vD4U8S3Wim63242tFvI4yOgpypqS5olShKm7SN+MVLtpIQGAYdDU+2suRkM4aRvKt5JMZ2qTXltq92Z57kO4mD7m9vT+deuxpmue1zRvsn2m+tlAjmTEuOobP3vp2rdjha+ps6HF4iHh/TtXfUpVhmcnEQYH72MHb34B5I6+xpvxG0G9tpLfWJ2lmNyMAsORjYBn8zya3/h2HvvDbWTFWx1EgY45zxz1qx420TUdZ1fSbEyummW1uWlfd/rHLYxj1wOuO5pps6KyjGF2S6Gs7aRaG5XbKYxuFafl0+2t1ihjjXoihR+FWPLp8p57qpHCBkhjMkjKiL1ZjgCuX13xarxPYaWhlkkBRpSOMd8A9eK3Na/5At1/u15xZf8hSL6n+VdFGlGdrnLXxE4Xt0Vz0/4e318lrGWWRLcHb0xzXpOoX8N2kUESqRGcl/w/wD11wHgz/kAj/frqrf77V04ShFx9o90eJxNmVek44aGkZK777vT0LIYIwU9+BUvP92q0v8Ar4v98VcredGne9jwaGZ4tRtzvT0f5o//2Q==" width="20" height="20"> + + + <span class="timeline-comment-label">Owner</span> + + + <div class="timeline-comment-header-text"> + + <strong> + <a href="https://github.com/gaye" class="author">gaye</a> + </strong> + + added a note + + <a href="#discussion_r27918728" class="timestamp"> + <time title="7 Apr 2015 22:48 GMT+2" datetime="2015-04-07T20:48:26Z" is="relative-time">8 days ago</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body markdown-format js-comment-body"> + <p>I think I probably wrote this for the case when we get an options without props (we really shouldn't?) but I think the template might require props?</p> + </div> + </div> + + </div> +</div> + + + <div id="discussion_r27920127" class="comment timeline-comment js-comment js-task-list-container commit-comment" data-body-version="1ec0df65c37aa0e8a5f0992f2c67602b"> + + <div class="timeline-comment-header commit"> + <img alt="@millermedeiros" class="avatar timeline-comment-header-avatar" data-user="155633" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAEt0lEQVRYw+2X328UVRTHP+fOTHe23YVuK9IKtNDFEMtPQWPEQBSNIYZHYuKLPPrkf+ADbz5q/COMMT5RY0wwUUSNigpIW6FohRawpb+77bbb2Znrw+5sZ3dnt7tLG/rATSYz851z55x7z/mec64ku7s1m3iYWufsE8C3NPgcHD4eJrtRmCkiZUaUClLB2GqYrBNW2EFEQOvinROh8L0BjHXAlL+Dkv8g+WcJCEujOxDwTqOYGXzxjSxzWamRgfeq2DoYuaEkCZtbL2aGWU4N5KjVzTwiVkaSaqPWHSyERQjp6sWqk0SkLLaQkDVXSFWV4rkezNR+msjjOsQAHwuTqYoFFDWKmYSQJGw882yWM++ncDLCtYs2N76zcZ3cpI0kidRSi59/c4njZ9NYkfzqNCzOCouziukHBv/9bXHvlsnsmIHnyvrWYmogSe/JTME4XzSW0MQSLtv3uDz3ygrag7kJxZ0/Lfov2UyOGtVdUuMw2lpbz+t8UtQlhNAiiAiJ7S4dSSeXTLUuKm0+JkqItHh09GQ58GqG5rjHyGATnhdwXf5/RaGwBmYkWlvPF7Ewz9wgNjJgkUkrdvU6iFp71SLQ0ZMl0eFxt78J1y3+X5iOSpiR2Lr1fLXE7FNqfNjk4R2Trl4Hy67Nd+07PXqOrHDvL5PllDSUuKXehjXW5vL6uUV2H3ZCU2LYWJwVvvhwCzNjZt0xqNB6lRz+c5VrYUrR90mc2fHiqdVGS6vmtXfTILomHcFLVUvSOhATQZlEp0vr0x6/f2Vz86emwPp0WV/oYzv2OWxp9wpFQZfoqIStWUnCsnzPkRU8F65dtFmYUYwNL3PynTTKWDWqzFWGpm2Hy9yksTGVxJcRBT1HVxgZtFiYUaDh+jc2qSmD0++lsGzN/IRBalpht2jad7g51wLxNo9ozGPfSxm6Djh4nvDj583MjKn6261SGr/w1jKiNFu2eXTscbk/JLTvdJkbN8g6MHzVYnTQInnM4de+KAPf24ho3v5gns69WQAOnVrm+Nk00diqCQ/vGFzpa67cblWtJIXEDPeHTBBQt8GwNOk5RefeLIffWOZKXxSA3Ycc3CyMDlq5ZXkw9EtTwcBtXW5JfMLkqFn1TGL6VaGQwQPCOlApHtw2CzKzYwanzi1w+bNmhAhahP0nllGmZnTQYn5SFeYOXI5w9PQy8Xav8N+5CUU05pGeV4wMWMWVKaBXa40KI4l/+UYWWJXHFuZyqcaOaeLtHoKm+6ADwI1vbTSrczNLigsfx7l302RixOCPr22m7xsYFlz6tIWsI6skKdHbEEk0YFpgNmk6k1l6T2QwLc2eww6pKYPhq01FHbJIztWDP0R4apdL8tgKrgMXPopzt98qc29D7Vbp2Pdyho6eLKkphR3z2H8iw93+XBfzYMgqkt19aIUXzyxx6+cIytBE45p/r1uM/WPVpEuSXV36UQ7aB1/PEIl6/PZltCLBlAFeNoftPZYhNa0YHzZr0iHJ7m6ttS60N0Uk8duvvMuCRPKlIs0azxWyGcpbpkDSbhRrqJIEZTJLUpa8HsuZZNMd3NksB/eaKsljxFTd8Re4r4mVtlENYI9Mkk1zcH9Ckick2SCS/A/o5/nVx5zr4AAAAABJRU5ErkJggg==" width="20" height="20"> + + + + + <div class="timeline-comment-header-text"> + <a href="#discussion_r27920127" class="comment-type-icon octicon octicon-mail-read" title="This comment left via email reply."></a> + + <strong> + <a href="https://github.com/millermedeiros" class="author">millermedeiros</a> + </strong> + + added a note + + <a href="#discussion_r27920127" class="timestamp"> + <time title="7 Apr 2015 23:03 GMT+2" datetime="2015-04-07T21:03:19Z" is="relative-time">8 days ago</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body email-format js-comment-body"> + <div class="email-fragment">Handlebars #each is smart enough. Shouldn't matter</div> + </div> + </div> + + </div> +</div> + + + </div> + + <div class="inline-comment-form-container"> + <button class="btn add-line-note-button js-toggle-inline-comment-form">Add a line note</button> + + <div class="inline-comment-form"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/pull/70/review_comment/create" class="js-inline-comment-form" data-remote="" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="wgp5xolKoOXOZxA11XArxYQxLL1RR6owas+J7gjDGrI91e5cHBqousB4cT8sYMWXX1LdhGKHtbMdz97aLW8Jsw==" type="hidden"></div> + <input name="context" value="discussion" type="hidden"> + <input name="commit_id" value="fb1b3aae56494020d88f2e0b24de531f8142295e" type="hidden"> + <input name="anchor" value="" type="hidden"> + <input name="path" value="lib/request/address_book_query.js" type="hidden"> + <input name="position" value="6" type="hidden"> + <input name="line" value="" type="hidden"> + <input name="in_reply_to" value="27918728" type="hidden"> + + +<div class="js-previewable-comment-form js-suggester-container previewable-comment-form write-selected" data-preview-url="/preview?repository=20107688"> + <div class="comment-form-head tabnav"> + <div class="right"> + <a class="tabnav-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"> + <span class="octicon octicon-markdown"></span> + Markdown supported + </a> + +<a href="#fullscreen" class="enable-fullscreen js-enable-fullscreen tooltipped-n + tabnav-extra"> + <span class="octicon octicon-screen-full"></span> + Edit in fullscreen +</a> + + </div> + <nav class="tabnav-tabs"> + <a href="#" class="tabnav-tab write-tab js-write-tab selected">Write</a> + <a href="#" class="tabnav-tab preview-tab js-preview-tab">Preview</a> + </nav> + </div> + + <div class="comment-form-error js-comment-form-error" style="display:none"> There was an error creating your PullRequest. +</div> + <div class="write-content js-write-bucket js-uploadable-container js-upload-markdown-image upload-enabled is-default" data-upload-policy-url="/upload/policies/assets"> + + <textarea name="comment[body]" tabindex="1" id="comment_body_1" placeholder="Leave a comment" aria-label="Comment body" class="input-contrast comment-form-textarea js-comment-field js-task-list-field js-quick-submit js-quote-selection-target js-session-resumable js-suggester-field" required=""></textarea><img style="cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0px ! important; margin: 0px ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important;" title="It's All Text!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAADdklEQVQ4y42UP4xVRRjFfzP37q7LxgBvV8FEjDEhxsJEo52VFhqpNBTIkqgFyZIIFhLtqdRCo3aiW5gYlMQoHYmxtsFCAyJ/tsDg7sLuu/fy3p25f969830W7/qWECCeZv5lzplv5pwxdPhjRSLnwsKunn1oz2573hhouAMKGO4LEfAOshSKspbBoHrh4qXLmqSJ29i8eTUGuLSmkc/lZV+Ew6mVfdkQrLFsm42Iok5BAHs7893HbaPkLlCPoB1pSDJ/0kZT/xRFfa6pq89igNzr3rblvbrS51eHzQNtgDiyTE0ZDAZF7l/eHUsqigIiMpUXzd7c17uq0tkgOhMDOK9HEV5qgrWuMBhtsSZgLKhKx6YdW9c3sPjaTk79lG31z2QTcWMgBPCFzKRpPp9lG3tnZnc8HQPMbrPvJH2hqi31KBBC6Db+d3TZqgTGbN0gL8ftl6dSUEVRDh+YZ/l0hqoQdMo0TRMVZbHn0cefPWsBNjchHxqyLJC7Ed4HfCnseWSapcUeCzsjvFd8qTy8EPPW/h0sLc4D4AvBF4GlxR6+EI4cWiCODUuHevhSqWtoW0Oa9Kdurq9FFmAjgf4tQzaoGDohL5W8EPa9+CBfn07Z/+oO8lLIC+H1V7bzw9khX32fjisshNxvVXviiw0ATny+gSvGe1wR8N6RpCkxQJJAXYIvAqGVzgCGIMrhAz1EFO8VjNK2yoXLFdLdsi8UdCzovUyM4wtBEeqyJEv7eO/wvhgLrq+ViLSENhCCTnweWcOnywkr10YTKw69ML8zZnZmnAnnQ/em4IqxwUQUG0E2aMhv9VlbvUI+6DM3l4wFs4EbP7gqop1hUD5Z7nPkYI+5bZY3j6+CEc78POTdt3vMTHeChU4M5EoFBGsNH76/izeOnmdzfYUsXSVIzI31CycNwIFj1z4ObftBWQ5QgWh6DmuiLUd2V3Z7Oia4Y05VCKFmVCa4wTWGyZ9UfoO6HmQqo5MxQOnzi8PB+mXvkidDqLHRLNZOd4E3d0m33iX93Zq2NPUAN7hK5a6DtkgYFSKjK8ba6zHA9b9/+7FtysfqKj/YjIqnmtYRGo+G6h7k94aqoKFGpUIlYKK41VD9ZZBvMHw3+ZCeeO6j7ah5JoSw38zsPqahIrTlVuj/t2BAZUSo+4TRjd+ldedsNP2tBvdrsvpL+y+TkkabJ8Dt4AAAAABJRU5ErkJggg=="> + + <p class="drag-and-drop"> + <span class="default"> + Attach images by dragging & dropping or + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <a class="manual-file-chooser-text" href="#">selecting them</a>. + </span> + <span class="loading"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> Uploading your images… + </span> + <span class="error bad-file"> + Unfortunately, we don't support that file type. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a PNG, GIF, or JPG. + </span> + </span> + <span class="error too-big"> + Yowza, that's a big file. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with an image file smaller than 10MB. + </span> + </span> + <span class="error empty"> + This file is empty. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a file that's not empty. + </span> + </span> + <span class="error bad-browser"> + This browser doesn't support image attachments. + <span class="drag-and-drop-error-info"> + We recommend updating to the latest + <a href="http://windows.microsoft.com/ie">Internet Explorer</a>, + <a href="https://chrome.google.com/">Google Chrome</a>, or + <a href="https://www.mozilla.org/firefox">Firefox</a>. + </span> + </span> + <span class="error failed-request"> + Something went really wrong, and we can't process that image. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again.</a> + </span> + </span> + </p> + + </div> + + <div class="preview-content"> + <div class="comment"> + <div class="comment-content"> + <div class="comment-body markdown-body js-preview-body"> + <p>Nothing to preview</p> + </div> + </div> +</div> + + </div> + + + <div class="suggester-container"> + <div class="suggester js-suggester js-navigation-container" data-url="/gaye/dav/suggestions/pull_request/32800343"> + </div> + </div> +</div> + + + <div class="form-actions"> + <div class="left"> + <span class="ajax-indicator"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgALMPANTX2amsrOHo6szMzYCAgGhoaJqbm97j5ebt7+nw88/R0tnd3ri8vo2Pj8rKyury9SH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMUU2RUQyNTU0RkUxMUUxOEQwQ0I1NTVEOTVGNzkzNyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMUU2RUQyNDU0RkUxMUUxOEQwQ0I1NTVEOTVGNzkzNyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA0ODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8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" width="16" height="16"> + </span> + </div> + + <button disabled class="btn btn-primary" type="submit" tabindex="1" data-disable-invalid="" data-disable-with=""> + Comment + </button> + + <button class="btn js-hide-inline-comment-form" type="button">Cancel</button> + </div> +</form> </div> +</div> + +</td> + +</tr> + +</tbody></table> + + </div> +</div> + + +<div id="diff-for-comment-27918790" class="discussion-item "> + <div class="discussion-item-header"> + <span class="octicon octicon-code discussion-item-icon"></span> + <img alt="@gaye" class="avatar" data-user="535859" src="data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACAAIAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AIomrG1vxWmnzCztGDXQYb8rkKKv3V2lhYTXUn3Y1LGua8H3ul/2ibjUPLEksm8ebHuySenIqLeRcI8ztex2Ph3XY9Tt1SdlS67rgjcPUV00S1meLdW0Kfw1Y3+j2qC6t7gKzpB5fGDnJxireg366rpsV0oxu4I9CKU6SvdCemjOX1DTF1PTpbRmKiQdj37Z9q53w5Yx6T4o0tbqBZXikZJFk4VuCPToQa7N5oLSEy3EixxjqzHFcrPr0WpeI7NrOyMkcTbRIyn94fT6fWteST1JpVoRnZnpmtW1po/hPWnNk0yysgt4+QSzMAAB7HnPeq/hLSX0zQbeCWIRynLOM55Pr+GK6ey1CK40QreJ++ICrHjBBqBMIQD3reGGnKN7Hm4/O8LSr+yctfLWz7O3U//Z" width="16" height="16"> + <a href="https://github.com/gaye" class="author">gaye</a> + commented on the diff + <a href="#discussion-diff-27918790" class="discussion-anchor-link timestamp"><span><time title="7 Apr 2015 22:48 GMT+2" datetime="2015-04-07T20:48:58Z" is="relative-time">8 days ago</time></span></a> + </div> + <div class="discussion-item-body"> + +<a name="discussion-diff-27918790"></a> +<div id="discussion-diff-27918790" class="file inline-review-comment"> + <div class="file-header" data-path="lib/request/calendar_query.js"> + <div class="file-actions"> + <a href="https://github.com/gaye/dav/pull/70/files#r27918790">View full changes</a> + </div> + <span class="file-info" title="lib/request/calendar_query.js"> + lib/request/calendar_query.js + </span> + </div> + <div class="blob-wrapper"> + <table class="diff-table"> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#discussion-diff-27918790" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/803cc2f91119c2d2fd3d2e591ec90895a3875382?diff=unified&left_hunk_size=14&mode=100644&next_line_num_left=12&next_line_num_right=12&path=lib%2Frequest%2Fcalendar_query.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=8" data-left-range="1-11" data-right-range="1-11"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -12,14 +12,8 @@ var collectionQuery = require('./collection_query'),</td> + </tr> + + <tr> + <td id="discussion-diff-27918790L12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="discussion-diff-27918790R12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"> <span class="pl-c"> * (String) timezone - VTIMEZONE calendar object.</span></td> + </tr> + + <tr> + <td id="discussion-diff-27918790L13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="discussion-diff-27918790R13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"> <span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="discussion-diff-27918790L14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="discussion-diff-27918790R14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"> <span class="pl-c1">module</span>.<span class="pl-en">exports</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="discussion-diff-27918790L15" data-line-number="15" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion">- <span class="pl-k">return</span> collectionQuery(</td> + </tr> + + <tr> + <td id="discussion-diff-27918790L16" data-line-number="16" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion">- template.calendarQuery({</td> + </tr> + + + </tbody></table> + </div> +</div> + +<table class="timeline-inline-comments"> + <tbody><tr class="inline-comments js-inline-comments-container"> + +<td class="line-comments js-line-comments js-quote-selection-container" colspan="3"> + <div class="comment-holder js-comments-holder"> + <div id="discussion_r27918790" class="comment timeline-comment js-comment js-task-list-container commit-comment owner-comment" data-body-version="9647a7d7a4b0287e3514fb1cbdfcb395"> + + <div class="timeline-comment-header commit"> + <img alt="@gaye" class="avatar timeline-comment-header-avatar" data-user="535859" src="data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACgAKAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AIY25qWa8gs4TLPIsaDuxxUEVcf4hcaxrsVh5p+zxAEhCMljn+lZtLqUld2Rsaf41ae+VJYY1tnk2Bg3IB6E9q7qIhlBBBB6EVneEfhpol8qrcNdh8HJVwB09MVG9vD4U8S3Wim63242tFvI4yOgpypqS5olShKm7SN+MVLtpIQGAYdDU+2suRkM4aRvKt5JMZ2qTXltq92Z57kO4mD7m9vT+deuxpmue1zRvsn2m+tlAjmTEuOobP3vp2rdjha+ps6HF4iHh/TtXfUpVhmcnEQYH72MHb34B5I6+xpvxG0G9tpLfWJ2lmNyMAsORjYBn8zya3/h2HvvDbWTFWx1EgY45zxz1qx420TUdZ1fSbEyummW1uWlfd/rHLYxj1wOuO5pps6KyjGF2S6Gs7aRaG5XbKYxuFafl0+2t1ihjjXoihR+FWPLp8p57qpHCBkhjMkjKiL1ZjgCuX13xarxPYaWhlkkBRpSOMd8A9eK3Na/5At1/u15xZf8hSL6n+VdFGlGdrnLXxE4Xt0Vz0/4e318lrGWWRLcHb0xzXpOoX8N2kUESqRGcl/w/wD11wHgz/kAj/frqrf77V04ShFx9o90eJxNmVek44aGkZK777vT0LIYIwU9+BUvP92q0v8Ar4v98VcredGne9jwaGZ4tRtzvT0f5o//2Q==" width="20" height="20"> + + + <span class="timeline-comment-label">Owner</span> + + + <div class="timeline-comment-header-text"> + + <strong> + <a href="https://github.com/gaye" class="author">gaye</a> + </strong> + + added a note + + <a href="#discussion_r27918790" class="timestamp"> + <time title="7 Apr 2015 22:48 GMT+2" datetime="2015-04-07T20:48:58Z" is="relative-time">8 days ago</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body markdown-format js-comment-body"> + <p>Same thing here</p> + </div> + </div> + + </div> +</div> + + + </div> + + <div class="inline-comment-form-container"> + <button class="btn add-line-note-button js-toggle-inline-comment-form">Add a line note</button> + + <div class="inline-comment-form"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/pull/70/review_comment/create" class="js-inline-comment-form" data-remote="" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="Id1AVX6tldiaM8sh3SzW90JjvNGeeY+iGEV+iZv6kCZ2c1ipjqS7rM/QoIwARR73ZROZjAoc5EjarFRJ2pXfWw==" type="hidden"></div> + <input name="context" value="discussion" type="hidden"> + <input name="commit_id" value="fb1b3aae56494020d88f2e0b24de531f8142295e" type="hidden"> + <input name="anchor" value="" type="hidden"> + <input name="path" value="lib/request/calendar_query.js" type="hidden"> + <input name="position" value="5" type="hidden"> + <input name="line" value="" type="hidden"> + <input name="in_reply_to" value="27918790" type="hidden"> + + +<div class="js-previewable-comment-form js-suggester-container previewable-comment-form write-selected" data-preview-url="/preview?repository=20107688"> + <div class="comment-form-head tabnav"> + <div class="right"> + <a class="tabnav-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"> + <span class="octicon octicon-markdown"></span> + Markdown supported + </a> + +<a href="#fullscreen" class="enable-fullscreen js-enable-fullscreen tooltipped-n + tabnav-extra"> + <span class="octicon octicon-screen-full"></span> + Edit in fullscreen +</a> + + </div> + <nav class="tabnav-tabs"> + <a href="#" class="tabnav-tab write-tab js-write-tab selected">Write</a> + <a href="#" class="tabnav-tab preview-tab js-preview-tab">Preview</a> + </nav> + </div> + + <div class="comment-form-error js-comment-form-error" style="display:none"> There was an error creating your PullRequest. +</div> + <div class="write-content js-write-bucket js-uploadable-container js-upload-markdown-image upload-enabled is-default" data-upload-policy-url="/upload/policies/assets"> + + <textarea name="comment[body]" tabindex="1" id="comment_body_2" placeholder="Leave a comment" aria-label="Comment body" class="input-contrast comment-form-textarea js-comment-field js-task-list-field js-quick-submit js-quote-selection-target js-session-resumable js-suggester-field" required=""></textarea><img style="cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0px ! important; margin: 0px ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important;" title="It's All Text!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAADdklEQVQ4y42UP4xVRRjFfzP37q7LxgBvV8FEjDEhxsJEo52VFhqpNBTIkqgFyZIIFhLtqdRCo3aiW5gYlMQoHYmxtsFCAyJ/tsDg7sLuu/fy3p25f969830W7/qWECCeZv5lzplv5pwxdPhjRSLnwsKunn1oz2573hhouAMKGO4LEfAOshSKspbBoHrh4qXLmqSJ29i8eTUGuLSmkc/lZV+Ew6mVfdkQrLFsm42Iok5BAHs7893HbaPkLlCPoB1pSDJ/0kZT/xRFfa6pq89igNzr3rblvbrS51eHzQNtgDiyTE0ZDAZF7l/eHUsqigIiMpUXzd7c17uq0tkgOhMDOK9HEV5qgrWuMBhtsSZgLKhKx6YdW9c3sPjaTk79lG31z2QTcWMgBPCFzKRpPp9lG3tnZnc8HQPMbrPvJH2hqi31KBBC6Db+d3TZqgTGbN0gL8ftl6dSUEVRDh+YZ/l0hqoQdMo0TRMVZbHn0cefPWsBNjchHxqyLJC7Ed4HfCnseWSapcUeCzsjvFd8qTy8EPPW/h0sLc4D4AvBF4GlxR6+EI4cWiCODUuHevhSqWtoW0Oa9Kdurq9FFmAjgf4tQzaoGDohL5W8EPa9+CBfn07Z/+oO8lLIC+H1V7bzw9khX32fjisshNxvVXviiw0ATny+gSvGe1wR8N6RpCkxQJJAXYIvAqGVzgCGIMrhAz1EFO8VjNK2yoXLFdLdsi8UdCzovUyM4wtBEeqyJEv7eO/wvhgLrq+ViLSENhCCTnweWcOnywkr10YTKw69ML8zZnZmnAnnQ/em4IqxwUQUG0E2aMhv9VlbvUI+6DM3l4wFs4EbP7gqop1hUD5Z7nPkYI+5bZY3j6+CEc78POTdt3vMTHeChU4M5EoFBGsNH76/izeOnmdzfYUsXSVIzI31CycNwIFj1z4ObftBWQ5QgWh6DmuiLUd2V3Z7Oia4Y05VCKFmVCa4wTWGyZ9UfoO6HmQqo5MxQOnzi8PB+mXvkidDqLHRLNZOd4E3d0m33iX93Zq2NPUAN7hK5a6DtkgYFSKjK8ba6zHA9b9/+7FtysfqKj/YjIqnmtYRGo+G6h7k94aqoKFGpUIlYKK41VD9ZZBvMHw3+ZCeeO6j7ah5JoSw38zsPqahIrTlVuj/t2BAZUSo+4TRjd+ldedsNP2tBvdrsvpL+y+TkkabJ8Dt4AAAAABJRU5ErkJggg=="> + + <p class="drag-and-drop"> + <span class="default"> + Attach images by dragging & dropping or + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <a class="manual-file-chooser-text" href="#">selecting them</a>. + </span> + <span class="loading"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> Uploading your images… + </span> + <span class="error bad-file"> + Unfortunately, we don't support that file type. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a PNG, GIF, or JPG. + </span> + </span> + <span class="error too-big"> + Yowza, that's a big file. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with an image file smaller than 10MB. + </span> + </span> + <span class="error empty"> + This file is empty. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a file that's not empty. + </span> + </span> + <span class="error bad-browser"> + This browser doesn't support image attachments. + <span class="drag-and-drop-error-info"> + We recommend updating to the latest + <a href="http://windows.microsoft.com/ie">Internet Explorer</a>, + <a href="https://chrome.google.com/">Google Chrome</a>, or + <a href="https://www.mozilla.org/firefox">Firefox</a>. + </span> + </span> + <span class="error failed-request"> + Something went really wrong, and we can't process that image. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again.</a> + </span> + </span> + </p> + + </div> + + <div class="preview-content"> + <div class="comment"> + <div class="comment-content"> + <div class="comment-body markdown-body js-preview-body"> + <p>Nothing to preview</p> + </div> + </div> +</div> + + </div> + + + <div class="suggester-container"> + <div class="suggester js-suggester js-navigation-container" data-url="/gaye/dav/suggestions/pull_request/32800343"> + </div> + </div> +</div> + + + <div class="form-actions"> + <div class="left"> + <span class="ajax-indicator"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgALMPANTX2amsrOHo6szMzYCAgGhoaJqbm97j5ebt7+nw88/R0tnd3ri8vo2Pj8rKyury9SH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMUU2RUQyNTU0RkUxMUUxOEQwQ0I1NTVEOTVGNzkzNyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMUU2RUQyNDU0RkUxMUUxOEQwQ0I1NTVEOTVGNzkzNyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA0ODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8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" width="16" height="16"> + </span> + </div> + + <button disabled class="btn btn-primary" type="submit" tabindex="1" data-disable-invalid="" data-disable-with=""> + Comment + </button> + + <button class="btn js-hide-inline-comment-form" type="button">Cancel</button> + </div> +</form> </div> +</div> + +</td> + +</tr> + +</tbody></table> + + </div> +</div> + + + + +<!-- Rendered timeline since 2015-04-07 13:48:58 --> +<div id="partial-timeline-marker" class="js-timeline-marker js-socket-channel js-updatable-content" data-channel="gaye/dav:pull_request:32800343" data-url="/gaye/dav/pull/70/show_partial?partial=timeline_marker&since=1428439738" data-mark-as-read-url="/gaye/dav/notifications/mark?ids=66036736" data-last-modified="Tue, 07 Apr 2015 20:48:58 GMT"> +</div> + + + </div> + + <div class="discussion-timeline-actions"> + + +<div id="partial-pull-merging" class="js-pull-merging js-socket-channel js-updatable-content" data-channel="millermedeiros/dav:branch:simplify_requests gaye/dav:branch:master gaye/dav:commit:fb1b3aae56494020d88f2e0b24de531f8142295e gaye/dav:issue:66979647:state" data-url="/gaye/dav/pull/70/show_partial?partial=merging"> + + <div class="merge-pr js-details-container"> + + + + <div class="branch-action branch-action-state-dirty js-mergable-state"> + <span class="mega-octicon octicon-git-pull-request branch-action-icon"></span> + <div class="branch-action-body"> + + <div class="branch-status"> + <span class="status-description build-status-single"> + <a class="right" href="https://travis-ci.org/gaye/dav/builds/57538680">Details</a> + + <span class="octicon octicon-x text-failure"></span> + <span class="text-muted css-truncate css-truncate-target"> + <strong class="text-failure">Failed</strong> + — The Travis CI build failed + </span> + </span> + </div> + + + <div class="merge-message"> + <div class="js-details-container"> + + + + + <h3 class="merge-branch-heading"> + This pull request contains merge conflicts that must be resolved. + </h3> + <p class="merge-branch-description"> + Only those with <a href="https://help.github.com/articles/what-are-the-different-access-permissions" class="tooltipped tooltipped-s" aria-label="Learn more about permission levels">write access</a> to this repository can merge pull requests. + </p> + + </div> + </div> + </div> + </div> + + + </div> + + +</div> + + + +<div class="timeline-comment-wrapper timeline-new-comment js-comment-container "> + <a href="https://github.com/mcepl"><img alt="@mcepl" class="timeline-comment-avatar" data-user="198999" src="data:image/png;base64,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" width="48" height="48"></a> + + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/pull/70/comment" class="js-new-comment-form" data-remote="true" data-type="json" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="qep+NTLr62of4zIzrO5QVUPmChjPWr9w78i9JhesrlYPExXMk7j7h5s+C/k1DKyAcQwktKJycp4CLavCXW9Wqw==" type="hidden"></div> + <div class="timeline-comment"> + <input name="issue" value="70" type="hidden"> + +<div class="js-previewable-comment-form js-suggester-container previewable-comment-form write-selected" data-preview-url="/preview?repository=20107688"> + <div class="comment-form-head tabnav"> + <div class="right"> + <a class="tabnav-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"> + <span class="octicon octicon-markdown"></span> + Markdown supported + </a> + +<a href="#fullscreen" class="enable-fullscreen js-enable-fullscreen tooltipped-n + tabnav-extra"> + <span class="octicon octicon-screen-full"></span> + Edit in fullscreen +</a> + + </div> + <nav class="tabnav-tabs"> + <a href="#" class="tabnav-tab write-tab js-write-tab selected">Write</a> + <a href="#" class="tabnav-tab preview-tab js-preview-tab">Preview</a> + </nav> + </div> + + <div class="comment-form-error js-comment-form-error" style="display:none"> There was an error creating your PullRequest. +</div> + <div class="write-content js-write-bucket js-uploadable-container js-upload-markdown-image upload-enabled is-default" data-upload-policy-url="/upload/policies/assets"> + + <textarea name="comment[body]" tabindex="1" id="new_comment_field" placeholder="Leave a comment" aria-label="Comment body" class="input-contrast comment-form-textarea js-comment-field js-task-list-field js-quick-submit js-size-to-fit js-quote-selection-target js-session-resumable js-suggester-field"></textarea><img style="cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0px ! important; margin: 0px ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important; left: 721px ! important; top: 2026px ! important;" title="It's All Text!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAADdklEQVQ4y42UP4xVRRjFfzP37q7LxgBvV8FEjDEhxsJEo52VFhqpNBTIkqgFyZIIFhLtqdRCo3aiW5gYlMQoHYmxtsFCAyJ/tsDg7sLuu/fy3p25f969830W7/qWECCeZv5lzplv5pwxdPhjRSLnwsKunn1oz2573hhouAMKGO4LEfAOshSKspbBoHrh4qXLmqSJ29i8eTUGuLSmkc/lZV+Ew6mVfdkQrLFsm42Iok5BAHs7893HbaPkLlCPoB1pSDJ/0kZT/xRFfa6pq89igNzr3rblvbrS51eHzQNtgDiyTE0ZDAZF7l/eHUsqigIiMpUXzd7c17uq0tkgOhMDOK9HEV5qgrWuMBhtsSZgLKhKx6YdW9c3sPjaTk79lG31z2QTcWMgBPCFzKRpPp9lG3tnZnc8HQPMbrPvJH2hqi31KBBC6Db+d3TZqgTGbN0gL8ftl6dSUEVRDh+YZ/l0hqoQdMo0TRMVZbHn0cefPWsBNjchHxqyLJC7Ed4HfCnseWSapcUeCzsjvFd8qTy8EPPW/h0sLc4D4AvBF4GlxR6+EI4cWiCODUuHevhSqWtoW0Oa9Kdurq9FFmAjgf4tQzaoGDohL5W8EPa9+CBfn07Z/+oO8lLIC+H1V7bzw9khX32fjisshNxvVXviiw0ATny+gSvGe1wR8N6RpCkxQJJAXYIvAqGVzgCGIMrhAz1EFO8VjNK2yoXLFdLdsi8UdCzovUyM4wtBEeqyJEv7eO/wvhgLrq+ViLSENhCCTnweWcOnywkr10YTKw69ML8zZnZmnAnnQ/em4IqxwUQUG0E2aMhv9VlbvUI+6DM3l4wFs4EbP7gqop1hUD5Z7nPkYI+5bZY3j6+CEc78POTdt3vMTHeChU4M5EoFBGsNH76/izeOnmdzfYUsXSVIzI31CycNwIFj1z4ObftBWQ5QgWh6DmuiLUd2V3Z7Oia4Y05VCKFmVCa4wTWGyZ9UfoO6HmQqo5MxQOnzi8PB+mXvkidDqLHRLNZOd4E3d0m33iX93Zq2NPUAN7hK5a6DtkgYFSKjK8ba6zHA9b9/+7FtysfqKj/YjIqnmtYRGo+G6h7k94aqoKFGpUIlYKK41VD9ZZBvMHw3+ZCeeO6j7ah5JoSw38zsPqahIrTlVuj/t2BAZUSo+4TRjd+ldedsNP2tBvdrsvpL+y+TkkabJ8Dt4AAAAABJRU5ErkJggg=="> + + <p class="drag-and-drop"> + <span class="default"> + Attach images by dragging & dropping or + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <a class="manual-file-chooser-text" href="#">selecting them</a>. + </span> + <span class="loading"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> Uploading your images… + </span> + <span class="error bad-file"> + Unfortunately, we don't support that file type. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a PNG, GIF, or JPG. + </span> + </span> + <span class="error too-big"> + Yowza, that's a big file. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with an image file smaller than 10MB. + </span> + </span> + <span class="error empty"> + This file is empty. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a file that's not empty. + </span> + </span> + <span class="error bad-browser"> + This browser doesn't support image attachments. + <span class="drag-and-drop-error-info"> + We recommend updating to the latest + <a href="http://windows.microsoft.com/ie">Internet Explorer</a>, + <a href="https://chrome.google.com/">Google Chrome</a>, or + <a href="https://www.mozilla.org/firefox">Firefox</a>. + </span> + </span> + <span class="error failed-request"> + Something went really wrong, and we can't process that image. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again.</a> + </span> + </span> + </p> + + </div> + + <div class="preview-content"> + <div class="comment"> + <div class="comment-content"> + <div class="comment-body markdown-body js-preview-body"> + <p>Nothing to preview</p> + </div> + </div> +</div> + + </div> + + + <div class="suggester-container"> + <div class="suggester js-suggester js-navigation-container" data-url="/gaye/dav/suggestions/pull_request/32800343"> + </div> + </div> +</div> + + <div class="form-actions"> + <div id="partial-new-comment-form-actions" class="js-socket-channel js-updatable-content" data-channel="gaye/dav:issue:66979647:state" data-url="/gaye/dav/pull/70/show_partial?partial=form_actions"> + + <button type="submit" class="btn btn-primary" tabindex="2" data-disable-with="" data-disable-invalid=""> + Comment + </button> + + +</div> + + + </div> + </div> +</form> + <div class="protip"> + <span class="octicon octicon-light-bulb text-muted"></span> + <strong>ProTip!</strong> + Add <a href="https://github.com/gaye/dav/pull/70.patch" data-skip-pjax="">.patch</a> or <a href="https://github.com/gaye/dav/pull/70.diff" data-skip-pjax="">.diff</a> to the end of URLs for Git's plaintext views. + </div> +</div> + + + </div> +</div> + + </div> + + + + + <div id="commits_bucket" class="tab-content pull-request-tab-content "> + + <div class="js-socket-channel js-updatable-content" data-channel="gaye/dav:branch:simplify_requests" data-url="/gaye/dav/pull/70/show_partial?partial=commits"> + + + + + + <div class="commits-listing commits-listing-padded js-navigation-container js-active-navigation-container" data-navigation-scroll="page"> + +<div class="commit-group-title"> + <span class="octicon octicon-git-commit"></span>Commits on Apr 7, 2015 +</div> + +<ol class="commit-group table-list table-list-bordered"> + +<li class="commit commits-list-item table-list-item js-navigation-item js-details-container js-socket-channel js-updatable-content" data-channel="gaye/dav:commit:fb1b3aae56494020d88f2e0b24de531f8142295e" data-url="/gaye/dav/commit/fb1b3aae56494020d88f2e0b24de531f8142295e/show_partial?partial=commits%2Fcommits_list_item"> + + <div class="table-list-cell commit-avatar-cell"> + <div class="avatar-parent-child"> + <a href="https://github.com/millermedeiros" data-skip-pjax="true" rel="contributor"><img alt="@millermedeiros" class="avatar" data-user="155633" src="data:image/png;base64,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" width="36" height="36"></a> + </div> + </div> + <div class="table-list-cell"> + <p class="commit-title "> + <a href="https://github.com/millermedeiros/dav/commit/fb1b3aae56494020d88f2e0b24de531f8142295e" class="message" data-pjax="true" title="Simplify request logic + + - Centralize the XHR header logic into the transport itself since it's + needed by all the requests, removing the need of the individual + `transformRequest` calls. + + - Remove `request.basic` since it can be represented as a plain object. + + - Instead of using `instanceof` we check if generated requests contains + the desired properties. + + - Remove the `Request` constructor since it wasn't doing anything and + was introducing an extra level of indirection and used a JSDoc + @typedef instead. + + - Simplified the way XML templates are interpolated in the requests.">Simplify request logic</a> + + <span class="hidden-text-expander inline"><a href="#" class="js-details-target">…</a></span> + </p> + + <div class="commit-meta"> + <a href="https://github.com/millermedeiros" class="commit-author" rel="contributor">millermedeiros</a> + authored <time title="7 Apr 2015 21:40 GMT+2" datetime="2015-04-07T19:40:30Z" is="relative-time">8 days ago</time> + + + <span class="commit-indicator"> + + <div class="commit-build-statuses"> + <a class="text-failure tooltipped tooltipped-e" aria-label="Failure: The Travis CI build failed" href="https://travis-ci.org/gaye/dav/builds/57538680"> + <span class="octicon octicon-x"></span> + </a> + </div> + + </span> + + </div> + + <div class="commit-desc"><pre> - Centralize the XHR header logic into the transport itself since it's + needed by all the requests, removing the need of the individual + `transformRequest` calls. + + - Remove `request.basic` since it can be represented as a plain object. + + - Instead of using `instanceof` we check if generated requests contains + the desired properties. + + - Remove the `Request` constructor since it wasn't doing anything and + was introducing an extra level of indirection and used a JSDoc + <a href="https://github.com/typedef" class="user-mention">@typedef</a> instead. + + - Simplified the way XML templates are interpolated in the requests.</pre></div> + </div> + <div class="commit-links-cell table-list-cell"> + <div class="commit-links-group btn-group"> + + <a href="https://github.com/millermedeiros/dav/commit/fb1b3aae56494020d88f2e0b24de531f8142295e" class="sha btn btn-outline"> + fb1b3aa + </a> + </div> + <a href="https://github.com/gaye/dav/tree/fb1b3aae56494020d88f2e0b24de531f8142295e" aria-label="Browse the repository at this point in the history" class="btn btn-outline tooltipped tooltipped-s" rel="nofollow"><span class="octicon octicon-code"></span></a> + </div> + +</li> + +</ol> + + </div> +</div> + + </div> + + + + + + <div id="files_bucket" class="files-bucket tab-content pull-request-tab-content "> + + <div class="flash flash-warn stale-files-tab js-pull-request-stale-files js-socket-channel" data-channel="gaye/dav:pull_request:32800343:diff" data-url="https://github.com/gaye/dav/pull/70/live_update"> + This page is out of date. <a href="https://github.com/gaye/dav/pull/70/files">Refresh</a> to see the latest. +</div> + + + + + + + + <table style="display:none"> + <tbody id="js-inline-comments-single-container-template"> + <tr class="inline-comments js-inline-comments-container"> + +<td class="line-comments js-line-comments js-quote-selection-container" colspan="3"> + <div class="comment-holder js-comments-holder"> + </div> + + <div class="inline-comment-form-container"> + <button class="btn add-line-note-button js-toggle-inline-comment-form">Add a line note</button> + + <div class="inline-comment-form"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/pull/70/review_comment/create" class="js-inline-comment-form" data-remote="" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="+zwMnvYI79ZuJDNl968IjWylgTaPtnNHiG0/ao46f1JHHu/3PpG/4EaDw8etmns/eqJPP/Qq2EjqybGyYz+g3Q==" type="hidden"></div> + <input name="context" value="diff" type="hidden"> + <input name="commit_id" value="fb1b3aae56494020d88f2e0b24de531f8142295e" type="hidden"> + <input name="anchor" value="" type="hidden"> + <input name="path" value="" type="hidden"> + <input name="position" value="" type="hidden"> + <input name="line" value="" type="hidden"> + + +<div class="js-previewable-comment-form js-suggester-container previewable-comment-form write-selected" data-preview-url="/preview?repository=20107688"> + <div class="comment-form-head tabnav"> + <div class="right"> + <a class="tabnav-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"> + <span class="octicon octicon-markdown"></span> + Markdown supported + </a> + +<a href="#fullscreen" class="enable-fullscreen js-enable-fullscreen tooltipped-n + tabnav-extra"> + <span class="octicon octicon-screen-full"></span> + Edit in fullscreen +</a> + + </div> + <nav class="tabnav-tabs"> + <a href="#" class="tabnav-tab write-tab js-write-tab selected">Write</a> + <a href="#" class="tabnav-tab preview-tab js-preview-tab">Preview</a> + </nav> + </div> + + <div class="comment-form-error js-comment-form-error" style="display:none"> There was an error creating your PullRequest. +</div> + <div class="write-content js-write-bucket js-uploadable-container js-upload-markdown-image upload-enabled is-default" data-upload-policy-url="/upload/policies/assets"> + + <textarea name="comment[body]" tabindex="1" id="comment_body_3" placeholder="Leave a comment" aria-label="Comment body" class="input-contrast comment-form-textarea js-comment-field js-task-list-field js-quick-submit js-quote-selection-target js-session-resumable js-suggester-field" required=""></textarea><img style="cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0px ! important; margin: 0px ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important;" title="It's All Text!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAADdklEQVQ4y42UP4xVRRjFfzP37q7LxgBvV8FEjDEhxsJEo52VFhqpNBTIkqgFyZIIFhLtqdRCo3aiW5gYlMQoHYmxtsFCAyJ/tsDg7sLuu/fy3p25f969830W7/qWECCeZv5lzplv5pwxdPhjRSLnwsKunn1oz2573hhouAMKGO4LEfAOshSKspbBoHrh4qXLmqSJ29i8eTUGuLSmkc/lZV+Ew6mVfdkQrLFsm42Iok5BAHs7893HbaPkLlCPoB1pSDJ/0kZT/xRFfa6pq89igNzr3rblvbrS51eHzQNtgDiyTE0ZDAZF7l/eHUsqigIiMpUXzd7c17uq0tkgOhMDOK9HEV5qgrWuMBhtsSZgLKhKx6YdW9c3sPjaTk79lG31z2QTcWMgBPCFzKRpPp9lG3tnZnc8HQPMbrPvJH2hqi31KBBC6Db+d3TZqgTGbN0gL8ftl6dSUEVRDh+YZ/l0hqoQdMo0TRMVZbHn0cefPWsBNjchHxqyLJC7Ed4HfCnseWSapcUeCzsjvFd8qTy8EPPW/h0sLc4D4AvBF4GlxR6+EI4cWiCODUuHevhSqWtoW0Oa9Kdurq9FFmAjgf4tQzaoGDohL5W8EPa9+CBfn07Z/+oO8lLIC+H1V7bzw9khX32fjisshNxvVXviiw0ATny+gSvGe1wR8N6RpCkxQJJAXYIvAqGVzgCGIMrhAz1EFO8VjNK2yoXLFdLdsi8UdCzovUyM4wtBEeqyJEv7eO/wvhgLrq+ViLSENhCCTnweWcOnywkr10YTKw69ML8zZnZmnAnnQ/em4IqxwUQUG0E2aMhv9VlbvUI+6DM3l4wFs4EbP7gqop1hUD5Z7nPkYI+5bZY3j6+CEc78POTdt3vMTHeChU4M5EoFBGsNH76/izeOnmdzfYUsXSVIzI31CycNwIFj1z4ObftBWQ5QgWh6DmuiLUd2V3Z7Oia4Y05VCKFmVCa4wTWGyZ9UfoO6HmQqo5MxQOnzi8PB+mXvkidDqLHRLNZOd4E3d0m33iX93Zq2NPUAN7hK5a6DtkgYFSKjK8ba6zHA9b9/+7FtysfqKj/YjIqnmtYRGo+G6h7k94aqoKFGpUIlYKK41VD9ZZBvMHw3+ZCeeO6j7ah5JoSw38zsPqahIrTlVuj/t2BAZUSo+4TRjd+ldedsNP2tBvdrsvpL+y+TkkabJ8Dt4AAAAABJRU5ErkJggg=="> + + <p class="drag-and-drop"> + <span class="default"> + Attach images by dragging & dropping or + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <a class="manual-file-chooser-text" href="#">selecting them</a>. + </span> + <span class="loading"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> Uploading your images… + </span> + <span class="error bad-file"> + Unfortunately, we don't support that file type. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a PNG, GIF, or JPG. + </span> + </span> + <span class="error too-big"> + Yowza, that's a big file. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with an image file smaller than 10MB. + </span> + </span> + <span class="error empty"> + This file is empty. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a file that's not empty. + </span> + </span> + <span class="error bad-browser"> + This browser doesn't support image attachments. + <span class="drag-and-drop-error-info"> + We recommend updating to the latest + <a href="http://windows.microsoft.com/ie">Internet Explorer</a>, + <a href="https://chrome.google.com/">Google Chrome</a>, or + <a href="https://www.mozilla.org/firefox">Firefox</a>. + </span> + </span> + <span class="error failed-request"> + Something went really wrong, and we can't process that image. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again.</a> + </span> + </span> + </p> + + </div> + + <div class="preview-content"> + <div class="comment"> + <div class="comment-content"> + <div class="comment-body markdown-body js-preview-body"> + <p>Nothing to preview</p> + </div> + </div> +</div> + + </div> + + + <div class="suggester-container"> + <div class="suggester js-suggester js-navigation-container" data-url="/gaye/dav/suggestions/pull_request/32800343"> + </div> + </div> +</div> + + + <div class="form-actions"> + <div class="left"> + <span class="ajax-indicator"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgALMPANTX2amsrOHo6szMzYCAgGhoaJqbm97j5ebt7+nw88/R0tnd3ri8vo2Pj8rKyury9SH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMUU2RUQyNTU0RkUxMUUxOEQwQ0I1NTVEOTVGNzkzNyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMUU2RUQyNDU0RkUxMUUxOEQwQ0I1NTVEOTVGNzkzNyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA0ODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8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" width="16" height="16"> + </span> + </div> + + <button disabled class="btn btn-primary" type="submit" tabindex="1" data-disable-invalid="" data-disable-with=""> + Comment + </button> + + <button class="btn js-hide-inline-comment-form" type="button">Cancel</button> + </div> +</form> </div> +</div> + +</td> + +</tr> + + </tbody> + </table> + + + <div id="diff" class="uncommentable"> + +<div id="toc" class="details-collapse table-of-contents js-details-container"> + <div class="btn-group right" data-ga-load="Diff, view, Viewed Unified Diff"> + <a class="btn btn-sm selected" href="https://github.com/gaye/dav/pull/70/files?diff=unified"> + Unified + </a> + <a class="btn btn-sm" href="https://github.com/gaye/dav/pull/70/files?diff=split"> + Split + </a> +</div> + + + <div class="toc-diff-stats"> + <span class="octicon octicon-diff"></span> + Showing + <button type="button" class="btn-link js-details-target"> + 23 changed files + </button> + with + <strong>168 additions</strong> + and <strong>211 deletions</strong>. + </div> + + <ol class="content collapse js-transitionable"> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +1 + </span> + <span class="text-diff-deleted"> + −1 + </span> + <a href="#diff-4d5aa81bf4f18104bb6ea53a8b5d1f43" class="tooltipped tooltipped-s" aria-label="2 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-4d5aa81bf4f18104bb6ea53a8b5d1f43">.jshintrc</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +1 + </span> + <span class="text-diff-deleted"> + −1 + </span> + <a href="#diff-9890d6f24517fc45c05c6071f85601db" class="tooltipped tooltipped-s" aria-label="2 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-9890d6f24517fc45c05c6071f85601db">lib/accounts.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +4 + </span> + <span class="text-diff-deleted"> + −8 + </span> + <a href="#diff-24c657748df7dea47c7478f1583789c9" class="tooltipped tooltipped-s" aria-label="12 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-24c657748df7dea47c7478f1583789c9">lib/request/address_book_query.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +0 + </span> + <span class="text-diff-deleted"> + −23 + </span> + <a href="#diff-e04b5b9a90c9f847a2707732179a7530" class="tooltipped tooltipped-s" aria-label="23 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-removed" title="removed"></span> + <a href="#diff-e04b5b9a90c9f847a2707732179a7530">lib/request/basic.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +4 + </span> + <span class="text-diff-deleted"> + −10 + </span> + <a href="#diff-43152dfe3920d47b8718461b8c58770b" class="tooltipped tooltipped-s" aria-label="14 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-43152dfe3920d47b8718461b8c58770b">lib/request/calendar_query.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +13 + </span> + <span class="text-diff-deleted"> + −12 + </span> + <a href="#diff-c4e95645f9f70a1e1508af7719a6a2ae" class="tooltipped tooltipped-s" aria-label="25 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-c4e95645f9f70a1e1508af7719a6a2ae">lib/request/collection_query.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +9 + </span> + <span class="text-diff-deleted"> + −2 + </span> + <a href="#diff-1cf015c4a26a2083cd3831ffc49b35a0" class="tooltipped tooltipped-s" aria-label="11 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-1cf015c4a26a2083cd3831ffc49b35a0">lib/request/index.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +6 + </span> + <span class="text-diff-deleted"> + −13 + </span> + <a href="#diff-ba7b41d2658a46770b40d8d8eff76cd7" class="tooltipped tooltipped-s" aria-label="19 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-ba7b41d2658a46770b40d8d8eff76cd7">lib/request/propfind.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +0 + </span> + <span class="text-diff-deleted"> + −35 + </span> + <a href="#diff-6d2d982bba05bb46522a72d68610305a" class="tooltipped tooltipped-s" aria-label="35 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-removed" title="removed"></span> + <a href="#diff-6d2d982bba05bb46522a72d68610305a">lib/request/request.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +6 + </span> + <span class="text-diff-deleted"> + −17 + </span> + <a href="#diff-1be4f9a2763092c10c341c643ea95ae3" class="tooltipped tooltipped-s" aria-label="23 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-1be4f9a2763092c10c341c643ea95ae3">lib/request/sync_collection.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +0 + </span> + <span class="text-diff-deleted"> + −12 + </span> + <a href="#diff-621f4846041556ec85382624c6ff90ba" class="tooltipped tooltipped-s" aria-label="12 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-621f4846041556ec85382624c6ff90ba">lib/request/util.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +3 + </span> + <span class="text-diff-deleted"> + −5 + </span> + <a href="#diff-81b908babb66bd40e6d64d50ad72af80" class="tooltipped tooltipped-s" aria-label="8 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-81b908babb66bd40e6d64d50ad72af80">lib/transport/basic.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +2 + </span> + <span class="text-diff-deleted"> + −4 + </span> + <a href="#diff-ede51dd0207ffd745a0400a6b589fbd4" class="tooltipped tooltipped-s" aria-label="6 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-ede51dd0207ffd745a0400a6b589fbd4">lib/transport/oauth2.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +17 + </span> + <span class="text-diff-deleted"> + −0 + </span> + <a href="#diff-ba2284e2b54a6b72e1e6a9f85831fc6e" class="tooltipped tooltipped-s" aria-label="17 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-added" title="added"></span> + <a href="#diff-ba2284e2b54a6b72e1e6a9f85831fc6e">lib/transport/set_request_header.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +3 + </span> + <span class="text-diff-deleted"> + −3 + </span> + <a href="#diff-42906c496f3eb63439ea877097b7f2ac" class="tooltipped tooltipped-s" aria-label="6 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-42906c496f3eb63439ea877097b7f2ac">lib/webdav.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +4 + </span> + <span class="text-diff-deleted"> + −4 + </span> + <a href="#diff-5eec2b8cbced383d31bd24205be6c947" class="tooltipped tooltipped-s" aria-label="8 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-5eec2b8cbced383d31bd24205be6c947">test/unit/client_test.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +12 + </span> + <span class="text-diff-deleted"> + −8 + </span> + <a href="#diff-4c64fbe2097444c9768c8b8fd17601aa" class="tooltipped tooltipped-s" aria-label="20 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-4c64fbe2097444c9768c8b8fd17601aa">test/unit/request/address_book_query_test.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +5 + </span> + <span class="text-diff-deleted"> + −18 + </span> + <a href="#diff-75e9b3e8f6e3a9c098624463cd402f5b" class="tooltipped tooltipped-s" aria-label="23 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-75e9b3e8f6e3a9c098624463cd402f5b">test/unit/request/basic_test.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +16 + </span> + <span class="text-diff-deleted"> + −8 + </span> + <a href="#diff-d3f93017c924d804fd8e48eb890c9396" class="tooltipped tooltipped-s" aria-label="24 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-d3f93017c924d804fd8e48eb890c9396">test/unit/request/calendar_query_test.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +12 + </span> + <span class="text-diff-deleted"> + −8 + </span> + <a href="#diff-bb21a24370ca6f7f135323da91db40d0" class="tooltipped tooltipped-s" aria-label="20 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-bb21a24370ca6f7f135323da91db40d0">test/unit/request/propfind_test.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +15 + </span> + <span class="text-diff-deleted"> + −12 + </span> + <a href="#diff-461db5cfc29016e1049b0c48aadd5255" class="tooltipped tooltipped-s" aria-label="27 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-461db5cfc29016e1049b0c48aadd5255">test/unit/request/sync_collection_test.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +0 + </span> + <span class="text-diff-deleted"> + −7 + </span> + <a href="#diff-d6ac4730119e3630c43967c1639d3845" class="tooltipped tooltipped-s" aria-label="7 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-modified" title="modified"></span> + <a href="#diff-d6ac4730119e3630c43967c1639d3845">test/unit/transport/basic_test.js</a> + </li> + <li> + <span class="diffstat right"> + <span class="text-diff-added"> + +35 + </span> + <span class="text-diff-deleted"> + −0 + </span> + <a href="#diff-15694877d36a3a3f613946158f7a0414" class="tooltipped tooltipped-s" aria-label="35 lines changed"> + <span class="diffstat-bar"> + <span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span> + </span> + </a> + </span> + <span class="octicon octicon-diff-added" title="added"></span> + <a href="#diff-15694877d36a3a3f613946158f7a0414">test/unit/transport/set_request_headers_test.js</a> + </li> + </ol> +</div> + + <div id="files" class="diff-view commentable"> + <a name="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43"></a> + <div id="diff-0" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path=".jshintrc"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/.jshintrc" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="1 addition & 1 deletion">2 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title=".jshintrc"> + .jshintrc + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-4d5aa81bf4f18104bb6ea53a8b5d1f43" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/8b1b377ec6355fefeec859e163df68ab89c0f5b6?diff=unified&left_hunk_size=7&mode=100644&next_line_num_left=23&next_line_num_right=23&path=.jshintrc&prev_line_num_left=&prev_line_num_right=&right_hunk_size=7" data-left-range="1-22" data-right-range="1-22"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -23,7 +23,7 @@</td> + </tr> + + <tr> + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43L23" data-line-number="23" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43R23" data-line-number="23" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path=".jshintrc" data-anchor="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43" data-position="1" data-line="23" role="button" aria-label="Add line comment"></b> <span class="pl-s"><span class="pl-pds">"</span>asi<span class="pl-pds">"</span></span> : <span class="pl-c1">false</span>, // <span class="pl-c1">true</span>: Tolerate Automatic Semicolon Insertion (no semicolons)</td> + </tr> + + <tr> + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43L24" data-line-number="24" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43R24" data-line-number="24" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path=".jshintrc" data-anchor="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43" data-position="2" data-line="24" role="button" aria-label="Add line comment"></b> <span class="pl-s"><span class="pl-pds">"</span>boss<span class="pl-pds">"</span></span> : <span class="pl-c1">false</span>, // <span class="pl-c1">true</span>: Tolerate assignments where comparisons would be expected</td> + </tr> + + <tr> + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43L25" data-line-number="25" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43R25" data-line-number="25" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path=".jshintrc" data-anchor="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43" data-position="3" data-line="25" role="button" aria-label="Add line comment"></b> <span class="pl-s"><span class="pl-pds">"</span>debug<span class="pl-pds">"</span></span> : <span class="pl-c1">false</span>, // <span class="pl-c1">true</span>: Allow debugger statements e.g. browser breakpoints.</td> + </tr> + + <tr> + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43L26" data-line-number="26" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path=".jshintrc" data-anchor="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43" data-position="4" data-line="26" role="button" aria-label="Add line comment"></b>- <span class="pl-s"><span class="pl-pds">"</span>eqnull<span class="pl-pds">"</span></span> : <span class="pl-c1 x x-first">false</span><span class="x x-last">,</span> // <span class="pl-c1">true</span>: Tolerate use of `== <span class="pl-c1">null</span>`</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43R26" data-line-number="26" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path=".jshintrc" data-anchor="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43" data-position="5" data-line="26" role="button" aria-label="Add line comment"></b>+ <span class="pl-s"><span class="pl-pds">"</span>eqnull<span class="pl-pds">"</span></span> : <span class="pl-c1 x x-first">true</span><span class="x x-last">, </span> // <span class="pl-c1">true</span>: Tolerate use of `== <span class="pl-c1">null</span>`</td> + </tr> + + <tr> + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43L27" data-line-number="27" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43R27" data-line-number="27" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path=".jshintrc" data-anchor="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43" data-position="6" data-line="27" role="button" aria-label="Add line comment"></b> <span class="pl-s"><span class="pl-pds">"</span>esnext<span class="pl-pds">"</span></span> : <span class="pl-c1">true</span>, // <span class="pl-c1">true</span>: Allow ES.next (ES<span class="pl-c1">6</span>) syntax (ex: `const`)</td> + </tr> + + <tr> + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43L28" data-line-number="28" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43R28" data-line-number="28" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path=".jshintrc" data-anchor="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43" data-position="7" data-line="28" role="button" aria-label="Add line comment"></b> <span class="pl-s"><span class="pl-pds">"</span>moz<span class="pl-pds">"</span></span> : <span class="pl-c1">true</span>, // <span class="pl-c1">true</span>: Allow Mozilla specific syntax (extends and overrides esnext features)</td> + </tr> + + <tr> + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43L29" data-line-number="29" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43R29" data-line-number="29" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path=".jshintrc" data-anchor="diff-4d5aa81bf4f18104bb6ea53a8b5d1f43" data-position="8" data-line="29" role="button" aria-label="Add line comment"></b> // (ex: `for each`, multiple try/catch, function expression…)</td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-4d5aa81bf4f18104bb6ea53a8b5d1f43" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/8b1b377ec6355fefeec859e163df68ab89c0f5b6?diff=unified&mode=100644&path=.jshintrc&prev_line_num_left=29&prev_line_num_right=29" data-left-range="30-74" data-right-range="30-74"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-9890d6f24517fc45c05c6071f85601db"></a> + <div id="diff-1" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/accounts.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/accounts.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="1 addition & 1 deletion">2 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/accounts.js"> + lib/accounts.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-9890d6f24517fc45c05c6071f85601db" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/bb9bcac166c33474fb0a886f44ea8f48f7ff739e?diff=unified&left_hunk_size=7&mode=100644&next_line_num_left=25&next_line_num_right=25&path=lib%2Faccounts.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=7" data-left-range="1-24" data-right-range="1-24"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -25,7 +25,7 @@ function serviceDiscovery(account, options) {</td> + </tr> + + <tr> + <td id="diff-9890d6f24517fc45c05c6071f85601dbL25" data-line-number="25" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-9890d6f24517fc45c05c6071f85601dbR25" data-line-number="25" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/accounts.js" data-anchor="diff-9890d6f24517fc45c05c6071f85601db" data-position="1" data-line="25" role="button" aria-label="Add line comment"></b> pathname<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>/.well-known/<span class="pl-pds">'</span></span> <span class="pl-k">+</span> options.accountType</td> + </tr> + + <tr> + <td id="diff-9890d6f24517fc45c05c6071f85601dbL26" data-line-number="26" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-9890d6f24517fc45c05c6071f85601dbR26" data-line-number="26" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/accounts.js" data-anchor="diff-9890d6f24517fc45c05c6071f85601db" data-position="2" data-line="26" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-9890d6f24517fc45c05c6071f85601dbL27" data-line-number="27" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-9890d6f24517fc45c05c6071f85601dbR27" data-line-number="27" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/accounts.js" data-anchor="diff-9890d6f24517fc45c05c6071f85601db" data-position="3" data-line="27" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-9890d6f24517fc45c05c6071f85601dbL28" data-line-number="28" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/accounts.js" data-anchor="diff-9890d6f24517fc45c05c6071f85601db" data-position="4" data-line="28" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> req <span class="pl-k">=</span> <span class="x x-first x-last">request.basic(</span>{ method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>GET<span class="pl-pds">'</span></span> }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-9890d6f24517fc45c05c6071f85601dbR28" data-line-number="28" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/accounts.js" data-anchor="diff-9890d6f24517fc45c05c6071f85601db" data-position="5" data-line="28" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> { method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>GET<span class="pl-pds">'</span></span> };</td> + </tr> + + <tr> + <td id="diff-9890d6f24517fc45c05c6071f85601dbL29" data-line-number="29" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-9890d6f24517fc45c05c6071f85601dbR29" data-line-number="29" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/accounts.js" data-anchor="diff-9890d6f24517fc45c05c6071f85601db" data-position="6" data-line="29" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> options.xhr.<span class="pl-c1">send</span>(req, uri, { sandbox<span class="pl-k">:</span> options.sandbox })</td> + </tr> + + <tr> + <td id="diff-9890d6f24517fc45c05c6071f85601dbL30" data-line-number="30" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-9890d6f24517fc45c05c6071f85601dbR30" data-line-number="30" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/accounts.js" data-anchor="diff-9890d6f24517fc45c05c6071f85601db" data-position="7" data-line="30" role="button" aria-label="Add line comment"></b> .then(<span class="pl-k">function</span>(<span class="pl-smi">xhr</span>) {</td> + </tr> + + <tr> + <td id="diff-9890d6f24517fc45c05c6071f85601dbL31" data-line-number="31" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-9890d6f24517fc45c05c6071f85601dbR31" data-line-number="31" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/accounts.js" data-anchor="diff-9890d6f24517fc45c05c6071f85601db" data-position="8" data-line="31" role="button" aria-label="Add line comment"></b> <span class="pl-k">if</span> (xhr.<span class="pl-c1">status</span> <span class="pl-k">>=</span> <span class="pl-c1">300</span> <span class="pl-k">&&</span> xhr.<span class="pl-c1">status</span> <span class="pl-k"><</span> <span class="pl-c1">400</span>) {</td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-9890d6f24517fc45c05c6071f85601db" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/bb9bcac166c33474fb0a886f44ea8f48f7ff739e?diff=unified&mode=100644&path=lib%2Faccounts.js&prev_line_num_left=31&prev_line_num_right=31" data-left-range="32-171" data-right-range="32-171"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-24c657748df7dea47c7478f1583789c9"></a> + <div id="diff-2" class="file js-details-container + + + + has-inline-notes + show-inline-notes + "> + <div class="file-header" data-path="lib/request/address_book_query.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/request/address_book_query.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="4 additions & 8 deletions">12 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/request/address_book_query.js"> + lib/request/address_book_query.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-24c657748df7dea47c7478f1583789c9" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/88f2a539252f5c738674a0571eb99dc48f61bbb3?diff=unified&left_hunk_size=12&mode=100644&next_line_num_left=10&next_line_num_right=10&path=lib%2Frequest%2Faddress_book_query.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=8" data-left-range="1-9" data-right-range="1-9"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -10,12 +10,8 @@ var collectionQuery = require('./collection_query'),</td> + </tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-24c657748df7dea47c7478f1583789c9R10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="1" data-line="10" role="button" aria-label="Add line comment"></b> <span class="pl-c"> * (Array.<Object>) props - list of props to request.</span></td> + </tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-24c657748df7dea47c7478f1583789c9R11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="2" data-line="11" role="button" aria-label="Add line comment"></b> <span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-24c657748df7dea47c7478f1583789c9R12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="3" data-line="12" role="button" aria-label="Add line comment"></b> <span class="pl-c1">module</span>.<span class="pl-en">exports</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L13" data-line-number="13" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="4" data-line="13" role="button" aria-label="Add line comment"></b>- <span class="pl-k">return</span> collectionQuery(</td> + </tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L14" data-line-number="14" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="5" data-line="14" role="button" aria-label="Add line comment"></b>- template.addressBookQuery({</td> + </tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L15" data-line-number="15" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="6" data-line="15" role="button" aria-label="Add line comment"></b>- props<span class="pl-k">:</span> options.props <span class="pl-k">||</span> []</td> + </tr> + + <tr class="inline-comments js-inline-comments-container"> + +<td class="line-comments js-line-comments js-quote-selection-container" colspan="3"> + <div class="comment-holder js-comments-holder"> + <div id="r27918728" class="comment timeline-comment js-comment js-task-list-container commit-comment owner-comment" data-body-version="a92b07612dcaf6af7f5cf96e946cd8a2"> + + <div class="timeline-comment-header commit"> + <img alt="@gaye" class="avatar timeline-comment-header-avatar" data-user="535859" src="data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACgAKAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AIY25qWa8gs4TLPIsaDuxxUEVcf4hcaxrsVh5p+zxAEhCMljn+lZtLqUld2Rsaf41ae+VJYY1tnk2Bg3IB6E9q7qIhlBBBB6EVneEfhpol8qrcNdh8HJVwB09MVG9vD4U8S3Wim63242tFvI4yOgpypqS5olShKm7SN+MVLtpIQGAYdDU+2suRkM4aRvKt5JMZ2qTXltq92Z57kO4mD7m9vT+deuxpmue1zRvsn2m+tlAjmTEuOobP3vp2rdjha+ps6HF4iHh/TtXfUpVhmcnEQYH72MHb34B5I6+xpvxG0G9tpLfWJ2lmNyMAsORjYBn8zya3/h2HvvDbWTFWx1EgY45zxz1qx420TUdZ1fSbEyummW1uWlfd/rHLYxj1wOuO5pps6KyjGF2S6Gs7aRaG5XbKYxuFafl0+2t1ihjjXoihR+FWPLp8p57qpHCBkhjMkjKiL1ZjgCuX13xarxPYaWhlkkBRpSOMd8A9eK3Na/5At1/u15xZf8hSL6n+VdFGlGdrnLXxE4Xt0Vz0/4e318lrGWWRLcHb0xzXpOoX8N2kUESqRGcl/w/wD11wHgz/kAj/frqrf77V04ShFx9o90eJxNmVek44aGkZK777vT0LIYIwU9+BUvP92q0v8Ar4v98VcredGne9jwaGZ4tRtzvT0f5o//2Q==" width="20" height="20"> + + + <span class="timeline-comment-label">Owner</span> + + + <div class="timeline-comment-header-text"> + + <strong> + <a href="https://github.com/gaye" class="author">gaye</a> + </strong> + + added a note + + <a href="#r27918728" class="timestamp"> + <time title="7 Apr 2015 22:48 GMT+2" datetime="2015-04-07T20:48:26Z" is="relative-time">8 days ago</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body markdown-format js-comment-body"> + <p>I think I probably wrote this for the case when we get an options without props (we really shouldn't?) but I think the template might require props?</p> + </div> + </div> + + </div> +</div> + + + <div id="r27920127" class="comment timeline-comment js-comment js-task-list-container commit-comment" data-body-version="1ec0df65c37aa0e8a5f0992f2c67602b"> + + <div class="timeline-comment-header commit"> + <img alt="@millermedeiros" class="avatar timeline-comment-header-avatar" data-user="155633" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAEt0lEQVRYw+2X328UVRTHP+fOTHe23YVuK9IKtNDFEMtPQWPEQBSNIYZHYuKLPPrkf+ADbz5q/COMMT5RY0wwUUSNigpIW6FohRawpb+77bbb2Znrw+5sZ3dnt7tLG/rATSYz851z55x7z/mec64ku7s1m3iYWufsE8C3NPgcHD4eJrtRmCkiZUaUClLB2GqYrBNW2EFEQOvinROh8L0BjHXAlL+Dkv8g+WcJCEujOxDwTqOYGXzxjSxzWamRgfeq2DoYuaEkCZtbL2aGWU4N5KjVzTwiVkaSaqPWHSyERQjp6sWqk0SkLLaQkDVXSFWV4rkezNR+msjjOsQAHwuTqYoFFDWKmYSQJGw882yWM++ncDLCtYs2N76zcZ3cpI0kidRSi59/c4njZ9NYkfzqNCzOCouziukHBv/9bXHvlsnsmIHnyvrWYmogSe/JTME4XzSW0MQSLtv3uDz3ygrag7kJxZ0/Lfov2UyOGtVdUuMw2lpbz+t8UtQlhNAiiAiJ7S4dSSeXTLUuKm0+JkqItHh09GQ58GqG5rjHyGATnhdwXf5/RaGwBmYkWlvPF7Ewz9wgNjJgkUkrdvU6iFp71SLQ0ZMl0eFxt78J1y3+X5iOSpiR2Lr1fLXE7FNqfNjk4R2Trl4Hy67Nd+07PXqOrHDvL5PllDSUuKXehjXW5vL6uUV2H3ZCU2LYWJwVvvhwCzNjZt0xqNB6lRz+c5VrYUrR90mc2fHiqdVGS6vmtXfTILomHcFLVUvSOhATQZlEp0vr0x6/f2Vz86emwPp0WV/oYzv2OWxp9wpFQZfoqIStWUnCsnzPkRU8F65dtFmYUYwNL3PynTTKWDWqzFWGpm2Hy9yksTGVxJcRBT1HVxgZtFiYUaDh+jc2qSmD0++lsGzN/IRBalpht2jad7g51wLxNo9ozGPfSxm6Djh4nvDj583MjKn6261SGr/w1jKiNFu2eXTscbk/JLTvdJkbN8g6MHzVYnTQInnM4de+KAPf24ho3v5gns69WQAOnVrm+Nk00diqCQ/vGFzpa67cblWtJIXEDPeHTBBQt8GwNOk5RefeLIffWOZKXxSA3Ycc3CyMDlq5ZXkw9EtTwcBtXW5JfMLkqFn1TGL6VaGQwQPCOlApHtw2CzKzYwanzi1w+bNmhAhahP0nllGmZnTQYn5SFeYOXI5w9PQy8Xav8N+5CUU05pGeV4wMWMWVKaBXa40KI4l/+UYWWJXHFuZyqcaOaeLtHoKm+6ADwI1vbTSrczNLigsfx7l302RixOCPr22m7xsYFlz6tIWsI6skKdHbEEk0YFpgNmk6k1l6T2QwLc2eww6pKYPhq01FHbJIztWDP0R4apdL8tgKrgMXPopzt98qc29D7Vbp2Pdyho6eLKkphR3z2H8iw93+XBfzYMgqkt19aIUXzyxx6+cIytBE45p/r1uM/WPVpEuSXV36UQ7aB1/PEIl6/PZltCLBlAFeNoftPZYhNa0YHzZr0iHJ7m6ttS60N0Uk8duvvMuCRPKlIs0azxWyGcpbpkDSbhRrqJIEZTJLUpa8HsuZZNMd3NksB/eaKsljxFTd8Re4r4mVtlENYI9Mkk1zcH9Ckick2SCS/A/o5/nVx5zr4AAAAABJRU5ErkJggg==" width="20" height="20"> + + + + + <div class="timeline-comment-header-text"> + <a href="#r27920127" class="comment-type-icon octicon octicon-mail-read" title="This comment left via email reply."></a> + + <strong> + <a href="https://github.com/millermedeiros" class="author">millermedeiros</a> + </strong> + + added a note + + <a href="#r27920127" class="timestamp"> + <time title="7 Apr 2015 23:03 GMT+2" datetime="2015-04-07T21:03:19Z" is="relative-time">8 days ago</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body email-format js-comment-body"> + <div class="email-fragment">Handlebars #each is smart enough. Shouldn't matter</div> + </div> + </div> + + </div> +</div> + + + </div> + + <div class="inline-comment-form-container"> + <button class="btn add-line-note-button js-toggle-inline-comment-form">Add a line note</button> + + <div class="inline-comment-form"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/pull/70/review_comment/create" class="js-inline-comment-form" data-remote="" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="qtzCLNkQKGT+m0A1MdVOrBWHJ+CuNfnb6UptBl9DtThr1Z06jejeTVMYFtk97iUz3UK9LMxor1I8kt/+R4xRAQ==" type="hidden"></div> + <input name="context" value="diff" type="hidden"> + <input name="commit_id" value="fb1b3aae56494020d88f2e0b24de531f8142295e" type="hidden"> + <input name="anchor" value="diff-24c657748df7dea47c7478f1583789c9" type="hidden"> + <input name="path" value="lib/request/address_book_query.js" type="hidden"> + <input name="position" value="6" type="hidden"> + <input name="line" value="" type="hidden"> + <input name="in_reply_to" value="27918728" type="hidden"> + + +<div class="js-previewable-comment-form js-suggester-container previewable-comment-form write-selected" data-preview-url="/preview?repository=20107688"> + <div class="comment-form-head tabnav"> + <div class="right"> + <a class="tabnav-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"> + <span class="octicon octicon-markdown"></span> + Markdown supported + </a> + +<a href="#fullscreen" class="enable-fullscreen js-enable-fullscreen tooltipped-n + tabnav-extra"> + <span class="octicon octicon-screen-full"></span> + Edit in fullscreen +</a> + + </div> + <nav class="tabnav-tabs"> + <a href="#" class="tabnav-tab write-tab js-write-tab selected">Write</a> + <a href="#" class="tabnav-tab preview-tab js-preview-tab">Preview</a> + </nav> + </div> + + <div class="comment-form-error js-comment-form-error" style="display:none"> There was an error creating your PullRequest. +</div> + <div class="write-content js-write-bucket js-uploadable-container js-upload-markdown-image upload-enabled is-default" data-upload-policy-url="/upload/policies/assets"> + + <textarea name="comment[body]" tabindex="1" id="new_inline_comment_diff-24c657748df7dea47c7478f1583789c9_6" placeholder="Leave a comment" aria-label="Comment body" class="input-contrast comment-form-textarea js-comment-field js-task-list-field js-quick-submit js-quote-selection-target js-session-resumable js-suggester-field" required=""></textarea><img style="cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0px ! important; margin: 0px ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important;" title="It's All Text!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAADdklEQVQ4y42UP4xVRRjFfzP37q7LxgBvV8FEjDEhxsJEo52VFhqpNBTIkqgFyZIIFhLtqdRCo3aiW5gYlMQoHYmxtsFCAyJ/tsDg7sLuu/fy3p25f969830W7/qWECCeZv5lzplv5pwxdPhjRSLnwsKunn1oz2573hhouAMKGO4LEfAOshSKspbBoHrh4qXLmqSJ29i8eTUGuLSmkc/lZV+Ew6mVfdkQrLFsm42Iok5BAHs7893HbaPkLlCPoB1pSDJ/0kZT/xRFfa6pq89igNzr3rblvbrS51eHzQNtgDiyTE0ZDAZF7l/eHUsqigIiMpUXzd7c17uq0tkgOhMDOK9HEV5qgrWuMBhtsSZgLKhKx6YdW9c3sPjaTk79lG31z2QTcWMgBPCFzKRpPp9lG3tnZnc8HQPMbrPvJH2hqi31KBBC6Db+d3TZqgTGbN0gL8ftl6dSUEVRDh+YZ/l0hqoQdMo0TRMVZbHn0cefPWsBNjchHxqyLJC7Ed4HfCnseWSapcUeCzsjvFd8qTy8EPPW/h0sLc4D4AvBF4GlxR6+EI4cWiCODUuHevhSqWtoW0Oa9Kdurq9FFmAjgf4tQzaoGDohL5W8EPa9+CBfn07Z/+oO8lLIC+H1V7bzw9khX32fjisshNxvVXviiw0ATny+gSvGe1wR8N6RpCkxQJJAXYIvAqGVzgCGIMrhAz1EFO8VjNK2yoXLFdLdsi8UdCzovUyM4wtBEeqyJEv7eO/wvhgLrq+ViLSENhCCTnweWcOnywkr10YTKw69ML8zZnZmnAnnQ/em4IqxwUQUG0E2aMhv9VlbvUI+6DM3l4wFs4EbP7gqop1hUD5Z7nPkYI+5bZY3j6+CEc78POTdt3vMTHeChU4M5EoFBGsNH76/izeOnmdzfYUsXSVIzI31CycNwIFj1z4ObftBWQ5QgWh6DmuiLUd2V3Z7Oia4Y05VCKFmVCa4wTWGyZ9UfoO6HmQqo5MxQOnzi8PB+mXvkidDqLHRLNZOd4E3d0m33iX93Zq2NPUAN7hK5a6DtkgYFSKjK8ba6zHA9b9/+7FtysfqKj/YjIqnmtYRGo+G6h7k94aqoKFGpUIlYKK41VD9ZZBvMHw3+ZCeeO6j7ah5JoSw38zsPqahIrTlVuj/t2BAZUSo+4TRjd+ldedsNP2tBvdrsvpL+y+TkkabJ8Dt4AAAAABJRU5ErkJggg=="> + + <p class="drag-and-drop"> + <span class="default"> + Attach images by dragging & dropping or + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <a class="manual-file-chooser-text" href="#">selecting them</a>. + </span> + <span class="loading"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> Uploading your images… + </span> + <span class="error bad-file"> + Unfortunately, we don't support that file type. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a PNG, GIF, or JPG. + </span> + </span> + <span class="error too-big"> + Yowza, that's a big file. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with an image file smaller than 10MB. + </span> + </span> + <span class="error empty"> + This file is empty. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a file that's not empty. + </span> + </span> + <span class="error bad-browser"> + This browser doesn't support image attachments. + <span class="drag-and-drop-error-info"> + We recommend updating to the latest + <a href="http://windows.microsoft.com/ie">Internet Explorer</a>, + <a href="https://chrome.google.com/">Google Chrome</a>, or + <a href="https://www.mozilla.org/firefox">Firefox</a>. + </span> + </span> + <span class="error failed-request"> + Something went really wrong, and we can't process that image. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again.</a> + </span> + </span> + </p> + + </div> + + <div class="preview-content"> + <div class="comment"> + <div class="comment-content"> + <div class="comment-body markdown-body js-preview-body"> + <p>Nothing to preview</p> + </div> + </div> +</div> + + </div> + + + <div class="suggester-container"> + <div class="suggester js-suggester js-navigation-container" data-url="/gaye/dav/suggestions/pull_request/32800343"> + </div> + </div> +</div> + + + <div class="form-actions"> + <div class="left"> + <span class="ajax-indicator"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgALMPANTX2amsrOHo6szMzYCAgGhoaJqbm97j5ebt7+nw88/R0tnd3ri8vo2Pj8rKyury9SH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMUU2RUQyNTU0RkUxMUUxOEQwQ0I1NTVEOTVGNzkzNyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMUU2RUQyNDU0RkUxMUUxOEQwQ0I1NTVEOTVGNzkzNyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA0ODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8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" width="16" height="16"> + </span> + </div> + + <button disabled class="btn btn-primary" type="submit" tabindex="1" data-disable-invalid="" data-disable-with=""> + Comment + </button> + + <button class="btn js-hide-inline-comment-form" type="button">Cancel</button> + </div> +</form> </div> +</div> + +</td> + +</tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L16" data-line-number="16" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="7" data-line="16" role="button" aria-label="Add line comment"></b>- }),</td> + </tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L17" data-line-number="17" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="8" data-line="17" role="button" aria-label="Add line comment"></b>- {</td> + </tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L18" data-line-number="18" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="9" data-line="18" role="button" aria-label="Add line comment"></b>- depth<span class="pl-k">:</span> options.depth</td> + </tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L19" data-line-number="19" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="10" data-line="19" role="button" aria-label="Add line comment"></b>- }</td> + </tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L20" data-line-number="20" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="11" data-line="20" role="button" aria-label="Add line comment"></b>- );</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-24c657748df7dea47c7478f1583789c9R13" data-line-number="13" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="12" data-line="13" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">return</span> collectionQuery({</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-24c657748df7dea47c7478f1583789c9R14" data-line-number="14" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="13" data-line="14" role="button" aria-label="Add line comment"></b>+ data<span class="pl-k">:</span> template.addressBookQuery(options),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-24c657748df7dea47c7478f1583789c9R15" data-line-number="15" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="14" data-line="15" role="button" aria-label="Add line comment"></b>+ depth<span class="pl-k">:</span> options.depth</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-24c657748df7dea47c7478f1583789c9R16" data-line-number="16" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="15" data-line="16" role="button" aria-label="Add line comment"></b>+ });</td> + </tr> + + <tr> + <td id="diff-24c657748df7dea47c7478f1583789c9L21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-24c657748df7dea47c7478f1583789c9R17" data-line-number="17" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/address_book_query.js" data-anchor="diff-24c657748df7dea47c7478f1583789c9" data-position="16" data-line="17" role="button" aria-label="Add line comment"></b> };</td> + </tr> + + + </tbody></table> + </div> + </div> + <a name="diff-e04b5b9a90c9f847a2707732179a7530"></a> + <div id="diff-3" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/request/basic.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/gaye/dav/blob/e7e196cf37a41885efdb36c35e494ed416db8d21/lib/request/basic.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="0 additions & 23 deletions">23 <span class="diffstat-bar"><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/request/basic.js"> + lib/request/basic.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr data-position="0"> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td id="diff-e04b5b9a90c9f847a2707732179a7530R-1" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td class="blob-code blob-code-hunk">@@ -1,23 +0,0 @@</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L1" data-line-number="1" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="1" data-line="1" role="button" aria-label="Add line comment"></b>-<span class="pl-s"><span class="pl-pds">'</span>use strict<span class="pl-pds">'</span></span>;</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L2" data-line-number="2" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="2" data-line="2" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L3" data-line-number="3" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="3" data-line="3" role="button" aria-label="Add line comment"></b>-<span class="pl-k">var</span> Request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./request<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L4" data-line-number="4" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="4" data-line="4" role="button" aria-label="Add line comment"></b>- util <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./util<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L5" data-line-number="5" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="5" data-line="5" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L6" data-line-number="6" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="6" data-line="6" role="button" aria-label="Add line comment"></b>-<span class="pl-c">/**</span></td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L7" data-line-number="7" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="7" data-line="7" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> * Options:</span></td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L8" data-line-number="8" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="8" data-line="8" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> *</span></td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L9" data-line-number="9" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="9" data-line="9" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> * (String) data - put request body.</span></td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L10" data-line-number="10" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="10" data-line="10" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> * (String) method - http method.</span></td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L11" data-line-number="11" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="11" data-line="11" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> * (String) etag - cached calendar object etag.</span></td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L12" data-line-number="12" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="12" data-line="12" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L13" data-line-number="13" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="13" data-line="13" role="button" aria-label="Add line comment"></b>-<span class="pl-c1">module</span>.<span class="pl-en">exports</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L14" data-line-number="14" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="14" data-line="14" role="button" aria-label="Add line comment"></b>- <span class="pl-k">function</span> <span class="pl-en">transformRequest</span>(<span class="pl-smi">xhr</span>) {</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L15" data-line-number="15" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="15" data-line="15" role="button" aria-label="Add line comment"></b>- util.setRequestHeaders(xhr, options);</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L16" data-line-number="16" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="16" data-line="16" role="button" aria-label="Add line comment"></b>- }</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L17" data-line-number="17" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="17" data-line="17" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L18" data-line-number="18" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="18" data-line="18" role="button" aria-label="Add line comment"></b>- <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-en">Request</span>({</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L19" data-line-number="19" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="19" data-line="19" role="button" aria-label="Add line comment"></b>- method<span class="pl-k">:</span> options.<span class="pl-c1">method</span>,</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L20" data-line-number="20" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="20" data-line="20" role="button" aria-label="Add line comment"></b>- requestData<span class="pl-k">:</span> options.<span class="pl-c1">data</span>,</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L21" data-line-number="21" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="21" data-line="21" role="button" aria-label="Add line comment"></b>- transformRequest<span class="pl-k">:</span> transformRequest</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L22" data-line-number="22" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="22" data-line="22" role="button" aria-label="Add line comment"></b>- });</td> + </tr> + + <tr> + <td id="diff-e04b5b9a90c9f847a2707732179a7530L23" data-line-number="23" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/basic.js" data-anchor="diff-e04b5b9a90c9f847a2707732179a7530" data-position="23" data-line="23" role="button" aria-label="Add line comment"></b>-};</td> + </tr> + + + </tbody></table> + </div> + </div> + <a name="diff-43152dfe3920d47b8718461b8c58770b"></a> + <div id="diff-4" class="file js-details-container + + + + has-inline-notes + show-inline-notes + "> + <div class="file-header" data-path="lib/request/calendar_query.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/request/calendar_query.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="4 additions & 10 deletions">14 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/request/calendar_query.js"> + lib/request/calendar_query.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-43152dfe3920d47b8718461b8c58770b" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/803cc2f91119c2d2fd3d2e591ec90895a3875382?diff=unified&left_hunk_size=14&mode=100644&next_line_num_left=12&next_line_num_right=12&path=lib%2Frequest%2Fcalendar_query.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=8" data-left-range="1-11" data-right-range="1-11"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -12,14 +12,8 @@ var collectionQuery = require('./collection_query'),</td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-43152dfe3920d47b8718461b8c58770bR12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="1" data-line="12" role="button" aria-label="Add line comment"></b> <span class="pl-c"> * (String) timezone - VTIMEZONE calendar object.</span></td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-43152dfe3920d47b8718461b8c58770bR13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="2" data-line="13" role="button" aria-label="Add line comment"></b> <span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-43152dfe3920d47b8718461b8c58770bR14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="3" data-line="14" role="button" aria-label="Add line comment"></b> <span class="pl-c1">module</span>.<span class="pl-en">exports</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL15" data-line-number="15" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="4" data-line="15" role="button" aria-label="Add line comment"></b>- <span class="pl-k">return</span> collectionQuery(</td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL16" data-line-number="16" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="5" data-line="16" role="button" aria-label="Add line comment"></b>- template.calendarQuery({</td> + </tr> + + <tr class="inline-comments js-inline-comments-container"> + +<td class="line-comments js-line-comments js-quote-selection-container" colspan="3"> + <div class="comment-holder js-comments-holder"> + <div id="r27918790" class="comment timeline-comment js-comment js-task-list-container commit-comment owner-comment" data-body-version="9647a7d7a4b0287e3514fb1cbdfcb395"> + + <div class="timeline-comment-header commit"> + <img alt="@gaye" class="avatar timeline-comment-header-avatar" data-user="535859" src="data:image/jpeg;base64,/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACgAKAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AIY25qWa8gs4TLPIsaDuxxUEVcf4hcaxrsVh5p+zxAEhCMljn+lZtLqUld2Rsaf41ae+VJYY1tnk2Bg3IB6E9q7qIhlBBBB6EVneEfhpol8qrcNdh8HJVwB09MVG9vD4U8S3Wim63242tFvI4yOgpypqS5olShKm7SN+MVLtpIQGAYdDU+2suRkM4aRvKt5JMZ2qTXltq92Z57kO4mD7m9vT+deuxpmue1zRvsn2m+tlAjmTEuOobP3vp2rdjha+ps6HF4iHh/TtXfUpVhmcnEQYH72MHb34B5I6+xpvxG0G9tpLfWJ2lmNyMAsORjYBn8zya3/h2HvvDbWTFWx1EgY45zxz1qx420TUdZ1fSbEyummW1uWlfd/rHLYxj1wOuO5pps6KyjGF2S6Gs7aRaG5XbKYxuFafl0+2t1ihjjXoihR+FWPLp8p57qpHCBkhjMkjKiL1ZjgCuX13xarxPYaWhlkkBRpSOMd8A9eK3Na/5At1/u15xZf8hSL6n+VdFGlGdrnLXxE4Xt0Vz0/4e318lrGWWRLcHb0xzXpOoX8N2kUESqRGcl/w/wD11wHgz/kAj/frqrf77V04ShFx9o90eJxNmVek44aGkZK777vT0LIYIwU9+BUvP92q0v8Ar4v98VcredGne9jwaGZ4tRtzvT0f5o//2Q==" width="20" height="20"> + + + <span class="timeline-comment-label">Owner</span> + + + <div class="timeline-comment-header-text"> + + <strong> + <a href="https://github.com/gaye" class="author">gaye</a> + </strong> + + added a note + + <a href="#r27918790" class="timestamp"> + <time title="7 Apr 2015 22:48 GMT+2" datetime="2015-04-07T20:48:58Z" is="relative-time">8 days ago</time> + </a> + </div> +</div> + + + <div class="comment-content"> + + <div class="edit-comment-hide"> + <div class="comment-body markdown-body markdown-format js-comment-body"> + <p>Same thing here</p> + </div> + </div> + + </div> +</div> + + + </div> + + <div class="inline-comment-form-container"> + <button class="btn add-line-note-button js-toggle-inline-comment-form">Add a line note</button> + + <div class="inline-comment-form"> + <form accept-charset="UTF-8" action="https://github.com/gaye/dav/pull/70/review_comment/create" class="js-inline-comment-form" data-remote="" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" value="✓" type="hidden"><input name="authenticity_token" value="aip9yf4DMYo4/2+s0W1dpZ6tYqh8hUWQnZ99NwaVQhNeMUMDYZyTVkNW/3rZATeQT52hwrE1uZkiGFf7Pnl+5w==" type="hidden"></div> + <input name="context" value="diff" type="hidden"> + <input name="commit_id" value="fb1b3aae56494020d88f2e0b24de531f8142295e" type="hidden"> + <input name="anchor" value="diff-43152dfe3920d47b8718461b8c58770b" type="hidden"> + <input name="path" value="lib/request/calendar_query.js" type="hidden"> + <input name="position" value="5" type="hidden"> + <input name="line" value="" type="hidden"> + <input name="in_reply_to" value="27918790" type="hidden"> + + +<div class="js-previewable-comment-form js-suggester-container previewable-comment-form write-selected" data-preview-url="/preview?repository=20107688"> + <div class="comment-form-head tabnav"> + <div class="right"> + <a class="tabnav-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"> + <span class="octicon octicon-markdown"></span> + Markdown supported + </a> + +<a href="#fullscreen" class="enable-fullscreen js-enable-fullscreen tooltipped-n + tabnav-extra"> + <span class="octicon octicon-screen-full"></span> + Edit in fullscreen +</a> + + </div> + <nav class="tabnav-tabs"> + <a href="#" class="tabnav-tab write-tab js-write-tab selected">Write</a> + <a href="#" class="tabnav-tab preview-tab js-preview-tab">Preview</a> + </nav> + </div> + + <div class="comment-form-error js-comment-form-error" style="display:none"> There was an error creating your PullRequest. +</div> + <div class="write-content js-write-bucket js-uploadable-container js-upload-markdown-image upload-enabled is-default" data-upload-policy-url="/upload/policies/assets"> + + <textarea name="comment[body]" tabindex="1" id="new_inline_comment_diff-43152dfe3920d47b8718461b8c58770b_5" placeholder="Leave a comment" aria-label="Comment body" class="input-contrast comment-form-textarea js-comment-field js-task-list-field js-quick-submit js-quote-selection-target js-session-resumable js-suggester-field" required=""></textarea><img style="cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0px ! important; margin: 0px ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important;" title="It's All Text!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAADdklEQVQ4y42UP4xVRRjFfzP37q7LxgBvV8FEjDEhxsJEo52VFhqpNBTIkqgFyZIIFhLtqdRCo3aiW5gYlMQoHYmxtsFCAyJ/tsDg7sLuu/fy3p25f969830W7/qWECCeZv5lzplv5pwxdPhjRSLnwsKunn1oz2573hhouAMKGO4LEfAOshSKspbBoHrh4qXLmqSJ29i8eTUGuLSmkc/lZV+Ew6mVfdkQrLFsm42Iok5BAHs7893HbaPkLlCPoB1pSDJ/0kZT/xRFfa6pq89igNzr3rblvbrS51eHzQNtgDiyTE0ZDAZF7l/eHUsqigIiMpUXzd7c17uq0tkgOhMDOK9HEV5qgrWuMBhtsSZgLKhKx6YdW9c3sPjaTk79lG31z2QTcWMgBPCFzKRpPp9lG3tnZnc8HQPMbrPvJH2hqi31KBBC6Db+d3TZqgTGbN0gL8ftl6dSUEVRDh+YZ/l0hqoQdMo0TRMVZbHn0cefPWsBNjchHxqyLJC7Ed4HfCnseWSapcUeCzsjvFd8qTy8EPPW/h0sLc4D4AvBF4GlxR6+EI4cWiCODUuHevhSqWtoW0Oa9Kdurq9FFmAjgf4tQzaoGDohL5W8EPa9+CBfn07Z/+oO8lLIC+H1V7bzw9khX32fjisshNxvVXviiw0ATny+gSvGe1wR8N6RpCkxQJJAXYIvAqGVzgCGIMrhAz1EFO8VjNK2yoXLFdLdsi8UdCzovUyM4wtBEeqyJEv7eO/wvhgLrq+ViLSENhCCTnweWcOnywkr10YTKw69ML8zZnZmnAnnQ/em4IqxwUQUG0E2aMhv9VlbvUI+6DM3l4wFs4EbP7gqop1hUD5Z7nPkYI+5bZY3j6+CEc78POTdt3vMTHeChU4M5EoFBGsNH76/izeOnmdzfYUsXSVIzI31CycNwIFj1z4ObftBWQ5QgWh6DmuiLUd2V3Z7Oia4Y05VCKFmVCa4wTWGyZ9UfoO6HmQqo5MxQOnzi8PB+mXvkidDqLHRLNZOd4E3d0m33iX93Zq2NPUAN7hK5a6DtkgYFSKjK8ba6zHA9b9/+7FtysfqKj/YjIqnmtYRGo+G6h7k94aqoKFGpUIlYKK41VD9ZZBvMHw3+ZCeeO6j7ah5JoSw38zsPqahIrTlVuj/t2BAZUSo+4TRjd+ldedsNP2tBvdrsvpL+y+TkkabJ8Dt4AAAAABJRU5ErkJggg=="> + + <p class="drag-and-drop"> + <span class="default"> + Attach images by dragging & dropping or + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <a class="manual-file-chooser-text" href="#">selecting them</a>. + </span> + <span class="loading"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgAKIHAIKCgrOzs/j4+OLi4pmZmczMzMrKyv///yH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxQzYwRTc2RDU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxQzYwRTc2QzU0RTIxMUUxOTgyOUQyOEIyQjYxRkU0MCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAzODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEBQoABwAsAAAAACAAIAAAA/94uiwThAAQwxAs6yXc/CBwYZsmFEQgVEZRGBDhFFfJxTJpnkarm5HUr+ToFYaKVWRg2wxex4wgdhnUbI4R9IciFA4CY9VKnvUwgx4zWVGke/C43LBOR8EQUnjOPydpGA5gHH19OoEOASp/hXx3PE8BBgtvjXNrBy9pAV9ulnyYdoqhn5eULaOnpXGkBameq3Ctr2CxcDp2MJ0KL7G7B3aukxy9n3e8dA+LHJWFV4xVgw56VsUtVkiIYE+Bxzxwxw2A0G5R33G/p8dvTOeOGuziPtsufVJb99cM9pT4Jr1X+BWZR6TXkT1zOhhEIuXJBWvoZjxrAqZDow4MKXZ4YhAFUEYFCQAAIfkEBQoABwAsAAAAAB8AFgAAA2d4uqwWgRBomr1M6k3OwNcQVIFSmEoZABXoQKV7AHQHwqec0sBnwbqGgWd5xIKMQS0J8SEZBVrrAMk9GyvA4nHFAAgfQTdosI5D5TOoYHCqG+w3Ji630OvQKd7U3i8GaX4OZntiggcJACH5BAUKAAcALAIAAAAeAB4AAAOEeLorU8UYOAS7mAnJuxFWlhXDQQ0oCilEIS7R9C5EHbxxOTM1ETIR1+5S6BEnvyGPcFtIlK+aMKKDZmqKhzUaSG5f1a+IABCKr4DmGRMAENYZAwAAxxTmdSI+79zzD21vfwdkanxkZn9heQGJeQUBhoyScAORBoORlGeQkX+amH8GmwcJACH5BAUKAAcALBYAAgAKAB0AAANJaDHXfiGa50oMtI2bm+zb0llYF0xd6gQEk7EoZRAlVRBEiut5dvcymokQe7BcKgpARAkAAL5nsfEENgpPqLGKPGStDQJgqlElAAAh+QQFCgAHACwKAAIAFgAeAAADX3i6rFMtSlWMgTOfYbGelfc1QjhO1ilxokoNbnwG8mIErVoERr0FtNoA6BsGZUbfrle75VRHn49wEEypNQLh+dFGTwMtNqatkr0SAoAABKqpge0KQK/bB9bMUEv3wjQJACH5BAUKAAcALAEACgAfABYAAANieLrc/kfASVUxNbs7tD+DUXyeSGrmWaXqxLZOOMIPR9fY/UhDAOiHwOwAAARuhcBRYSgOT71AZ0EoTk/KHKMI0HqUy8aAG64klZRqMQP2QppLQjlAYEo/HYJ+z78ZlHpZGQkAIfkEBQoABwAsAAAKAB4AFgAAA2N4c9z+MBZAor0tUMwhAUEnMgBgjGJZoJ3KcuX5Xl84W1p1S9seLb6I4KALFoCE4m5gWB0KyaBBxghEZ4JC85EkOFHab0PQRTG3uDJHi75Aq6Hp9BAIDcScYX3Pt93YdVN4DwkAIfkEBQoABwAsAAABABYAHwAAA2h4ujv8kBkQol0E6BtHplykAUUIfY4paaXKaJXbBIBsX158G4RuBwTDTUEgtG7FIZGgPBSPv6CS55PlmliFoSoLBKBWb2rnbXoD458X7NqWh4OAsGAQLursh6DO7xsEIQIDBXQGhAOACQA7" width="16" height="16"> Uploading your images… + </span> + <span class="error bad-file"> + Unfortunately, we don't support that file type. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a PNG, GIF, or JPG. + </span> + </span> + <span class="error too-big"> + Yowza, that's a big file. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with an image file smaller than 10MB. + </span> + </span> + <span class="error empty"> + This file is empty. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again</a> with a file that's not empty. + </span> + </span> + <span class="error bad-browser"> + This browser doesn't support image attachments. + <span class="drag-and-drop-error-info"> + We recommend updating to the latest + <a href="http://windows.microsoft.com/ie">Internet Explorer</a>, + <a href="https://chrome.google.com/">Google Chrome</a>, or + <a href="https://www.mozilla.org/firefox">Firefox</a>. + </span> + </span> + <span class="error failed-request"> + Something went really wrong, and we can't process that image. + <input multiple class="manual-file-chooser js-manual-file-chooser" type="file"> + <span class="drag-and-drop-error-info"> + <a class="manual-file-chooser-text" href="#">Try again.</a> + </span> + </span> + </p> + + </div> + + <div class="preview-content"> + <div class="comment"> + <div class="comment-content"> + <div class="comment-body markdown-body js-preview-body"> + <p>Nothing to preview</p> + </div> + </div> +</div> + + </div> + + + <div class="suggester-container"> + <div class="suggester js-suggester js-navigation-container" data-url="/gaye/dav/suggestions/pull_request/32800343"> + </div> + </div> +</div> + + + <div class="form-actions"> + <div class="left"> + <span class="ajax-indicator"> + <img alt="" src="data:image/gif;base64,R0lGODlhIAAgALMPANTX2amsrOHo6szMzYCAgGhoaJqbm97j5ebt7+nw88/R0tnd3ri8vo2Pj8rKyury9SH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjk1OUM5NDdDMUYyMyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMUU2RUQyNTU0RkUxMUUxOEQwQ0I1NTVEOTVGNzkzNyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMUU2RUQyNDU0RkUxMUUxOEQwQ0I1NTVEOTVGNzkzNyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA0ODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE4NzFGOTU5Qzk0N0MxRjIzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8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" width="16" height="16"> + </span> + </div> + + <button disabled class="btn btn-primary" type="submit" tabindex="1" data-disable-invalid="" data-disable-with=""> + Comment + </button> + + <button class="btn js-hide-inline-comment-form" type="button">Cancel</button> + </div> +</form> </div> +</div> + +</td> + +</tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL17" data-line-number="17" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="6" data-line="17" role="button" aria-label="Add line comment"></b>- props<span class="pl-k">:</span> options.props <span class="pl-k">||</span> [],</td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL18" data-line-number="18" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="7" data-line="18" role="button" aria-label="Add line comment"></b>- filters<span class="pl-k">:</span> options.filters <span class="pl-k">||</span> [],</td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL19" data-line-number="19" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="8" data-line="19" role="button" aria-label="Add line comment"></b>- timezone<span class="pl-k">:</span> options.timezone</td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL20" data-line-number="20" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="9" data-line="20" role="button" aria-label="Add line comment"></b>- }),</td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL21" data-line-number="21" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="10" data-line="21" role="button" aria-label="Add line comment"></b>- {</td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL22" data-line-number="22" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="11" data-line="22" role="button" aria-label="Add line comment"></b>- depth<span class="pl-k">:</span> options.depth</td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL23" data-line-number="23" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="12" data-line="23" role="button" aria-label="Add line comment"></b>- }</td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL24" data-line-number="24" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="13" data-line="24" role="button" aria-label="Add line comment"></b>- );</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-43152dfe3920d47b8718461b8c58770bR15" data-line-number="15" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="14" data-line="15" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">return</span> collectionQuery({</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-43152dfe3920d47b8718461b8c58770bR16" data-line-number="16" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="15" data-line="16" role="button" aria-label="Add line comment"></b>+ data<span class="pl-k">:</span> template.calendarQuery(options),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-43152dfe3920d47b8718461b8c58770bR17" data-line-number="17" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="16" data-line="17" role="button" aria-label="Add line comment"></b>+ depth<span class="pl-k">:</span> options.depth</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-43152dfe3920d47b8718461b8c58770bR18" data-line-number="18" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="17" data-line="18" role="button" aria-label="Add line comment"></b>+ });</td> + </tr> + + <tr> + <td id="diff-43152dfe3920d47b8718461b8c58770bL25" data-line-number="25" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-43152dfe3920d47b8718461b8c58770bR19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/calendar_query.js" data-anchor="diff-43152dfe3920d47b8718461b8c58770b" data-position="18" data-line="19" role="button" aria-label="Add line comment"></b> };</td> + </tr> + + + </tbody></table> + </div> + </div> + <a name="diff-c4e95645f9f70a1e1508af7719a6a2ae"></a> + <div id="diff-5" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/request/collection_query.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/request/collection_query.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="13 additions & 12 deletions">25 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/request/collection_query.js"> + lib/request/collection_query.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr data-position="0"> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td class="blob-code blob-code-hunk">@@ -1,14 +1,15 @@</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL1" data-line-number="1" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR1" data-line-number="1" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="1" data-line="1" role="button" aria-label="Add line comment"></b> <span class="pl-s"><span class="pl-pds">'</span>use strict<span class="pl-pds">'</span></span>;</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL2" data-line-number="2" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR2" data-line-number="2" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="2" data-line="2" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL3" data-line-number="3" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="3" data-line="3" role="button" aria-label="Add line comment"></b>-<span class="pl-k">var</span> Request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./request<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL4" data-line-number="4" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="4" data-line="4" role="button" aria-label="Add line comment"></b>- parser <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../parser<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR3" data-line-number="3" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="5" data-line="3" role="button" aria-label="Add line comment"></b>+<span class="pl-k">var</span> parser <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../parser<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR4" data-line-number="4" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="6" data-line="4" role="button" aria-label="Add line comment"></b> util <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./util<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="7" data-line="5" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL7" data-line-number="7" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="8" data-line="7" role="button" aria-label="Add line comment"></b>-<span class="pl-c1">module</span>.<span class="pl-en">exports</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">requestData</span>, <span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL8" data-line-number="8" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="9" data-line="8" role="button" aria-label="Add line comment"></b>- <span class="pl-k">function</span> <span class="pl-en">transformRequest</span>(<span class="pl-smi">xhr</span>) {</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL9" data-line-number="9" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="10" data-line="9" role="button" aria-label="Add line comment"></b>- util.setRequestHeaders(xhr, options);</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL10" data-line-number="10" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="11" data-line="10" role="button" aria-label="Add line comment"></b>- }</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL11" data-line-number="11" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="12" data-line="11" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR6" data-line-number="6" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="13" data-line="6" role="button" aria-label="Add line comment"></b>+<span class="pl-c">/**</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR7" data-line-number="7" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="14" data-line="7" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> * Options:</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR8" data-line-number="8" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="15" data-line="8" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> *</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR9" data-line-number="9" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="16" data-line="9" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> * (String) depth - optional value for Depth header.</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR10" data-line-number="10" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="17" data-line="10" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> * (String) data - request data to be sent.</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR11" data-line-number="11" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="18" data-line="11" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> */</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR12" data-line-number="12" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="19" data-line="12" role="button" aria-label="Add line comment"></b>+<span class="pl-c1">module</span>.<span class="pl-en">exports</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="20" data-line="13" role="button" aria-label="Add line comment"></b> <span class="pl-k">function</span> <span class="pl-en">transformResponse</span>(<span class="pl-smi">xhr</span>) {</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="21" data-line="14" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> multistatus <span class="pl-k">=</span> parser.multistatus(xhr.<span class="pl-c1">responseText</span>);</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR15" data-line-number="15" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="22" data-line="15" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> multistatus.response.map(<span class="pl-k">function</span>(<span class="pl-smi">response</span>) {</td> + </tr> + + <tr class="js-expandable-line" data-position="23"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-c4e95645f9f70a1e1508af7719a6a2ae" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/11cb2bf1fea8543fce7db9cbc32eb1a19a4834bc?diff=unified&left_hunk_size=10&mode=100644&next_line_num_left=16&next_line_num_right=17&path=lib%2Frequest%2Fcollection_query.js&prev_line_num_left=14&prev_line_num_right=15&right_hunk_size=10" data-left-range="15-15" data-right-range="16-16"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -16,10 +17,10 @@ module.exports = function(requestData, options) {</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL16" data-line-number="16" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR17" data-line-number="17" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="24" data-line="17" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL17" data-line-number="17" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR18" data-line-number="18" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="25" data-line="18" role="button" aria-label="Add line comment"></b> }</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL18" data-line-number="18" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="26" data-line="19" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL19" data-line-number="19" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="27" data-line="19" role="button" aria-label="Add line comment"></b>- <span class="pl-k">return</span> <span class="pl-k x x-first">new</span><span class="x"> </span><span class="pl-en x">Request</span><span class="x x-last">(</span>{</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR20" data-line-number="20" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="28" data-line="20" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">return</span> {</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="29" data-line="21" role="button" aria-label="Add line comment"></b> method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>REPORT<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL21" data-line-number="21" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="30" data-line="21" role="button" aria-label="Add line comment"></b>- <span class="x x-first">requestData</span><span class="pl-k x">:</span><span class="x x-last"> requestData</span>,</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL22" data-line-number="22" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="31" data-line="22" role="button" aria-label="Add line comment"></b>- <span class="x x-first">transformRequest</span><span class="pl-k x">:</span><span class="x x-last"> transformRequest</span>,</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL23" data-line-number="23" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="32" data-line="23" role="button" aria-label="Add line comment"></b>- <span class="x x-first">transformResponse</span><span class="pl-k x">:</span><span class="x x-last"> transformResponse</span></td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL24" data-line-number="24" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="33" data-line="24" role="button" aria-label="Add line comment"></b>- }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR22" data-line-number="22" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="34" data-line="22" role="button" aria-label="Add line comment"></b>+ <span class="x x-first">data</span><span class="pl-k x">:</span><span class="x"> options.</span><span class="pl-c1 x x-last">data</span>,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR23" data-line-number="23" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="35" data-line="23" role="button" aria-label="Add line comment"></b>+ <span class="x x-first">transformResponse</span><span class="pl-k x">:</span><span class="x x-last"> transformResponse</span>,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR24" data-line-number="24" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="36" data-line="24" role="button" aria-label="Add line comment"></b>+ <span class="x x-first">depth</span><span class="pl-k x">:</span><span class="x x-last"> options.depth</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR25" data-line-number="25" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="37" data-line="25" role="button" aria-label="Add line comment"></b>+ };</td> + </tr> + + <tr> + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeL25" data-line-number="25" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-c4e95645f9f70a1e1508af7719a6a2aeR26" data-line-number="26" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/collection_query.js" data-anchor="diff-c4e95645f9f70a1e1508af7719a6a2ae" data-position="38" data-line="26" role="button" aria-label="Add line comment"></b> };</td> + </tr> + + + </tbody></table> + </div> + </div> + <a name="diff-1cf015c4a26a2083cd3831ffc49b35a0"></a> + <div id="diff-6" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/request/index.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/request/index.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="9 additions & 2 deletions">11 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span></span></span> + + <span class="js-selectable-text" title="lib/request/index.js"> + lib/request/index.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr data-position="0"> + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0L0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td class="blob-code blob-code-hunk">@@ -1,6 +1,13 @@</td> + </tr> + + <tr> + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0L1" data-line-number="1" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="1" data-line="1" role="button" aria-label="Add line comment"></b>-<span class="pl-c1">exports</span>.Request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./request<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R1" data-line-number="1" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="2" data-line="1" role="button" aria-label="Add line comment"></b>+<span class="pl-c">/**</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R2" data-line-number="2" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="3" data-line="2" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> * Request Object</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R3" data-line-number="3" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="4" data-line="3" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> * @typedef {Object} Request</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R4" data-line-number="4" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="5" data-line="4" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> * @property {string} method - Method of the request (eg. PROPFIND, REPORT, GET)</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R5" data-line-number="5" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="6" data-line="5" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> * @property {string} data - Data to be sent with the Request.</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R6" data-line-number="6" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="7" data-line="6" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> * @property {function(XMLHttprequest)} transformResponse - Callback that maps</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R7" data-line-number="7" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="8" data-line="7" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> * the request result.</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R8" data-line-number="8" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="9" data-line="8" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> */</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R9" data-line-number="9" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="10" data-line="9" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0L2" data-line-number="2" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="11" data-line="10" role="button" aria-label="Add line comment"></b> <span class="pl-c1">exports</span>.addressBookQuery <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./address_book_query<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0L3" data-line-number="3" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="12" data-line="3" role="button" aria-label="Add line comment"></b>-<span class="pl-c1">exports</span>.basic <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./basic<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0L4" data-line-number="4" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="13" data-line="11" role="button" aria-label="Add line comment"></b> <span class="pl-c1">exports</span>.calendarQuery <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./calendar_query<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0L5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="14" data-line="12" role="button" aria-label="Add line comment"></b> <span class="pl-c1">exports</span>.propfind <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./propfind<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0L6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1cf015c4a26a2083cd3831ffc49b35a0R13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/index.js" data-anchor="diff-1cf015c4a26a2083cd3831ffc49b35a0" data-position="15" data-line="13" role="button" aria-label="Add line comment"></b> <span class="pl-c1">exports</span>.syncCollection <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./sync_collection<span class="pl-pds">'</span></span>);</td> + </tr> + + + </tbody></table> + </div> + </div> + <a name="diff-ba7b41d2658a46770b40d8d8eff76cd7"></a> + <div id="diff-7" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/request/propfind.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/request/propfind.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="6 additions & 13 deletions">19 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/request/propfind.js"> + lib/request/propfind.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr data-position="0"> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td class="blob-code blob-code-hunk">@@ -1,7 +1,6 @@</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L1" data-line-number="1" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R1" data-line-number="1" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="1" data-line="1" role="button" aria-label="Add line comment"></b> <span class="pl-s"><span class="pl-pds">'</span>use strict<span class="pl-pds">'</span></span>;</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L2" data-line-number="2" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R2" data-line-number="2" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="2" data-line="2" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L3" data-line-number="3" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="3" data-line="3" role="button" aria-label="Add line comment"></b>-<span class="pl-k">var</span> Request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./request<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L4" data-line-number="4" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="4" data-line="4" role="button" aria-label="Add line comment"></b>- parser <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../parser<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R3" data-line-number="3" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="5" data-line="3" role="button" aria-label="Add line comment"></b>+<span class="pl-k">var</span> parser <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../parser<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R4" data-line-number="4" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="6" data-line="4" role="button" aria-label="Add line comment"></b> template <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../template<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="7" data-line="5" role="button" aria-label="Add line comment"></b> util <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./util<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="8" data-line="6" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr class="js-expandable-line" data-position="9"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-ba7b41d2658a46770b40d8d8eff76cd7" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/2bae20ec3f846ab92ba9ab0964a7f71c6d52a1d0?diff=unified&left_hunk_size=12&mode=100644&next_line_num_left=12&next_line_num_right=11&path=lib%2Frequest%2Fpropfind.js&prev_line_num_left=7&prev_line_num_right=6&right_hunk_size=6" data-left-range="8-11" data-right-range="7-10"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -12,12 +11,6 @@ var Request = require('./request'),</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="10" data-line="11" role="button" aria-label="Add line comment"></b> <span class="pl-c"> * (Array.<Object>) props - list of props to request.</span></td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="11" data-line="12" role="button" aria-label="Add line comment"></b> <span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="12" data-line="13" role="button" aria-label="Add line comment"></b> <span class="pl-c1">module</span>.<span class="pl-en">exports</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L15" data-line-number="15" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="13" data-line="15" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> requestData <span class="pl-k">=</span> template.propfind({ props<span class="pl-k">:</span> options.props });</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L16" data-line-number="16" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="14" data-line="16" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L17" data-line-number="17" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="15" data-line="17" role="button" aria-label="Add line comment"></b>- <span class="pl-k">function</span> <span class="pl-en">transformRequest</span>(<span class="pl-smi">xhr</span>) {</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L18" data-line-number="18" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="16" data-line="18" role="button" aria-label="Add line comment"></b>- util.setRequestHeaders(xhr, options);</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L19" data-line-number="19" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="17" data-line="19" role="button" aria-label="Add line comment"></b>- }</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L20" data-line-number="20" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="18" data-line="20" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="19" data-line="14" role="button" aria-label="Add line comment"></b> <span class="pl-k">function</span> <span class="pl-en">transformResponse</span>(<span class="pl-smi">xhr</span>) {</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L22" data-line-number="22" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R15" data-line-number="15" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="20" data-line="15" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> multistatus <span class="pl-k">=</span> parser.multistatus(xhr.<span class="pl-c1">responseText</span>);</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L23" data-line-number="23" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R16" data-line-number="16" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="21" data-line="16" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> responses <span class="pl-k">=</span> multistatus.response.map(<span class="pl-k">function</span>(<span class="pl-smi">response</span>) {</td> + </tr> + + <tr class="js-expandable-line" data-position="22"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-ba7b41d2658a46770b40d8d8eff76cd7" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/2bae20ec3f846ab92ba9ab0964a7f71c6d52a1d0?diff=unified&left_hunk_size=10&mode=100644&next_line_num_left=45&next_line_num_right=38&path=lib%2Frequest%2Fpropfind.js&prev_line_num_left=23&prev_line_num_right=16&right_hunk_size=10" data-left-range="24-44" data-right-range="17-37"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -45,10 +38,10 @@ module.exports = function(options) {</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L45" data-line-number="45" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R38" data-line-number="38" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="23" data-line="38" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> { props<span class="pl-k">:</span> merged, hrefs<span class="pl-k">:</span> hrefs };</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L46" data-line-number="46" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R39" data-line-number="39" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="24" data-line="39" role="button" aria-label="Add line comment"></b> }</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L47" data-line-number="47" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R40" data-line-number="40" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="25" data-line="40" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L48" data-line-number="48" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="26" data-line="48" role="button" aria-label="Add line comment"></b>- <span class="pl-k">return</span> <span class="pl-k x x-first">new</span><span class="x"> </span><span class="pl-en x">Request</span><span class="x x-last">(</span>{</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R41" data-line-number="41" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="27" data-line="41" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">return</span> {</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L49" data-line-number="49" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R42" data-line-number="42" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="28" data-line="42" role="button" aria-label="Add line comment"></b> method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PROPFIND<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L50" data-line-number="50" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="29" data-line="50" role="button" aria-label="Add line comment"></b>- <span class="x x-first">requestData</span><span class="pl-k x">:</span><span class="x x-last"> requestData</span>,</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L51" data-line-number="51" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="30" data-line="51" role="button" aria-label="Add line comment"></b>- <span class="x x-first">transformRequest</span><span class="pl-k x">:</span><span class="x x-last"> transformRequest</span>,</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L52" data-line-number="52" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="31" data-line="52" role="button" aria-label="Add line comment"></b>- <span class="x x-first">transformResponse</span><span class="pl-k x">:</span><span class="x x-last"> transformResponse</span></td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L53" data-line-number="53" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="32" data-line="53" role="button" aria-label="Add line comment"></b>- }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R43" data-line-number="43" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="33" data-line="43" role="button" aria-label="Add line comment"></b>+ <span class="x x-first">data</span><span class="pl-k x">:</span><span class="x x-last"> template.propfind(options)</span>,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R44" data-line-number="44" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="34" data-line="44" role="button" aria-label="Add line comment"></b>+ <span class="x x-first">transformResponse</span><span class="pl-k x">:</span><span class="x x-last"> transformResponse</span>,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R45" data-line-number="45" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="35" data-line="45" role="button" aria-label="Add line comment"></b>+ <span class="x x-first">depth</span><span class="pl-k x">:</span><span class="x x-last"> options.depth</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R46" data-line-number="46" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="36" data-line="46" role="button" aria-label="Add line comment"></b>+ };</td> + </tr> + + <tr> + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7L54" data-line-number="54" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ba7b41d2658a46770b40d8d8eff76cd7R47" data-line-number="47" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/propfind.js" data-anchor="diff-ba7b41d2658a46770b40d8d8eff76cd7" data-position="37" data-line="47" role="button" aria-label="Add line comment"></b> };</td> + </tr> + + + </tbody></table> + </div> + </div> + <a name="diff-6d2d982bba05bb46522a72d68610305a"></a> + <div id="diff-8" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/request/request.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/gaye/dav/blob/e7e196cf37a41885efdb36c35e494ed416db8d21/lib/request/request.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="0 additions & 35 deletions">35 <span class="diffstat-bar"><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/request/request.js"> + lib/request/request.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr data-position="0"> + <td id="diff-6d2d982bba05bb46522a72d68610305aL0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td id="diff-6d2d982bba05bb46522a72d68610305aR-1" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td class="blob-code blob-code-hunk">@@ -1,35 +0,0 @@</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL1" data-line-number="1" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="1" data-line="1" role="button" aria-label="Add line comment"></b>-<span class="pl-s"><span class="pl-pds">'</span>use strict<span class="pl-pds">'</span></span>;</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL2" data-line-number="2" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="2" data-line="2" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL3" data-line-number="3" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="3" data-line="3" role="button" aria-label="Add line comment"></b>-<span class="pl-k">function</span> <span class="pl-en">Request</span>(<span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL4" data-line-number="4" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="4" data-line="4" role="button" aria-label="Add line comment"></b>- <span class="pl-k">for</span> (<span class="pl-k">var</span> key <span class="pl-k">in</span> options) {</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL5" data-line-number="5" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="5" data-line="5" role="button" aria-label="Add line comment"></b>- <span class="pl-v">this</span>[key] <span class="pl-k">=</span> options[key];</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL6" data-line-number="6" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="6" data-line="6" role="button" aria-label="Add line comment"></b>- }</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL7" data-line-number="7" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="7" data-line="7" role="button" aria-label="Add line comment"></b>-}</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL8" data-line-number="8" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="8" data-line="8" role="button" aria-label="Add line comment"></b>-<span class="pl-c1">module</span>.exports <span class="pl-k">=</span> Request;</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL9" data-line-number="9" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="9" data-line="9" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL10" data-line-number="10" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="10" data-line="10" role="button" aria-label="Add line comment"></b>-<span class="pl-c1">Request</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> {</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL11" data-line-number="11" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="11" data-line="11" role="button" aria-label="Add line comment"></b>- <span class="pl-c">/**</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL12" data-line-number="12" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="12" data-line="12" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> * @type {String}</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL13" data-line-number="13" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="13" data-line="13" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL14" data-line-number="14" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="14" data-line="14" role="button" aria-label="Add line comment"></b>- method<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL15" data-line-number="15" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="15" data-line="15" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL16" data-line-number="16" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="16" data-line="16" role="button" aria-label="Add line comment"></b>- <span class="pl-c">/**</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL17" data-line-number="17" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="17" data-line="17" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> * @type {String}</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL18" data-line-number="18" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="18" data-line="18" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL19" data-line-number="19" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="19" data-line="19" role="button" aria-label="Add line comment"></b>- requestData<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL20" data-line-number="20" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="20" data-line="20" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL21" data-line-number="21" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="21" data-line="21" role="button" aria-label="Add line comment"></b>- <span class="pl-c">/**</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL22" data-line-number="22" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="22" data-line="22" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> * @type {Function}</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL23" data-line-number="23" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="23" data-line="23" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL24" data-line-number="24" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="24" data-line="24" role="button" aria-label="Add line comment"></b>- transformRequest<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL25" data-line-number="25" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="25" data-line="25" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL26" data-line-number="26" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="26" data-line="26" role="button" aria-label="Add line comment"></b>- <span class="pl-c">/**</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL27" data-line-number="27" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="27" data-line="27" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> * @type {Function}</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL28" data-line-number="28" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="28" data-line="28" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL29" data-line-number="29" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="29" data-line="29" role="button" aria-label="Add line comment"></b>- transformResponse<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL30" data-line-number="30" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="30" data-line="30" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL31" data-line-number="31" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="31" data-line="31" role="button" aria-label="Add line comment"></b>- <span class="pl-c">/**</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL32" data-line-number="32" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="32" data-line="32" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> * @type {Function}</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL33" data-line-number="33" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="33" data-line="33" role="button" aria-label="Add line comment"></b>-<span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL34" data-line-number="34" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="34" data-line="34" role="button" aria-label="Add line comment"></b>- onerror<span class="pl-k">:</span> <span class="pl-c1">null</span></td> + </tr> + + <tr> + <td id="diff-6d2d982bba05bb46522a72d68610305aL35" data-line-number="35" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/request.js" data-anchor="diff-6d2d982bba05bb46522a72d68610305a" data-position="35" data-line="35" role="button" aria-label="Add line comment"></b>-};</td> + </tr> + + + </tbody></table> + </div> + </div> + <a name="diff-1be4f9a2763092c10c341c643ea95ae3"></a> + <div id="diff-9" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/request/sync_collection.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/request/sync_collection.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="6 additions & 17 deletions">23 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/request/sync_collection.js"> + lib/request/sync_collection.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr data-position="0"> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td class="blob-code blob-code-hunk">@@ -1,7 +1,6 @@</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L1" data-line-number="1" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R1" data-line-number="1" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="1" data-line="1" role="button" aria-label="Add line comment"></b> <span class="pl-s"><span class="pl-pds">'</span>use strict<span class="pl-pds">'</span></span>;</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L2" data-line-number="2" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R2" data-line-number="2" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="2" data-line="2" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L3" data-line-number="3" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="3" data-line="3" role="button" aria-label="Add line comment"></b>-<span class="pl-k">var</span> Request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./request<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L4" data-line-number="4" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="4" data-line="4" role="button" aria-label="Add line comment"></b>- parser <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../parser<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R3" data-line-number="3" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="5" data-line="3" role="button" aria-label="Add line comment"></b>+<span class="pl-k">var</span> parser <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../parser<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R4" data-line-number="4" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="6" data-line="4" role="button" aria-label="Add line comment"></b> template <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../template<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="7" data-line="5" role="button" aria-label="Add line comment"></b> util <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./util<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="8" data-line="6" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr class="js-expandable-line" data-position="9"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-1be4f9a2763092c10c341c643ea95ae3" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/c0302db440c22453ea78981ba6300afb96a2aa9c?diff=unified&left_hunk_size=16&mode=100644&next_line_num_left=14&next_line_num_right=13&path=lib%2Frequest%2Fsync_collection.js&prev_line_num_left=7&prev_line_num_right=6&right_hunk_size=6" data-left-range="8-13" data-right-range="7-12"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -14,16 +13,6 @@ var Request = require('./request'),</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="10" data-line="13" role="button" aria-label="Add line comment"></b> <span class="pl-c"> * (String) syncToken - synchronization token provided by the server.</span></td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L15" data-line-number="15" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="11" data-line="14" role="button" aria-label="Add line comment"></b> <span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L16" data-line-number="16" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R15" data-line-number="15" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="12" data-line="15" role="button" aria-label="Add line comment"></b> <span class="pl-c1">module</span>.<span class="pl-en">exports</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L17" data-line-number="17" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="13" data-line="17" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> requestData <span class="pl-k">=</span> template.syncCollection({</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L18" data-line-number="18" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="14" data-line="18" role="button" aria-label="Add line comment"></b>- props<span class="pl-k">:</span> options.props,</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L19" data-line-number="19" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="15" data-line="19" role="button" aria-label="Add line comment"></b>- syncLevel<span class="pl-k">:</span> options.syncLevel,</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L20" data-line-number="20" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="16" data-line="20" role="button" aria-label="Add line comment"></b>- syncToken<span class="pl-k">:</span> options.syncToken</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L21" data-line-number="21" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="17" data-line="21" role="button" aria-label="Add line comment"></b>- });</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L22" data-line-number="22" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="18" data-line="22" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L23" data-line-number="23" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="19" data-line="23" role="button" aria-label="Add line comment"></b>- <span class="pl-k">function</span> <span class="pl-en">transformRequest</span>(<span class="pl-smi">xhr</span>) {</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L24" data-line-number="24" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="20" data-line="24" role="button" aria-label="Add line comment"></b>- util.setRequestHeaders(xhr, options);</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L25" data-line-number="25" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="21" data-line="25" role="button" aria-label="Add line comment"></b>- }</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L26" data-line-number="26" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="22" data-line="26" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L27" data-line-number="27" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R16" data-line-number="16" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="23" data-line="16" role="button" aria-label="Add line comment"></b> <span class="pl-k">function</span> <span class="pl-en">transformResponse</span>(<span class="pl-smi">xhr</span>) {</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L28" data-line-number="28" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R17" data-line-number="17" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="24" data-line="17" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> multistatus <span class="pl-k">=</span> parser.multistatus(xhr.<span class="pl-c1">responseText</span>);</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L29" data-line-number="29" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R18" data-line-number="18" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="25" data-line="18" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> responses <span class="pl-k">=</span> multistatus.response.map(<span class="pl-k">function</span>(<span class="pl-smi">response</span>) {</td> + </tr> + + <tr class="js-expandable-line" data-position="26"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-1be4f9a2763092c10c341c643ea95ae3" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/c0302db440c22453ea78981ba6300afb96a2aa9c?diff=unified&left_hunk_size=10&mode=100644&next_line_num_left=33&next_line_num_right=22&path=lib%2Frequest%2Fsync_collection.js&prev_line_num_left=29&prev_line_num_right=18&right_hunk_size=10" data-left-range="30-32" data-right-range="19-21"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -33,10 +22,10 @@ module.exports = function(options) {</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L33" data-line-number="33" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R22" data-line-number="22" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="27" data-line="22" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> { responses<span class="pl-k">:</span> responses, syncToken<span class="pl-k">:</span> multistatus.syncToken };</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R23" data-line-number="23" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="28" data-line="23" role="button" aria-label="Add line comment"></b> }</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L35" data-line-number="35" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R24" data-line-number="24" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="29" data-line="24" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L36" data-line-number="36" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="30" data-line="36" role="button" aria-label="Add line comment"></b>- <span class="pl-k">return</span> <span class="pl-k x x-first">new</span><span class="x"> </span><span class="pl-en x">Request</span><span class="x x-last">(</span>{</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R25" data-line-number="25" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="31" data-line="25" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">return</span> {</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L37" data-line-number="37" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R26" data-line-number="26" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="32" data-line="26" role="button" aria-label="Add line comment"></b> method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>REPORT<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L38" data-line-number="38" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="33" data-line="38" role="button" aria-label="Add line comment"></b>- <span class="x x-first">requestData</span><span class="pl-k x">:</span><span class="x x-last"> requestData</span>,</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L39" data-line-number="39" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="34" data-line="39" role="button" aria-label="Add line comment"></b>- <span class="x x-first">transformRequest</span><span class="pl-k x">:</span><span class="x x-last"> transformRequest</span>,</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L40" data-line-number="40" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="35" data-line="40" role="button" aria-label="Add line comment"></b>- <span class="x x-first">transformResponse</span><span class="pl-k x">:</span><span class="x x-last"> transformResponse</span></td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L41" data-line-number="41" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="36" data-line="41" role="button" aria-label="Add line comment"></b>- }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R27" data-line-number="27" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="37" data-line="27" role="button" aria-label="Add line comment"></b>+ <span class="x x-first">data</span><span class="pl-k x">:</span><span class="x x-last"> template.syncCollection(options)</span>,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R28" data-line-number="28" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="38" data-line="28" role="button" aria-label="Add line comment"></b>+ <span class="x x-first">transformResponse</span><span class="pl-k x">:</span><span class="x x-last"> transformResponse</span>,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R29" data-line-number="29" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="39" data-line="29" role="button" aria-label="Add line comment"></b>+ <span class="x x-first">depth</span><span class="pl-k x">:</span><span class="x x-last"> options.depth</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R30" data-line-number="30" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="40" data-line="30" role="button" aria-label="Add line comment"></b>+ };</td> + </tr> + + <tr> + <td id="diff-1be4f9a2763092c10c341c643ea95ae3L42" data-line-number="42" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-1be4f9a2763092c10c341c643ea95ae3R31" data-line-number="31" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/sync_collection.js" data-anchor="diff-1be4f9a2763092c10c341c643ea95ae3" data-position="41" data-line="31" role="button" aria-label="Add line comment"></b> };</td> + </tr> + + + </tbody></table> + </div> + </div> + <a name="diff-621f4846041556ec85382624c6ff90ba"></a> + <div id="diff-10" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/request/util.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/request/util.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="0 additions & 12 deletions">12 <span class="diffstat-bar"><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/request/util.js"> + lib/request/util.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-621f4846041556ec85382624c6ff90ba" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/9e2adad287b3eaadc8c2096747b000e5b066d704?diff=unified&left_hunk_size=15&mode=100644&next_line_num_left=54&next_line_num_right=54&path=lib%2Frequest%2Futil.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=3" data-left-range="1-53" data-right-range="1-53"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -54,15 +54,3 @@ exports.getProps = function(propstats) {</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL54" data-line-number="54" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-621f4846041556ec85382624c6ff90baR54" data-line-number="54" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="1" data-line="54" role="button" aria-label="Add line comment"></b> })</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL55" data-line-number="55" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-621f4846041556ec85382624c6ff90baR55" data-line-number="55" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="2" data-line="55" role="button" aria-label="Add line comment"></b> );</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL56" data-line-number="56" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-621f4846041556ec85382624c6ff90baR56" data-line-number="56" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="3" data-line="56" role="button" aria-label="Add line comment"></b> };</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL57" data-line-number="57" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="4" data-line="57" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL58" data-line-number="58" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="5" data-line="58" role="button" aria-label="Add line comment"></b>-<span class="pl-c1">exports</span>.<span class="pl-en">setRequestHeaders</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">request</span>, <span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL59" data-line-number="59" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="6" data-line="59" role="button" aria-label="Add line comment"></b>- request.<span class="pl-c1">setRequestHeader</span>(<span class="pl-s"><span class="pl-pds">'</span>Content-Type<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>application/xml;charset=utf-8<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL60" data-line-number="60" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="7" data-line="60" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL61" data-line-number="61" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="8" data-line="61" role="button" aria-label="Add line comment"></b>- <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>depth<span class="pl-pds">'</span></span> <span class="pl-k">in</span> options) {</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL62" data-line-number="62" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="9" data-line="62" role="button" aria-label="Add line comment"></b>- request.<span class="pl-c1">setRequestHeader</span>(<span class="pl-s"><span class="pl-pds">'</span>Depth<span class="pl-pds">'</span></span>, options.depth);</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL63" data-line-number="63" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="10" data-line="63" role="button" aria-label="Add line comment"></b>- }</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL64" data-line-number="64" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="11" data-line="64" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL65" data-line-number="65" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="12" data-line="65" role="button" aria-label="Add line comment"></b>- <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>etag<span class="pl-pds">'</span></span> <span class="pl-k">in</span> options) {</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL66" data-line-number="66" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="13" data-line="66" role="button" aria-label="Add line comment"></b>- request.<span class="pl-c1">setRequestHeader</span>(<span class="pl-s"><span class="pl-pds">'</span>If-Match<span class="pl-pds">'</span></span>, options.etag);</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL67" data-line-number="67" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="14" data-line="67" role="button" aria-label="Add line comment"></b>- }</td> + </tr> + + <tr> + <td id="diff-621f4846041556ec85382624c6ff90baL68" data-line-number="68" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/request/util.js" data-anchor="diff-621f4846041556ec85382624c6ff90ba" data-position="15" data-line="68" role="button" aria-label="Add line comment"></b>-};</td> + </tr> + + + </tbody></table> + </div> + </div> + <a name="diff-81b908babb66bd40e6d64d50ad72af80"></a> + <div id="diff-11" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/transport/basic.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/transport/basic.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="3 additions & 5 deletions">8 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/transport/basic.js"> + lib/transport/basic.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-81b908babb66bd40e6d64d50ad72af80" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3fe04fad1d020e52cc823ed8287cad3b518e3942?diff=unified&left_hunk_size=6&mode=100644&next_line_num_left=2&next_line_num_right=2&path=lib%2Ftransport%2Fbasic.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=7" data-left-range="1-1" data-right-range="1-1"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -2,6 +2,7 @@</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L2" data-line-number="2" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R2" data-line-number="2" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="1" data-line="2" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L3" data-line-number="3" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R3" data-line-number="3" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="2" data-line="3" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> Transport <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./transport<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L4" data-line-number="4" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R4" data-line-number="4" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="3" data-line="4" role="button" aria-label="Add line comment"></b> <span class="pl-c1">XMLHttpRequest</span> <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./xmlhttprequest<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R5" data-line-number="5" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="4" data-line="5" role="button" aria-label="Add line comment"></b>+ setRequestHeader <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./set_request_header<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="5" data-line="6" role="button" aria-label="Add line comment"></b> util <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>util<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="6" data-line="7" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="7" data-line="8" role="button" aria-label="Add line comment"></b> <span class="pl-c">/**</span></td> + </tr> + + <tr class="js-expandable-line" data-position="8"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-81b908babb66bd40e6d64d50ad72af80" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3fe04fad1d020e52cc823ed8287cad3b518e3942?diff=unified&left_hunk_size=7&mode=100644&next_line_num_left=15&next_line_num_right=16&path=lib%2Ftransport%2Fbasic.js&prev_line_num_left=7&prev_line_num_right=8&right_hunk_size=6" data-left-range="8-14" data-right-range="9-15"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -15,7 +16,6 @@ module.exports = Basic;</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L15" data-line-number="15" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R16" data-line-number="16" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="9" data-line="16" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L16" data-line-number="16" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R17" data-line-number="17" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="10" data-line="17" role="button" aria-label="Add line comment"></b> <span class="pl-c1">Basic</span>.<span class="pl-c1">prototype</span>.<span class="pl-en">send</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">request</span>, <span class="pl-smi">url</span>, <span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L17" data-line-number="17" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R18" data-line-number="18" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="11" data-line="18" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> sandbox <span class="pl-k">=</span> options <span class="pl-k">&&</span> options.sandbox,</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L18" data-line-number="18" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="12" data-line="18" role="button" aria-label="Add line comment"></b>- transformRequest <span class="pl-k">=</span> request.transformRequest,</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="13" data-line="19" role="button" aria-label="Add line comment"></b> transformResponse <span class="pl-k">=</span> request.transformResponse,</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="14" data-line="20" role="button" aria-label="Add line comment"></b> onerror <span class="pl-k">=</span> request.onerror;</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="15" data-line="21" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr class="js-expandable-line" data-position="16"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-81b908babb66bd40e6d64d50ad72af80" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3fe04fad1d020e52cc823ed8287cad3b518e3942?diff=unified&left_hunk_size=11&mode=100644&next_line_num_left=33&next_line_num_right=33&path=lib%2Ftransport%2Fbasic.js&prev_line_num_left=21&prev_line_num_right=21&right_hunk_size=9" data-left-range="22-32" data-right-range="22-32"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -33,11 +33,9 @@ Basic.prototype.send = function(request, url, options) {</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L33" data-line-number="33" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R33" data-line-number="33" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="17" data-line="33" role="button" aria-label="Add line comment"></b> <span class="pl-v">this</span>.credentials.password</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="18" data-line="34" role="button" aria-label="Add line comment"></b> );</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L35" data-line-number="35" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R35" data-line-number="35" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="19" data-line="35" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L36" data-line-number="36" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="20" data-line="36" role="button" aria-label="Add line comment"></b>- <span class="pl-k">if</span> (transformRequest) {</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L37" data-line-number="37" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="21" data-line="37" role="button" aria-label="Add line comment"></b>- transformRequest(xhr);</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L38" data-line-number="38" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="22" data-line="38" role="button" aria-label="Add line comment"></b>- }</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R36" data-line-number="36" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="23" data-line="36" role="button" aria-label="Add line comment"></b>+ <span class="pl-c1">setRequestHeader</span>(xhr, request);</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L39" data-line-number="39" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R37" data-line-number="37" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="24" data-line="37" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L40" data-line-number="40" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="25" data-line="40" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> promise <span class="pl-k">=</span> xhr.<span class="pl-c1">send</span>(request.<span class="x x-first x-last">requestData</span>)</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R38" data-line-number="38" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="26" data-line="38" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> promise <span class="pl-k">=</span> xhr.<span class="pl-c1">send</span>(request.<span class="pl-c1 x x-first x-last">data</span>)</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L41" data-line-number="41" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R39" data-line-number="39" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="27" data-line="39" role="button" aria-label="Add line comment"></b> .then(<span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L42" data-line-number="42" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R40" data-line-number="40" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="28" data-line="40" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> transformResponse <span class="pl-k">?</span> transformResponse(xhr) <span class="pl-k">:</span> xhr;</td> + </tr> + + <tr> + <td id="diff-81b908babb66bd40e6d64d50ad72af80L43" data-line-number="43" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-81b908babb66bd40e6d64d50ad72af80R41" data-line-number="41" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/basic.js" data-anchor="diff-81b908babb66bd40e6d64d50ad72af80" data-position="29" data-line="41" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-81b908babb66bd40e6d64d50ad72af80" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3fe04fad1d020e52cc823ed8287cad3b518e3942?diff=unified&mode=100644&path=lib%2Ftransport%2Fbasic.js&prev_line_num_left=43&prev_line_num_right=41" data-left-range="44-48" data-right-range="42-48"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-ede51dd0207ffd745a0400a6b589fbd4"></a> + <div id="diff-12" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/transport/oauth2.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/transport/oauth2.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="2 additions & 4 deletions">6 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/transport/oauth2.js"> + lib/transport/oauth2.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-ede51dd0207ffd745a0400a6b589fbd4" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/b7117d384c0e4bb906f29ad7ce5bc14be3f0be5c?diff=unified&left_hunk_size=6&mode=100644&next_line_num_left=4&next_line_num_right=4&path=lib%2Ftransport%2Foauth2.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=7" data-left-range="1-3" data-right-range="1-3"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -4,6 +4,7 @@</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L4" data-line-number="4" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R4" data-line-number="4" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="1" data-line="4" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> Transport <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./transport<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="2" data-line="5" role="button" aria-label="Add line comment"></b> <span class="pl-c1">XMLHttpRequest</span> <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./xmlhttprequest<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="3" data-line="6" role="button" aria-label="Add line comment"></b> querystring <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>querystring<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R7" data-line-number="7" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="4" data-line="7" role="button" aria-label="Add line comment"></b>+ setRequestHeader <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./set_request_header<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="5" data-line="8" role="button" aria-label="Add line comment"></b> util <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>util<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="6" data-line="9" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="7" data-line="10" role="button" aria-label="Add line comment"></b> <span class="pl-c">/**</span></td> + </tr> + + <tr class="js-expandable-line" data-position="8"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-ede51dd0207ffd745a0400a6b589fbd4" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/b7117d384c0e4bb906f29ad7ce5bc14be3f0be5c?diff=unified&left_hunk_size=7&mode=100644&next_line_num_left=18&next_line_num_right=19&path=lib%2Ftransport%2Foauth2.js&prev_line_num_left=9&prev_line_num_right=10&right_hunk_size=6" data-left-range="10-17" data-right-range="11-18"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -18,7 +19,6 @@ module.exports = OAuth2;</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L18" data-line-number="18" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="9" data-line="19" role="button" aria-label="Add line comment"></b> <span class="pl-c1">OAuth2</span>.<span class="pl-c1">prototype</span>.<span class="pl-en">send</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">request</span>, <span class="pl-smi">url</span>, <span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="10" data-line="20" role="button" aria-label="Add line comment"></b> options <span class="pl-k">=</span> options <span class="pl-k">||</span> {};</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="11" data-line="21" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> sandbox <span class="pl-k">=</span> options.sandbox,</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L21" data-line-number="21" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="12" data-line="21" role="button" aria-label="Add line comment"></b>- transformRequest <span class="pl-k">=</span> request.transformRequest,</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L22" data-line-number="22" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R22" data-line-number="22" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="13" data-line="22" role="button" aria-label="Add line comment"></b> transformResponse <span class="pl-k">=</span> request.transformResponse,</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L23" data-line-number="23" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R23" data-line-number="23" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="14" data-line="23" role="button" aria-label="Add line comment"></b> onerror <span class="pl-k">=</span> request.onerror;</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L24" data-line-number="24" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R24" data-line-number="24" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="15" data-line="24" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr class="js-expandable-line" data-position="16"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-ede51dd0207ffd745a0400a6b589fbd4" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/b7117d384c0e4bb906f29ad7ce5bc14be3f0be5c?diff=unified&left_hunk_size=9&mode=100644&next_line_num_left=46&next_line_num_right=46&path=lib%2Ftransport%2Foauth2.js&prev_line_num_left=24&prev_line_num_right=24&right_hunk_size=7" data-left-range="25-45" data-right-range="25-45"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -46,9 +46,7 @@ OAuth2.prototype.send = function(request, url, options) {</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L46" data-line-number="46" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R46" data-line-number="46" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="17" data-line="46" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L47" data-line-number="47" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R47" data-line-number="47" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="18" data-line="47" role="button" aria-label="Add line comment"></b> xhr.<span class="pl-c1">setRequestHeader</span>(<span class="pl-s"><span class="pl-pds">'</span>Authorization<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>Bearer <span class="pl-pds">'</span></span> <span class="pl-k">+</span> token);</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L48" data-line-number="48" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R48" data-line-number="48" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="19" data-line="48" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L49" data-line-number="49" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="20" data-line="49" role="button" aria-label="Add line comment"></b>- <span class="pl-k">if</span> (transformRequest) {</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L50" data-line-number="50" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="21" data-line="50" role="button" aria-label="Add line comment"></b>- transformRequest(xhr);</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L51" data-line-number="51" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="22" data-line="51" role="button" aria-label="Add line comment"></b>- }</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R49" data-line-number="49" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="23" data-line="49" role="button" aria-label="Add line comment"></b>+ <span class="pl-c1">setRequestHeader</span>(xhr, request);</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L52" data-line-number="52" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R50" data-line-number="50" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="24" data-line="50" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L53" data-line-number="53" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R51" data-line-number="51" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="25" data-line="51" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> xhr.<span class="pl-c1">send</span>(request.requestData);</td> + </tr> + + <tr> + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4L54" data-line-number="54" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-ede51dd0207ffd745a0400a6b589fbd4R52" data-line-number="52" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/oauth2.js" data-anchor="diff-ede51dd0207ffd745a0400a6b589fbd4" data-position="26" data-line="52" role="button" aria-label="Add line comment"></b> })</td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-ede51dd0207ffd745a0400a6b589fbd4" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/b7117d384c0e4bb906f29ad7ce5bc14be3f0be5c?diff=unified&mode=100644&path=lib%2Ftransport%2Foauth2.js&prev_line_num_left=54&prev_line_num_right=52" data-left-range="55-167" data-right-range="53-167"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-ba2284e2b54a6b72e1e6a9f85831fc6e"></a> + <div id="diff-13" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/transport/set_request_header.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/transport/set_request_header.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="17 additions & 0 deletions">17 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span></span></span> + + <span class="js-selectable-text" title="lib/transport/set_request_header.js"> + lib/transport/set_request_header.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr data-position="0"> + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eL-1" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td class="blob-code blob-code-hunk">@@ -0,0 +1,17 @@</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR1" data-line-number="1" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="1" data-line="1" role="button" aria-label="Add line comment"></b>+<span class="pl-s"><span class="pl-pds">'</span>use strict<span class="pl-pds">'</span></span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR2" data-line-number="2" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="2" data-line="2" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR3" data-line-number="3" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="3" data-line="3" role="button" aria-label="Add line comment"></b>+<span class="pl-c">/**</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR4" data-line-number="4" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="4" data-line="4" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> * @param {XMLHttpRequest} xhr</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR5" data-line-number="5" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="5" data-line="5" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> * @param {Request} request</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR6" data-line-number="6" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="6" data-line="6" role="button" aria-label="Add line comment"></b>+<span class="pl-c"> */</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR7" data-line-number="7" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="7" data-line="7" role="button" aria-label="Add line comment"></b>+<span class="pl-c1">module</span>.<span class="pl-en">exports</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">xhr</span>, <span class="pl-smi">request</span>) {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR8" data-line-number="8" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="8" data-line="8" role="button" aria-label="Add line comment"></b>+ xhr.<span class="pl-c1">setRequestHeader</span>(<span class="pl-s"><span class="pl-pds">'</span>Content-Type<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>application/xml;charset=utf-8<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR9" data-line-number="9" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="9" data-line="9" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR10" data-line-number="10" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="10" data-line="10" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">if</span> (request.depth <span class="pl-k">!=</span> <span class="pl-c1">null</span>) {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR11" data-line-number="11" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="11" data-line="11" role="button" aria-label="Add line comment"></b>+ xhr.<span class="pl-c1">setRequestHeader</span>(<span class="pl-s"><span class="pl-pds">'</span>Depth<span class="pl-pds">'</span></span>, request.depth);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR12" data-line-number="12" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="12" data-line="12" role="button" aria-label="Add line comment"></b>+ }</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR13" data-line-number="13" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="13" data-line="13" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR14" data-line-number="14" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="14" data-line="14" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">if</span> (request.etag <span class="pl-k">!=</span> <span class="pl-c1">null</span>) {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR15" data-line-number="15" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="15" data-line="15" role="button" aria-label="Add line comment"></b>+ xhr.<span class="pl-c1">setRequestHeader</span>(<span class="pl-s"><span class="pl-pds">'</span>If-Match<span class="pl-pds">'</span></span>, request.etag);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR16" data-line-number="16" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="16" data-line="16" role="button" aria-label="Add line comment"></b>+ }</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-ba2284e2b54a6b72e1e6a9f85831fc6eR17" data-line-number="17" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/transport/set_request_header.js" data-anchor="diff-ba2284e2b54a6b72e1e6a9f85831fc6e" data-position="17" data-line="17" role="button" aria-label="Add line comment"></b>+};</td> + </tr> + + + </tbody></table> + </div> + </div> + <a name="diff-42906c496f3eb63439ea877097b7f2ac"></a> + <div id="diff-14" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="lib/webdav.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/lib/webdav.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="3 additions & 3 deletions">6 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="lib/webdav.js"> + lib/webdav.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-42906c496f3eb63439ea877097b7f2ac" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/fd775c9042fee6212108b66ee5cef40059351c00?diff=unified&left_hunk_size=17&mode=100644&next_line_num_left=9&next_line_num_right=9&path=lib%2Fwebdav.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=17" data-left-range="1-8" data-right-range="1-8"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -9,17 +9,17 @@ var debug = require('debug')('dav:webdav'),</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="1" data-line="9" role="button" aria-label="Add line comment"></b> <span class="pl-c"> * @param {String} objectData webdav object data.</span></td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="2" data-line="10" role="button" aria-label="Add line comment"></b> <span class="pl-c"> */</span></td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="3" data-line="11" role="button" aria-label="Add line comment"></b> <span class="pl-c1">exports</span>.<span class="pl-en">createObject</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">objectUrl</span>, <span class="pl-smi">objectData</span>, <span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL12" data-line-number="12" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="4" data-line="12" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> req <span class="pl-k">=</span> <span class="x x-first x-last">request.basic(</span>{ method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>, data<span class="pl-k">:</span> objectData }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR12" data-line-number="12" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="5" data-line="12" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> { method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>, data<span class="pl-k">:</span> objectData };</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR13" data-line-number="13" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="6" data-line="13" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> options.xhr.<span class="pl-c1">send</span>(req, objectUrl, { sandbox<span class="pl-k">:</span> options.sandbox });</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR14" data-line-number="14" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="7" data-line="14" role="button" aria-label="Add line comment"></b> };</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL15" data-line-number="15" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR15" data-line-number="15" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="8" data-line="15" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL16" data-line-number="16" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR16" data-line-number="16" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="9" data-line="16" role="button" aria-label="Add line comment"></b> <span class="pl-c1">exports</span>.<span class="pl-en">updateObject</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">objectUrl</span>, <span class="pl-smi">objectData</span>, <span class="pl-smi">etag</span>, <span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL17" data-line-number="17" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="10" data-line="17" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> req <span class="pl-k">=</span> <span class="x x-first x-last">request.basic(</span>{ method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>, data<span class="pl-k">:</span> objectData, etag<span class="pl-k">:</span> etag }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR17" data-line-number="17" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="11" data-line="17" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> { method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>, data<span class="pl-k">:</span> objectData, etag<span class="pl-k">:</span> etag };</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL18" data-line-number="18" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR18" data-line-number="18" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="12" data-line="18" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> options.xhr.<span class="pl-c1">send</span>(req, objectUrl, { sandbox<span class="pl-k">:</span> options.sandbox });</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="13" data-line="19" role="button" aria-label="Add line comment"></b> };</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="14" data-line="20" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="15" data-line="21" role="button" aria-label="Add line comment"></b> <span class="pl-c1">exports</span>.<span class="pl-en">deleteObject</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">objectUrl</span>, <span class="pl-smi">etag</span>, <span class="pl-smi">options</span>) {</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL22" data-line-number="22" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="16" data-line="22" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> req <span class="pl-k">=</span> <span class="x x-first x-last">request.basic(</span>{ method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>DELETE<span class="pl-pds">'</span></span>, etag<span class="pl-k">:</span> etag }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR22" data-line-number="22" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="17" data-line="22" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> { method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>DELETE<span class="pl-pds">'</span></span>, etag<span class="pl-k">:</span> etag };</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL23" data-line-number="23" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR23" data-line-number="23" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="18" data-line="23" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> options.xhr.<span class="pl-c1">send</span>(req, objectUrl, { sandbox<span class="pl-k">:</span> options.sandbox });</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL24" data-line-number="24" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR24" data-line-number="24" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="19" data-line="24" role="button" aria-label="Add line comment"></b> };</td> + </tr> + + <tr> + <td id="diff-42906c496f3eb63439ea877097b7f2acL25" data-line-number="25" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-42906c496f3eb63439ea877097b7f2acR25" data-line-number="25" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="lib/webdav.js" data-anchor="diff-42906c496f3eb63439ea877097b7f2ac" data-position="20" data-line="25" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-42906c496f3eb63439ea877097b7f2ac" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/fd775c9042fee6212108b66ee5cef40059351c00?diff=unified&mode=100644&path=lib%2Fwebdav.js&prev_line_num_left=25&prev_line_num_right=25" data-left-range="26-96" data-right-range="26-96"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-5eec2b8cbced383d31bd24205be6c947"></a> + <div id="diff-15" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="test/unit/client_test.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/test/unit/client_test.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="4 additions & 4 deletions">8 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="test/unit/client_test.js"> + test/unit/client_test.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-5eec2b8cbced383d31bd24205be6c947" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/d964139d35dac4d47d7af8dfba86d91bdbe1daa9?diff=unified&left_hunk_size=11&mode=100644&next_line_num_left=24&next_line_num_right=24&path=test%2Funit%2Fclient_test.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=11" data-left-range="1-23" data-right-range="1-23"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -24,11 +24,11 @@ suite('Client', function() {</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L24" data-line-number="24" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R24" data-line-number="24" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="1" data-line="24" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L25" data-line-number="25" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R25" data-line-number="25" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="2" data-line="25" role="button" aria-label="Add line comment"></b> <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>#send<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L26" data-line-number="26" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R26" data-line-number="26" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="3" data-line="26" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> url <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>https://mail.mozilla.com/<span class="pl-pds">'</span></span>;</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L27" data-line-number="27" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="4" data-line="27" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> req <span class="pl-k">=</span> <span class="x x-first x-last">dav.request.basic(</span>{</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R27" data-line-number="27" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="5" data-line="27" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> {</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L28" data-line-number="28" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R28" data-line-number="28" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="6" data-line="28" role="button" aria-label="Add line comment"></b> method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L29" data-line-number="29" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R29" data-line-number="29" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="7" data-line="29" role="button" aria-label="Add line comment"></b> data<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>BEGIN:VCALENDAR<span class="pl-cce">\n</span>END:VCALENDAR<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L30" data-line-number="30" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R30" data-line-number="30" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="8" data-line="30" role="button" aria-label="Add line comment"></b> etag<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>abc123<span class="pl-pds">'</span></span></td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L31" data-line-number="31" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="9" data-line="31" role="button" aria-label="Add line comment"></b>- }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R31" data-line-number="31" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="10" data-line="31" role="button" aria-label="Add line comment"></b>+ };</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L32" data-line-number="32" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R32" data-line-number="32" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="11" data-line="32" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L33" data-line-number="33" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R33" data-line-number="33" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="12" data-line="33" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> sandbox <span class="pl-k">=</span> dav.createSandbox();</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="13" data-line="34" role="button" aria-label="Add line comment"></b> client.<span class="pl-c1">send</span>(req, url, { sandbox<span class="pl-k">:</span> sandbox });</td> + </tr> + + <tr class="js-expandable-line" data-position="14"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-5eec2b8cbced383d31bd24205be6c947" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/d964139d35dac4d47d7af8dfba86d91bdbe1daa9?diff=unified&left_hunk_size=11&mode=100644&next_line_num_left=36&next_line_num_right=36&path=test%2Funit%2Fclient_test.js&prev_line_num_left=34&prev_line_num_right=34&right_hunk_size=11" data-left-range="35-35" data-right-range="35-35"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -36,11 +36,11 @@ suite('Client', function() {</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L36" data-line-number="36" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R36" data-line-number="36" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="15" data-line="36" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L37" data-line-number="37" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R37" data-line-number="37" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="16" data-line="37" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L38" data-line-number="38" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R38" data-line-number="38" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="17" data-line="38" role="button" aria-label="Add line comment"></b> <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>#send with relative url<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L39" data-line-number="39" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="18" data-line="39" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> req <span class="pl-k">=</span> <span class="x x-first x-last">dav.request.basic(</span>{</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R39" data-line-number="39" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="19" data-line="39" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> {</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L40" data-line-number="40" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R40" data-line-number="40" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="20" data-line="40" role="button" aria-label="Add line comment"></b> method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L41" data-line-number="41" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R41" data-line-number="41" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="21" data-line="41" role="button" aria-label="Add line comment"></b> data<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>BEGIN:VCALENDAR<span class="pl-cce">\n</span>END:VCALENDAR<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L42" data-line-number="42" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R42" data-line-number="42" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="22" data-line="42" role="button" aria-label="Add line comment"></b> etag<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>abc123<span class="pl-pds">'</span></span></td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L43" data-line-number="43" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="23" data-line="43" role="button" aria-label="Add line comment"></b>- }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R43" data-line-number="43" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="24" data-line="43" role="button" aria-label="Add line comment"></b>+ };</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L44" data-line-number="44" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R44" data-line-number="44" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="25" data-line="44" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L45" data-line-number="45" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R45" data-line-number="45" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="26" data-line="45" role="button" aria-label="Add line comment"></b> client.<span class="pl-c1">send</span>(req, <span class="pl-s"><span class="pl-pds">'</span>/calendars/123.ics<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-5eec2b8cbced383d31bd24205be6c947L46" data-line-number="46" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-5eec2b8cbced383d31bd24205be6c947R46" data-line-number="46" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/client_test.js" data-anchor="diff-5eec2b8cbced383d31bd24205be6c947" data-position="27" data-line="46" role="button" aria-label="Add line comment"></b> sinon<span class="pl-c1">.assert</span>.calledWith(</td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-5eec2b8cbced383d31bd24205be6c947" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/d964139d35dac4d47d7af8dfba86d91bdbe1daa9?diff=unified&mode=100644&path=test%2Funit%2Fclient_test.js&prev_line_num_left=46&prev_line_num_right=46" data-left-range="47-266" data-right-range="47-266"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-4c64fbe2097444c9768c8b8fd17601aa"></a> + <div id="diff-16" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="test/unit/request/address_book_query_test.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/test/unit/request/address_book_query_test.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="12 additions & 8 deletions">20 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="test/unit/request/address_book_query_test.js"> + test/unit/request/address_book_query_test.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-4c64fbe2097444c9768c8b8fd17601aa" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/703f1fbea38f4c2b862a7c136b31a5353fdfba99?diff=unified&left_hunk_size=6&mode=100644&next_line_num_left=6&next_line_num_right=6&path=test%2Funit%2Frequest%2Faddress_book_query_test.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=7" data-left-range="1-5" data-right-range="1-5"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -6,6 +6,7 @@ var assert = require('chai').assert,</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="1" data-line="6" role="button" aria-label="Add line comment"></b> nockUtils <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./nock_utils<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="2" data-line="7" role="button" aria-label="Add line comment"></b> ns <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/namespace<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="3" data-line="8" role="button" aria-label="Add line comment"></b> request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/request<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR9" data-line-number="9" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="4" data-line="9" role="button" aria-label="Add line comment"></b>+ template <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/template<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="5" data-line="10" role="button" aria-label="Add line comment"></b> transport <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/transport<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="6" data-line="11" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="7" data-line="12" role="button" aria-label="Add line comment"></b> suite(<span class="pl-s"><span class="pl-pds">'</span>request.addressBookQuery<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr class="js-expandable-line" data-position="8"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-4c64fbe2097444c9768c8b8fd17601aa" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/703f1fbea38f4c2b862a7c136b31a5353fdfba99?diff=unified&left_hunk_size=14&mode=100644&next_line_num_left=19&next_line_num_right=20&path=test%2Funit%2Frequest%2Faddress_book_query_test.js&prev_line_num_left=11&prev_line_num_right=12&right_hunk_size=17" data-left-range="12-18" data-right-range="13-19"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -19,14 +20,17 @@ suite('request.addressBookQuery', function() {</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="9" data-line="20" role="button" aria-label="Add line comment"></b> nock.cleanAll();</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="10" data-line="21" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR22" data-line-number="22" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="11" data-line="22" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL22" data-line-number="22" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="12" data-line="22" role="button" aria-label="Add line comment"></b>- <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should return request.Request<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL23" data-line-number="23" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="13" data-line="23" role="button" aria-label="Add line comment"></b>- assert.instanceOf(</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL24" data-line-number="24" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="14" data-line="24" role="button" aria-label="Add line comment"></b>- request.addressBookQuery({</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL25" data-line-number="25" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="15" data-line="25" role="button" aria-label="Add line comment"></b>- props<span class="pl-k">:</span> [],</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL26" data-line-number="26" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="16" data-line="26" role="button" aria-label="Add line comment"></b>- depth<span class="pl-k">:</span> <span class="pl-c1">1</span></td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL27" data-line-number="27" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="17" data-line="27" role="button" aria-label="Add line comment"></b>- }),</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL28" data-line-number="28" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="18" data-line="28" role="button" aria-label="Add line comment"></b>- request.Request</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL29" data-line-number="29" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="19" data-line="29" role="button" aria-label="Add line comment"></b>- );</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR23" data-line-number="23" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="20" data-line="23" role="button" aria-label="Add line comment"></b>+ <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should return proper Request<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR24" data-line-number="24" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="21" data-line="24" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> request.addressBookQuery({</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR25" data-line-number="25" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="22" data-line="25" role="button" aria-label="Add line comment"></b>+ props<span class="pl-k">:</span> [],</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR26" data-line-number="26" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="23" data-line="26" role="button" aria-label="Add line comment"></b>+ depth<span class="pl-k">:</span> <span class="pl-c1">1</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR27" data-line-number="27" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="24" data-line="27" role="button" aria-label="Add line comment"></b>+ });</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR28" data-line-number="28" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="25" data-line="28" role="button" aria-label="Add line comment"></b>+ assert.equal(req.<span class="pl-c1">method</span>, <span class="pl-s"><span class="pl-pds">'</span>REPORT<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR29" data-line-number="29" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="26" data-line="29" role="button" aria-label="Add line comment"></b>+ assert.equal(req.depth, <span class="pl-c1">1</span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR30" data-line-number="30" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="27" data-line="30" role="button" aria-label="Add line comment"></b>+ assert.equal(req.<span class="pl-c1">data</span>, template.addressBookQuery({ props<span class="pl-k">:</span> [] }));</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR31" data-line-number="31" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="28" data-line="31" role="button" aria-label="Add line comment"></b>+ assert.isFunction(req.transformResponse);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR32" data-line-number="32" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="29" data-line="32" role="button" aria-label="Add line comment"></b>+ assert.isUndefined(req.etag);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR33" data-line-number="33" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="30" data-line="33" role="button" aria-label="Add line comment"></b>+ assert.isUndefined(req.props);</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL30" data-line-number="30" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="31" data-line="34" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL31" data-line-number="31" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR35" data-line-number="35" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="32" data-line="35" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaL32" data-line-number="32" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-4c64fbe2097444c9768c8b8fd17601aaR36" data-line-number="36" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/address_book_query_test.js" data-anchor="diff-4c64fbe2097444c9768c8b8fd17601aa" data-position="33" data-line="36" role="button" aria-label="Add line comment"></b> <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should set depth header<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-4c64fbe2097444c9768c8b8fd17601aa" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/703f1fbea38f4c2b862a7c136b31a5353fdfba99?diff=unified&mode=100644&path=test%2Funit%2Frequest%2Faddress_book_query_test.js&prev_line_num_left=32&prev_line_num_right=36" data-left-range="33-92" data-right-range="37-92"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-75e9b3e8f6e3a9c098624463cd402f5b"></a> + <div id="diff-17" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="test/unit/request/basic_test.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/test/unit/request/basic_test.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="5 additions & 18 deletions">23 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="test/unit/request/basic_test.js"> + test/unit/request/basic_test.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-75e9b3e8f6e3a9c098624463cd402f5b" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3ea46d78d4b79957738abdbf148435f470310261?diff=unified&left_hunk_size=7&mode=100644&next_line_num_left=3&next_line_num_right=3&path=test%2Funit%2Frequest%2Fbasic_test.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=6" data-left-range="1-2" data-right-range="1-2"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -3,7 +3,6 @@</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL3" data-line-number="3" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR3" data-line-number="3" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="1" data-line="3" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> assert <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>chai<span class="pl-pds">'</span></span>)<span class="pl-c1">.assert</span>,</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL4" data-line-number="4" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR4" data-line-number="4" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="2" data-line="4" role="button" aria-label="Add line comment"></b> nock <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>nock<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="3" data-line="5" role="button" aria-label="Add line comment"></b> nockUtils <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./nock_utils<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL6" data-line-number="6" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="4" data-line="6" role="button" aria-label="Add line comment"></b>- request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/request<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="5" data-line="6" role="button" aria-label="Add line comment"></b> transport <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/transport<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="6" data-line="7" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="7" data-line="8" role="button" aria-label="Add line comment"></b> suite(<span class="pl-s"><span class="pl-pds">'</span>put<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr class="js-expandable-line" data-position="8"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-75e9b3e8f6e3a9c098624463cd402f5b" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3ea46d78d4b79957738abdbf148435f470310261?diff=unified&left_hunk_size=28&mode=100644&next_line_num_left=17&next_line_num_right=16&path=test%2Funit%2Frequest%2Fbasic_test.js&prev_line_num_left=9&prev_line_num_right=8&right_hunk_size=16" data-left-range="10-16" data-right-range="9-15"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -17,28 +16,16 @@ suite('put', function() {</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL17" data-line-number="17" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR16" data-line-number="16" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="9" data-line="16" role="button" aria-label="Add line comment"></b> nock.cleanAll();</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL18" data-line-number="18" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR17" data-line-number="17" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="10" data-line="17" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR18" data-line-number="18" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="11" data-line="18" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL20" data-line-number="20" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="12" data-line="20" role="button" aria-label="Add line comment"></b>- <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should return request.Request<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL21" data-line-number="21" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="13" data-line="21" role="button" aria-label="Add line comment"></b>- assert.instanceOf(</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL22" data-line-number="22" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="14" data-line="22" role="button" aria-label="Add line comment"></b>- request.basic({</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL23" data-line-number="23" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="15" data-line="23" role="button" aria-label="Add line comment"></b>- method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL24" data-line-number="24" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="16" data-line="24" role="button" aria-label="Add line comment"></b>- username<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>abc<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL25" data-line-number="25" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="17" data-line="25" role="button" aria-label="Add line comment"></b>- password<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>123<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL26" data-line-number="26" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="18" data-line="26" role="button" aria-label="Add line comment"></b>- data<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>yoyoma<span class="pl-pds">'</span></span></td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL27" data-line-number="27" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="19" data-line="27" role="button" aria-label="Add line comment"></b>- }),</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL28" data-line-number="28" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="20" data-line="28" role="button" aria-label="Add line comment"></b>- request.Request</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL29" data-line-number="29" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="21" data-line="29" role="button" aria-label="Add line comment"></b>- );</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL30" data-line-number="30" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="22" data-line="30" role="button" aria-label="Add line comment"></b>- });</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL31" data-line-number="31" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="23" data-line="31" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL32" data-line-number="32" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="24" data-line="19" role="button" aria-label="Add line comment"></b> <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should set If-Match header<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL33" data-line-number="33" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="25" data-line="20" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> mock <span class="pl-k">=</span> nock(<span class="pl-s"><span class="pl-pds">'</span>http://127.0.0.1:1337<span class="pl-pds">'</span></span>)</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="26" data-line="21" role="button" aria-label="Add line comment"></b> .matchHeader(<span class="pl-s"><span class="pl-pds">'</span>If-Match<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>1337<span class="pl-pds">'</span></span>)</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL35" data-line-number="35" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR22" data-line-number="22" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="27" data-line="22" role="button" aria-label="Add line comment"></b> .intercept(<span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>)</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL36" data-line-number="36" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR23" data-line-number="23" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="28" data-line="23" role="button" aria-label="Add line comment"></b> .reply(<span class="pl-c1">200</span>);</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL37" data-line-number="37" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR24" data-line-number="24" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="29" data-line="24" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL38" data-line-number="38" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="30" data-line="38" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> req <span class="pl-k">=</span> <span class="x x-first x-last">request.basic(</span>{</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR25" data-line-number="25" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="31" data-line="25" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> {</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL39" data-line-number="39" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR26" data-line-number="26" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="32" data-line="26" role="button" aria-label="Add line comment"></b> method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL40" data-line-number="40" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR27" data-line-number="27" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="33" data-line="27" role="button" aria-label="Add line comment"></b> etag<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>1337<span class="pl-pds">'</span></span></td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL41" data-line-number="41" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="34" data-line="41" role="button" aria-label="Add line comment"></b>- }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR28" data-line-number="28" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="35" data-line="28" role="button" aria-label="Add line comment"></b>+ };</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL42" data-line-number="42" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR29" data-line-number="29" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="36" data-line="29" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL43" data-line-number="43" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR30" data-line-number="30" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="37" data-line="30" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> nockUtils.verifyNock(xhr.<span class="pl-c1">send</span>(req, <span class="pl-s"><span class="pl-pds">'</span>http://127.0.0.1:1337<span class="pl-pds">'</span></span>), mock);</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL44" data-line-number="44" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR31" data-line-number="31" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="38" data-line="31" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr class="js-expandable-line" data-position="39"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-75e9b3e8f6e3a9c098624463cd402f5b" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3ea46d78d4b79957738abdbf148435f470310261?diff=unified&left_hunk_size=10&mode=100644&next_line_num_left=49&next_line_num_right=36&path=test%2Funit%2Frequest%2Fbasic_test.js&prev_line_num_left=44&prev_line_num_right=31&right_hunk_size=10" data-left-range="45-48" data-right-range="32-35"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -49,10 +36,10 @@ suite('put', function() {</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL49" data-line-number="49" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR36" data-line-number="36" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="40" data-line="36" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> body <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Bad hair day!<span class="pl-pds">'</span></span>;</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL50" data-line-number="50" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR37" data-line-number="37" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="41" data-line="37" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL51" data-line-number="51" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR38" data-line-number="38" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="42" data-line="38" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL52" data-line-number="52" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="43" data-line="52" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> req <span class="pl-k">=</span> <span class="x x-first x-last">request.basic(</span>{</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR39" data-line-number="39" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="44" data-line="39" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> {</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL53" data-line-number="53" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR40" data-line-number="40" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="45" data-line="40" role="button" aria-label="Add line comment"></b> method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL54" data-line-number="54" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR41" data-line-number="41" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="46" data-line="41" role="button" aria-label="Add line comment"></b> data<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Bad hair day!<span class="pl-pds">'</span></span></td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL55" data-line-number="55" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="47" data-line="55" role="button" aria-label="Add line comment"></b>- }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR42" data-line-number="42" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="48" data-line="42" role="button" aria-label="Add line comment"></b>+ };</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL56" data-line-number="56" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR43" data-line-number="43" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="49" data-line="43" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL57" data-line-number="57" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR44" data-line-number="44" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="50" data-line="44" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> nockUtils.verifyNock(xhr.<span class="pl-c1">send</span>(req, <span class="pl-s"><span class="pl-pds">'</span>http://127.0.0.1:1337<span class="pl-pds">'</span></span>), mock);</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL58" data-line-number="58" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR45" data-line-number="45" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="51" data-line="45" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr class="js-expandable-line" data-position="52"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-75e9b3e8f6e3a9c098624463cd402f5b" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3ea46d78d4b79957738abdbf148435f470310261?diff=unified&left_hunk_size=7&mode=100644&next_line_num_left=63&next_line_num_right=50&path=test%2Funit%2Frequest%2Fbasic_test.js&prev_line_num_left=58&prev_line_num_right=45&right_hunk_size=7" data-left-range="59-62" data-right-range="46-49"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -63,7 +50,7 @@ suite('put', function() {</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL63" data-line-number="63" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR50" data-line-number="50" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="53" data-line="50" role="button" aria-label="Add line comment"></b> .delay(<span class="pl-c1">1</span>)</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL64" data-line-number="64" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR51" data-line-number="51" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="54" data-line="51" role="button" aria-label="Add line comment"></b> .reply(<span class="pl-s"><span class="pl-pds">'</span>400<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>400 Bad Request<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL65" data-line-number="65" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR52" data-line-number="52" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="55" data-line="52" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL66" data-line-number="66" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="56" data-line="66" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> req <span class="pl-k">=</span> <span class="x x-first x-last">request.basic(</span>{ method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span> }<span class="x x-first x-last">)</span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR53" data-line-number="53" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="57" data-line="53" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> { method<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span> };</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL67" data-line-number="67" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR54" data-line-number="54" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="58" data-line="54" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL68" data-line-number="68" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR55" data-line-number="55" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="59" data-line="55" role="button" aria-label="Add line comment"></b> <span class="pl-k">return</span> xhr.<span class="pl-c1">send</span>(req, <span class="pl-s"><span class="pl-pds">'</span>http://127.0.0.1:1337<span class="pl-pds">'</span></span>)</td> + </tr> + + <tr> + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bL69" data-line-number="69" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-75e9b3e8f6e3a9c098624463cd402f5bR56" data-line-number="56" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/basic_test.js" data-anchor="diff-75e9b3e8f6e3a9c098624463cd402f5b" data-position="60" data-line="56" role="button" aria-label="Add line comment"></b> .then(<span class="pl-k">function</span>() {</td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-75e9b3e8f6e3a9c098624463cd402f5b" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3ea46d78d4b79957738abdbf148435f470310261?diff=unified&mode=100644&path=test%2Funit%2Frequest%2Fbasic_test.js&prev_line_num_left=69&prev_line_num_right=56" data-left-range="70-64" data-right-range="57-64"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-d3f93017c924d804fd8e48eb890c9396"></a> + <div id="diff-18" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="test/unit/request/calendar_query_test.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/test/unit/request/calendar_query_test.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="16 additions & 8 deletions">24 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="test/unit/request/calendar_query_test.js"> + test/unit/request/calendar_query_test.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-d3f93017c924d804fd8e48eb890c9396" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3b832f628996378e97e8269855a7eaa78df725df?diff=unified&left_hunk_size=6&mode=100644&next_line_num_left=6&next_line_num_right=6&path=test%2Funit%2Frequest%2Fcalendar_query_test.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=7" data-left-range="1-5" data-right-range="1-5"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -6,6 +6,7 @@ var assert = require('chai').assert,</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="1" data-line="6" role="button" aria-label="Add line comment"></b> nock <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>nock<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="2" data-line="7" role="button" aria-label="Add line comment"></b> nockUtils <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./nock_utils<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="3" data-line="8" role="button" aria-label="Add line comment"></b> request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/request<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R9" data-line-number="9" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="4" data-line="9" role="button" aria-label="Add line comment"></b>+ template <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/template<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="5" data-line="10" role="button" aria-label="Add line comment"></b> transport <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/transport<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="6" data-line="11" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="7" data-line="12" role="button" aria-label="Add line comment"></b> suite(<span class="pl-s"><span class="pl-pds">'</span>request.calendarQuery<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr class="js-expandable-line" data-position="8"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-d3f93017c924d804fd8e48eb890c9396" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3b832f628996378e97e8269855a7eaa78df725df?diff=unified&left_hunk_size=14&mode=100644&next_line_num_left=19&next_line_num_right=20&path=test%2Funit%2Frequest%2Fcalendar_query_test.js&prev_line_num_left=11&prev_line_num_right=12&right_hunk_size=21" data-left-range="12-18" data-right-range="13-19"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -19,14 +20,21 @@ suite('request.calendarQuery', function() {</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="9" data-line="20" role="button" aria-label="Add line comment"></b> nock.cleanAll();</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="10" data-line="21" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R22" data-line-number="22" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="11" data-line="22" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L22" data-line-number="22" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="12" data-line="22" role="button" aria-label="Add line comment"></b>- <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should return request.Request<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L23" data-line-number="23" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="13" data-line="23" role="button" aria-label="Add line comment"></b>- assert.instanceOf(</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L24" data-line-number="24" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="14" data-line="24" role="button" aria-label="Add line comment"></b>- request.calendarQuery({</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L25" data-line-number="25" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="15" data-line="25" role="button" aria-label="Add line comment"></b>- props<span class="pl-k">:</span> [],</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L26" data-line-number="26" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="16" data-line="26" role="button" aria-label="Add line comment"></b>- depth<span class="pl-k">:</span> <span class="pl-c1">1</span></td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L27" data-line-number="27" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="17" data-line="27" role="button" aria-label="Add line comment"></b>- }),</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L28" data-line-number="28" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="18" data-line="28" role="button" aria-label="Add line comment"></b>- request.Request</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L29" data-line-number="29" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="19" data-line="29" role="button" aria-label="Add line comment"></b>- );</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R23" data-line-number="23" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="20" data-line="23" role="button" aria-label="Add line comment"></b>+ <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should return valid request<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R24" data-line-number="24" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="21" data-line="24" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> opts <span class="pl-k">=</span>{</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R25" data-line-number="25" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="22" data-line="25" role="button" aria-label="Add line comment"></b>+ props<span class="pl-k">:</span> [],</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R26" data-line-number="26" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="23" data-line="26" role="button" aria-label="Add line comment"></b>+ depth<span class="pl-k">:</span> <span class="pl-c1">1</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R27" data-line-number="27" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="24" data-line="27" role="button" aria-label="Add line comment"></b>+ };</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R28" data-line-number="28" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="25" data-line="28" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> request.calendarQuery(opts);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R29" data-line-number="29" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="26" data-line="29" role="button" aria-label="Add line comment"></b>+ assert.equal(req.<span class="pl-c1">method</span>, <span class="pl-s"><span class="pl-pds">'</span>REPORT<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R30" data-line-number="30" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="27" data-line="30" role="button" aria-label="Add line comment"></b>+ assert.equal(req.depth, <span class="pl-c1">1</span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R31" data-line-number="31" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="28" data-line="31" role="button" aria-label="Add line comment"></b>+ assert.equal(req.<span class="pl-c1">data</span>, template.calendarQuery({</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R32" data-line-number="32" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="29" data-line="32" role="button" aria-label="Add line comment"></b>+ props<span class="pl-k">:</span> [],</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R33" data-line-number="33" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="30" data-line="33" role="button" aria-label="Add line comment"></b>+ filters<span class="pl-k">:</span> [],</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R34" data-line-number="34" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="31" data-line="34" role="button" aria-label="Add line comment"></b>+ timezone<span class="pl-k">:</span> <span class="pl-c1">undefined</span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R35" data-line-number="35" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="32" data-line="35" role="button" aria-label="Add line comment"></b>+ }));</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R36" data-line-number="36" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="33" data-line="36" role="button" aria-label="Add line comment"></b>+ assert.isFunction(req.transformResponse);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R37" data-line-number="37" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="34" data-line="37" role="button" aria-label="Add line comment"></b>+ assert.isUndefined(req.props);</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L30" data-line-number="30" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R38" data-line-number="38" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="35" data-line="38" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L31" data-line-number="31" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R39" data-line-number="39" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="36" data-line="39" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-d3f93017c924d804fd8e48eb890c9396L32" data-line-number="32" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d3f93017c924d804fd8e48eb890c9396R40" data-line-number="40" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/calendar_query_test.js" data-anchor="diff-d3f93017c924d804fd8e48eb890c9396" data-position="37" data-line="40" role="button" aria-label="Add line comment"></b> <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should set depth header<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-d3f93017c924d804fd8e48eb890c9396" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/3b832f628996378e97e8269855a7eaa78df725df?diff=unified&mode=100644&path=test%2Funit%2Frequest%2Fcalendar_query_test.js&prev_line_num_left=32&prev_line_num_right=40" data-left-range="33-138" data-right-range="41-138"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-bb21a24370ca6f7f135323da91db40d0"></a> + <div id="diff-19" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="test/unit/request/propfind_test.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/test/unit/request/propfind_test.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="12 additions & 8 deletions">20 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="test/unit/request/propfind_test.js"> + test/unit/request/propfind_test.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-bb21a24370ca6f7f135323da91db40d0" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/dc75cfc60a79c543bdbf58bee05d3f77900acd89?diff=unified&left_hunk_size=6&mode=100644&next_line_num_left=6&next_line_num_right=6&path=test%2Funit%2Frequest%2Fpropfind_test.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=7" data-left-range="1-5" data-right-range="1-5"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -6,6 +6,7 @@ var assert = require('chai').assert,</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="1" data-line="6" role="button" aria-label="Add line comment"></b> nock <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>nock<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="2" data-line="7" role="button" aria-label="Add line comment"></b> nockUtils <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./nock_utils<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="3" data-line="8" role="button" aria-label="Add line comment"></b> request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/request<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R9" data-line-number="9" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="4" data-line="9" role="button" aria-label="Add line comment"></b>+ template <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/template<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="5" data-line="10" role="button" aria-label="Add line comment"></b> transport <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/transport<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="6" data-line="11" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R12" data-line-number="12" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="7" data-line="12" role="button" aria-label="Add line comment"></b> suite(<span class="pl-s"><span class="pl-pds">'</span>request.propfind<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr class="js-expandable-line" data-position="8"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-bb21a24370ca6f7f135323da91db40d0" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/dc75cfc60a79c543bdbf58bee05d3f77900acd89?diff=unified&left_hunk_size=14&mode=100644&next_line_num_left=19&next_line_num_right=20&path=test%2Funit%2Frequest%2Fpropfind_test.js&prev_line_num_left=11&prev_line_num_right=12&right_hunk_size=17" data-left-range="12-18" data-right-range="13-19"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -19,14 +20,17 @@ suite('request.propfind', function() {</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="9" data-line="20" role="button" aria-label="Add line comment"></b> nock.cleanAll();</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="10" data-line="21" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R22" data-line-number="22" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="11" data-line="22" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L22" data-line-number="22" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="12" data-line="22" role="button" aria-label="Add line comment"></b>- <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should return request.Request<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L23" data-line-number="23" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="13" data-line="23" role="button" aria-label="Add line comment"></b>- assert.instanceOf(</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L24" data-line-number="24" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="14" data-line="24" role="button" aria-label="Add line comment"></b>- request.propfind({</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L25" data-line-number="25" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="15" data-line="25" role="button" aria-label="Add line comment"></b>- props<span class="pl-k">:</span> [ { name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>catdog<span class="pl-pds">'</span></span>, namespace<span class="pl-k">:</span> namespace.DAV } ],</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L26" data-line-number="26" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="16" data-line="26" role="button" aria-label="Add line comment"></b>- depth<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>0<span class="pl-pds">'</span></span></td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L27" data-line-number="27" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="17" data-line="27" role="button" aria-label="Add line comment"></b>- }),</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L28" data-line-number="28" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="18" data-line="28" role="button" aria-label="Add line comment"></b>- request.Request</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L29" data-line-number="29" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="19" data-line="29" role="button" aria-label="Add line comment"></b>- );</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R23" data-line-number="23" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="20" data-line="23" role="button" aria-label="Add line comment"></b>+ <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should return valid request<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R24" data-line-number="24" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="21" data-line="24" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> opts <span class="pl-k">=</span> {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R25" data-line-number="25" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="22" data-line="25" role="button" aria-label="Add line comment"></b>+ props<span class="pl-k">:</span> [ { name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>catdog<span class="pl-pds">'</span></span>, namespace<span class="pl-k">:</span> namespace.DAV } ],</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R26" data-line-number="26" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="23" data-line="26" role="button" aria-label="Add line comment"></b>+ depth<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>0<span class="pl-pds">'</span></span></td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R27" data-line-number="27" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="24" data-line="27" role="button" aria-label="Add line comment"></b>+ };</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R28" data-line-number="28" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="25" data-line="28" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> request.propfind(opts);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R29" data-line-number="29" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="26" data-line="29" role="button" aria-label="Add line comment"></b>+ assert.equal(req.<span class="pl-c1">method</span>, <span class="pl-s"><span class="pl-pds">'</span>PROPFIND<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R30" data-line-number="30" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="27" data-line="30" role="button" aria-label="Add line comment"></b>+ assert.equal(req.depth, <span class="pl-s"><span class="pl-pds">'</span>0<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R31" data-line-number="31" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="28" data-line="31" role="button" aria-label="Add line comment"></b>+ assert.equal(req.<span class="pl-c1">data</span>, template.propfind(opts));</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R32" data-line-number="32" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="29" data-line="32" role="button" aria-label="Add line comment"></b>+ assert.isFunction(req.transformResponse);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R33" data-line-number="33" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="30" data-line="33" role="button" aria-label="Add line comment"></b>+ assert.isUndefined(req.props);</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L30" data-line-number="30" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="31" data-line="34" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L31" data-line-number="31" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R35" data-line-number="35" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="32" data-line="35" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-bb21a24370ca6f7f135323da91db40d0L32" data-line-number="32" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-bb21a24370ca6f7f135323da91db40d0R36" data-line-number="36" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/propfind_test.js" data-anchor="diff-bb21a24370ca6f7f135323da91db40d0" data-position="33" data-line="36" role="button" aria-label="Add line comment"></b> <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should set depth header<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-bb21a24370ca6f7f135323da91db40d0" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/dc75cfc60a79c543bdbf58bee05d3f77900acd89?diff=unified&mode=100644&path=test%2Funit%2Frequest%2Fpropfind_test.js&prev_line_num_left=32&prev_line_num_right=36" data-left-range="33-103" data-right-range="37-103"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-461db5cfc29016e1049b0c48aadd5255"></a> + <div id="diff-20" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="test/unit/request/sync_collection_test.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/test/unit/request/sync_collection_test.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="15 additions & 12 deletions">27 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="test/unit/request/sync_collection_test.js"> + test/unit/request/sync_collection_test.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-461db5cfc29016e1049b0c48aadd5255" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/52c6fe4b9d249ae8070f6599e2229d5a2edb3ea2?diff=unified&left_hunk_size=6&mode=100644&next_line_num_left=5&next_line_num_right=5&path=test%2Funit%2Frequest%2Fsync_collection_test.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=7" data-left-range="1-4" data-right-range="1-4"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -5,6 +5,7 @@ var assert = require('chai').assert,</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="1" data-line="5" role="button" aria-label="Add line comment"></b> nock <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>nock<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="2" data-line="6" role="button" aria-label="Add line comment"></b> nockUtils <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>./nock_utils<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="3" data-line="7" role="button" aria-label="Add line comment"></b> request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/request<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R8" data-line-number="8" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="4" data-line="8" role="button" aria-label="Add line comment"></b>+ template <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/template<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="5" data-line="9" role="button" aria-label="Add line comment"></b> transport <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/transport<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="6" data-line="10" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="7" data-line="11" role="button" aria-label="Add line comment"></b> suite(<span class="pl-s"><span class="pl-pds">'</span>request.syncCollection<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr class="js-expandable-line" data-position="8"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-461db5cfc29016e1049b0c48aadd5255" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/52c6fe4b9d249ae8070f6599e2229d5a2edb3ea2?diff=unified&left_hunk_size=18&mode=100644&next_line_num_left=18&next_line_num_right=19&path=test%2Funit%2Frequest%2Fsync_collection_test.js&prev_line_num_left=10&prev_line_num_right=11&right_hunk_size=20" data-left-range="11-17" data-right-range="12-18"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -18,18 +19,20 @@ suite('request.syncCollection', function() {</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L18" data-line-number="18" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="9" data-line="19" role="button" aria-label="Add line comment"></b> nock.cleanAll();</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L19" data-line-number="19" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="10" data-line="20" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L20" data-line-number="20" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R21" data-line-number="21" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="11" data-line="21" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L21" data-line-number="21" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="12" data-line="21" role="button" aria-label="Add line comment"></b>- <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should return request.Request<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L22" data-line-number="22" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="13" data-line="22" role="button" aria-label="Add line comment"></b>- assert.instanceOf(</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L23" data-line-number="23" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="14" data-line="23" role="button" aria-label="Add line comment"></b>- request.syncCollection({</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L24" data-line-number="24" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="15" data-line="24" role="button" aria-label="Add line comment"></b>- syncLevel<span class="pl-k">:</span> <span class="pl-c1">1</span>,</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L25" data-line-number="25" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="16" data-line="25" role="button" aria-label="Add line comment"></b>- syncToken<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>abc123<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L26" data-line-number="26" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="17" data-line="26" role="button" aria-label="Add line comment"></b>- props<span class="pl-k">:</span> [</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L27" data-line-number="27" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="18" data-line="27" role="button" aria-label="Add line comment"></b>- { name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>getetag<span class="pl-pds">'</span></span>, namespace<span class="pl-k">:</span> namespace.DAV },</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L28" data-line-number="28" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="19" data-line="28" role="button" aria-label="Add line comment"></b>- { name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>calendar-data<span class="pl-pds">'</span></span>, namespace<span class="pl-k">:</span> namespace.CALDAV }</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L29" data-line-number="29" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="20" data-line="29" role="button" aria-label="Add line comment"></b>- ]</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L30" data-line-number="30" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="21" data-line="30" role="button" aria-label="Add line comment"></b>- }),</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L31" data-line-number="31" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="22" data-line="31" role="button" aria-label="Add line comment"></b>- request.Request</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L32" data-line-number="32" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="23" data-line="32" role="button" aria-label="Add line comment"></b>- );</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R22" data-line-number="22" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="24" data-line="22" role="button" aria-label="Add line comment"></b>+ <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should return valid request<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R23" data-line-number="23" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="25" data-line="23" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> opts <span class="pl-k">=</span> {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R24" data-line-number="24" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="26" data-line="24" role="button" aria-label="Add line comment"></b>+ syncLevel<span class="pl-k">:</span> <span class="pl-c1">1</span>,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R25" data-line-number="25" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="27" data-line="25" role="button" aria-label="Add line comment"></b>+ syncToken<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>abc123<span class="pl-pds">'</span></span>,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R26" data-line-number="26" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="28" data-line="26" role="button" aria-label="Add line comment"></b>+ props<span class="pl-k">:</span> [</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R27" data-line-number="27" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="29" data-line="27" role="button" aria-label="Add line comment"></b>+ { name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>getetag<span class="pl-pds">'</span></span>, namespace<span class="pl-k">:</span> namespace.DAV },</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R28" data-line-number="28" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="30" data-line="28" role="button" aria-label="Add line comment"></b>+ { name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>calendar-data<span class="pl-pds">'</span></span>, namespace<span class="pl-k">:</span> namespace.CALDAV }</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R29" data-line-number="29" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="31" data-line="29" role="button" aria-label="Add line comment"></b>+ ]</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R30" data-line-number="30" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="32" data-line="30" role="button" aria-label="Add line comment"></b>+ };</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R31" data-line-number="31" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="33" data-line="31" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> req <span class="pl-k">=</span> request.syncCollection(opts);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R32" data-line-number="32" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="34" data-line="32" role="button" aria-label="Add line comment"></b>+ assert.equal(req.<span class="pl-c1">method</span>, <span class="pl-s"><span class="pl-pds">'</span>REPORT<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R33" data-line-number="33" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="35" data-line="33" role="button" aria-label="Add line comment"></b>+ assert.equal(req.<span class="pl-c1">data</span>, template.syncCollection(opts));</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R34" data-line-number="34" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="36" data-line="34" role="button" aria-label="Add line comment"></b>+ assert.isUndefined(req.depth);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R35" data-line-number="35" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="37" data-line="35" role="button" aria-label="Add line comment"></b>+ assert.isFunction(req.transformResponse);</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L33" data-line-number="33" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R36" data-line-number="36" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="38" data-line="36" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R37" data-line-number="37" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="39" data-line="37" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-461db5cfc29016e1049b0c48aadd5255L35" data-line-number="35" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-461db5cfc29016e1049b0c48aadd5255R38" data-line-number="38" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/request/sync_collection_test.js" data-anchor="diff-461db5cfc29016e1049b0c48aadd5255" data-position="40" data-line="38" role="button" aria-label="Add line comment"></b> <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should add props to request body<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-461db5cfc29016e1049b0c48aadd5255" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/52c6fe4b9d249ae8070f6599e2229d5a2edb3ea2?diff=unified&mode=100644&path=test%2Funit%2Frequest%2Fsync_collection_test.js&prev_line_num_left=35&prev_line_num_right=38" data-left-range="36-89" data-right-range="39-89"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-d6ac4730119e3630c43967c1639d3845"></a> + <div id="diff-21" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="test/unit/transport/basic_test.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/test/unit/transport/basic_test.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="0 additions & 7 deletions">7 <span class="diffstat-bar"><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span><span class="text-diff-deleted"></span></span></span> + + <span class="js-selectable-text" title="test/unit/transport/basic_test.js"> + test/unit/transport/basic_test.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr class="js-expandable-line" data-position="0"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-d6ac4730119e3630c43967c1639d3845" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/58a70a07e4320a7d8a56ce293d00c0f44927c8be?diff=unified&left_hunk_size=7&mode=100644&next_line_num_left=5&next_line_num_right=5&path=test%2Funit%2Ftransport%2Fbasic_test.js&prev_line_num_left=&prev_line_num_right=&right_hunk_size=6" data-left-range="1-4" data-right-range="1-4"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -5,7 +5,6 @@ var XMLHttpRequest = require('../../../lib/transport/xmlhttprequest'),</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R5" data-line-number="5" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="1" data-line="5" role="button" aria-label="Add line comment"></b> createSandbox <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib<span class="pl-pds">'</span></span>).createSandbox,</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R6" data-line-number="6" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="2" data-line="6" role="button" aria-label="Add line comment"></b> model <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/model<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R7" data-line-number="7" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="3" data-line="7" role="button" aria-label="Add line comment"></b> nock <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>nock<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L8" data-line-number="8" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="4" data-line="8" role="button" aria-label="Add line comment"></b>- sinon <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>sinon<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R8" data-line-number="8" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="5" data-line="8" role="button" aria-label="Add line comment"></b> transport <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/transport<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R9" data-line-number="9" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="6" data-line="9" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L11" data-line-number="11" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R10" data-line-number="10" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="7" data-line="10" role="button" aria-label="Add line comment"></b> suite(<span class="pl-s"><span class="pl-pds">'</span>Basic#send<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr class="js-expandable-line" data-position="8"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-d6ac4730119e3630c43967c1639d3845" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/58a70a07e4320a7d8a56ce293d00c0f44927c8be?diff=unified&left_hunk_size=12&mode=100644&next_line_num_left=33&next_line_num_right=32&path=test%2Funit%2Ftransport%2Fbasic_test.js&prev_line_num_left=11&prev_line_num_right=10&right_hunk_size=6" data-left-range="12-32" data-right-range="11-31"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-hunk">@@ -33,12 +32,6 @@ suite('Basic#send', function() {</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L33" data-line-number="33" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R32" data-line-number="32" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="9" data-line="32" role="button" aria-label="Add line comment"></b> assert.lengthOf(sandbox.requestList, <span class="pl-c1">1</span>);</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R33" data-line-number="33" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="10" data-line="33" role="button" aria-label="Add line comment"></b> });</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L35" data-line-number="35" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R34" data-line-number="34" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="11" data-line="34" role="button" aria-label="Add line comment"></b> </td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L36" data-line-number="36" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="12" data-line="36" role="button" aria-label="Add line comment"></b>- <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should apply `transformRequest`<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L37" data-line-number="37" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="13" data-line="37" role="button" aria-label="Add line comment"></b>- <span class="pl-k">var</span> stub <span class="pl-k">=</span> sinon.stub(req, <span class="pl-s"><span class="pl-pds">'</span>transformRequest<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L38" data-line-number="38" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="14" data-line="38" role="button" aria-label="Add line comment"></b>- xhr.<span class="pl-c1">send</span>(req, <span class="pl-s"><span class="pl-pds">'</span>http://127.0.0.1:1337<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L39" data-line-number="39" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="15" data-line="39" role="button" aria-label="Add line comment"></b>- sinon<span class="pl-c1">.assert</span>.called(stub);</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L40" data-line-number="40" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="16" data-line="40" role="button" aria-label="Add line comment"></b>- });</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L41" data-line-number="41" class="blob-num blob-num-deletion js-linkable-line-number"></td> + + <td class="blob-num blob-num-deletion empty-cell"></td> + + <td class="blob-code blob-code-deletion"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="17" data-line="41" role="button" aria-label="Add line comment"></b>-</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L42" data-line-number="42" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R35" data-line-number="35" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="18" data-line="35" role="button" aria-label="Add line comment"></b> <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should send req<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L43" data-line-number="43" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R36" data-line-number="36" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="19" data-line="36" role="button" aria-label="Add line comment"></b> <span class="pl-k">var</span> nockObj <span class="pl-k">=</span> nock(<span class="pl-s"><span class="pl-pds">'</span>http://127.0.0.1:1337<span class="pl-pds">'</span></span>)</td> + </tr> + + <tr> + <td id="diff-d6ac4730119e3630c43967c1639d3845L44" data-line-number="44" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td id="diff-d6ac4730119e3630c43967c1639d3845R37" data-line-number="37" class="blob-num blob-num-context js-linkable-line-number"></td> + + <td class="blob-code blob-code-context"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/basic_test.js" data-anchor="diff-d6ac4730119e3630c43967c1639d3845" data-position="20" data-line="37" role="button" aria-label="Add line comment"></b> .get(<span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span>)</td> + </tr> + + <tr class="js-expandable-line"> + <td class="blob-num blob-num-expandable" colspan="2"> + <a href="#diff-d6ac4730119e3630c43967c1639d3845" class="diff-expander js-expand" title="Expand" aria-label="Expand" data-url="/gaye/dav/blob_excerpt/58a70a07e4320a7d8a56ce293d00c0f44927c8be?diff=unified&mode=100644&path=test%2Funit%2Ftransport%2Fbasic_test.js&prev_line_num_left=44&prev_line_num_right=37" data-left-range="45-72" data-right-range="38-72"> + <span class="octicon octicon-unfold"></span> + </a> + </td> + <td class="blob-code blob-code-expandable"></td> + </tr> + + </tbody></table> + </div> + </div> + <a name="diff-15694877d36a3a3f613946158f7a0414"></a> + <div id="diff-22" class="file js-details-container + + + + + show-inline-notes + "> + <div class="file-header" data-path="test/unit/transport/set_request_headers_test.js"> + <div class="file-actions"> + <span class="show-file-notes"> + <label> + <input checked class="js-toggle-file-notes" type="checkbox"> + Show notes + </label> + </span> + + <a href="https://github.com/millermedeiros/dav/blob/simplify_requests/test/unit/transport/set_request_headers_test.js" class="btn btn-sm tooltipped tooltipped-n" rel="nofollow" aria-label="View the whole file">View</a> + + + <a href="#" class="octicon-btn disabled tooltipped tooltipped-nw" rel="nofollow" aria-label="You must be signed in and have push access to the simplify_requests branch to make changes."><span class="octicon octicon-pencil"></span></a> + </div> + <div class="file-info"> + <span class="diffstat tooltipped tooltipped-e" aria-label="35 additions & 0 deletions">35 <span class="diffstat-bar"><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span><span class="text-diff-added"></span></span></span> + + <span class="js-selectable-text" title="test/unit/transport/set_request_headers_test.js"> + test/unit/transport/set_request_headers_test.js + </span> + + </div> + </div> + + <div class="data highlight blob-wrapper"> + <table class="diff-table tab-size-8 "> + + <tbody><tr data-position="0"> + <td id="diff-15694877d36a3a3f613946158f7a0414L-1" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td id="diff-15694877d36a3a3f613946158f7a0414R0" class="blob-num blob-num-hunk non-expandable" data-line-number="..."></td> + <td class="blob-code blob-code-hunk">@@ -0,0 +1,35 @@</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R1" data-line-number="1" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="1" data-line="1" role="button" aria-label="Add line comment"></b>+<span class="pl-s"><span class="pl-pds">'</span>use strict<span class="pl-pds">'</span></span>;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R2" data-line-number="2" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="2" data-line="2" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R3" data-line-number="3" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="3" data-line="3" role="button" aria-label="Add line comment"></b>+<span class="pl-k">var</span> setRequestHeader <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>../../../lib/transport/set_request_header<span class="pl-pds">'</span></span>),</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R4" data-line-number="4" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="4" data-line="4" role="button" aria-label="Add line comment"></b>+ sinon <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>sinon<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R5" data-line-number="5" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="5" data-line="5" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R6" data-line-number="6" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="6" data-line="6" role="button" aria-label="Add line comment"></b>+suite(<span class="pl-s"><span class="pl-pds">'</span>setRequestHeader<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R7" data-line-number="7" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="7" data-line="7" role="button" aria-label="Add line comment"></b>+ <span class="pl-k">var</span> xhr;</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R8" data-line-number="8" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="8" data-line="8" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R9" data-line-number="9" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="9" data-line="9" role="button" aria-label="Add line comment"></b>+ setup(<span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R10" data-line-number="10" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="10" data-line="10" role="button" aria-label="Add line comment"></b>+ xhr <span class="pl-k">=</span> {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R11" data-line-number="11" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="11" data-line="11" role="button" aria-label="Add line comment"></b>+ setRequestHeader<span class="pl-k">:</span> sinon.spy()</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R12" data-line-number="12" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="12" data-line="12" role="button" aria-label="Add line comment"></b>+ };</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R13" data-line-number="13" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="13" data-line="13" role="button" aria-label="Add line comment"></b>+ });</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R14" data-line-number="14" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="14" data-line="14" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R15" data-line-number="15" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="15" data-line="15" role="button" aria-label="Add line comment"></b>+ <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should set Content-Type to XML by default<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R16" data-line-number="16" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="16" data-line="16" role="button" aria-label="Add line comment"></b>+ <span class="pl-c1">setRequestHeader</span>(xhr, { depth<span class="pl-k">:</span> <span class="pl-c1">undefined</span> });</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R17" data-line-number="17" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="17" data-line="17" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R18" data-line-number="18" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="18" data-line="18" role="button" aria-label="Add line comment"></b>+ sinon<span class="pl-c1">.assert</span>.calledWithExactly(xhr.setRequestHeader,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R19" data-line-number="19" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="19" data-line="19" role="button" aria-label="Add line comment"></b>+ <span class="pl-s"><span class="pl-pds">'</span>Content-Type<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>application/xml;charset=utf-8<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R20" data-line-number="20" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="20" data-line="20" role="button" aria-label="Add line comment"></b>+ sinon<span class="pl-c1">.assert</span>.calledOnce(xhr.setRequestHeader);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R21" data-line-number="21" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="21" data-line="21" role="button" aria-label="Add line comment"></b>+ });</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R22" data-line-number="22" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="22" data-line="22" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R23" data-line-number="23" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="23" data-line="23" role="button" aria-label="Add line comment"></b>+ <span class="pl-c1">test</span>(<span class="pl-s"><span class="pl-pds">'</span>should set depth and etag if provided<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R24" data-line-number="24" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="24" data-line="24" role="button" aria-label="Add line comment"></b>+ <span class="pl-c1">setRequestHeader</span>(xhr, { depth<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>1234<span class="pl-pds">'</span></span>, etag<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>789<span class="pl-pds">'</span></span> });</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R25" data-line-number="25" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="25" data-line="25" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R26" data-line-number="26" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="26" data-line="26" role="button" aria-label="Add line comment"></b>+ sinon<span class="pl-c1">.assert</span>.calledWithExactly(xhr.setRequestHeader,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R27" data-line-number="27" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="27" data-line="27" role="button" aria-label="Add line comment"></b>+ <span class="pl-s"><span class="pl-pds">'</span>Content-Type<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>application/xml;charset=utf-8<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R28" data-line-number="28" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="28" data-line="28" role="button" aria-label="Add line comment"></b>+ sinon<span class="pl-c1">.assert</span>.calledWithExactly(xhr.setRequestHeader,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R29" data-line-number="29" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="29" data-line="29" role="button" aria-label="Add line comment"></b>+ <span class="pl-s"><span class="pl-pds">'</span>Depth<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>1234<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R30" data-line-number="30" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="30" data-line="30" role="button" aria-label="Add line comment"></b>+ sinon<span class="pl-c1">.assert</span>.calledWithExactly(xhr.setRequestHeader,</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R31" data-line-number="31" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="31" data-line="31" role="button" aria-label="Add line comment"></b>+ <span class="pl-s"><span class="pl-pds">'</span>If-Match<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>789<span class="pl-pds">'</span></span>);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R32" data-line-number="32" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="32" data-line="32" role="button" aria-label="Add line comment"></b>+ sinon<span class="pl-c1">.assert</span>.calledThrice(xhr.setRequestHeader);</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R33" data-line-number="33" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="33" data-line="33" role="button" aria-label="Add line comment"></b>+ });</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R34" data-line-number="34" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="34" data-line="34" role="button" aria-label="Add line comment"></b>+</td> + </tr> + + <tr> + <td class="blob-num blob-num-addition empty-cell"></td> + + <td id="diff-15694877d36a3a3f613946158f7a0414R35" data-line-number="35" class="blob-num blob-num-addition js-linkable-line-number"></td> + + <td class="blob-code blob-code-addition"><b class="add-line-comment octicon octicon-plus js-add-line-comment js-add-single-line-comment" data-path="test/unit/transport/set_request_headers_test.js" data-anchor="diff-15694877d36a3a3f613946158f7a0414" data-position="35" data-line="35" role="button" aria-label="Add line comment"></b>+});</td> + </tr> + + + </tbody></table> + </div> + </div> +</div> + +<button class="js-toggle-all-file-notes" data-hotkey="i" style="display:none">Toggle all file notes</button> + + </div> + + + + <div class="clearfix"></div> + + + </div> + +</div> + +</div> + + + </div> + + </div><!-- /.repo-container --> + <div class="modal-backdrop"></div> + </div><!-- /.container --> + </div><!-- /.site --> + + + </div><!-- /.wrapper --> + + <div class="container"> + <div class="site-footer" role="contentinfo"> + <ul class="site-footer-links right"> + <li><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li> + <li><a href="https://developer.github.com/" data-ga-click="Footer, go to api, text:api">API</a></li> + <li><a href="https://training.github.com/" data-ga-click="Footer, go to training, text:training">Training</a></li> + <li><a href="https://shop.github.com/" data-ga-click="Footer, go to shop, text:shop">Shop</a></li> + <li><a href="https://github.com/blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li> + <li><a href="https://github.com/about" data-ga-click="Footer, go to about, text:about">About</a></li> + + </ul> + + <a href="https://github.com/" aria-label="Homepage"> + <span class="mega-octicon octicon-mark-github" title="GitHub"></span> +</a> + <ul class="site-footer-links"> + <li>© 2015 <span title="0.80323s from github-fe117-cp1-prd.iad.github.net">GitHub</span>, Inc.</li> + <li><a href="https://github.com/site/terms" data-ga-click="Footer, go to terms, text:terms">Terms</a></li> + <li><a href="https://github.com/site/privacy" data-ga-click="Footer, go to privacy, text:privacy">Privacy</a></li> + <li><a href="https://github.com/security" data-ga-click="Footer, go to security, text:security">Security</a></li> + <li><a href="https://github.com/contact" data-ga-click="Footer, go to contact, text:contact">Contact</a></li> + </ul> + </div> +</div> + + + <div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay"> + <div class="fullscreen-container js-suggester-container"> + <div class="textarea-wrap"> + <textarea name="fullscreen-contents" id="fullscreen-contents" class="fullscreen-contents js-fullscreen-contents" placeholder=""></textarea><img style="cursor: pointer ! important; display: none ! important; position: absolute ! important; padding: 0px ! important; margin: 0px ! important; border: medium none ! important; width: 28px ! important; height: 14px ! important; opacity: 0.0152174 ! important;" title="It's All Text!" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAOCAYAAAA8E3wEAAADdklEQVQ4y42UP4xVRRjFfzP37q7LxgBvV8FEjDEhxsJEo52VFhqpNBTIkqgFyZIIFhLtqdRCo3aiW5gYlMQoHYmxtsFCAyJ/tsDg7sLuu/fy3p25f969830W7/qWECCeZv5lzplv5pwxdPhjRSLnwsKunn1oz2573hhouAMKGO4LEfAOshSKspbBoHrh4qXLmqSJ29i8eTUGuLSmkc/lZV+Ew6mVfdkQrLFsm42Iok5BAHs7893HbaPkLlCPoB1pSDJ/0kZT/xRFfa6pq89igNzr3rblvbrS51eHzQNtgDiyTE0ZDAZF7l/eHUsqigIiMpUXzd7c17uq0tkgOhMDOK9HEV5qgrWuMBhtsSZgLKhKx6YdW9c3sPjaTk79lG31z2QTcWMgBPCFzKRpPp9lG3tnZnc8HQPMbrPvJH2hqi31KBBC6Db+d3TZqgTGbN0gL8ftl6dSUEVRDh+YZ/l0hqoQdMo0TRMVZbHn0cefPWsBNjchHxqyLJC7Ed4HfCnseWSapcUeCzsjvFd8qTy8EPPW/h0sLc4D4AvBF4GlxR6+EI4cWiCODUuHevhSqWtoW0Oa9Kdurq9FFmAjgf4tQzaoGDohL5W8EPa9+CBfn07Z/+oO8lLIC+H1V7bzw9khX32fjisshNxvVXviiw0ATny+gSvGe1wR8N6RpCkxQJJAXYIvAqGVzgCGIMrhAz1EFO8VjNK2yoXLFdLdsi8UdCzovUyM4wtBEeqyJEv7eO/wvhgLrq+ViLSENhCCTnweWcOnywkr10YTKw69ML8zZnZmnAnnQ/em4IqxwUQUG0E2aMhv9VlbvUI+6DM3l4wFs4EbP7gqop1hUD5Z7nPkYI+5bZY3j6+CEc78POTdt3vMTHeChU4M5EoFBGsNH76/izeOnmdzfYUsXSVIzI31CycNwIFj1z4ObftBWQ5QgWh6DmuiLUd2V3Z7Oia4Y05VCKFmVCa4wTWGyZ9UfoO6HmQqo5MxQOnzi8PB+mXvkidDqLHRLNZOd4E3d0m33iX93Zq2NPUAN7hK5a6DtkgYFSKjK8ba6zHA9b9/+7FtysfqKj/YjIqnmtYRGo+G6h7k94aqoKFGpUIlYKK41VD9ZZBvMHw3+ZCeeO6j7ah5JoSw38zsPqahIrTlVuj/t2BAZUSo+4TRjd+ldedsNP2tBvdrsvpL+y+TkkabJ8Dt4AAAAABJRU5ErkJggg=="> + <div class="suggester-container"> + <div class="suggester fullscreen-suggester js-suggester js-navigation-container"></div> + </div> + </div> + </div> + <div class="fullscreen-sidebar"> + <a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped tooltipped-w" aria-label="Exit Zen Mode"> + <span class="mega-octicon octicon-screen-normal"></span> + </a> + <a href="#" class="theme-switcher js-theme-switcher tooltipped tooltipped-w" aria-label="Switch themes"> + <span class="octicon octicon-color-mode"></span> + </a> + </div> +</div> + + + + + + + <div id="ajax-error-message" class="flash flash-error"> + <span class="octicon octicon-alert"></span> + <a href="#" class="octicon octicon-x flash-close js-ajax-error-dismiss" aria-label="Dismiss error"></a> + Something went wrong with that request. Please try again. + </div> + + + <script crossorigin="anonymous">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> + <script async="async" crossorigin="anonymous">data:application/javascript;base64,LyogU2NyaXB0IHJlbW92ZWQgYnkgc25hcHNob3Qgc2F2ZSAqLw0K</script> + + + + + + + + <div class="facebox" id="facebox" style="display:none;"> <div class="facebox-popup"> <div class="facebox-content"> </div> <button type="button" class="facebox-close js-facebox-close" aria-label="Close modal"> <span class="octicon octicon-remove-close"></span> </button> </div> </div></body></html>
\ No newline at end of file |