<h1>Project "FreeSWITCH user-contributed scripts, etc" received a push.</h1>

<h2>branch: master updated</h2>
<pre>
       via: 9ff716208ae05c3e9cb55d639243371e8553bb17 (commit)
       via: 93112a4f782c3e44108439e6fdeb7789482735d4 (commit)
       via: 32250fa69ff8b942ca99c4eaabafde285cc27c9a (commit)
       via: b98a258f545eea7976d80c2bb6450a73caa9dd3c (commit)
       via: 55ef55a5a9e951b26c52b3d2f0e5f902e568f1f9 (commit)
       via: ca8489d71e127d5ff7beafbd91bcf5f9c683dd8d (commit)
       via: 0cb41713987185aec7f42c9cff174b6d2757e460 (commit)
       via: c2e63f1d8fc269cf17bd85d534c9099af8a454b6 (commit)
       via: ee436d35144c7d85629d2c7356db64d5f392d1ff (commit)
       via: abd1a5786ac8079d735ede53515dbaedd8324acd (commit)
       via: d850c3f8a176e25142ee03cf316f4f19204837ea (commit)
       via: c780da02444472e37aee420dbb3087c232094d4e (commit)
       via: 90edbdd8fa5095b59024bbe41e3291c460d5a929 (commit)
       via: d9ed290a32fd5dfd4401b02652e07c892126d7c6 (commit)
       via: 0ad7de6241a7ed8f208ce82cfe39e27ba3a848ac (commit)
       via: 078d663ef932223e27db8166e074cc4f4542a339 (commit)
       via: 4bebf82901b579b38a58642bf4e409db912f33bb (commit)
       via: 0d3117dc3c66448cd5b7f5219198d57865329619 (commit)
       via: 7342c77d10810960f49fc5213db4a23dc203fd7a (commit)
       via: 9ecdde39b5fb94c4708b530a7c90e82900ff15ed (commit)
       via: 69415c934e4b3dc70b22816aa847706336c442f5 (commit)
       via: 8b7b83f0a42fc7cce5deaacd1c3a56f76c392175 (commit)
       via: 7f89d85adb464f103abda4c3cee75a10f9515921 (commit)
       via: 68d384edcbabcac7e4058bbf26f409817d2c4505 (commit)
       via: f763d39469b5e2c75ca9ba0ce3aa702cd31d02ab (commit)
       via: 9d2159f50948fd24df3a8bd2cfca6b134fb06643 (commit)
       via: 215d28aad12526e59f86e03e62b4a44def0bb0c9 (commit)
       via: 24d4ad4efc9304067e70ef087ff723b9d996c49c (commit)
       via: f242d90a8febb1151c3e52998e3af08780345026 (commit)
       via: 6ca02e4ccb7d608a626e21141c8addd140b71a8e (commit)
       via: 2d3389c92b55f5e357347a78d00f11c3a39095c3 (commit)
       via: 12fdbfc7fdc9250384678c220f83c18750e1c7a5 (commit)
       via: 05607e2921107e506212e5dc4682f741e5a2094d (commit)
       via: dd717e22ac45a6f98df556058eb7f86f98e2f529 (commit)
       via: d9b852ba104ca8ae88795008c476c9938a14e60d (commit)
       via: 6c763424234f10968f440d663e4ee484d221fe32 (commit)
       via: c0c365936eab87719433e1e96c4fbf4adf7c9e47 (commit)
       via: eadf3dc00f690257a7ee04949bc5b676cb6b622f (commit)
       via: 729cc6d3ea25ff83efa9f1cb344cf066eee69efe (commit)
       via: d55d498c5d54b30055551e683d5e28b6bf2253f8 (commit)
       via: 44e02296787e6776b62d528872eed216c8835fc6 (commit)
       via: 2136632a9d3d3210edcb0296616b51f093505809 (commit)
       via: 577fc9ba2ce176c24897eac5382d4c8239f204f0 (commit)
       via: c79712dc7b6516c7cf866566558bd90a8b3019f8 (commit)
       via: 3fda7b4ada645ac361dac8e55ac7cafe94ae7287 (commit)
       via: 3d9d46652b597fd6360129de9c986491a58c5610 (commit)
       via: 12801e42e4655416b73cb7a206c60e5c66d34e10 (commit)
       via: d2a9bb867d3c01d38ea12fa655b65ad68c0b24e0 (commit)
       via: faf08b1841ee3f0807afd3d886066aeb3776f739 (commit)
       via: 0405d1fb7209050a0fa1cc0718c0aeee61191a95 (commit)
       via: 7896938aefaf21adc42a01b4d8e9dd3d42ffbc82 (commit)
       via: 9c0deb98bbc4aa6a9e5e6f792e911b550f4db83f (commit)
       via: 0bff16bee499925e83339750a0ce5c1386fc0048 (commit)
       via: 9858ca1c2a2fda5d56f268a6e359e207eedde6ab (commit)
       via: 98ea43c3681dd0263dcf027aef3437732e0682e1 (commit)
       via: 9aa2f07c369938230c5c4b8b61b67b1c53749efe (commit)
       via: cfaca250a7c49387abd98ef3fbd7124efb02d422 (commit)
       via: b6c998685330b7c689cd08726438271ac68f0361 (commit)
       via: 75bbd885eb1eef0bcfea9b5371557823ca584522 (commit)
       via: 274a7dd627ab98012ebf26c68c0ed5f440fa9033 (commit)
       via: 2bd0da508187e942e4c906275e286cefedb3a62e (commit)
       via: 48590eca54e7c93ef987768a24a844dfd72986d1 (commit)
       via: 594536af195a45e9515ff1c40979a3f036934e49 (commit)
       via: 4a414482ddc08fe77a42daab560a1bd860235154 (commit)
       via: 3f2c531df509383cd93d9ae4379bfb656a969c7e (commit)
       via: fc1ff4f95853eb0a66db9b3658f596c19f8e66c4 (commit)
       via: 4277bdbadddb4bd6bd034812a4f59db60bd6e2aa (commit)
       via: 5247b0c1000e9aa6e642cdd238396d679d7c6bb3 (commit)
       via: 09778f943674b470c51a636aa8e3e3b22589708e (commit)
       via: 007d9a09df8e52d540e46eb009b44f69121fc275 (commit)
       via: f3c9f291d9c4854ff8c17e81552d9ed2a4c3b1e5 (commit)
       via: 9815e2a0df6b765a401a8572abffd9fdaebc7445 (commit)
       via: 39a9310bb19111abd30bc321486131ee6c192419 (commit)
       via: e2b54d344ba3c45ad021c55c622de2435d26f760 (commit)
       via: ad1abfb06540e554b8798fd1569576e5324ee4f1 (commit)
       via: dba9490db801a8203ae10be142cfe9cc52c467da (commit)
       via: 88e84105b037d43dbbeef108fceb97f83d1e758a (commit)
       via: e0701b3b4cfc9b24182a649ab4b9c7831d35deda (commit)
       via: 30bc2ff4614fd7c90f7fa09ff70fc1d8cad60d0b (commit)
       via: 41614caf79c0f8b391edb387c5fa956b2b04779e (commit)
       via: 093784f337adf048e03b8532ce2f6a05f1c508ee (commit)
       via: 2099249f0382f35538438dd7aa8e8d66a0524acf (commit)
       via: b01aff5a42c014303620a0c91e2c2ab7445b7b58 (commit)
       via: 4d72a146079811b6082465e83b78b5ea75c37f14 (commit)
      from: a4349bbeba56858b0c17f8b69ed69ecebba0bc58 (commit)


</pre>= COMMIT LOG ===========================================================
<div class="highlight"><pre>committer: Chad Phillips
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Added option to delete contacts

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/SimpleContactPluginBase.cs b/mitchcapper/FSClient/SimpleContactPluginBase.cs</span>
<span style="color: #000080; font-weight: bold">index 3c1b33b..66c3918 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/SimpleContactPluginBase.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/SimpleContactPluginBase.cs</span>
<span style="color: #800080; font-weight: bold">@@ -23,6 +23,12 @@ namespace FSClient</span>
                 {
                         return number;
                 }
<span style="color: #00A000">+                protected virtual void DeleteNumber(string number){</span>
<span style="color: #00A000">+                        number_to_alias.Remove(number);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                protected virtual bool CanDeleteContact(){</span>
<span style="color: #00A000">+                        return true;</span>
<span style="color: #00A000">+                }</span>
                 protected virtual string IsValidAlias(String str)//return null to abort updating, otherwire return string
                 { 
                         return str;
<span style="color: #800080; font-weight: bold">@@ -49,14 +55,34 @@ namespace FSClient</span>
                         MenuItem item = new MenuItem();
                         item.Click += item_Click;
                         item.Header = &quot;Edit Contact&quot;;
<span style="color: #A00000">-                        items.Add(item);</span>
<span style="color: #00A000">+                        items.Add(item);</span>
<span style="color: #00A000">+                        if (CanDeleteContact()){</span>
<span style="color: #00A000">+                                item = new MenuItem();</span>
<span style="color: #00A000">+                                item.Click += delete_item_click;</span>
<span style="color: #00A000">+                                item.Header = &quot;Delete Contact&quot;;</span>
<span style="color: #00A000">+                                items.Add(item);</span>
<span style="color: #00A000">+                        }</span>
                         item = new MenuItem();
                         item.Click +=contact_call_click;
                         item.Header = &quot;Call&quot;;
                         items.Add(item);
                         return items;
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                private void delete_item_click(object sender, RoutedEventArgs e){</span>
<span style="color: #00A000">+                        MenuItem item = sender as MenuItem;</span>
<span style="color: #00A000">+                        if (item == null)</span>
<span style="color: #00A000">+                                return;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                        SearchAutoCompleteEntry entry = item.DataContext as SearchAutoCompleteEntry ?? search_box.SelectedItem as SearchAutoCompleteEntry;</span>
<span style="color: #00A000">+                        if (entry == null)</span>
<span style="color: #00A000">+                                return;</span>
<span style="color: #00A000">+                        String number = entry.number;</span>
<span style="color: #00A000">+                        number = NormalizeNumber(number);</span>
<span style="color: #00A000">+                        DeleteNumber(number);</span>
<span style="color: #00A000">+                        refresh_search_box();</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+</span>
                 private void contact_call_click(object sender, RoutedEventArgs e){
                         MenuItem item = sender as MenuItem;
                         if (item == null)
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.cs b/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.cs</span>
<span style="color: #000080; font-weight: bold">index 55da854..3077954 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.cs</span>
<span style="color: #800080; font-weight: bold">@@ -88,6 +88,10 @@ namespace SimpleXmlContactPlugin {</span>
                 
                 protected override void UpdateDatabase(string number, string alias){
                         SaveDatabase();
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                protected override void DeleteNumber(string number) {</span>
<span style="color: #00A000">+                        base.DeleteNumber(number);</span>
<span style="color: #00A000">+                        SaveDatabase();</span>
                 }
 
         }
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBortha: fix HTML form (hidden fields)

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #000080; font-weight: bold">index 1c0454a..feb98e8 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #800080; font-weight: bold">@@ -137,23 +137,28 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {</span>
 
                 foreach($form as $field) {
                         if ($field-&gt;get(&#39;visibility&#39;) === &#39;hidden&#39;) {
<span style="color: #A00000">-                                continue;</span>
<span style="color: #00A000">+                                $inputElement = $this-&gt;_xml-&gt;createElement(&#39;input&#39;);</span>
<span style="color: #00A000">+                                $inputElement = $formElement-&gt;appendChild($inputElement);</span>
<span style="color: #00A000">+                                $inputElement-&gt;setAttribute(&#39;name&#39;, $field-&gt;get(&#39;name&#39;));</span>
<span style="color: #00A000">+                                $inputElement-&gt;setAttribute(&#39;value&#39;, $field-&gt;get(&#39;value&#39;));</span>
<span style="color: #00A000">+                                $inputElement-&gt;setAttribute(&#39;type&#39;, &#39;hidden&#39;);</span>
<span style="color: #00A000">+                        } else {</span>
<span style="color: #00A000">+                                $trElement = $this-&gt;_xml-&gt;createElement(&#39;tr&#39;);</span>
<span style="color: #00A000">+                                $trElement = $tableElement-&gt;appendChild($trElement);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                                $tdElement1 = $this-&gt;_xml-&gt;createElement(&#39;th&#39;);</span>
<span style="color: #00A000">+                                $tdElement1 = $trElement-&gt;appendChild($tdElement1);</span>
<span style="color: #00A000">+                                $text1 = $this-&gt;_xml-&gt;createTextNode($field-&gt;get(&#39;display_name&#39;));</span>
<span style="color: #00A000">+                                $text1 = $tdElement1-&gt;appendChild($text1);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                                $tdElement2 = $this-&gt;_xml-&gt;createElement(&#39;td&#39;);</span>
<span style="color: #00A000">+                                $tdElement2 = $trElement-&gt;appendChild($tdElement2);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                                $inputElement = $this-&gt;_xml-&gt;createElement(&#39;input&#39;);</span>
<span style="color: #00A000">+                                $inputElement = $tdElement2-&gt;appendChild($inputElement);</span>
<span style="color: #00A000">+                                $inputElement-&gt;setAttribute(&#39;name&#39;, $field-&gt;get(&#39;name&#39;));</span>
<span style="color: #00A000">+                                $inputElement-&gt;setAttribute(&#39;value&#39;, $field-&gt;get(&#39;value&#39;));</span>
                         }
<span style="color: #A00000">-                        $trElement = $this-&gt;_xml-&gt;createElement(&#39;tr&#39;);</span>
<span style="color: #A00000">-                        $trElement = $tableElement-&gt;appendChild($trElement);</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-                        $tdElement1 = $this-&gt;_xml-&gt;createElement(&#39;th&#39;);</span>
<span style="color: #A00000">-                        $tdElement1 = $trElement-&gt;appendChild($tdElement1);</span>
<span style="color: #A00000">-                        $text1 = $this-&gt;_xml-&gt;createTextNode($field-&gt;get(&#39;display_name&#39;));</span>
<span style="color: #A00000">-                        $text1 = $tdElement1-&gt;appendChild($text1);</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-                        $tdElement2 = $this-&gt;_xml-&gt;createElement(&#39;td&#39;);</span>
<span style="color: #A00000">-                        $tdElement2 = $trElement-&gt;appendChild($tdElement2);</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-                        $inputElement = $this-&gt;_xml-&gt;createElement(&#39;input&#39;);</span>
<span style="color: #A00000">-                        $inputElement = $tdElement2-&gt;appendChild($inputElement);</span>
<span style="color: #A00000">-                        $inputElement-&gt;setAttribute(&#39;name&#39;, $field-&gt;get(&#39;name&#39;));</span>
<span style="color: #A00000">-                        $inputElement-&gt;setAttribute(&#39;value&#39;, $field-&gt;get(&#39;value&#39;));</span>
                 }
 
                 $trElement = $this-&gt;_xml-&gt;createElement(&#39;tr&#39;);
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBrotha: LDAP search and result

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #000080; font-weight: bold">index 2b04351..a1a0e98 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #800080; font-weight: bold">@@ -50,16 +50,22 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {</span>
 
         // Browsing
         public function mediaFromBufferItem($entry) {
<span style="color: #A00000">-                if ($entry) {</span>
<span style="color: #A00000">-                        $media = new MediaBrotha_Media(</span>
<span style="color: #00A000">+                if (is_a($entry, &#39;Net_LDAP2_Entry&#39;)) {</span>
<span style="color: #00A000">+                        return new MediaBrotha_Media(</span>
                                 &#39;ldap:///&#39;.$entry-&gt;dn(),
                                 Array(
                                         &#39;display_name&#39; =&gt; $entry-&gt;dn(), //$entry-&gt;getValue(&#39;sn&#39;, &#39;single&#39;),
                                 ),
                                 &#39;text/directory&#39;
<span style="color: #A00000">-                                //$finfo-&gt;file($file-&gt;getPathname(), FILEINFO_MIME_ENCODING);</span>
                         );
<span style="color: #A00000">-                        return $media;</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        return new MediaBrotha_Media(</span>
<span style="color: #00A000">+                                &#39;ldap:///&#39;,</span>
<span style="color: #00A000">+                                Array(</span>
<span style="color: #00A000">+                                        &#39;display_name&#39; =&gt; $entry[0].&#39;: &#39;.$entry[1],</span>
<span style="color: #00A000">+                                ),</span>
<span style="color: #00A000">+                                &#39;text/directory&#39;</span>
<span style="color: #00A000">+                        );</span>
                 }
         }
 
<span style="color: #800080; font-weight: bold">@@ -73,8 +79,10 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {</span>
                 if ($this-&gt;_isHandled($media)) {
                         return Array(
                                 &#39;_default&#39;,
<span style="color: #00A000">+                                &#39;detail&#39;,</span>
                                 &#39;browse&#39;,
                                 &#39;search&#39;,
<span style="color: #00A000">+                                &#39;_search-result&#39;,</span>
                         );
                 } else {
                         return parent::getMediaActions($media);
<span style="color: #800080; font-weight: bold">@@ -92,13 +100,48 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {</span>
                                 if ($basedn &amp;&amp; ($basedn{0} = &#39;/&#39;)) {
                                         $basedn = substr($basedn, 1);
                                 }
<span style="color: #A00000">-                                $ldap_search = $this-&gt;_ldap-&gt;search($basedn, NULL,</span>
<span style="color: #A00000">-                                        Array());</span>
<span style="color: #00A000">+                                $ldap_search = $this-&gt;_ldap-&gt;search($basedn, NULL, Array());</span>
                                 return new MediaBrotha_MediaIterator($this, $ldap_search);
<span style="color: #00A000">+                        case &#39;detail&#39;:</span>
<span style="color: #00A000">+                                $uri = $media-&gt;getURI();</span>
<span style="color: #00A000">+                                if (($this::parseLDAPURI($uri, PHP_URL_SCHEME) != &#39;ldap&#39;) || !$this-&gt;isURISafe($uri)) {</span>
<span style="color: #00A000">+                                        return false;</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                                $basedn = $this::parseLDAPURI($uri, PHP_URL_PATH);</span>
<span style="color: #00A000">+                                if ($basedn &amp;&amp; ($basedn{0} = &#39;/&#39;)) {</span>
<span style="color: #00A000">+                                        $basedn = substr($basedn, 1);</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                                $ldap_entry = $this-&gt;_ldap-&gt;getEntry($basedn);</span>
<span style="color: #00A000">+                                $it = new ArrayIterator();</span>
<span style="color: #00A000">+                                foreach ($ldap_entry-&gt;attributes() as $attr) {</span>
<span style="color: #00A000">+                                        foreach($ldap_entry-&gt;getValue($attr, &#39;all&#39;) as $value) {</span>
<span style="color: #00A000">+                                                $it[] = Array($attr, $value);</span>
<span style="color: #00A000">+                                        }</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                                return new MediaBrotha_MediaIterator($this, $it);</span>
                         case &#39;_default&#39;:
                         case &#39;search&#39;:
<span style="color: #00A000">+                        case &#39;_search-result&#39;:</span>
                                 $form =  new MediaBrotha_Form();
                                 $form-&gt;setTitle(&#39;search&#39;);
<span style="color: #00A000">+                                $form-&gt;addField(Array(</span>
<span style="color: #00A000">+                                        &#39;name&#39; =&gt; &#39;backend&#39;,</span>
<span style="color: #00A000">+                                        &#39;value&#39; =&gt; &#39;LDAP&#39;,</span>
<span style="color: #00A000">+                                        &#39;visibility&#39; =&gt; &#39;hidden&#39;,</span>
<span style="color: #00A000">+                                        )</span>
<span style="color: #00A000">+                                );</span>
<span style="color: #00A000">+                                $form-&gt;addField(Array(</span>
<span style="color: #00A000">+                                        &#39;name&#39; =&gt; &#39;action&#39;,</span>
<span style="color: #00A000">+                                        &#39;value&#39; =&gt; &#39;_search-result&#39;,</span>
<span style="color: #00A000">+                                        &#39;visibility&#39; =&gt; &#39;hidden&#39;,</span>
<span style="color: #00A000">+                                        )</span>
<span style="color: #00A000">+                                );</span>
<span style="color: #00A000">+                                $form-&gt;addField(Array(</span>
<span style="color: #00A000">+                                        &#39;name&#39; =&gt; &#39;uri&#39;,</span>
<span style="color: #00A000">+                                        &#39;value&#39; =&gt; &#39;ldap://&#39;,</span>
<span style="color: #00A000">+                                        &#39;visibility&#39; =&gt; &#39;hidden&#39;,</span>
<span style="color: #00A000">+                                        )</span>
<span style="color: #00A000">+                                );</span>
                                 $search_fields = Array(
                                         &#39;sn&#39;              =&gt; Array(&#39;display_name&#39; =&gt; &#39;last name&#39;),
                                         &#39;givenName&#39;       =&gt; Array(&#39;display_name&#39; =&gt; &#39;first name&#39;),
<span style="color: #800080; font-weight: bold">@@ -124,22 +167,15 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {</span>
                                         }
                                         $form-&gt;addField($field);
                                 }
<span style="color: #A00000">-                                if (empty($_GET[&#39;ldap_search&#39;])) {</span>
<span style="color: #A00000">-                                        MediaBrotha_Core::addCallback(&#39;MediaBrotha_Backend_LDAP::searchCallback&#39;);</span>
<span style="color: #00A000">+                                if ($action !== &#39;_search-result&#39;) {</span>
                                         return $form;
                                 } else {
<span style="color: #A00000">-                                        $ldap_search = $this-&gt;_ldap-&gt;search(NULL, $filter,</span>
<span style="color: #A00000">-                                                Array(&#39;scope&#39; =&gt; &#39;sub&#39;));</span>
<span style="color: #00A000">+                                        $ldap_search = $this-&gt;_ldap-&gt;search(NULL, $filter, Array(&#39;scope&#39; =&gt; &#39;sub&#39;));</span>
                                         return new MediaBrotha_MediaIterator($this, $ldap_search);
                                 }
                         default:
                                 return parent::doMediaAction($action, $media);
                 }
         }
<span style="color: #A00000">-        static public function searchCallback() {</span>
<span style="color: #A00000">-                $_GET[&#39;backend&#39;] = &#39;LDAP&#39;;</span>
<span style="color: #A00000">-                $_GET[&#39;action&#39;] = &#39;search&#39;;</span>
<span style="color: #A00000">-                $_GET[&#39;ldap_search&#39;] = &#39;1&#39;;</span>
<span style="color: #A00000">-        }</span>
 }
 
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBrotha: avoid error on first connection because of unset session

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #000080; font-weight: bold">index 9e53e13..7758a55 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #800080; font-weight: bold">@@ -202,6 +202,8 @@ class MediaBrotha_Core {</span>
                 if ($v = MediaBrotha_Core::hash2value($h)) {
                         parse_str($v, $output);
                         return $output;
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        return Array();</span>
                 }
         }
 
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBrotha: add ability to pass params by using hidden fields

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Form.php b/sathieu/cisco-xml/lib/MediaBrotha/Form.php</span>
<span style="color: #000080; font-weight: bold">index 08dd4c6..509341a 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Form.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Form.php</span>
<span style="color: #800080; font-weight: bold">@@ -40,6 +40,7 @@ class MediaBrotha_Field {</span>
 
 class MediaBrotha_Form extends ArrayIterator {
         private $_title;
<span style="color: #00A000">+</span>
         public function getTitle() {
                 return $this-&gt;_title;
         }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #000080; font-weight: bold">index d859829..0f31ee1 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #800080; font-weight: bold">@@ -72,11 +72,20 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {</span>
         }
 
         public function renderForm(MediaBrotha_Form $form) {
<span style="color: #00A000">+                foreach($form as $field) {</span>
<span style="color: #00A000">+                        if ($field-&gt;get(&#39;visibility&#39;) === &#39;hidden&#39;) {</span>
<span style="color: #00A000">+                                $params[$field-&gt;get(&#39;name&#39;)] = $field-&gt;get(&#39;value&#39;);</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                }</span>
                 $xml = new CiscoIPPhoneInput();
                 $xml-&gt;setCiscoElement(&#39;Title&#39;, $form-&gt;getTitle());
                 //$xml-&gt;setCiscoElement(&#39;Prompt&#39;, ...);
<span style="color: #A00000">-                $xml-&gt;setCiscoElement(&#39;URL&#39;, $this-&gt;rootURL());</span>
<span style="color: #00A000">+                $xml-&gt;setCiscoElement(&#39;URL&#39;, $this-&gt;rootURL().&#39;?&#39;.MediaBrotha_Core::value2hash(http_build_query($params)));</span>
<span style="color: #00A000">+                $params = Array();</span>
                 foreach($form as $field) {
<span style="color: #00A000">+                        if ($field-&gt;get(&#39;visibility&#39;) === &#39;hidden&#39;) {</span>
<span style="color: #00A000">+                                continue;</span>
<span style="color: #00A000">+                        }</span>
                         $flags = &#39;A&#39;;
                         $xml-&gt;setCiscoElement(&#39;InputItem&#39;,
                                 Array(
<span style="color: #800080; font-weight: bold">@@ -88,6 +97,19 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {</span>
                         );
                         
                 }
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Search&#39;,</span>
<span style="color: #00A000">+                        &#39;URL&#39; =&gt; &#39;SoftKey:Submit&#39;,</span>
<span style="color: #00A000">+                        &#39;Position&#39; =&gt; 1));</span>
<span style="color: #00A000">+                $xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;&lt;&lt;&#39;,</span>
<span style="color: #00A000">+                        &#39;URL&#39; =&gt; &#39;SoftKey:&lt;&lt;&#39;,</span>
<span style="color: #00A000">+                        &#39;Position&#39; =&gt; 2));</span>
<span style="color: #00A000">+                $xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Exit&#39;,</span>
<span style="color: #00A000">+                        &#39;URL&#39; =&gt; &#39;SoftKey:Exit&#39;,</span>
<span style="color: #00A000">+                        &#39;Position&#39; =&gt; 3));</span>
                 CiscoXMLObject::HttpHeader();
                 print $xml;
         }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #000080; font-weight: bold">index c1ea4df..1c0454a 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #800080; font-weight: bold">@@ -56,6 +56,7 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {</span>
 
         private function _createHTMLDocument($title) {
                 $this-&gt;_xml = new DOMDocument(&#39;1.0&#39;);
<span style="color: #00A000">+                $this-&gt;_xml-&gt;formatOutput = true;</span>
                 $root = $this-&gt;_xml-&gt;createElement(&#39;html&#39;);
                 $root = $this-&gt;_xml-&gt;appendChild($root);
 
<span style="color: #800080; font-weight: bold">@@ -135,6 +136,9 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {</span>
                 $tableElement = $formElement-&gt;appendChild($tableElement);
 
                 foreach($form as $field) {
<span style="color: #00A000">+                        if ($field-&gt;get(&#39;visibility&#39;) === &#39;hidden&#39;) {</span>
<span style="color: #00A000">+                                continue;</span>
<span style="color: #00A000">+                        }</span>
                         $trElement = $this-&gt;_xml-&gt;createElement(&#39;tr&#39;);
                         $trElement = $tableElement-&gt;appendChild($trElement);
 
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBrotha: add ability to force Cisco-XML mode

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #000080; font-weight: bold">index 0da1cc3..82226f4 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #800080; font-weight: bold">@@ -26,7 +26,7 @@ This file is part of XML services for Cisco IP Phones.</span>
 class CiscoIPPhone {
         static public function userAgentIsCiscoIPPhone() {
                 if (isset($_SERVER[&#39;HTTP_USER_AGENT&#39;])) {
<span style="color: #A00000">-                        return preg_match(&#39;/^Allegro-Software-WebClient\//&#39;, $_SERVER[&#39;HTTP_USER_AGENT&#39;]);</span>
<span style="color: #00A000">+                        return preg_match(&#39;/^Allegro-Software-WebClient\//&#39;, $_SERVER[&#39;HTTP_USER_AGENT&#39;]) || isset($_GET[&#39;forceciscoxml&#39;]);</span>
                 }
 
         }
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBrotha:
<span style="color: #A00000">- do not display the _default action</span>
<span style="color: #A00000">- ensure session arrays are set</span>
<span style="color: #A00000">- limit MenuItem &gt; Name to 64 chars</span>
<span style="color: #A00000">- Cisco IP Phone need a field flag of 1 char</span>

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #000080; font-weight: bold">index 8e56562..f85b59f 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #800080; font-weight: bold">@@ -67,6 +67,16 @@ abstract class MediaBrotha_Backend {</span>
         }
 
         // Actions
<span style="color: #00A000">+        final public function getVisibleMediaActions(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                $actions = Array();</span>
<span style="color: #00A000">+                foreach ($this-&gt;getMediaActions($media) as $action) {</span>
<span style="color: #00A000">+                        if ($action{0} !== &#39;_&#39;) {</span>
<span style="color: #00A000">+                                $actions[] = $action;</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                return $actions;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
         public function getMediaActions(MediaBrotha_Media $media) {
                 return Array();
         }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #000080; font-weight: bold">index f241c66..9e53e13 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #800080; font-weight: bold">@@ -43,6 +43,12 @@ class MediaBrotha_Core {</span>
                         if (!session_start()) {
                                 throw new Exception(&#39;Unable to start session&#39;);
                         }
<span style="color: #00A000">+                        if (!isset($_SESSION[&#39;HASHES&#39;])) {</span>
<span style="color: #00A000">+                                $_SESSION[&#39;HASHES&#39;] = Array();</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                        if (!isset($_SESSION[&#39;CALLBACK&#39;])) {</span>
<span style="color: #00A000">+                                $_SESSION[&#39;CALLBACK&#39;] = Array();</span>
<span style="color: #00A000">+                        }</span>
                         MediaBrotha_Core::_unhashRequest();
                         MediaBrotha_Core::loadBackend(&#39;Root&#39;);
                 } catch (Exception $e) {
<span style="color: #800080; font-weight: bold">@@ -200,9 +206,6 @@ class MediaBrotha_Core {</span>
         }
 
         private static function _unhashRequest() {
<span style="color: #A00000">-                if (!isset($_SESSION[&#39;HASHES&#39;])) {</span>
<span style="color: #A00000">-                        $_SESSION[&#39;HASHES&#39;] = Array();</span>
<span style="color: #A00000">-                }</span>
                 if (isset($_SERVER[&quot;QUERY_STRING&quot;])) {
                         $tmp = explode(&#39;&amp;&#39;, $_SERVER[&quot;QUERY_STRING&quot;]);
                         foreach ($tmp as $h) {
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #000080; font-weight: bold">index 1bf85b7..d859829 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #800080; font-weight: bold">@@ -43,7 +43,7 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {</span>
                                 ($item-&gt;getMimeEncoding() ? (&#39;mime_encoding=&#39;.urlencode($item-&gt;getMimeEncoding()).&#39;&amp;&#39;) : &#39;&#39;).
                                 &#39;uri=&#39;.urlencode($item-&gt;getURI()));
                 $this-&gt;_xml-&gt;setCiscoElement(&#39;MenuItem&#39;,
<span style="color: #A00000">-                        Array(&#39;Name&#39; =&gt; $item-&gt;getDisplayName(), &#39;URL&#39; =&gt; $url));</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; $item-&gt;getDisplayName(64), &#39;URL&#39; =&gt; $url));</span>
         }
         public function finish($item) {
                 $pos = 1;
<span style="color: #800080; font-weight: bold">@@ -52,7 +52,7 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {</span>
                         &#39;URL&#39; =&gt; &#39;SoftKey:Select&#39;,
                         &#39;Position&#39; =&gt; $pos++));
                 foreach (MediaBrotha_Core::getBackends() as $backend) {
<span style="color: #A00000">-                        foreach ($backend-&gt;getMediaActions($item) as $action) {</span>
<span style="color: #00A000">+                        foreach ($backend-&gt;getVisibleMediaActions($item) as $action) {</span>
                                 $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,
                                         Array(&#39;Name&#39; =&gt; $action,
                                         &#39;URL&#39; =&gt; &#39;QueryStringParam:&#39;.MediaBrotha_Core::value2hash(&#39;action=&#39;.$action.&#39;&amp;backend=&#39;.$backend-&gt;getBackendName()),
<span style="color: #800080; font-weight: bold">@@ -77,12 +77,13 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {</span>
                 //$xml-&gt;setCiscoElement(&#39;Prompt&#39;, ...);
                 $xml-&gt;setCiscoElement(&#39;URL&#39;, $this-&gt;rootURL());
                 foreach($form as $field) {
<span style="color: #00A000">+                        $flags = &#39;A&#39;;</span>
                         $xml-&gt;setCiscoElement(&#39;InputItem&#39;,
                                 Array(
                                         &#39;DisplayName&#39; =&gt; $field-&gt;get(&#39;display_name&#39;),
                                         &#39;QueryStringParam&#39; =&gt; $field-&gt;get(&#39;name&#39;),
                                         &#39;DefaultValue&#39; =&gt; $field-&gt;get(&#39;value&#39;),
<span style="color: #A00000">-                                        &#39;InputFlags&#39; =&gt; &#39;&#39;,</span>
<span style="color: #00A000">+                                        &#39;InputFlags&#39; =&gt; $flags,</span>
                                 )
                         );
                         
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #000080; font-weight: bold">index f6d4015..c1ea4df 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #800080; font-weight: bold">@@ -40,7 +40,7 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {</span>
                                 &#39;uri=&#39;.urlencode($media-&gt;getURI()));
 
                 foreach (MediaBrotha_Core::getBackends() as $backend) {
<span style="color: #A00000">-                        foreach ($backend-&gt;getMediaActions($media) as $action) {</span>
<span style="color: #00A000">+                        foreach ($backend-&gt;getVisibleMediaActions($media) as $action) {</span>
                                 $tag = $this-&gt;_xml-&gt;createElement($tag_name);
                                 $tag = $parent-&gt;appendChild($tag);
 
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Minor cleanup, removed options that were not needed, and stop debug logging.

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Broker.cs b/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #000080; font-weight: bold">index b97d932..959dc0d 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #800080; font-weight: bold">@@ -652,7 +652,7 @@ namespace FSClient {</span>
                         XmlUtils.AddNodeAttrib(config_node, &quot;name&quot;, name);
                         XmlUtils.AddNodeAttrib(config_node, &quot;description&quot;, desc);
                         func(config_node);
<span style="color: #A00000">-                        root_doc.Save(@&quot;c:\temp\fs_&quot; + name);</span>
<span style="color: #00A000">+                        //root_doc.Save(@&quot;c:\temp\fs_&quot; + name);</span>
                         return root_doc.OuterXml;
                 }
                 private string xml_search(FreeSWITCH.SwitchXmlSearchBinding.XmlBindingArgs args) {
<span style="color: #800080; font-weight: bold">@@ -674,9 +674,9 @@ namespace FSClient {</span>
                 private static IDisposable event_bind;
                 
                 private void fs_core_init() {
<span style="color: #A00000">-                        fs_inited = true;</span>
<span style="color: #A00000">-                        freeswitch.switch_core_set_globals();</span>
<span style="color: #00A000">+                        fs_inited = true;</span>
                         String err = &quot;&quot;;
<span style="color: #00A000">+                        freeswitch.switch_core_set_globals();</span>
                         const uint flags = (uint)(switch_core_flag_enum_t.SCF_USE_SQL | switch_core_flag_enum_t.SCF_USE_AUTO_NAT);
                         switch_status_t res = freeswitch.switch_core_init(flags, switch_bool_t.SWITCH_FALSE, ref err);
                         search_bind = FreeSWITCH.SwitchXmlSearchBinding.Bind(xml_search, switch_xml_section_enum_t.SWITCH_XML_SECTION_CONFIG);
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/External Items/conf/freeswitch.xml b/mitchcapper/FSClient/External Items/conf/freeswitch.xml</span>
<span style="color: #000080; font-weight: bold">index abd04ad..8c53be0 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/External Items/conf/freeswitch.xml        </span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/External Items/conf/freeswitch.xml        </span>
<span style="color: #800080; font-weight: bold">@@ -1,14 +1,8 @@</span>
 &lt;?xml version=&quot;1.0&quot;?&gt;
 &lt;document type=&quot;freeswitch/xml&quot;&gt;
<span style="color: #A00000">-        &lt;X-PRE-PROCESS cmd=&quot;set&quot; data=&quot;auto_answer=false&quot;/&gt;</span>
<span style="color: #A00000">-        &lt;X-PRE-PROCESS cmd=&quot;set&quot; data=&quot;domain=$${local_ip_v4}&quot;/&gt;</span>
         &lt;X-PRE-PROCESS cmd=&quot;set&quot; data=&quot;hold_music=local_stream://moh&quot;/&gt;
<span style="color: #A00000">-        &lt;X-PRE-PROCESS cmd=&quot;set&quot; data=&quot;external_rtp_ip=stun:stun.freeswitch.org&quot;/&gt;</span>
<span style="color: #A00000">-        &lt;X-PRE-PROCESS cmd=&quot;set&quot; data=&quot;external_sip_ip=stun:stun.freeswitch.org&quot;/&gt;</span>
         &lt;X-PRE-PROCESS cmd=&quot;set&quot; data=&quot;console_loglevel=info&quot;/&gt;
         &lt;X-PRE-PROCESS cmd=&quot;set&quot; data=&quot;us-ring=v=0;%(2000,4000,440.0,480.0)&quot;/&gt;
<span style="color: #A00000">-        &lt;X-PRE-PROCESS cmd=&quot;set&quot; data=&quot;bong-ring=v=-7;%(100,0,941.0,1477.0);v=-7;&gt;=2;+=.1;%(1400,0,350,440)&quot;/&gt;</span>
<span style="color: #A00000">-        &lt;X-PRE-PROCESS cmd=&quot;set&quot; data=&quot;sit=%(274,0,913.8);%(274,0,1370.6);%(380,0,1776.7)&quot;/&gt;</span>
 
         &lt;section name=&quot;configuration&quot; description=&quot;Various Configuration&quot;&gt;
                 &lt;configuration name=&quot;console.conf&quot; description=&quot;Console Logger&quot;&gt;
<span style="color: #800080; font-weight: bold">@@ -36,15 +30,12 @@</span>
                         &lt;/settings&gt;
                         &lt;profiles&gt;
                                 &lt;profile name=&quot;default&quot;&gt;
<span style="color: #A00000">-                                        &lt;settings&gt;</span>
<span style="color: #A00000">-                                        &lt;/settings&gt;</span>
                                         &lt;mappings&gt;
                                                 &lt;map name=&quot;all&quot; value=&quot;debug,info,notice,warning,err,crit,alert&quot;/&gt;
                                         &lt;/mappings&gt;
                                 &lt;/profile&gt;
                         &lt;/profiles&gt;
                 &lt;/configuration&gt;
<span style="color: #A00000">-</span>
                 &lt;configuration name=&quot;modules.conf&quot; description=&quot;Modules&quot;&gt;
                         &lt;modules&gt;
                                 &lt;load module=&quot;mod_console&quot;/&gt;
<span style="color: #800080; font-weight: bold">@@ -69,38 +60,20 @@</span>
                                 &lt;load module=&quot;mod_event_socket&quot;/&gt;
                         &lt;/modules&gt;
                 &lt;/configuration&gt;
<span style="color: #A00000">-</span>
                 &lt;configuration name=&quot;portaudio.conf&quot; description=&quot;Soundcard Endpoint&quot;&gt;
                   &lt;settings&gt;
<span style="color: #A00000">-                    &lt;param name=&quot;indev&quot; value=&quot;4&quot;/&gt;</span>
<span style="color: #A00000">-                    &lt;param name=&quot;outdev&quot; value=&quot;8&quot;/&gt;</span>
<span style="color: #A00000">-                                        &lt;param name=&quot;ringdev&quot; value=&quot;8&quot;/&gt;</span>
                                         &lt;param name=&quot;dual-streams&quot; value=&quot;true&quot; /&gt;
                                         &lt;param name=&quot;live-stream-switch&quot; value=&quot;true&quot; /&gt;
                                         &lt;param name=&quot;no-auto-resume-call&quot; value=&quot;true&quot; /&gt;
<span style="color: #A00000">-                                        &lt;param name=&quot;no-ring-during-call&quot; value=&quot;true&quot; /&gt;</span>
<span style="color: #A00000">-                                        </span>
<span style="color: #A00000">-                                        </span>
<span style="color: #00A000">+                                        &lt;param name=&quot;no-ring-during-call&quot; value=&quot;true&quot; /&gt;                        </span>
                     &lt;param name=&quot;ring-file&quot; value=&quot;tone_stream://%(2000,4000,440.0,480.0);loops=20&quot;/&gt;
                     &lt;param name=&quot;ring-interval&quot; value=&quot;5&quot;/&gt;
                     &lt;param name=&quot;hold-file&quot; value=&quot;$${hold_music}&quot;/&gt;
                     &lt;param name=&quot;dialplan&quot; value=&quot;XML&quot;/&gt;
                     &lt;param name=&quot;sample-rate&quot; value=&quot;24000&quot;/&gt;
                     &lt;param name=&quot;codec-ms&quot; value=&quot;20&quot;/&gt;
<span style="color: #A00000">-                                        &lt;!--</span>
<span style="color: #A00000">-                                                Alternate items:</span>
<span style="color: #A00000">-                                                        codec-ms</span>
<span style="color: #A00000">-                                                        sample-rate=8000</span>
<span style="color: #A00000">-                                                </span>
<span style="color: #A00000">-                                        --&gt;</span>
                   &lt;/settings&gt;
                 &lt;/configuration&gt;
<span style="color: #A00000">-</span>
<span style="color: #A00000">-                &lt;configuration name=&quot;post_load_modules.conf&quot; description=&quot;Modules&quot;&gt;</span>
<span style="color: #A00000">-                        &lt;modules&gt;</span>
<span style="color: #A00000">-                        &lt;/modules&gt;</span>
<span style="color: #A00000">-                &lt;/configuration&gt;</span>
<span style="color: #A00000">-</span>
                 &lt;configuration name=&quot;switch.conf&quot; description=&quot;Core Configuration&quot;&gt;
                         &lt;cli-keybindings&gt;
                                 &lt;key name=&quot;1&quot; value=&quot;help&quot;/&gt;
<span style="color: #800080; font-weight: bold">@@ -117,12 +90,10 @@</span>
                                 &lt;key name=&quot;12&quot; value=&quot;version&quot;/&gt;
                         &lt;/cli-keybindings&gt;
                         &lt;settings&gt;
<span style="color: #A00000">-                                &lt;param name=&quot;colorize-console&quot; value=&quot;true&quot;/&gt;</span>
<span style="color: #A00000">-                                &lt;param name=&quot;max-sessions&quot; value=&quot;20&quot;/&gt;</span>
<span style="color: #A00000">-                                &lt;param name=&quot;sessions-per-second&quot; value=&quot;5&quot;/&gt;</span>
<span style="color: #00A000">+                                                                &lt;param name=&quot;colorize&quot; value=&quot;true&quot;/&gt;</span>
<span style="color: #00A000">+                                &lt;param name=&quot;max-sessions&quot; value=&quot;100&quot;/&gt;</span>
<span style="color: #00A000">+                                &lt;param name=&quot;sessions-per-second&quot; value=&quot;30&quot;/&gt;</span>
                                 &lt;param name=&quot;loglevel&quot; value=&quot;debug&quot;/&gt;
<span style="color: #A00000">-                                &lt;param name=&quot;crash-protection&quot; value=&quot;false&quot;/&gt;</span>
<span style="color: #A00000">-                                &lt;param name=&quot;dump-cores&quot; value=&quot;yes&quot;/&gt;</span>
                                 &lt;param name=&quot;rtp-start-port&quot; value=&quot;16384&quot;/&gt;
                                 &lt;param name=&quot;rtp-end-port&quot; value=&quot;16484&quot;/&gt;
                         &lt;/settings&gt;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Sofia.cs b/mitchcapper/FSClient/Sofia.cs</span>
<span style="color: #000080; font-weight: bold">index 3f776d6..b3f3b3d 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Sofia.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Sofia.cs</span>
<span style="color: #800080; font-weight: bold">@@ -75,7 +75,6 @@ namespace FSClient {</span>
 
                         XmlNode global_settings = XmlUtils.AddNodeNode(config_node, &quot;global_settings&quot;);
                         Utils.add_xml_param(global_settings, &quot;auto-restart&quot;, &quot;true&quot;);
<span style="color: #A00000">-                        Utils.add_xml_param(global_settings, &quot;debug-presence&quot;, &quot;0&quot;);</span>
                         Utils.add_xml_param(global_settings, &quot;log-level&quot;, &quot;0&quot;);
                         XmlNode profiles = XmlUtils.AddNodeNode(config_node, &quot;profiles&quot;);
                         XmlNode profile = XmlUtils.AddNodeNode(profiles, &quot;profile&quot;);
<span style="color: #800080; font-weight: bold">@@ -87,7 +86,6 @@ namespace FSClient {</span>
                         Utils.add_xml_param(settings, &quot;context&quot;, &quot;public&quot;);
                         Utils.add_xml_param(settings, &quot;dialplan&quot;, &quot;xml&quot;);
                         Utils.add_xml_param(settings, &quot;disable-register&quot;, &quot;true&quot;);
<span style="color: #A00000">-                        Utils.add_xml_param(settings, &quot;manage-presence&quot;, &quot;false&quot;);</span>
                         foreach (FieldValue value in values) {
                                 if (!String.IsNullOrEmpty(value.field.xml_name))
                                         Utils.add_xml_param(settings, value.field.xml_name, value.value);
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBrotha: LDAP search form
And more:
<span style="color: #A00000">- callback</span>
<span style="color: #A00000">- rework of actions</span>
<span style="color: #A00000">- exceptions handling</span>
<span style="color: #A00000">- forms</span>

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/browser/index.php b/sathieu/cisco-xml/browser/index.php</span>
<span style="color: #000080; font-weight: bold">index 137b409..c3286fa 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/browser/index.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/browser/index.php</span>
<span style="color: #800080; font-weight: bold">@@ -25,7 +25,7 @@ This file is part of XML services for Cisco IP Phones.</span>
  */
 
 //* Debug
<span style="color: #A00000">-ini_set(&#39;error_reporting&#39;, E_ALL | E_STRUCT);</span>
<span style="color: #00A000">+ini_set(&#39;error_reporting&#39;, E_ALL);</span>
 ini_set(&#39;display_errors&#39;, 1);
 // */
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #000080; font-weight: bold">index 216aad6..0da1cc3 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #800080; font-weight: bold">@@ -25,7 +25,9 @@ This file is part of XML services for Cisco IP Phones.</span>
  */
 class CiscoIPPhone {
         static public function userAgentIsCiscoIPPhone() {
<span style="color: #A00000">-                return preg_match(&#39;/^Allegro-Software-WebClient\//&#39;, $_SERVER[&#39;HTTP_USER_AGENT&#39;]);</span>
<span style="color: #00A000">+                if (isset($_SERVER[&#39;HTTP_USER_AGENT&#39;])) {</span>
<span style="color: #00A000">+                        return preg_match(&#39;/^Allegro-Software-WebClient\//&#39;, $_SERVER[&#39;HTTP_USER_AGENT&#39;]);</span>
<span style="color: #00A000">+                }</span>
 
         }
 }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #000080; font-weight: bold">index 28a8441..8e56562 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #800080; font-weight: bold">@@ -26,8 +26,8 @@ This file is part of MediaBrotha.</span>
 
 require_once(&#39;MediaBrotha/Media.php&#39;);
 
<span style="color: #A00000">-class MediaBrotha_Backend {</span>
<span style="color: #A00000">-        protected $_params = NULL;</span>
<span style="color: #00A000">+abstract class MediaBrotha_Backend {</span>
<span style="color: #00A000">+        private $_params = NULL;</span>
 
         public function __construct($params = NULL) {
                 $this-&gt;setParam($params);
<span style="color: #800080; font-weight: bold">@@ -35,7 +35,7 @@ class MediaBrotha_Backend {</span>
         }
 
         /* params */
<span style="color: #A00000">-        public function getParam($name = NULL) {</span>
<span style="color: #00A000">+        final public function getParam($name = NULL) {</span>
                 if ($name === NULL) {
                         return $this-&gt;_params;
                 } elseif (isset($this-&gt;_params[$name])) {
<span style="color: #800080; font-weight: bold">@@ -44,7 +44,7 @@ class MediaBrotha_Backend {</span>
                         return NULL;
                 }
         }
<span style="color: #A00000">-        public function setParam($name, $value = NULL) {</span>
<span style="color: #00A000">+        final public function setParam($name, $value = NULL) {</span>
                 if (is_array($name)) {
                         $this-&gt;_params = $name;
                 } else {
<span style="color: #800080; font-weight: bold">@@ -66,10 +66,6 @@ class MediaBrotha_Backend {</span>
                 return $item;
         }
 
<span style="color: #A00000">-        public function fetch(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                return false;</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
         // Actions
         public function getMediaActions(MediaBrotha_Media $media) {
                 return Array();
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #000080; font-weight: bold">index 006814b..c23a86f 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #800080; font-weight: bold">@@ -61,19 +61,6 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {</span>
                 }
         }
 
<span style="color: #A00000">-        public function fetch(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                $uri = $media-&gt;getURI();</span>
<span style="color: #A00000">-                if ((parse_url($uri, PHP_URL_SCHEME) != &#39;file&#39;) || !$this-&gt;isURISafe($uri)) {</span>
<span style="color: #A00000">-                        $uri = &#39;file://&#39;.$this-&gt;getParam(&#39;base_path&#39;);</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-                $path = parse_url($uri, PHP_URL_PATH);</span>
<span style="color: #A00000">-                if (is_dir($path)) {</span>
<span style="color: #A00000">-                        return new MediaBrotha_MediaIterator($this, $media, new DirectoryIterator($path));</span>
<span style="color: #A00000">-                } else {</span>
<span style="color: #A00000">-                        return false;</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
         // Actions
         protected function _isHandled(MediaBrotha_Media $media) {
                 return ($media-&gt;getMimeType() === &#39;application/x-directory&#39;)
<span style="color: #800080; font-weight: bold">@@ -83,6 +70,7 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {</span>
         public function getMediaActions(MediaBrotha_Media $media) {
                 if ($this-&gt;_isHandled($media)) {
                         return Array(
<span style="color: #00A000">+                                &#39;_default&#39;,</span>
                                 &#39;browse&#39;,
                         );
                 } else {
<span style="color: #800080; font-weight: bold">@@ -90,6 +78,25 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {</span>
                 }
         }
 
<span style="color: #00A000">+        public function doMediaAction($action, MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                switch($action) {</span>
<span style="color: #00A000">+                        case &#39;_default&#39;:</span>
<span style="color: #00A000">+                        case &#39;browse&#39;:</span>
<span style="color: #00A000">+                                $uri = $media-&gt;getURI();</span>
<span style="color: #00A000">+                                if ((parse_url($uri, PHP_URL_SCHEME) != &#39;file&#39;) || !$this-&gt;isURISafe($uri)) {</span>
<span style="color: #00A000">+                                        $uri = &#39;file://&#39;.$this-&gt;getParam(&#39;base_path&#39;);</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                                $path = parse_url($uri, PHP_URL_PATH);</span>
<span style="color: #00A000">+                                if (is_dir($path)) {</span>
<span style="color: #00A000">+                                        return new MediaBrotha_MediaIterator($this, new DirectoryIterator($path));</span>
<span style="color: #00A000">+                                } else {</span>
<span style="color: #00A000">+                                        return false;</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                        default:</span>
<span style="color: #00A000">+                                return parent::doMediaAction($action, $media);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
         // Populate
         public function populateMedia(MediaBrotha_Media $media) {
                 if ($this-&gt;_isHandled($media)) {
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #000080; font-weight: bold">index 365e78e..2b04351 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #800080; font-weight: bold">@@ -63,21 +63,6 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {</span>
                 }
         }
 
<span style="color: #A00000">-        public function fetch(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                $uri = $media-&gt;getURI();</span>
<span style="color: #A00000">-                if (($this::parseLDAPURI($uri, PHP_URL_SCHEME) != &#39;ldap&#39;) || !$this-&gt;isURISafe($uri)) {</span>
<span style="color: #A00000">-                        $ldap_connect_config = $this-&gt;getParam(&#39;ldap_connect_config&#39;);</span>
<span style="color: #A00000">-                        $uri = &#39;ldap:///&#39;.$ldap_connect_config[&#39;basedn&#39;];</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-                $basedn = $this::parseLDAPURI($uri, PHP_URL_PATH);</span>
<span style="color: #A00000">-                if ($basedn &amp;&amp; ($basedn{0} = &#39;/&#39;)) {</span>
<span style="color: #A00000">-                        $basedn = substr($basedn, 1);</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-                $ldap_search = $this-&gt;_ldap-&gt;search($basedn, NULL,</span>
<span style="color: #A00000">-                        Array());</span>
<span style="color: #A00000">-                return new MediaBrotha_MediaIterator($this, $media, $ldap_search);</span>
<span style="color: #A00000">-                return true;</span>
<span style="color: #A00000">-        }</span>
         // Actions
         protected function _isHandled(MediaBrotha_Media $media) {
                 return ($media-&gt;getMimeType() === &#39;text/directory&#39;)
<span style="color: #800080; font-weight: bold">@@ -87,12 +72,74 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {</span>
         public function getMediaActions(MediaBrotha_Media $media) {
                 if ($this-&gt;_isHandled($media)) {
                         return Array(
<span style="color: #00A000">+                                &#39;_default&#39;,</span>
                                 &#39;browse&#39;,
<span style="color: #00A000">+                                &#39;search&#39;,</span>
                         );
                 } else {
                         return parent::getMediaActions($media);
                 }
         }
<span style="color: #A00000">-</span>
<span style="color: #00A000">+        public function doMediaAction($action, MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                switch($action) {</span>
<span style="color: #00A000">+                        case &#39;browse&#39;:</span>
<span style="color: #00A000">+                                $uri = $media-&gt;getURI();</span>
<span style="color: #00A000">+                                if (($this::parseLDAPURI($uri, PHP_URL_SCHEME) != &#39;ldap&#39;) || !$this-&gt;isURISafe($uri)) {</span>
<span style="color: #00A000">+                                        $ldap_connect_config = $this-&gt;getParam(&#39;ldap_connect_config&#39;);</span>
<span style="color: #00A000">+                                        $uri = &#39;ldap:///&#39;.$ldap_connect_config[&#39;basedn&#39;];</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                                $basedn = $this::parseLDAPURI($uri, PHP_URL_PATH);</span>
<span style="color: #00A000">+                                if ($basedn &amp;&amp; ($basedn{0} = &#39;/&#39;)) {</span>
<span style="color: #00A000">+                                        $basedn = substr($basedn, 1);</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                                $ldap_search = $this-&gt;_ldap-&gt;search($basedn, NULL,</span>
<span style="color: #00A000">+                                        Array());</span>
<span style="color: #00A000">+                                return new MediaBrotha_MediaIterator($this, $ldap_search);</span>
<span style="color: #00A000">+                        case &#39;_default&#39;:</span>
<span style="color: #00A000">+                        case &#39;search&#39;:</span>
<span style="color: #00A000">+                                $form =  new MediaBrotha_Form();</span>
<span style="color: #00A000">+                                $form-&gt;setTitle(&#39;search&#39;);</span>
<span style="color: #00A000">+                                $search_fields = Array(</span>
<span style="color: #00A000">+                                        &#39;sn&#39;              =&gt; Array(&#39;display_name&#39; =&gt; &#39;last name&#39;),</span>
<span style="color: #00A000">+                                        &#39;givenName&#39;       =&gt; Array(&#39;display_name&#39; =&gt; &#39;first name&#39;),</span>
<span style="color: #00A000">+                                        &#39;telephoneNumber&#39; =&gt; Array(&#39;display_name&#39; =&gt; &#39;phone&#39;, &#39;filter&#39; =&gt; &#39;(telephoneNumber=*%s*)&#39;),</span>
<span style="color: #00A000">+                                        //&#39;o&#39;               =&gt; Array(&#39;display_name&#39; =&gt; &#39;organization&#39;),</span>
<span style="color: #00A000">+                                        //&#39;mobile&#39;          =&gt; Array(&#39;display_name&#39; =&gt; &#39;mobile&#39;),</span>
<span style="color: #00A000">+                                        //&#39;facsimileTelephoneNumber&#39; =&gt; Array(&#39;display_name&#39; =&gt; &#39;fax&#39;),</span>
<span style="color: #00A000">+                                        //&#39;l&#39;               =&gt; Array(&#39;display_name&#39; =&gt; &#39;location&#39;),</span>
<span style="color: #00A000">+                                        //&#39;st&#39;              =&gt; Array(&#39;display_name&#39; =&gt; &#39;department&#39;),</span>
<span style="color: #00A000">+                                        //&#39;roomNumber&#39;      =&gt; Array(&#39;display_name&#39; =&gt; &#39;room number&#39;),</span>
<span style="color: #00A000">+                                );</span>
<span style="color: #00A000">+                                $ldap_connect_config = $this-&gt;getParam(&#39;ldap_connect_config&#39;);</span>
<span style="color: #00A000">+                                $filter = $ldap_connect_config[&#39;filter&#39;];</span>
<span style="color: #00A000">+                                foreach ($search_fields as $attribute_name =&gt; $field) {</span>
<span style="color: #00A000">+                                        $field[&#39;name&#39;] = $attribute_name;</span>
<span style="color: #00A000">+                                        if (!empty($_GET[$attribute_name])) {</span>
<span style="color: #00A000">+                                                $field[&#39;value&#39;] = $_GET[$attribute_name];</span>
<span style="color: #00A000">+                                                if(empty($infos[&#39;filter&#39;])) {</span>
<span style="color: #00A000">+                                                        $filter=&quot;(&amp;$filter($attribute_name=&quot;.$_GET[$attribute_name].&quot;*))&quot;;</span>
<span style="color: #00A000">+                                                } else {</span>
<span style="color: #00A000">+                                                        $filter=&quot;(&amp;$filter&quot;.sprintf($infos[&#39;filter&#39;], $_GET[$attribute_name]).&quot;)&quot;;</span>
<span style="color: #00A000">+                                                }</span>
<span style="color: #00A000">+                                        }</span>
<span style="color: #00A000">+                                        $form-&gt;addField($field);</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                                if (empty($_GET[&#39;ldap_search&#39;])) {</span>
<span style="color: #00A000">+                                        MediaBrotha_Core::addCallback(&#39;MediaBrotha_Backend_LDAP::searchCallback&#39;);</span>
<span style="color: #00A000">+                                        return $form;</span>
<span style="color: #00A000">+                                } else {</span>
<span style="color: #00A000">+                                        $ldap_search = $this-&gt;_ldap-&gt;search(NULL, $filter,</span>
<span style="color: #00A000">+                                                Array(&#39;scope&#39; =&gt; &#39;sub&#39;));</span>
<span style="color: #00A000">+                                        return new MediaBrotha_MediaIterator($this, $ldap_search);</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                        default:</span>
<span style="color: #00A000">+                                return parent::doMediaAction($action, $media);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        static public function searchCallback() {</span>
<span style="color: #00A000">+                $_GET[&#39;backend&#39;] = &#39;LDAP&#39;;</span>
<span style="color: #00A000">+                $_GET[&#39;action&#39;] = &#39;search&#39;;</span>
<span style="color: #00A000">+                $_GET[&#39;ldap_search&#39;] = &#39;1&#39;;</span>
<span style="color: #00A000">+        }</span>
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #000080; font-weight: bold">index 9616be8..613ce17 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #800080; font-weight: bold">@@ -35,7 +35,7 @@ class MediaBrotha_Backend_Root extends MediaBrotha_Backend {</span>
                                 &#39;display_name&#39; =&gt; &#39;Root&#39;,
                         )
                 );
<span style="color: #A00000">-                $this-&gt;_media_iterator = new MediaBrotha_MediaIterator($this, $this-&gt;_media);</span>
<span style="color: #00A000">+                $this-&gt;_media_iterator = new MediaBrotha_MediaIterator($this);</span>
         }
 
         public function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {
<span style="color: #800080; font-weight: bold">@@ -45,9 +45,15 @@ class MediaBrotha_Backend_Root extends MediaBrotha_Backend {</span>
                 $this-&gt;_media_iterator-&gt;bufferAdd($media);
         }
 
<span style="color: #A00000">-        // Browsing</span>
<span style="color: #A00000">-        public function fetch(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                return $this-&gt;_media_iterator;</span>
<span style="color: #00A000">+        // Actions</span>
<span style="color: #00A000">+        public function doMediaAction($action, MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                switch($action) {</span>
<span style="color: #00A000">+                        case &#39;_default&#39;:</span>
<span style="color: #00A000">+                        case &#39;browse&#39;:</span>
<span style="color: #00A000">+                                return $this-&gt;_media_iterator;</span>
<span style="color: #00A000">+                        default:</span>
<span style="color: #00A000">+                                return parent::doMediaAction($action, $media);</span>
<span style="color: #00A000">+                }</span>
         }
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #000080; font-weight: bold">index 8c3208e..d881850 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #800080; font-weight: bold">@@ -43,12 +43,6 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {</span>
                 print $output.&#39;&lt;!--&#39;.$url.&quot;--&gt;\n&quot;;
         }
 
<span style="color: #A00000">-        // Browsing</span>
<span style="color: #A00000">-        public function fetch(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                $this-&gt;_buffer[] = $media;</span>
<span style="color: #A00000">-                return true;</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
         // Actions
         protected function _isHandled(MediaBrotha_Media $media) {
                 return in_array($media-&gt;getMimeType(), Array($this::$_supported_mime_types))
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #000080; font-weight: bold">index 8997a7c..f241c66 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #800080; font-weight: bold">@@ -28,6 +28,7 @@ require_once(&#39;MediaBrotha/Backend.php&#39;);</span>
 require_once(&#39;MediaBrotha/Frontend.php&#39;);
 require_once(&#39;MediaBrotha/Media.php&#39;);
 require_once(&#39;MediaBrotha/MediaIterator.php&#39;);
<span style="color: #00A000">+require_once(&#39;MediaBrotha/Form.php&#39;);</span>
 
 class MediaBrotha_Core {
         private static $_frontend = NULL;
<span style="color: #800080; font-weight: bold">@@ -38,20 +39,26 @@ class MediaBrotha_Core {</span>
          * Core
          */
         public static function init() {
<span style="color: #A00000">-                if (!session_start()) {</span>
<span style="color: #A00000">-                        die(&#39;Unable to start session&#39;);</span>
<span style="color: #00A000">+                try {</span>
<span style="color: #00A000">+                        if (!session_start()) {</span>
<span style="color: #00A000">+                                throw new Exception(&#39;Unable to start session&#39;);</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                        MediaBrotha_Core::_unhashRequest();</span>
<span style="color: #00A000">+                        MediaBrotha_Core::loadBackend(&#39;Root&#39;);</span>
<span style="color: #00A000">+                } catch (Exception $e) {</span>
<span style="color: #00A000">+                        die($e);</span>
                 }
<span style="color: #A00000">-                MediaBrotha_Core::_unhashRequest();</span>
<span style="color: #A00000">-                MediaBrotha_Core::loadBackend(&#39;Root&#39;);</span>
         }
 
         public static function go() {
<span style="color: #A00000">-                $current_backend = MediaBrotha_Core::getCurrentBackend();</span>
<span style="color: #A00000">-                $current_media = MediaBrotha_Core::getCurrentMedia();</span>
<span style="color: #A00000">-                if (MediaBrotha_Core::getAction() == &#39;browse&#39;) {</span>
<span style="color: #A00000">-                        if ($media_iterator = $current_backend-&gt;fetch($current_media)) {</span>
<span style="color: #00A000">+                try {</span>
<span style="color: #00A000">+                        MediaBrotha_Core::runCallback();</span>
<span style="color: #00A000">+                        $current_backend = MediaBrotha_Core::getCurrentBackend();</span>
<span style="color: #00A000">+                        $current_media = MediaBrotha_Core::getCurrentMedia();</span>
<span style="color: #00A000">+                        $result = $current_backend-&gt;doMediaAction(MediaBrotha_Core::getAction(), $current_media);</span>
<span style="color: #00A000">+                        if (is_a($result, &#39;MediaBrotha_MediaIterator&#39;)) {</span>
                                 MediaBrotha_Core::$_frontend-&gt;begin($current_media);
<span style="color: #A00000">-                                foreach ($media_iterator as $item) {</span>
<span style="color: #00A000">+                                foreach ($result as $item) {</span>
                                         if (($item === NULL) || $item-&gt;isHidden()) {
                                                 continue;
                                         }
<span style="color: #800080; font-weight: bold">@@ -59,17 +66,32 @@ class MediaBrotha_Core {</span>
                                 }
                                 MediaBrotha_Core::$_frontend-&gt;finish($current_media);
                                 MediaBrotha_Core::$_frontend-&gt;render($current_media);
<span style="color: #00A000">+                        } elseif (is_a($result, &#39;MediaBrotha_Form&#39;)) {</span>
<span style="color: #00A000">+                                MediaBrotha_Core::$_frontend-&gt;renderForm($result);</span>
<span style="color: #00A000">+                        } elseif (is_a($result, &#39;Exception&#39;)) {</span>
<span style="color: #00A000">+                                throw $result;</span>
                         } else {
<span style="color: #00A000">+                                throw new Exception(&quot;Got unexpected result &#39;$result&#39;.&quot;);</span>
                         }
<span style="color: #A00000">-                } else {</span>
<span style="color: #A00000">-                        $current_backend-&gt;doMediaAction(MediaBrotha_Core::getAction(), $current_media);</span>
<span style="color: #00A000">+                } catch (Exception $e) {</span>
<span style="color: #00A000">+                        MediaBrotha_Core::$_frontend-&gt;renderException($e);</span>
                 }
         }
 
<span style="color: #A00000">-        public function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+        public static function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {</span>
                 MediaBrotha_Core::$_backends[&#39;Root&#39;]-&gt;addRootMedia($URI, $metadata, $mime_type, $mime_encoding);
         }
 
<span style="color: #00A000">+        public static function addCallback($callback, $arg = NULL) {</span>
<span style="color: #00A000">+                $_SESSION[&#39;CALLBACK&#39;][] = Array($callback, $arg);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public static function runCallback() {</span>
<span style="color: #00A000">+                while($callback_info = array_shift($_SESSION[&#39;CALLBACK&#39;])) {</span>
<span style="color: #00A000">+                        call_user_func($callback_info[0],$callback_info[1]);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
         /*
          * Backends
          */
<span style="color: #800080; font-weight: bold">@@ -129,7 +151,7 @@ class MediaBrotha_Core {</span>
                 if (!empty($_GET[&#39;action&#39;])) {
                         return $_GET[&#39;action&#39;];
                 } else {
<span style="color: #A00000">-                        return &#39;browse&#39;;</span>
<span style="color: #00A000">+                        return &#39;_default&#39;;</span>
                 }
         }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Form.php</span>
similarity index 60%
copy from sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
copy to sathieu/cisco-xml/lib/MediaBrotha/Form.php
<span style="color: #000080; font-weight: bold">index 2cc6060..08dd4c6 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Form.php</span>
<span style="color: #800080; font-weight: bold">@@ -24,11 +24,31 @@ This file is part of MediaBrotha.</span>
  * @author Mathieu Parent
  */
 
<span style="color: #A00000">-class MediaBrotha_Frontend {</span>
<span style="color: #A00000">-        protected $_infos = NULL;</span>
<span style="color: #00A000">+class MediaBrotha_Field {</span>
<span style="color: #00A000">+        private $_attrs;</span>
 
<span style="color: #A00000">-        public function __construct(array $args = Array()) {</span>
<span style="color: #A00000">-                $this-&gt;_infos = $args;</span>
<span style="color: #00A000">+        public function __construct(array $attrs) {</span>
<span style="color: #00A000">+                $this-&gt;_attrs = $attrs;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function get($name) {</span>
<span style="color: #00A000">+                if (isset($this-&gt;_attrs[$name])) {</span>
<span style="color: #00A000">+                        return $this-&gt;_attrs[$name];</span>
<span style="color: #00A000">+                }        </span>
         }
 }
 
<span style="color: #00A000">+class MediaBrotha_Form extends ArrayIterator {</span>
<span style="color: #00A000">+        private $_title;</span>
<span style="color: #00A000">+        public function getTitle() {</span>
<span style="color: #00A000">+                return $this-&gt;_title;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function setTitle($title) {</span>
<span style="color: #00A000">+                $this-&gt;_title = $title;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function addField(array $args) {</span>
<span style="color: #00A000">+                $this[] = new MediaBrotha_Field($args);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #000080; font-weight: bold">index 2cc6060..be427fa 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #800080; font-weight: bold">@@ -24,11 +24,19 @@ This file is part of MediaBrotha.</span>
  * @author Mathieu Parent
  */
 
<span style="color: #A00000">-class MediaBrotha_Frontend {</span>
<span style="color: #00A000">+abstract class MediaBrotha_Frontend {</span>
         protected $_infos = NULL;
 
         public function __construct(array $args = Array()) {
                 $this-&gt;_infos = $args;
         }
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function renderException(Exception $e) {</span>
<span style="color: #00A000">+                print $e;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function renderForm(MediaBrotha_Form $form) {</span>
<span style="color: #00A000">+                throw new Exception(__FUNCTION__ .&#39; not implemented in class &quot;&#39;.get_class($this).&#39;&quot;&#39;);</span>
<span style="color: #00A000">+        }</span>
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #000080; font-weight: bold">index 914e6ee..1bf85b7 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #800080; font-weight: bold">@@ -52,7 +52,7 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {</span>
                         &#39;URL&#39; =&gt; &#39;SoftKey:Select&#39;,
                         &#39;Position&#39; =&gt; $pos++));
                 foreach (MediaBrotha_Core::getBackends() as $backend) {
<span style="color: #A00000">-                        foreach ($backend-&gt;getMediaActions(MediaBrotha_Core::getCurrentMedia()) as $action) {</span>
<span style="color: #00A000">+                        foreach ($backend-&gt;getMediaActions($item) as $action) {</span>
                                 $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,
                                         Array(&#39;Name&#39; =&gt; $action,
                                         &#39;URL&#39; =&gt; &#39;QueryStringParam:&#39;.MediaBrotha_Core::value2hash(&#39;action=&#39;.$action.&#39;&amp;backend=&#39;.$backend-&gt;getBackendName()),
<span style="color: #800080; font-weight: bold">@@ -70,5 +70,25 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {</span>
                         print $this-&gt;_xml-&gt;execute($this-&gt;_infos[&#39;push_url&#39;]);
                 }
         }
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function renderForm(MediaBrotha_Form $form) {</span>
<span style="color: #00A000">+                $xml = new CiscoIPPhoneInput();</span>
<span style="color: #00A000">+                $xml-&gt;setCiscoElement(&#39;Title&#39;, $form-&gt;getTitle());</span>
<span style="color: #00A000">+                //$xml-&gt;setCiscoElement(&#39;Prompt&#39;, ...);</span>
<span style="color: #00A000">+                $xml-&gt;setCiscoElement(&#39;URL&#39;, $this-&gt;rootURL());</span>
<span style="color: #00A000">+                foreach($form as $field) {</span>
<span style="color: #00A000">+                        $xml-&gt;setCiscoElement(&#39;InputItem&#39;,</span>
<span style="color: #00A000">+                                Array(</span>
<span style="color: #00A000">+                                        &#39;DisplayName&#39; =&gt; $field-&gt;get(&#39;display_name&#39;),</span>
<span style="color: #00A000">+                                        &#39;QueryStringParam&#39; =&gt; $field-&gt;get(&#39;name&#39;),</span>
<span style="color: #00A000">+                                        &#39;DefaultValue&#39; =&gt; $field-&gt;get(&#39;value&#39;),</span>
<span style="color: #00A000">+                                        &#39;InputFlags&#39; =&gt; &#39;&#39;,</span>
<span style="color: #00A000">+                                )</span>
<span style="color: #00A000">+                        );</span>
<span style="color: #00A000">+                        </span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                CiscoXMLObject::HttpHeader();</span>
<span style="color: #00A000">+                print $xml;</span>
<span style="color: #00A000">+        }</span>
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #000080; font-weight: bold">index 6d09e1b..f6d4015 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #800080; font-weight: bold">@@ -54,7 +54,7 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {</span>
                 }
         }
 
<span style="color: #A00000">-        public function begin($item) {</span>
<span style="color: #00A000">+        private function _createHTMLDocument($title) {</span>
                 $this-&gt;_xml = new DOMDocument(&#39;1.0&#39;);
                 $root = $this-&gt;_xml-&gt;createElement(&#39;html&#39;);
                 $root = $this-&gt;_xml-&gt;appendChild($root);
<span style="color: #800080; font-weight: bold">@@ -62,11 +62,10 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {</span>
                 $head = $this-&gt;_xml-&gt;createElement(&#39;head&#39;);
                 $head = $root-&gt;appendChild($head);
 
<span style="color: #A00000">-                $title = $this-&gt;_xml-&gt;createElement(&#39;title&#39;);</span>
<span style="color: #A00000">-                $title = $head-&gt;appendChild($title);</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-                $text = $this-&gt;_xml-&gt;createTextNode($item-&gt;getDisplayName());</span>
<span style="color: #A00000">-                $text = $title-&gt;appendChild($text);</span>
<span style="color: #00A000">+                $titleElement = $this-&gt;_xml-&gt;createElement(&#39;title&#39;);</span>
<span style="color: #00A000">+                $titleElement = $head-&gt;appendChild($titleElement);</span>
<span style="color: #00A000">+                $text = $this-&gt;_xml-&gt;createTextNode($title);</span>
<span style="color: #00A000">+                $text = $titleElement-&gt;appendChild($text);</span>
 
                 $style = $this-&gt;_xml-&gt;createElement(&#39;link&#39;);
                 $style = $head-&gt;appendChild($style);
<span style="color: #800080; font-weight: bold">@@ -82,7 +81,10 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {</span>
                 $this-&gt;_body = $this-&gt;_xml-&gt;createElement(&#39;body&#39;);
                 $this-&gt;_body = $root-&gt;appendChild($this-&gt;_body);
                 $this-&gt;_body-&gt;setAttribute(&#39;onload&#39;, &#39;bodyLoaded();&#39;);
<span style="color: #00A000">+        }</span>
 
<span style="color: #00A000">+        public function begin($item) {</span>
<span style="color: #00A000">+                $this-&gt;_createHTMLDocument($item-&gt;getDisplayName());</span>
                 $this-&gt;_mediaListElement = $this-&gt;_xml-&gt;createElement(&#39;ul&#39;);
                 $this-&gt;_mediaListElement = $this-&gt;_body-&gt;appendChild($this-&gt;_mediaListElement);
                 $this-&gt;_mediaListElement-&gt;setAttribute(&#39;id&#39;, &#39;mediaListElement&#39;);
<span style="color: #800080; font-weight: bold">@@ -123,5 +125,60 @@ class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {</span>
         public function render() {
                 print $this-&gt;_xml-&gt;saveHTML();
         }
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function renderForm(MediaBrotha_Form $form) {</span>
<span style="color: #00A000">+                $this-&gt;_createHTMLDocument($form-&gt;getTitle());</span>
<span style="color: #00A000">+                $formElement = $this-&gt;_xml-&gt;createElement(&#39;form&#39;);</span>
<span style="color: #00A000">+                $formElement = $this-&gt;_body-&gt;appendChild($formElement);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $tableElement = $this-&gt;_xml-&gt;createElement(&#39;table&#39;);</span>
<span style="color: #00A000">+                $tableElement = $formElement-&gt;appendChild($tableElement);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                foreach($form as $field) {</span>
<span style="color: #00A000">+                        $trElement = $this-&gt;_xml-&gt;createElement(&#39;tr&#39;);</span>
<span style="color: #00A000">+                        $trElement = $tableElement-&gt;appendChild($trElement);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                        $tdElement1 = $this-&gt;_xml-&gt;createElement(&#39;th&#39;);</span>
<span style="color: #00A000">+                        $tdElement1 = $trElement-&gt;appendChild($tdElement1);</span>
<span style="color: #00A000">+                        $text1 = $this-&gt;_xml-&gt;createTextNode($field-&gt;get(&#39;display_name&#39;));</span>
<span style="color: #00A000">+                        $text1 = $tdElement1-&gt;appendChild($text1);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                        $tdElement2 = $this-&gt;_xml-&gt;createElement(&#39;td&#39;);</span>
<span style="color: #00A000">+                        $tdElement2 = $trElement-&gt;appendChild($tdElement2);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                        $inputElement = $this-&gt;_xml-&gt;createElement(&#39;input&#39;);</span>
<span style="color: #00A000">+                        $inputElement = $tdElement2-&gt;appendChild($inputElement);</span>
<span style="color: #00A000">+                        $inputElement-&gt;setAttribute(&#39;name&#39;, $field-&gt;get(&#39;name&#39;));</span>
<span style="color: #00A000">+                        $inputElement-&gt;setAttribute(&#39;value&#39;, $field-&gt;get(&#39;value&#39;));</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $trElement = $this-&gt;_xml-&gt;createElement(&#39;tr&#39;);</span>
<span style="color: #00A000">+                $trElement = $tableElement-&gt;appendChild($trElement);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $tdElement = $this-&gt;_xml-&gt;createElement(&#39;td&#39;);</span>
<span style="color: #00A000">+                $tdElement = $trElement-&gt;appendChild($tdElement);</span>
<span style="color: #00A000">+                $tdElement-&gt;setAttribute(&#39;colspan&#39;, 2);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $inputElement = $this-&gt;_xml-&gt;createElement(&#39;input&#39;);</span>
<span style="color: #00A000">+                $inputElement = $tdElement-&gt;appendChild($inputElement);</span>
<span style="color: #00A000">+                $inputElement-&gt;setAttribute(&#39;type&#39;, &#39;submit&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                print $this-&gt;_xml-&gt;saveHTML();</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function renderException(Exception $e) {</span>
<span style="color: #00A000">+                $this-&gt;_createHTMLDocument(&#39;Error&#39;);</span>
<span style="color: #00A000">+                $divElement = $this-&gt;_xml-&gt;createElement(&#39;pre&#39;);</span>
<span style="color: #00A000">+                $divElement = $this-&gt;_body-&gt;appendChild($divElement);</span>
<span style="color: #00A000">+                $text = $this-&gt;_xml-&gt;createTextNode($e-&gt;getMessage());</span>
<span style="color: #00A000">+                $text = $divElement-&gt;appendChild($text);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $divElement = $this-&gt;_xml-&gt;createElement(&#39;pre&#39;);</span>
<span style="color: #00A000">+                $divElement = $this-&gt;_body-&gt;appendChild($divElement);</span>
<span style="color: #00A000">+                $text = $this-&gt;_xml-&gt;createTextNode($e-&gt;getTraceAsString());</span>
<span style="color: #00A000">+                $text = $divElement-&gt;appendChild($text);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                print $this-&gt;_xml-&gt;saveHTML();</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php</span>
<span style="color: #000080; font-weight: bold">index de19bf7..f225175 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php</span>
<span style="color: #800080; font-weight: bold">@@ -24,10 +24,14 @@ This file is part of MediaBrotha.</span>
  * @author Mathieu Parent
  */
 
<span style="color: #A00000">-class MediaBrotha_Frontend_HTTP extends MediaBrotha_Frontend {</span>
<span style="color: #00A000">+abstract class MediaBrotha_Frontend_HTTP extends MediaBrotha_Frontend {</span>
         public function rootURL() {
<span style="color: #A00000">-                $url = &#39;http://&#39;.$_SERVER[&#39;SERVER_NAME&#39;].$_SERVER[&#39;SCRIPT_NAME&#39;];</span>
<span style="color: #A00000">-                $url = preg_replace(&#39;/index\.php$/&#39;, &#39;&#39;, $url);</span>
<span style="color: #00A000">+                if (isset($_SERVER[&#39;SERVER_NAME&#39;])) {</span>
<span style="color: #00A000">+                        $url = &#39;http://&#39;.$_SERVER[&#39;SERVER_NAME&#39;].$_SERVER[&#39;SCRIPT_NAME&#39;];</span>
<span style="color: #00A000">+                        $url = preg_replace(&#39;/index\.php$/&#39;, &#39;&#39;, $url);</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        $url = $_SERVER[&#39;SCRIPT_NAME&#39;];</span>
<span style="color: #00A000">+                }</span>
                 return $url;
         }
 }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Media.php b/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #000080; font-weight: bold">index 7964473..d32ee48 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #800080; font-weight: bold">@@ -24,7 +24,7 @@ This file is part of MediaBrotha.</span>
  * @author Mathieu Parent
  */
 
<span style="color: #A00000">-class MediaBrotha_Media {</span>
<span style="color: #00A000">+final class MediaBrotha_Media {</span>
         private $_URI = NULL;
         private $_metadata = Array();
         private $_mimeType = NULL;
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php b/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php</span>
<span style="color: #000080; font-weight: bold">index 096759a..e862661 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php</span>
<span style="color: #800080; font-weight: bold">@@ -28,13 +28,11 @@ require_once(&#39;MediaBrotha/Media.php&#39;);</span>
 
 class MediaBrotha_MediaIterator implements Iterator {
         private $_backend = NULL;
<span style="color: #A00000">-        private $_media = NULL;</span>
         private $_handle = NULL;
         protected $_buffer = NULL;
 
<span style="color: #A00000">-        public function __construct(MediaBrotha_Backend $backend, MediaBrotha_Media $media, $buffer = NULL) {</span>
<span style="color: #00A000">+        public function __construct(MediaBrotha_Backend $backend, $buffer = NULL) {</span>
                 $this-&gt;_backend = $backend;
<span style="color: #A00000">-                $this-&gt;_media = $media;</span>
                 if ($buffer) {
                         $this-&gt;_buffer = $buffer;
                 } else {
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Make search box text a bit smaller so it fits

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/MainWindow.xaml b/mitchcapper/FSClient/MainWindow.xaml</span>
<span style="color: #000080; font-weight: bold">index 5e1eb04..3464dc9 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/MainWindow.xaml</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/MainWindow.xaml</span>
<span style="color: #800080; font-weight: bold">@@ -176,7 +176,7 @@</span>
                 &lt;/Canvas&gt;
                 &lt;Button Canvas.Left=&quot;283&quot; Canvas.Top=&quot;21&quot; Content=&quot;Send To Voicemail&quot; FontWeight=&quot;Bold&quot; Foreground=&quot;#FFF5E200&quot; Height=&quot;20&quot; Name=&quot;btnSendVoicemail&quot; Style=&quot;{DynamicResource GlassButtonStyle}&quot; Width=&quot;120&quot; Visibility=&quot;Hidden&quot; Click=&quot;btnSendVoicemail_Click&quot; /&gt;
 
<span style="color: #A00000">-                &lt;ours:OurAutoCompleteBox Canvas.Left=&quot;435&quot; Text=&quot;Contact Search&quot; Canvas.Top=&quot;265&quot; Height=&quot;22&quot; Width=&quot;164.553&quot; Opacity=&quot;0.8&quot; x:Name=&quot;txtSearchBox&quot; FilterMode=&quot;Contains&quot; GotKeyboardFocus=&quot;txtSearchBox_GotKeyboardFocus&quot; LostKeyboardFocus=&quot;txtSearchBox_LostKeyboardFocus&quot; DropDownClosing=&quot;txtSearchBox_DropDownClosing&quot;&gt;</span>
<span style="color: #00A000">+                &lt;ours:OurAutoCompleteBox Canvas.Left=&quot;435&quot; Text=&quot;Contact Search&quot; Canvas.Top=&quot;265&quot; Height=&quot;22&quot; Width=&quot;164.553&quot; Opacity=&quot;0.8&quot; x:Name=&quot;txtSearchBox&quot; FilterMode=&quot;Contains&quot; GotKeyboardFocus=&quot;txtSearchBox_GotKeyboardFocus&quot; LostKeyboardFocus=&quot;txtSearchBox_LostKeyboardFocus&quot; DropDownClosing=&quot;txtSearchBox_DropDownClosing&quot; FontSize=&quot;11&quot;&gt;</span>
                         &lt;ours:OurAutoCompleteBox.ItemTemplate&gt;
                                 &lt;DataTemplate&gt;
 
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBrotha: Add missing HTML files

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/browser/static/default.css b/sathieu/cisco-xml/browser/static/default.css</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..6ef61fc</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/browser/static/default.css</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,49 @@</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+ * body &gt; ul#mediaListElement &gt; li.mediaElement</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+li.mediaElement {</span>
<span style="color: #00A000">+        padding: 2px;</span>
<span style="color: #00A000">+        margin: 0px;</span>
<span style="color: #00A000">+        list-style-type: none;</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+li.mediaElement:nth-child(odd) {</span>
<span style="color: #00A000">+        background-color: #d1e3ed;</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+ * body &gt; ul#mediaListElement</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+#mediaListElement {</span>
<span style="color: #00A000">+        padding: 2px;</span>
<span style="color: #00A000">+        margin: 0px;</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+ * body &gt; ul#mediaListElement &gt; li.mediaElement &gt; ul.mediaActionsListElement</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+li.mediaElement .mediaActionsListElement {</span>
<span style="color: #00A000">+        padding: 2px;</span>
<span style="color: #00A000">+        margin: 0px;</span>
<span style="color: #00A000">+        margin-left: 20px;</span>
<span style="color: #00A000">+        list-style-type: none;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        -moz-transition-property: max-height, opacity, visibility;</span>
<span style="color: #00A000">+        -moz-transition-duration: 3s, 2s, 0.2s;</span>
<span style="color: #00A000">+        -moz-transition-delay: 0s, 1s, 1s;</span>
<span style="color: #00A000">+        max-height: 0px;</span>
<span style="color: #00A000">+        opacity: 0;</span>
<span style="color: #00A000">+        visibility: hidden;</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+li.mediaElement:hover .mediaActionsListElement {</span>
<span style="color: #00A000">+        -moz-transition-property: max-height, opacity, visibility;</span>
<span style="color: #00A000">+        -moz-transition-duration: 0.5s, 2s, 0.2s;</span>
<span style="color: #00A000">+        -moz-transition-delay: 0.4s, 0.4s, 0.4s;</span>
<span style="color: #00A000">+        max-height: 200px;</span>
<span style="color: #00A000">+        opacity: 1;</span>
<span style="color: #00A000">+        visibility: visible;</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/browser/static/dynamic.js b/sathieu/cisco-xml/browser/static/dynamic.js</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..721eb51</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/browser/static/dynamic.js</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,4 @@</span>
<span style="color: #00A000">+function bodyLoaded() {</span>
<span style="color: #00A000">+        //nothing yet</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..6d09e1b</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,127 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of MediaBrotha.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with MediaBrotha. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+require_once(&#39;HTTP.php&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_Frontend_HTML extends MediaBrotha_Frontend_HTTP {</span>
<span style="color: #00A000">+        private $_xml = NULL;</span>
<span style="color: #00A000">+        private $_body = NULL;</span>
<span style="color: #00A000">+        private $_mediaListElement = NULL;</span>
<span style="color: #00A000">+        private $_actionsListElement = NULL;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        private function _mediaActionLinks($parent, $media, $tag_name) {</span>
<span style="color: #00A000">+                $url = $this-&gt;rootURL().&#39;?&#39;.</span>
<span style="color: #00A000">+                        MediaBrotha_Core::value2hash(</span>
<span style="color: #00A000">+                                &#39;mime_type=&#39;.urlencode($media-&gt;getMimeType()).&#39;&amp;&#39;.</span>
<span style="color: #00A000">+                                ($media-&gt;getMimeEncoding() ? (&#39;mime_encoding=&#39;.urlencode($media-&gt;getMimeEncoding()).&#39;&amp;&#39;) : &#39;&#39;).</span>
<span style="color: #00A000">+                                &#39;uri=&#39;.urlencode($media-&gt;getURI()));</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                foreach (MediaBrotha_Core::getBackends() as $backend) {</span>
<span style="color: #00A000">+                        foreach ($backend-&gt;getMediaActions($media) as $action) {</span>
<span style="color: #00A000">+                                $tag = $this-&gt;_xml-&gt;createElement($tag_name);</span>
<span style="color: #00A000">+                                $tag = $parent-&gt;appendChild($tag);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                                $a = $this-&gt;_xml-&gt;createElement(&#39;a&#39;);</span>
<span style="color: #00A000">+                                $a = $tag-&gt;appendChild($a);</span>
<span style="color: #00A000">+                                $a-&gt;setAttribute(&#39;href&#39;, &quot;$url&amp;&quot;.MediaBrotha_Core::value2hash(&#39;action=&#39;.$action.&#39;&amp;backend=&#39;.$backend-&gt;getBackendName()));</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                                $text = $this-&gt;_xml-&gt;createTextNode($action);</span>
<span style="color: #00A000">+                                $text = $a-&gt;appendChild($text);</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function begin($item) {</span>
<span style="color: #00A000">+                $this-&gt;_xml = new DOMDocument(&#39;1.0&#39;);</span>
<span style="color: #00A000">+                $root = $this-&gt;_xml-&gt;createElement(&#39;html&#39;);</span>
<span style="color: #00A000">+                $root = $this-&gt;_xml-&gt;appendChild($root);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $head = $this-&gt;_xml-&gt;createElement(&#39;head&#39;);</span>
<span style="color: #00A000">+                $head = $root-&gt;appendChild($head);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $title = $this-&gt;_xml-&gt;createElement(&#39;title&#39;);</span>
<span style="color: #00A000">+                $title = $head-&gt;appendChild($title);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $text = $this-&gt;_xml-&gt;createTextNode($item-&gt;getDisplayName());</span>
<span style="color: #00A000">+                $text = $title-&gt;appendChild($text);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $style = $this-&gt;_xml-&gt;createElement(&#39;link&#39;);</span>
<span style="color: #00A000">+                $style = $head-&gt;appendChild($style);</span>
<span style="color: #00A000">+                $style-&gt;setAttribute(&#39;type&#39;, &#39;text/css&#39;);</span>
<span style="color: #00A000">+                $style-&gt;setAttribute(&#39;rel&#39;, &#39;stylesheet&#39;);</span>
<span style="color: #00A000">+                $style-&gt;setAttribute(&#39;href&#39;, $this-&gt;rootURL().&#39;static/default.css&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $script = $this-&gt;_xml-&gt;createElement(&#39;script&#39;);</span>
<span style="color: #00A000">+                $script = $head-&gt;appendChild($script);</span>
<span style="color: #00A000">+                $script-&gt;setAttribute(&#39;type&#39;, &#39;text/javascript&#39;);</span>
<span style="color: #00A000">+                $script-&gt;setAttribute(&#39;src&#39;, $this-&gt;rootURL().&#39;static/dynamic.js&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $this-&gt;_body = $this-&gt;_xml-&gt;createElement(&#39;body&#39;);</span>
<span style="color: #00A000">+                $this-&gt;_body = $root-&gt;appendChild($this-&gt;_body);</span>
<span style="color: #00A000">+                $this-&gt;_body-&gt;setAttribute(&#39;onload&#39;, &#39;bodyLoaded();&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $this-&gt;_mediaListElement = $this-&gt;_xml-&gt;createElement(&#39;ul&#39;);</span>
<span style="color: #00A000">+                $this-&gt;_mediaListElement = $this-&gt;_body-&gt;appendChild($this-&gt;_mediaListElement);</span>
<span style="color: #00A000">+                $this-&gt;_mediaListElement-&gt;setAttribute(&#39;id&#39;, &#39;mediaListElement&#39;);</span>
<span style="color: #00A000">+                if ($parent = $item-&gt;getParent()) {</span>
<span style="color: #00A000">+                        $this-&gt;addItem($parent);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function addItem($item) {</span>
<span style="color: #00A000">+                $url = $this-&gt;rootURL().&#39;?&#39;.</span>
<span style="color: #00A000">+                        MediaBrotha_Core::value2hash(</span>
<span style="color: #00A000">+                                &#39;mime_type=&#39;.urlencode($item-&gt;getMimeType()).&#39;&amp;&#39;.</span>
<span style="color: #00A000">+                                ($item-&gt;getMimeEncoding() ? (&#39;mime_encoding=&#39;.urlencode($item-&gt;getMimeEncoding()).&#39;&amp;&#39;) : &#39;&#39;).</span>
<span style="color: #00A000">+                                &#39;uri=&#39;.urlencode($item-&gt;getURI()));</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $li = $this-&gt;_xml-&gt;createElement(&#39;li&#39;);</span>
<span style="color: #00A000">+                $li = $this-&gt;_mediaListElement-&gt;appendChild($li);</span>
<span style="color: #00A000">+                $li-&gt;setAttribute(&#39;class&#39;, &#39;mediaElement&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $a = $this-&gt;_xml-&gt;createElement(&#39;a&#39;);</span>
<span style="color: #00A000">+                $a = $li-&gt;appendChild($a);</span>
<span style="color: #00A000">+                $a-&gt;setAttribute(&#39;href&#39;, $url);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $text = $this-&gt;_xml-&gt;createTextNode($item-&gt;getDisplayName());</span>
<span style="color: #00A000">+                $text = $a-&gt;appendChild($text);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $ul = $this-&gt;_xml-&gt;createElement(&#39;ul&#39;);</span>
<span style="color: #00A000">+                $ul = $li-&gt;appendChild($ul);</span>
<span style="color: #00A000">+                $ul-&gt;setAttribute(&#39;class&#39;, &#39;mediaActionsListElement&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $this-&gt;_mediaActionLinks($ul, $item, &#39;li&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function finish($item) {</span>
<span style="color: #00A000">+                $this-&gt;_actionsListElement = $this-&gt;_xml-&gt;createElement(&#39;ul&#39;);</span>
<span style="color: #00A000">+                $this-&gt;_actionsListElement = $this-&gt;_body-&gt;appendChild($this-&gt;_actionsListElement);</span>
<span style="color: #00A000">+                $this-&gt;_actionsListElement-&gt;setAttribute(&#39;id&#39;, &#39;actionsListElement&#39;);</span>
<span style="color: #00A000">+                $this-&gt;_mediaActionLinks($this-&gt;_actionsListElement, $item, &#39;li&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function render() {</span>
<span style="color: #00A000">+                print $this-&gt;_xml-&gt;saveHTML();</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBrotha: various enhancements
<span style="color: #A00000">- add a HTML frontend</span>
<span style="color: #A00000">- frontend choosen automaticaly depending on browser</span>
<span style="color: #A00000">- handling of parent media</span>
<span style="color: #A00000">- max length for metadata and display_name</span>

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/browser/index.php b/sathieu/cisco-xml/browser/index.php</span>
<span style="color: #000080; font-weight: bold">index d142ff5..137b409 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/browser/index.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/browser/index.php</span>
<span style="color: #800080; font-weight: bold">@@ -35,7 +35,11 @@ require_once(&#39;MediaBrotha/Core.php&#39;);</span>
 
 // Init
 MediaBrotha_Core::init();
<span style="color: #A00000">-MediaBrotha_Core::connectFrontend(&#39;CiscoXML&#39;, Array(&#39;push_url&#39; =&gt; &#39;http://cisco:cisco@192.168.0.220/CGI/Execute&#39;));</span>
<span style="color: #00A000">+if (CiscoIPPhone::userAgentIsCiscoIPPhone()) {</span>
<span style="color: #00A000">+        MediaBrotha_Core::connectFrontend(&#39;CiscoXML&#39;, Array(&#39;push_url&#39; =&gt; &#39;http://cisco:cisco@192.168.0.220/CGI/Execute&#39;));</span>
<span style="color: #00A000">+} else {</span>
<span style="color: #00A000">+        MediaBrotha_Core::connectFrontend(&#39;HTML&#39;);</span>
<span style="color: #00A000">+}</span>
 
 // Backends
 MediaBrotha_Core::loadBackend(&#39;FileSystem&#39;, Array(&#39;base_path&#39; =&gt; &#39;/home/share/music/&#39;));
<span style="color: #800080; font-weight: bold">@@ -51,10 +55,9 @@ $ldap_connect_config = Array(</span>
 MediaBrotha_Core::loadBackend(&#39;LDAP&#39;, Array(&#39;ldap_connect_config&#39; =&gt; $ldap_connect_config));
 
 // Roots
<span style="color: #A00000">-MediaBrotha_Core::addRootMedia(&#39;file:///home/share/music/&#39;, Array(&#39;name&#39;=&gt; &#39;Fichiers&#39;));</span>
<span style="color: #A00000">-MediaBrotha_Core::addRootMedia(&#39;ldap:///&#39;, Array(&#39;name&#39;=&gt; &#39;Annuaire&#39;));</span>
<span style="color: #00A000">+MediaBrotha_Core::addRootMedia(&#39;file:///home/share/music/&#39;, Array(&#39;display_name&#39;=&gt; &#39;Fichiers&#39;));</span>
<span style="color: #00A000">+MediaBrotha_Core::addRootMedia(&#39;ldap:///&#39;, Array(&#39;display_name&#39;=&gt; &#39;Annuaire&#39;));</span>
 
 MediaBrotha_Core::go();
 
 
<span style="color: #A00000">-</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #000080; font-weight: bold">index c711f9c..216aad6 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #800080; font-weight: bold">@@ -23,6 +23,12 @@ This file is part of XML services for Cisco IP Phones.</span>
 /**
  * @author Mathieu Parent
  */
<span style="color: #00A000">+class CiscoIPPhone {</span>
<span style="color: #00A000">+        static public function userAgentIsCiscoIPPhone() {</span>
<span style="color: #00A000">+                return preg_match(&#39;/^Allegro-Software-WebClient\//&#39;, $_SERVER[&#39;HTTP_USER_AGENT&#39;]);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
 
 class CiscoXMLField {
         private $_allowed_fields = NULL;
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #000080; font-weight: bold">index 84a6a89..28a8441 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #800080; font-weight: bold">@@ -71,12 +71,17 @@ class MediaBrotha_Backend {</span>
         }
 
         // Actions
<span style="color: #A00000">-        public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+        public function getMediaActions(MediaBrotha_Media $media) {</span>
                 return Array();
         }
 
         public function doMediaAction($action, MediaBrotha_Media $media) {
                 return false;
         }
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        // Populate</span>
<span style="color: #00A000">+        public function populateMedia(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #000080; font-weight: bold">index 39928b4..006814b 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #800080; font-weight: bold">@@ -40,10 +40,13 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {</span>
         // Browsing
         public function mediaFromBufferItem($file) {
                 if ($file) {
<span style="color: #00A000">+                        if ($file-&gt;getFilename() === &#39;..&#39;) {</span>
<span style="color: #00A000">+                                return NULL;</span>
<span style="color: #00A000">+                        }</span>
                         $media = new MediaBrotha_Media(
                                 &#39;file://&#39;.realpath($file-&gt;getPathname()),
                                 Array(
<span style="color: #A00000">-                                        &#39;name&#39; =&gt; $file-&gt;getFilename(),</span>
<span style="color: #00A000">+                                        &#39;display_name&#39; =&gt; $file-&gt;getFilename(),</span>
                                         &#39;hidden&#39; =&gt; !$file-&gt;isReadable() || preg_match(&#39;/^\.([^.]|$)/&#39;, $file-&gt;getFilename()),
                                 )
                         );
<span style="color: #800080; font-weight: bold">@@ -59,31 +62,47 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {</span>
         }
 
         public function fetch(MediaBrotha_Media $media) {
<span style="color: #A00000">-                $uri =$media-&gt;getURI();</span>
<span style="color: #00A000">+                $uri = $media-&gt;getURI();</span>
                 if ((parse_url($uri, PHP_URL_SCHEME) != &#39;file&#39;) || !$this-&gt;isURISafe($uri)) {
<span style="color: #A00000">-                        $uri = &#39;file://&#39;.$this-&gt;getMetadata(&#39;base_path&#39;);</span>
<span style="color: #00A000">+                        $uri = &#39;file://&#39;.$this-&gt;getParam(&#39;base_path&#39;);</span>
                 }
                 $path = parse_url($uri, PHP_URL_PATH);
                 if (is_dir($path)) {
                         return new MediaBrotha_MediaIterator($this, $media, new DirectoryIterator($path));
                 } else {
<span style="color: #A00000">-                        $this-&gt;setURI(NULL);</span>
                         return false;
                 }
         }
 
         // Actions
<span style="color: #A00000">-        public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #A00000">-                if ($mime_type === &#39;application/x-directory&#39;) {</span>
<span style="color: #A00000">-                        return Array(</span>
<span style="color: #A00000">-                                &#39;browse&#39;,</span>
<span style="color: #A00000">-                        );</span>
<span style="color: #A00000">-                } elseif ($uri &amp;&amp; (substr($uri, 0, 7) === &#39;file://&#39;)) {</span>
<span style="color: #00A000">+        protected function _isHandled(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                return ($media-&gt;getMimeType() === &#39;application/x-directory&#39;)</span>
<span style="color: #00A000">+                        || (substr($media-&gt;getURI(), 0, 7) === &#39;file://&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function getMediaActions(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                if ($this-&gt;_isHandled($media)) {</span>
                         return Array(
                                 &#39;browse&#39;,
                         );
                 } else {
<span style="color: #A00000">-                        return parent::getMediaActions($uri, $mime_type, $mime_encoding);</span>
<span style="color: #00A000">+                        return parent::getMediaActions($media);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        // Populate</span>
<span style="color: #00A000">+        public function populateMedia(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                if ($this-&gt;_isHandled($media)) {</span>
<span style="color: #00A000">+                        $parent_path = &#39;file://&#39;.dirname(parse_url($media-&gt;getURI(), PHP_URL_PATH));</span>
<span style="color: #00A000">+                        if ($this-&gt;isURISafe($parent_path)) {</span>
<span style="color: #00A000">+                                $media-&gt;setParent(</span>
<span style="color: #00A000">+                                        new MediaBrotha_Media($parent_path,</span>
<span style="color: #00A000">+                                                Array(</span>
<span style="color: #00A000">+                                                        &#39;display_name&#39; =&gt; &#39;..&#39;,</span>
<span style="color: #00A000">+                                                )</span>
<span style="color: #00A000">+                                        )</span>
<span style="color: #00A000">+                                );</span>
<span style="color: #00A000">+                        }</span>
                 }
         }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #000080; font-weight: bold">index c882dd7..365e78e 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #800080; font-weight: bold">@@ -54,7 +54,7 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {</span>
                         $media = new MediaBrotha_Media(
                                 &#39;ldap:///&#39;.$entry-&gt;dn(),
                                 Array(
<span style="color: #A00000">-                                        &#39;name&#39; =&gt; $entry-&gt;dn(), //$entry-&gt;getValue(&#39;sn&#39;, &#39;single&#39;),</span>
<span style="color: #00A000">+                                        &#39;display_name&#39; =&gt; $entry-&gt;dn(), //$entry-&gt;getValue(&#39;sn&#39;, &#39;single&#39;),</span>
                                 ),
                                 &#39;text/directory&#39;
                                 //$finfo-&gt;file($file-&gt;getPathname(), FILEINFO_MIME_ENCODING);
<span style="color: #800080; font-weight: bold">@@ -79,17 +79,18 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {</span>
                 return true;
         }
         // Actions
<span style="color: #A00000">-        public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #A00000">-                if ($mime_type === &#39;text/directory&#39;) {</span>
<span style="color: #A00000">-                        return Array(</span>
<span style="color: #A00000">-                                &#39;browse&#39;,</span>
<span style="color: #A00000">-                        );</span>
<span style="color: #A00000">-                } elseif ($uri &amp;&amp; (substr($uri, 0, 7) === &#39;ldap://&#39;)) {</span>
<span style="color: #00A000">+        protected function _isHandled(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                return ($media-&gt;getMimeType() === &#39;text/directory&#39;)</span>
<span style="color: #00A000">+                        || (substr($media-&gt;getURI(), 0, 7) === &#39;ldap://&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function getMediaActions(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                if ($this-&gt;_isHandled($media)) {</span>
                         return Array(
                                 &#39;browse&#39;,
                         );
                 } else {
<span style="color: #A00000">-                        return parent::getMediaActions($uri, $mime_type, $mime_encoding);</span>
<span style="color: #00A000">+                        return parent::getMediaActions($media);</span>
                 }
         }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #000080; font-weight: bold">index addba42..9616be8 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #800080; font-weight: bold">@@ -30,11 +30,18 @@ class MediaBrotha_Backend_Root extends MediaBrotha_Backend {</span>
 
         public function __construct($params = NULL) {
                 parent::__construct($params);
<span style="color: #A00000">-                $this-&gt;_media = new MediaBrotha_Media(&#39;MediaBrotha:///&#39;);</span>
<span style="color: #00A000">+                $this-&gt;_media = new MediaBrotha_Media(&#39;MediaBrotha:///&#39;,</span>
<span style="color: #00A000">+                        Array(</span>
<span style="color: #00A000">+                                &#39;display_name&#39; =&gt; &#39;Root&#39;,</span>
<span style="color: #00A000">+                        )</span>
<span style="color: #00A000">+                );</span>
                 $this-&gt;_media_iterator = new MediaBrotha_MediaIterator($this, $this-&gt;_media);
         }
 
<span style="color: #A00000">-        public function addRootMedia($media) {</span>
<span style="color: #00A000">+        public function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                $this-&gt;addRootMediaObj(new MediaBrotha_Media($URI, $metadata, $mime_type,$mime_encoding));</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function addRootMediaObj($media) {</span>
                 $this-&gt;_media_iterator-&gt;bufferAdd($media);
         }
 
<span style="color: #800080; font-weight: bold">@@ -42,13 +49,6 @@ class MediaBrotha_Backend_Root extends MediaBrotha_Backend {</span>
         public function fetch(MediaBrotha_Media $media) {
                 return $this-&gt;_media_iterator;
         }
<span style="color: #A00000">-</span>
<span style="color: #A00000">-        // Actions</span>
<span style="color: #A00000">-        public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #A00000">-                return Array(</span>
<span style="color: #A00000">-                );</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
 }
 
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #000080; font-weight: bold">index 2b4e7c6..8c3208e 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #800080; font-weight: bold">@@ -50,17 +50,13 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {</span>
         }
 
         // Actions
<span style="color: #A00000">-        public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #A00000">-                if (in_array($mime_type, Array($this::$_supported_mime_types))) {</span>
<span style="color: #A00000">-                        return Array(</span>
<span style="color: #A00000">-                                &#39;play_media&#39;,</span>
<span style="color: #A00000">-                                &#39;pause_media&#39;,</span>
<span style="color: #A00000">-                                &#39;stop_media&#39;,</span>
<span style="color: #A00000">-                                &#39;enqueue_media&#39;,</span>
<span style="color: #A00000">-                                &#39;next_media&#39;,</span>
<span style="color: #A00000">-                                &#39;previous_media&#39;,</span>
<span style="color: #A00000">-                        );</span>
<span style="color: #A00000">-                } elseif ($uri &amp;&amp; (substr($uri, 0, 7) === &#39;file://&#39;)) {</span>
<span style="color: #00A000">+        protected function _isHandled(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                return in_array($media-&gt;getMimeType(), Array($this::$_supported_mime_types))</span>
<span style="color: #00A000">+                        || (substr($media-&gt;getURI(), 0, 7) === &#39;file://&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function getMediaActions(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                if ($this-&gt;_isHandled($media)) {</span>
                         return Array(
                                 &#39;play_media&#39;,
                                 &#39;pause_media&#39;,
<span style="color: #800080; font-weight: bold">@@ -70,7 +66,7 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {</span>
                                 &#39;previous_media&#39;,
                         );
                 } else {
<span style="color: #A00000">-                        return parent::getMediaActions($uri, $mime_type, $mime_encoding);</span>
<span style="color: #00A000">+                        return parent::getMediaActions($media);</span>
                 }
         }
         public function doMediaAction($action, MediaBrotha_Media $media) {
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #000080; font-weight: bold">index 5ec90e8..8997a7c 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #800080; font-weight: bold">@@ -34,47 +34,17 @@ class MediaBrotha_Core {</span>
         private static $_backends = Array();
         private static $_media = NULL;
         
<span style="color: #00A000">+        /*</span>
<span style="color: #00A000">+         * Core</span>
<span style="color: #00A000">+         */</span>
         public static function init() {
                 if (!session_start()) {
                         die(&#39;Unable to start session&#39;);
                 }
<span style="color: #A00000">-                if (!isset($_SESSION[&#39;HASHES&#39;])) {</span>
<span style="color: #A00000">-                        $_SESSION[&#39;HASHES&#39;] = Array();</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-                if (isset($_SERVER[&quot;QUERY_STRING&quot;])) {</span>
<span style="color: #A00000">-                        $tmp = explode(&#39;&amp;&#39;, $_SERVER[&quot;QUERY_STRING&quot;]);</span>
<span style="color: #A00000">-                        foreach ($tmp as $h) {</span>
<span style="color: #A00000">-                                if (preg_match(&#39;/^[a-z0-9]+$/&#39;, $h)) {</span>
<span style="color: #A00000">-                                        if ($s = MediaBrotha_Core::hash2string($h)) {</span>
<span style="color: #A00000">-                                                parse_str($s, $output);</span>
<span style="color: #A00000">-                                                $_GET = array_merge($_GET, $output);</span>
<span style="color: #A00000">-                                        }</span>
<span style="color: #A00000">-                                }</span>
<span style="color: #A00000">-                        }</span>
<span style="color: #A00000">-                }</span>
<span style="color: #00A000">+                MediaBrotha_Core::_unhashRequest();</span>
                 MediaBrotha_Core::loadBackend(&#39;Root&#39;);
         }
 
<span style="color: #A00000">-        public static function hash2string($h) {</span>
<span style="color: #A00000">-                if (isset($_SESSION[&#39;HASHES&#39;][$h])) {</span>
<span style="color: #A00000">-                        return $_SESSION[&#39;HASHES&#39;][$h];</span>
<span style="color: #A00000">-                } else {</span>
<span style="color: #A00000">-                        //print &#39;NO string for hash &#39;.$h;</span>
<span style="color: #A00000">-                        return NULL;</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-        public static function string2hash($s) {</span>
<span style="color: #A00000">-                for($hash_length = 1 ; $hash_length &lt;=41 ; $hash_length++) {</span>
<span style="color: #A00000">-                        $h = substr(sha1($s), 0, $hash_length);</span>
<span style="color: #A00000">-                        if (!isset($_SESSION[&#39;HASHES&#39;][$h]) || ($_SESSION[&#39;HASHES&#39;][$h] === $s)) {</span>
<span style="color: #A00000">-                                break;</span>
<span style="color: #A00000">-                        }</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-                $_SESSION[&#39;HASHES&#39;][$h] = $s;</span>
<span style="color: #A00000">-                return $h;</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
         public static function go() {
                 $current_backend = MediaBrotha_Core::getCurrentBackend();
                 $current_media = MediaBrotha_Core::getCurrentMedia();
<span style="color: #800080; font-weight: bold">@@ -82,7 +52,7 @@ class MediaBrotha_Core {</span>
                         if ($media_iterator = $current_backend-&gt;fetch($current_media)) {
                                 MediaBrotha_Core::$_frontend-&gt;begin($current_media);
                                 foreach ($media_iterator as $item) {
<span style="color: #A00000">-                                        if ($item-&gt;isHidden()) {</span>
<span style="color: #00A000">+                                        if (($item === NULL) || $item-&gt;isHidden()) {</span>
                                                 continue;
                                         }
                                         MediaBrotha_Core::$_frontend-&gt;addItem($item);
<span style="color: #800080; font-weight: bold">@@ -97,10 +67,9 @@ class MediaBrotha_Core {</span>
         }
 
         public function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {
<span style="color: #A00000">-                MediaBrotha_Core::$_backends[&#39;Root&#39;]-&gt;addRootMedia(</span>
<span style="color: #A00000">-                        new MediaBrotha_Media($URI, $metadata, $mime_type,$mime_encoding)</span>
<span style="color: #A00000">-                );</span>
<span style="color: #00A000">+                MediaBrotha_Core::$_backends[&#39;Root&#39;]-&gt;addRootMedia($URI, $metadata, $mime_type, $mime_encoding);</span>
         }
<span style="color: #00A000">+</span>
         /*
          * Backends
          */
<span style="color: #800080; font-weight: bold">@@ -120,22 +89,7 @@ class MediaBrotha_Core {</span>
         public static function getBackends() {
                 return MediaBrotha_Core::$_backends;
         }
<span style="color: #A00000">-        public static function getCurrentBackend() {</span>
<span style="color: #A00000">-                if (!empty($_GET[&#39;backend&#39;]) &amp;&amp; !empty(MediaBrotha_Core::$_backends[$_GET[&#39;backend&#39;]])) {</span>
<span style="color: #A00000">-                        return MediaBrotha_Core::$_backends[$_GET[&#39;backend&#39;]];</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-                foreach (MediaBrotha_Core::getBackends() as $backend) {</span>
<span style="color: #A00000">-                        foreach ($backend-&gt;getMediaActions(MediaBrotha_Core::getCurrentURI()) as $action) {</span>
<span style="color: #A00000">-                                if ($backend-&gt;getBackendName() == &#39;Root&#39;) {</span>
<span style="color: #A00000">-                                        continue;</span>
<span style="color: #A00000">-                                }</span>
<span style="color: #A00000">-                                if ($action === MediaBrotha_Core::getAction()) {</span>
<span style="color: #A00000">-                                        return $backend;</span>
<span style="color: #A00000">-                                }</span>
<span style="color: #A00000">-                        }</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-                return MediaBrotha_Core::$_backends[&#39;Root&#39;];</span>
<span style="color: #A00000">-        }</span>
<span style="color: #00A000">+</span>
         /*
          * Frontend
          */
<span style="color: #800080; font-weight: bold">@@ -151,8 +105,26 @@ class MediaBrotha_Core {</span>
                 MediaBrotha_Core::$_frontend = new $class_name($args);
         }
         /*
<span style="color: #A00000">-         * ...</span>
<span style="color: #00A000">+         * Current *</span>
          */
<span style="color: #00A000">+        public static function getCurrentBackend() {</span>
<span style="color: #00A000">+                if (!empty($_GET[&#39;backend&#39;]) &amp;&amp; !empty(MediaBrotha_Core::$_backends[$_GET[&#39;backend&#39;]])) {</span>
<span style="color: #00A000">+                        return MediaBrotha_Core::$_backends[$_GET[&#39;backend&#39;]];</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                $current_media = MediaBrotha_Core::getCurrentMedia();</span>
<span style="color: #00A000">+                foreach (MediaBrotha_Core::getBackends() as $backend) {</span>
<span style="color: #00A000">+                        foreach ($backend-&gt;getMediaActions($current_media) as $action) {</span>
<span style="color: #00A000">+                                if ($backend-&gt;getBackendName() == &#39;Root&#39;) {</span>
<span style="color: #00A000">+                                        continue;</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                                if ($action === MediaBrotha_Core::getAction()) {</span>
<span style="color: #00A000">+                                        return $backend;</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                return MediaBrotha_Core::$_backends[&#39;Root&#39;];</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
         public static function getAction() {
                 if (!empty($_GET[&#39;action&#39;])) {
                         return $_GET[&#39;action&#39;];
<span style="color: #800080; font-weight: bold">@@ -161,17 +133,63 @@ class MediaBrotha_Core {</span>
                 }
         }
 
<span style="color: #A00000">-        public static function getCurrentURI() {</span>
<span style="color: #A00000">-                if (!empty($_GET[&#39;uri&#39;])) {</span>
<span style="color: #A00000">-                        return (string) $_GET[&#39;uri&#39;];</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-        }</span>
         public static function getCurrentMedia() {
                 if (empty(MediaBrotha_Core::$_media)) {
<span style="color: #A00000">-                        MediaBrotha_Core::$_media = new MediaBrotha_Media(MediaBrotha_Core::getCurrentURI());</span>
<span style="color: #00A000">+                        if (!empty($_GET[&#39;uri&#39;])) {</span>
<span style="color: #00A000">+                                MediaBrotha_Core::$_media = new MediaBrotha_Media($_GET[&#39;uri&#39;]);</span>
<span style="color: #00A000">+                        } else {</span>
<span style="color: #00A000">+                                MediaBrotha_Core::$_media = new MediaBrotha_Media(&#39;MediaBrotha:///&#39;);</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                        foreach (MediaBrotha_Core::getBackends() as $backend) {</span>
<span style="color: #00A000">+                                $backend-&gt;populateMedia(MediaBrotha_Core::$_media);</span>
<span style="color: #00A000">+                        }</span>
                 }
                 return MediaBrotha_Core::$_media;
         }
 
<span style="color: #00A000">+        /*</span>
<span style="color: #00A000">+         * helper functions</span>
<span style="color: #00A000">+         */</span>
<span style="color: #00A000">+        /* hashes */</span>
<span style="color: #00A000">+        public static function hash2value($h) {</span>
<span style="color: #00A000">+                if (isset($_SESSION[&#39;HASHES&#39;][$h])) {</span>
<span style="color: #00A000">+                        return $_SESSION[&#39;HASHES&#39;][$h];</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        return NULL;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public static function value2hash($v) {</span>
<span style="color: #00A000">+                for($hash_length = 1 ; $hash_length &lt;=41 ; $hash_length++) {</span>
<span style="color: #00A000">+                        $h = substr(sha1($v), 0, $hash_length);</span>
<span style="color: #00A000">+                        if (!isset($_SESSION[&#39;HASHES&#39;][$h]) || ($_SESSION[&#39;HASHES&#39;][$h] === $v)) {</span>
<span style="color: #00A000">+                                break;</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                $_SESSION[&#39;HASHES&#39;][$h] = $v;</span>
<span style="color: #00A000">+                return $h;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public static function hash2array($h) {</span>
<span style="color: #00A000">+                if ($v = MediaBrotha_Core::hash2value($h)) {</span>
<span style="color: #00A000">+                        parse_str($v, $output);</span>
<span style="color: #00A000">+                        return $output;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        private static function _unhashRequest() {</span>
<span style="color: #00A000">+                if (!isset($_SESSION[&#39;HASHES&#39;])) {</span>
<span style="color: #00A000">+                        $_SESSION[&#39;HASHES&#39;] = Array();</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                if (isset($_SERVER[&quot;QUERY_STRING&quot;])) {</span>
<span style="color: #00A000">+                        $tmp = explode(&#39;&amp;&#39;, $_SERVER[&quot;QUERY_STRING&quot;]);</span>
<span style="color: #00A000">+                        foreach ($tmp as $h) {</span>
<span style="color: #00A000">+                                if (preg_match(&#39;/^[a-z0-9]+$/&#39;, $h)) {</span>
<span style="color: #00A000">+                                        $_GET = array_merge($_GET, MediaBrotha_Core::hash2array($h));</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #000080; font-weight: bold">index 2baa6af..914e6ee 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #800080; font-weight: bold">@@ -30,12 +30,15 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {</span>
         private $_xml = NULL;
         public function begin($item) {
                 $this-&gt;_xml = new CiscoIPPhoneMenu();
<span style="color: #A00000">-                $this-&gt;_xml-&gt;setCiscoElement(&#39;Title&#39;, $item-&gt;getDisplayName());</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;Title&#39;, $item-&gt;getDisplayName(32));</span>
                 $this-&gt;_xml-&gt;setCiscoElement(&#39;Prompt&#39;, substr($item-&gt;getURI(), -32));
<span style="color: #00A000">+                if ($parent = $item-&gt;getParent()) {</span>
<span style="color: #00A000">+                        $this-&gt;addItem($parent);</span>
<span style="color: #00A000">+                }</span>
         }
         public function addItem($item) {
                 $url = $this-&gt;rootURL().&#39;?&#39;.
<span style="color: #A00000">-                        MediaBrotha_Core::string2hash(</span>
<span style="color: #00A000">+                        MediaBrotha_Core::value2hash(</span>
                                 &#39;mime_type=&#39;.urlencode($item-&gt;getMimeType()).&#39;&amp;&#39;.
                                 ($item-&gt;getMimeEncoding() ? (&#39;mime_encoding=&#39;.urlencode($item-&gt;getMimeEncoding()).&#39;&amp;&#39;) : &#39;&#39;).
                                 &#39;uri=&#39;.urlencode($item-&gt;getURI()));
<span style="color: #800080; font-weight: bold">@@ -49,10 +52,10 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {</span>
                         &#39;URL&#39; =&gt; &#39;SoftKey:Select&#39;,
                         &#39;Position&#39; =&gt; $pos++));
                 foreach (MediaBrotha_Core::getBackends() as $backend) {
<span style="color: #A00000">-                        foreach ($backend-&gt;getMediaActions(MediaBrotha_Core::getCurrentURI()) as $action) {</span>
<span style="color: #00A000">+                        foreach ($backend-&gt;getMediaActions(MediaBrotha_Core::getCurrentMedia()) as $action) {</span>
                                 $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,
                                         Array(&#39;Name&#39; =&gt; $action,
<span style="color: #A00000">-                                        &#39;URL&#39; =&gt; &#39;QueryStringParam:&#39;.MediaBrotha_Core::string2hash(&#39;action=&#39;.$action.&#39;&amp;backend=&#39;.$backend-&gt;getBackendName()),</span>
<span style="color: #00A000">+                                        &#39;URL&#39; =&gt; &#39;QueryStringParam:&#39;.MediaBrotha_Core::value2hash(&#39;action=&#39;.$action.&#39;&amp;backend=&#39;.$backend-&gt;getBackendName()),</span>
                                         &#39;Position&#39; =&gt; $pos++));
                         }
                 }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Media.php b/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #000080; font-weight: bold">index 6efd1db..7964473 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #800080; font-weight: bold">@@ -25,14 +25,15 @@ This file is part of MediaBrotha.</span>
  */
 
 class MediaBrotha_Media {
<span style="color: #A00000">-        private $_metadata = Array();</span>
<span style="color: #A00000">-</span>
         private $_URI = NULL;
<span style="color: #00A000">+        private $_metadata = Array();</span>
         private $_mimeType = NULL;
         private $_mimeEncoding = NULL;
 
<span style="color: #00A000">+        private $_parent = NULL;</span>
<span style="color: #00A000">+</span>
         public function __construct($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {
<span style="color: #A00000">-                 $this-&gt;setURI($URI);</span>
<span style="color: #00A000">+                 $this-&gt;_URI = $URI;</span>
                  $this-&gt;setMetadata($metadata);
                  $this-&gt;setMimeType($mime_type);
                  $this-&gt;setMimeEncoding($mime_encoding);
<span style="color: #800080; font-weight: bold">@@ -42,16 +43,17 @@ class MediaBrotha_Media {</span>
         public function getURI() {
                 return $this-&gt;_URI;
         }
<span style="color: #A00000">-        public function setURI($URI) {</span>
<span style="color: #A00000">-                $this-&gt;_URI = $URI;</span>
<span style="color: #A00000">-        }</span>
 
         /* metadata */
<span style="color: #A00000">-        public function getMetadata($name = NULL) {</span>
<span style="color: #00A000">+        public function getMetadata($name = NULL, $max_length = NULL) {</span>
                 if ($name === NULL) {
                         return $this-&gt;_metadata;
                 } elseif (isset($this-&gt;_metadata[$name])) {
<span style="color: #A00000">-                        return $this-&gt;_metadata[$name];</span>
<span style="color: #00A000">+                        if ($max_length) {</span>
<span style="color: #00A000">+                                return substr($this-&gt;_metadata[$name], 0, $max_length);</span>
<span style="color: #00A000">+                        } else {</span>
<span style="color: #00A000">+                                return $this-&gt;_metadata[$name];</span>
<span style="color: #00A000">+                        }</span>
                 } else {
                         return NULL;
                 }
<span style="color: #800080; font-weight: bold">@@ -60,6 +62,17 @@ class MediaBrotha_Media {</span>
                 if (is_array($name)) {
                         $this-&gt;_metadata = $name;
                 } else {
<span style="color: #00A000">+                        switch($name) {</span>
<span style="color: #00A000">+                                case &#39;hidden&#39;:</span>
<span style="color: #00A000">+                                case &#39;display_name&#39;:</span>
<span style="color: #00A000">+                                case &#39;Array&#39;:</span>
<span style="color: #00A000">+                                //music</span>
<span style="color: #00A000">+                                case &#39;artist&#39;:</span>
<span style="color: #00A000">+                                case &#39;album&#39;:</span>
<span style="color: #00A000">+                                        break;</span>
<span style="color: #00A000">+                                default:</span>
<span style="color: #00A000">+                                        print &quot;Unusual metadata &#39;$name&#39;.\n&quot;;</span>
<span style="color: #00A000">+                        }</span>
                         $this-&gt;_metadata[$name] = $value;
 
                 }
<span style="color: #800080; font-weight: bold">@@ -81,10 +94,22 @@ class MediaBrotha_Media {</span>
                 $this-&gt;_mimeEncoding = $mime_encoding;
         }
 
<span style="color: #00A000">+        /* parent */</span>
<span style="color: #00A000">+        public function getParent() {</span>
<span style="color: #00A000">+                return $this-&gt;_parent;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function setParent($parent) {</span>
<span style="color: #00A000">+                $this-&gt;_parent = $parent;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
         /* Most used metadata */
<span style="color: #A00000">-        public function getDisplayName($max_length = 0) {</span>
<span style="color: #A00000">-                if ($name = $this-&gt;getMetadata(&#39;name&#39;)) {</span>
<span style="color: #A00000">-                        return $name;</span>
<span style="color: #00A000">+        public function getDisplayName($max_length = NULL) {</span>
<span style="color: #00A000">+                if ($name = $this-&gt;getMetadata(&#39;display_name&#39;)) {</span>
<span style="color: #00A000">+                        if ($max_length) {</span>
<span style="color: #00A000">+                                return substr($name, 0, $max_length);</span>
<span style="color: #00A000">+                        } else {</span>
<span style="color: #00A000">+                                return $name;</span>
<span style="color: #00A000">+                        }</span>
                 } else {
                         return &#39;?&#39;;
                 }
<span style="color: #800080; font-weight: bold">@@ -97,13 +122,3 @@ class MediaBrotha_Media {</span>
         }
 }
 
<span style="color: #A00000">-/*</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-Mandatory metadata:</span>
<span style="color: #A00000">-uri</span>
<span style="color: #A00000">-name</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-Usual metadata:</span>
<span style="color: #A00000">-artist</span>
<span style="color: #A00000">-album</span>
<span style="color: #A00000">-*/</span>
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBrother: lot of changes
<span style="color: #A00000">- Separate Backend from Iterator</span>
<span style="color: #A00000">- Reduce size of reply by using hashes in session</span>
<span style="color: #A00000">- ...</span>

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/browser/index.php b/sathieu/cisco-xml/browser/index.php</span>
<span style="color: #000080; font-weight: bold">index 1f0ae25..d142ff5 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/browser/index.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/browser/index.php</span>
<span style="color: #800080; font-weight: bold">@@ -33,10 +33,26 @@ ini_set(&#39;include_path&#39;, ini_get(&#39;include_path&#39;).PATH_SEPARATOR.&#39;../lib&#39;);</span>
 require(&#39;Cisco-XML/Cisco-XML.php&#39;);
 require_once(&#39;MediaBrotha/Core.php&#39;);
 
<span style="color: #00A000">+// Init</span>
 MediaBrotha_Core::init();
 MediaBrotha_Core::connectFrontend(&#39;CiscoXML&#39;, Array(&#39;push_url&#39; =&gt; &#39;http://cisco:cisco@192.168.0.220/CGI/Execute&#39;));
<span style="color: #00A000">+</span>
<span style="color: #00A000">+// Backends</span>
 MediaBrotha_Core::loadBackend(&#39;FileSystem&#39;, Array(&#39;base_path&#39; =&gt; &#39;/home/share/music/&#39;));
 MediaBrotha_Core::loadBackend(&#39;VLC&#39;, Array(&#39;http_intf&#39; =&gt; &#39;http://127.0.0.1:8080&#39;));
<span style="color: #00A000">+$ldap_connect_config = Array(</span>
<span style="color: #00A000">+        &#39;host&#39; =&gt; &#39;127.0.0.1&#39;,</span>
<span style="color: #00A000">+        //&#39;binddn&#39; =&gt; &#39;cn=nobody,cn=internal,dc=example,dc=org&#39;,</span>
<span style="color: #00A000">+        //&#39;bindpw&#39; =&gt; &#39;not24get&#39;,</span>
<span style="color: #00A000">+        &#39;basedn&#39; =&gt; &#39;dc=sathieu,dc=net&#39;,</span>
<span style="color: #00A000">+        &#39;filter&#39; =&gt; &#39;(objectClass=*)&#39;,</span>
<span style="color: #00A000">+        &#39;scope&#39; =&gt; &#39;one&#39;,</span>
<span style="color: #00A000">+);</span>
<span style="color: #00A000">+MediaBrotha_Core::loadBackend(&#39;LDAP&#39;, Array(&#39;ldap_connect_config&#39; =&gt; $ldap_connect_config));</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+// Roots</span>
<span style="color: #00A000">+MediaBrotha_Core::addRootMedia(&#39;file:///home/share/music/&#39;, Array(&#39;name&#39;=&gt; &#39;Fichiers&#39;));</span>
<span style="color: #00A000">+MediaBrotha_Core::addRootMedia(&#39;ldap:///&#39;, Array(&#39;name&#39;=&gt; &#39;Annuaire&#39;));</span>
 
 MediaBrotha_Core::go();
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #000080; font-weight: bold">index 2253ca9..c711f9c 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #800080; font-weight: bold">@@ -125,7 +125,10 @@ class CiscoXMLObject {</span>
                         );
 
                 $context  = stream_context_create($opts);
<span style="color: #A00000">-                return file_get_contents($url, false, $context);</span>
<span style="color: #00A000">+                $stream = fopen($url, &#39;r&#39;, false, $context);</span>
<span style="color: #00A000">+                if ($stream !== false) {</span>
<span style="color: #00A000">+                        return stream_get_contents($stream);</span>
<span style="color: #00A000">+                }</span>
         }
 
 }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #000080; font-weight: bold">index bb1fe8f..84a6a89 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #800080; font-weight: bold">@@ -26,80 +26,56 @@ This file is part of MediaBrotha.</span>
 
 require_once(&#39;MediaBrotha/Media.php&#39;);
 
<span style="color: #A00000">-class MediaBrotha_Backend extends MediaBrotha_Media implements Iterator {</span>
<span style="color: #A00000">-        protected $_buffer = Array();</span>
<span style="color: #A00000">-        public function __construct(array $args = Array()) {</span>
<span style="color: #A00000">-                parent::__construct($args);</span>
<span style="color: #00A000">+class MediaBrotha_Backend {</span>
<span style="color: #00A000">+        protected $_params = NULL;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function __construct($params = NULL) {</span>
<span style="color: #00A000">+                $this-&gt;setParam($params);</span>
                 $this-&gt;register();
<span style="color: #A00000">-                $this-&gt;setMimeType(&#39;application/x-mediabrotha-backend-&#39;.strtolower($this-&gt;getName()));</span>
<span style="color: #A00000">-                MediaBrotha_Core::registerMimeType($this, &#39;application/x-mediabrotha-backend-&#39;.strtolower($this-&gt;getName()));</span>
<span style="color: #A00000">-                $this-&gt;setMetadata(&#39;name&#39;, $this-&gt;getName());</span>
<span style="color: #A00000">-                $this-&gt;setMetadata(&#39;uri&#39;, &#39;MediaBrotha_Backend://&#39;.$this-&gt;getName());</span>
         }
 
<span style="color: #A00000">-        public function register() {</span>
<span style="color: #A00000">-                MediaBrotha_Core::registerBackend($this);</span>
<span style="color: #00A000">+        /* params */</span>
<span style="color: #00A000">+        public function getParam($name = NULL) {</span>
<span style="color: #00A000">+                if ($name === NULL) {</span>
<span style="color: #00A000">+                        return $this-&gt;_params;</span>
<span style="color: #00A000">+                } elseif (isset($this-&gt;_params[$name])) {</span>
<span style="color: #00A000">+                        return $this-&gt;_params[$name];</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        return NULL;</span>
<span style="color: #00A000">+                }</span>
         }
<span style="color: #00A000">+        public function setParam($name, $value = NULL) {</span>
<span style="color: #00A000">+                if (is_array($name)) {</span>
<span style="color: #00A000">+                        $this-&gt;_params = $name;</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        $this-&gt;_params[$name] = $value;</span>
 
<span style="color: #A00000">-        public function getName() {</span>
<span style="color: #A00000">-                return preg_replace(&#39;/^MediaBrotha_Backend_(.*)$/&#39;, &#39;$1&#39;, get_class($this));</span>
<span style="color: #00A000">+                }</span>
         }
 
<span style="color: #A00000">-        public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #A00000">-                return Array();</span>
<span style="color: #00A000">+        public function register() {</span>
<span style="color: #00A000">+                MediaBrotha_Core::registerBackend($this);</span>
         }
 
<span style="color: #A00000">-        public function isHidden() {</span>
<span style="color: #A00000">-                return parent::isHidden() || !in_array(&#39;browse&#39;, $this-&gt;capabilities());</span>
<span style="color: #00A000">+        public function getBackendName() {</span>
<span style="color: #00A000">+                return preg_replace(&#39;/^MediaBrotha_Backend_(.*)$/&#39;, &#39;$1&#39;, get_class($this));</span>
         }
 
<span style="color: #A00000">-        // Capability browse</span>
<span style="color: #A00000">-        protected function _mediaFromBufferItem($item) {</span>
<span style="color: #00A000">+        // Browsing</span>
<span style="color: #00A000">+        public function mediaFromBufferItem($item) {</span>
                 return $item;
         }
 
<span style="color: #A00000">-        public function fetch($uri) {</span>
<span style="color: #00A000">+        public function fetch(MediaBrotha_Media $media) {</span>
                 return false;
         }
 
<span style="color: #A00000">-        public function rewind() {</span>
<span style="color: #A00000">-                $this-&gt;_buffer-&gt;rewind();</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-        public function current() {</span>
<span style="color: #A00000">-                return $this-&gt;_mediaFromBufferItem($this-&gt;_buffer-&gt;current());</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-        public function key() {</span>
<span style="color: #A00000">-                return $this-&gt;_buffer-&gt;key();</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-        public function next() {</span>
<span style="color: #A00000">-                return $this-&gt;_mediaFromBufferItem($this-&gt;_buffer-&gt;next());</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-        public function valid() {</span>
<span style="color: #A00000">-                return $this-&gt;_buffer-&gt;valid();</span>
<span style="color: #00A000">+        // Actions</span>
<span style="color: #00A000">+        public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                return Array();</span>
         }
 
<span style="color: #A00000">-        // Capability play</span>
<span style="color: #A00000">-        public function play(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                return false;</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        public function pause() {</span>
<span style="color: #A00000">-                return false;</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        public function stop() {</span>
<span style="color: #A00000">-                return false;</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        // Capability playlist</span>
<span style="color: #A00000">-        public function playlistEnqueue(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                return false;</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        public function playlistNext(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                return false;</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        public function playlistPrevious(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+        public function doMediaAction($action, MediaBrotha_Media $media) {</span>
                 return false;
         }
 }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #000080; font-weight: bold">index 0dc8972..39928b4 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #800080; font-weight: bold">@@ -25,14 +25,10 @@ This file is part of MediaBrotha.</span>
  */
 
 class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {
<span style="color: #A00000">-        public function register() {</span>
<span style="color: #A00000">-                parent::register();</span>
<span style="color: #A00000">-                MediaBrotha_Core::registerMimeType($this, &#39;application/x-directory&#39;);</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
<span style="color: #00A000">+        // Helper functions</span>
         public function isURISafe($uri) {
                 $real_path = realpath(parse_url($uri, PHP_URL_PATH));
<span style="color: #A00000">-                $real_base_path = realpath($this-&gt;getMetadata(&#39;base_path&#39;));</span>
<span style="color: #00A000">+                $real_base_path = realpath($this-&gt;getParam(&#39;base_path&#39;));</span>
                 do {
                         if ($real_path === $real_base_path) {
                                 return true;
<span style="color: #800080; font-weight: bold">@@ -41,19 +37,16 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {</span>
                 return false;
         }
 
<span style="color: #A00000">-        public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #A00000">-                return Array(</span>
<span style="color: #A00000">-                        &#39;browse&#39;,</span>
<span style="color: #A00000">-                );</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        // Capability browse</span>
<span style="color: #A00000">-        protected function _mediaFromBufferItem($file) {</span>
<span style="color: #00A000">+        // Browsing</span>
<span style="color: #00A000">+        public function mediaFromBufferItem($file) {</span>
                 if ($file) {
<span style="color: #A00000">-                        $media = new MediaBrotha_Media(Array(</span>
<span style="color: #A00000">-                                &#39;uri&#39; =&gt; &#39;file://&#39;.realpath($file-&gt;getPathname()),</span>
<span style="color: #A00000">-                                &#39;name&#39; =&gt; $file-&gt;getFilename(),</span>
<span style="color: #A00000">-                                &#39;hidden&#39; =&gt; !$file-&gt;isReadable() || preg_match(&#39;/^\.([^.]|$)/&#39;, $file-&gt;getFilename()),</span>
<span style="color: #A00000">-                        ));</span>
<span style="color: #00A000">+                        $media = new MediaBrotha_Media(</span>
<span style="color: #00A000">+                                &#39;file://&#39;.realpath($file-&gt;getPathname()),</span>
<span style="color: #00A000">+                                Array(</span>
<span style="color: #00A000">+                                        &#39;name&#39; =&gt; $file-&gt;getFilename(),</span>
<span style="color: #00A000">+                                        &#39;hidden&#39; =&gt; !$file-&gt;isReadable() || preg_match(&#39;/^\.([^.]|$)/&#39;, $file-&gt;getFilename()),</span>
<span style="color: #00A000">+                                )</span>
<span style="color: #00A000">+                        );</span>
                         if ($file-&gt;isDir()) {
                                 $media-&gt;setMimeType(&#39;application/x-directory&#39;);
                         } else {
<span style="color: #800080; font-weight: bold">@@ -65,12 +58,34 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {</span>
                 }
         }
 
<span style="color: #A00000">-        public function fetch($uri) {</span>
<span style="color: #00A000">+        public function fetch(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                $uri =$media-&gt;getURI();</span>
                 if ((parse_url($uri, PHP_URL_SCHEME) != &#39;file&#39;) || !$this-&gt;isURISafe($uri)) {
                         $uri = &#39;file://&#39;.$this-&gt;getMetadata(&#39;base_path&#39;);
                 }
<span style="color: #A00000">-                $this-&gt;_buffer = new DirectoryIterator(parse_url($uri, PHP_URL_PATH));</span>
<span style="color: #A00000">-                return true;</span>
<span style="color: #00A000">+                $path = parse_url($uri, PHP_URL_PATH);</span>
<span style="color: #00A000">+                if (is_dir($path)) {</span>
<span style="color: #00A000">+                        return new MediaBrotha_MediaIterator($this, $media, new DirectoryIterator($path));</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        $this-&gt;setURI(NULL);</span>
<span style="color: #00A000">+                        return false;</span>
<span style="color: #00A000">+                }</span>
         }
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        // Actions</span>
<span style="color: #00A000">+        public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                if ($mime_type === &#39;application/x-directory&#39;) {</span>
<span style="color: #00A000">+                        return Array(</span>
<span style="color: #00A000">+                                &#39;browse&#39;,</span>
<span style="color: #00A000">+                        );</span>
<span style="color: #00A000">+                } elseif ($uri &amp;&amp; (substr($uri, 0, 7) === &#39;file://&#39;)) {</span>
<span style="color: #00A000">+                        return Array(</span>
<span style="color: #00A000">+                                &#39;browse&#39;,</span>
<span style="color: #00A000">+                        );</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        return parent::getMediaActions($uri, $mime_type, $mime_encoding);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #000080; font-weight: bold">index d275ff1..c882dd7 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #800080; font-weight: bold">@@ -29,27 +29,16 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {</span>
         private $_ldap;
         public function __construct(array $args = Array()) {
                 parent::__construct($args);
<span style="color: #A00000">-                $this-&gt;_ldap = Net_LDAP2::connect($this-&gt;getMetadata(&#39;ldap_connect_config&#39;));</span>
<span style="color: #00A000">+                $this-&gt;_ldap = Net_LDAP2::connect($this-&gt;getParam(&#39;ldap_connect_config&#39;));</span>
                 if (Net_LDAP2::isError($this-&gt;_ldap)) {
                         die(&#39;Could not fetch entry: &#39;.$this-&gt;_ldap-&gt;getMessage());
                 }
         }
<span style="color: #A00000">-        public function register() {</span>
<span style="color: #A00000">-                parent::register();</span>
<span style="color: #A00000">-                MediaBrotha_Core::registerMimeType($this, &#39;text/directory&#39;);</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-        public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #A00000">-                return Array(</span>
<span style="color: #A00000">-                        &#39;browse&#39;,</span>
<span style="color: #A00000">-                );</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
<span style="color: #00A000">+        // Helper functions</span>
         public function isURISafe($uri) {
                 return true;
         }
<span style="color: #A00000">-        </span>
<span style="color: #A00000">-        </span>
<span style="color: #00A000">+</span>
         public static function parseLDAPURI($uri, $component = NULL) {
                 $uri = preg_replace(&#39;@^ldap:///@&#39;, &#39;ldap://fake_host/&#39;, $uri);
                 $components = parse_url($uri, $component);
<span style="color: #800080; font-weight: bold">@@ -59,30 +48,50 @@ class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {</span>
                 return $components;
         }
 
<span style="color: #A00000">-        // Capability browse</span>
<span style="color: #A00000">-        public function fetch($uri) {</span>
<span style="color: #00A000">+        // Browsing</span>
<span style="color: #00A000">+        public function mediaFromBufferItem($entry) {</span>
<span style="color: #00A000">+                if ($entry) {</span>
<span style="color: #00A000">+                        $media = new MediaBrotha_Media(</span>
<span style="color: #00A000">+                                &#39;ldap:///&#39;.$entry-&gt;dn(),</span>
<span style="color: #00A000">+                                Array(</span>
<span style="color: #00A000">+                                        &#39;name&#39; =&gt; $entry-&gt;dn(), //$entry-&gt;getValue(&#39;sn&#39;, &#39;single&#39;),</span>
<span style="color: #00A000">+                                ),</span>
<span style="color: #00A000">+                                &#39;text/directory&#39;</span>
<span style="color: #00A000">+                                //$finfo-&gt;file($file-&gt;getPathname(), FILEINFO_MIME_ENCODING);</span>
<span style="color: #00A000">+                        );</span>
<span style="color: #00A000">+                        return $media;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function fetch(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                $uri = $media-&gt;getURI();</span>
                 if (($this::parseLDAPURI($uri, PHP_URL_SCHEME) != &#39;ldap&#39;) || !$this-&gt;isURISafe($uri)) {
<span style="color: #A00000">-                        $ldap_connect_config = $this-&gt;getMetadata(&#39;ldap_connect_config&#39;);</span>
<span style="color: #00A000">+                        $ldap_connect_config = $this-&gt;getParam(&#39;ldap_connect_config&#39;);</span>
                         $uri = &#39;ldap:///&#39;.$ldap_connect_config[&#39;basedn&#39;];
                 }
                 $basedn = $this::parseLDAPURI($uri, PHP_URL_PATH);
                 if ($basedn &amp;&amp; ($basedn{0} = &#39;/&#39;)) {
<span style="color: #A00000">-                        $basedn = substr($basedn, 1);        </span>
<span style="color: #00A000">+                        $basedn = substr($basedn, 1);</span>
                 }
<span style="color: #A00000">-                $this-&gt;_buffer = $this-&gt;_ldap-&gt;search($basedn, NULL,</span>
<span style="color: #00A000">+                $ldap_search = $this-&gt;_ldap-&gt;search($basedn, NULL,</span>
                         Array());
<span style="color: #00A000">+                return new MediaBrotha_MediaIterator($this, $media, $ldap_search);</span>
                 return true;
         }
<span style="color: #A00000">-        protected function _mediaFromBufferItem($entry) {</span>
<span style="color: #A00000">-                if ($entry) {</span>
<span style="color: #A00000">-                        $media = new MediaBrotha_Media(Array(</span>
<span style="color: #A00000">-                                &#39;uri&#39; =&gt; &#39;ldap:///&#39;.$entry-&gt;dn(),</span>
<span style="color: #A00000">-                                &#39;name&#39; =&gt; $entry-&gt;dn(), //$entry-&gt;getValue(&#39;sn&#39;, &#39;single&#39;),</span>
<span style="color: #A00000">-                        ));</span>
<span style="color: #A00000">-                        $media-&gt;setMimeType(&#39;text/directory&#39;);</span>
<span style="color: #A00000">-                        //        $media-&gt;setMimeEncoding($finfo-&gt;file($file-&gt;getPathname(), FILEINFO_MIME_ENCODING));</span>
<span style="color: #A00000">-                        return $media;</span>
<span style="color: #00A000">+        // Actions</span>
<span style="color: #00A000">+        public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                if ($mime_type === &#39;text/directory&#39;) {</span>
<span style="color: #00A000">+                        return Array(</span>
<span style="color: #00A000">+                                &#39;browse&#39;,</span>
<span style="color: #00A000">+                        );</span>
<span style="color: #00A000">+                } elseif ($uri &amp;&amp; (substr($uri, 0, 7) === &#39;ldap://&#39;)) {</span>
<span style="color: #00A000">+                        return Array(</span>
<span style="color: #00A000">+                                &#39;browse&#39;,</span>
<span style="color: #00A000">+                        );</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        return parent::getMediaActions($uri, $mime_type, $mime_encoding);</span>
                 }
         }
<span style="color: #00A000">+</span>
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #000080; font-weight: bold">index 5357cc3..addba42 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #800080; font-weight: bold">@@ -25,22 +25,28 @@ This file is part of MediaBrotha.</span>
  */
 
 class MediaBrotha_Backend_Root extends MediaBrotha_Backend {
<span style="color: #A00000">-        public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #A00000">-                return Array(</span>
<span style="color: #A00000">-                        &#39;browse&#39;,</span>
<span style="color: #A00000">-                );</span>
<span style="color: #00A000">+        private $_media = NULL;</span>
<span style="color: #00A000">+        private $_media_iterator = NULL;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function __construct($params = NULL) {</span>
<span style="color: #00A000">+                parent::__construct($params);</span>
<span style="color: #00A000">+                $this-&gt;_media = new MediaBrotha_Media(&#39;MediaBrotha:///&#39;);</span>
<span style="color: #00A000">+                $this-&gt;_media_iterator = new MediaBrotha_MediaIterator($this, $this-&gt;_media);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function addRootMedia($media) {</span>
<span style="color: #00A000">+                $this-&gt;_media_iterator-&gt;bufferAdd($media);</span>
         }
<span style="color: #A00000">-        public function isHidden() {</span>
<span style="color: #A00000">-                return true;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        // Browsing</span>
<span style="color: #00A000">+        public function fetch(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                return $this-&gt;_media_iterator;</span>
         }
 
<span style="color: #A00000">-        // Capability browse</span>
<span style="color: #A00000">-        public function fetch($uri) {</span>
<span style="color: #A00000">-                $this-&gt;_buffer = new ArrayIterator();</span>
<span style="color: #A00000">-                foreach(MediaBrotha_Core::getBackends() as $id =&gt; $backend) {</span>
<span style="color: #A00000">-                        $this-&gt;_buffer[] = $backend;</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-                return true;</span>
<span style="color: #00A000">+        // Actions</span>
<span style="color: #00A000">+        public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                return Array(</span>
<span style="color: #00A000">+                );</span>
         }
 
 }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #000080; font-weight: bold">index df10f93..2b4e7c6 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #800080; font-weight: bold">@@ -25,20 +25,14 @@ This file is part of MediaBrotha.</span>
  */
 
 class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {
<span style="color: #A00000">-        public function register() {</span>
<span style="color: #A00000">-                parent::register();</span>
<span style="color: #A00000">-                MediaBrotha_Core::registerMimeType($this, &#39;audio/mpeg&#39;);</span>
<span style="color: #A00000">-                MediaBrotha_Core::registerMimeType($this, &#39;video/x-msvideo&#39;);</span>
<span style="color: #A00000">-        }</span>
<span style="color: #00A000">+        static protected $_supported_mime_types = Array(</span>
<span style="color: #00A000">+                &#39;audio/mpeg&#39;,</span>
<span style="color: #00A000">+                &#39;video/x-msvideo&#39;,</span>
<span style="color: #00A000">+        );</span>
 
<span style="color: #A00000">-        public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #A00000">-                return Array(</span>
<span style="color: #A00000">-                        &#39;play&#39;,</span>
<span style="color: #A00000">-                        &#39;playlist&#39;,</span>
<span style="color: #A00000">-                );</span>
<span style="color: #A00000">-        }</span>
<span style="color: #00A000">+        // Helper functions</span>
         private function send_command($command, array $args = Array()) {
<span style="color: #A00000">-                $url = $this-&gt;getMetadata(&#39;http_intf&#39;).</span>
<span style="color: #00A000">+                $url = $this-&gt;getParam(&#39;http_intf&#39;).</span>
                         &#39;/requests/status.xml&#39;.
                         &#39;?command=&#39;.$command;
                 foreach ($args as $k =&gt; $v) {
<span style="color: #800080; font-weight: bold">@@ -49,31 +43,53 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {</span>
                 print $output.&#39;&lt;!--&#39;.$url.&quot;--&gt;\n&quot;;
         }
 
<span style="color: #A00000">-        // Capability browse</span>
<span style="color: #A00000">-        public function fetch($uri) {</span>
<span style="color: #A00000">-                $this-&gt;_buffer[] = new MediaBrotha_Media();</span>
<span style="color: #00A000">+        // Browsing</span>
<span style="color: #00A000">+        public function fetch(MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                $this-&gt;_buffer[] = $media;</span>
                 return true;
         }
 
<span style="color: #A00000">-        // Capability play</span>
<span style="color: #A00000">-        public function play(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                return $this-&gt;send_command(&#39;in_play&#39;, Array(&#39;input&#39; =&gt; $media-&gt;getURI()));</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        public function pause() {</span>
<span style="color: #A00000">-                return $this-&gt;send_command(&#39;pl_pause&#39;);</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        public function stop() {</span>
<span style="color: #A00000">-                return $this-&gt;send_command(&#39;pl_stop&#39;);</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        // Capability playlist</span>
<span style="color: #A00000">-        public function playlistEnqueue(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                return $this-&gt;send_command(&#39;in_enqueue&#39;, Array(&#39;input&#39; =&gt; $media-&gt;getURI()));</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        public function playlistNext(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                return $this-&gt;send_command(&#39;pl_next&#39;);</span>
<span style="color: #00A000">+        // Actions</span>
<span style="color: #00A000">+        public function getMediaActions($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                if (in_array($mime_type, Array($this::$_supported_mime_types))) {</span>
<span style="color: #00A000">+                        return Array(</span>
<span style="color: #00A000">+                                &#39;play_media&#39;,</span>
<span style="color: #00A000">+                                &#39;pause_media&#39;,</span>
<span style="color: #00A000">+                                &#39;stop_media&#39;,</span>
<span style="color: #00A000">+                                &#39;enqueue_media&#39;,</span>
<span style="color: #00A000">+                                &#39;next_media&#39;,</span>
<span style="color: #00A000">+                                &#39;previous_media&#39;,</span>
<span style="color: #00A000">+                        );</span>
<span style="color: #00A000">+                } elseif ($uri &amp;&amp; (substr($uri, 0, 7) === &#39;file://&#39;)) {</span>
<span style="color: #00A000">+                        return Array(</span>
<span style="color: #00A000">+                                &#39;play_media&#39;,</span>
<span style="color: #00A000">+                                &#39;pause_media&#39;,</span>
<span style="color: #00A000">+                                &#39;stop_media&#39;,</span>
<span style="color: #00A000">+                                &#39;enqueue_media&#39;,</span>
<span style="color: #00A000">+                                &#39;next_media&#39;,</span>
<span style="color: #00A000">+                                &#39;previous_media&#39;,</span>
<span style="color: #00A000">+                        );</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        return parent::getMediaActions($uri, $mime_type, $mime_encoding);</span>
<span style="color: #00A000">+                }</span>
         }
<span style="color: #A00000">-        public function playlistPrevious(MediaBrotha_Media $media) {</span>
<span style="color: #A00000">-                return $this-&gt;send_command(&#39;pl_previous&#39;);</span>
<span style="color: #00A000">+        public function doMediaAction($action, MediaBrotha_Media $media) {</span>
<span style="color: #00A000">+                switch($action) {</span>
<span style="color: #00A000">+                        case &#39;play_media&#39;:</span>
<span style="color: #00A000">+                                return $this-&gt;send_command(&#39;in_play&#39;, Array(&#39;input&#39; =&gt; $media-&gt;getURI()));</span>
<span style="color: #00A000">+                        case &#39;pause_media&#39;:</span>
<span style="color: #00A000">+                                return $this-&gt;send_command(&#39;pl_pause&#39;);</span>
<span style="color: #00A000">+                        case &#39;stop_media&#39;:</span>
<span style="color: #00A000">+                                return $this-&gt;send_command(&#39;pl_stop&#39;);</span>
<span style="color: #00A000">+                        case &#39;enqueue_media&#39;:</span>
<span style="color: #00A000">+                                return $this-&gt;send_command(&#39;in_enqueue&#39;, Array(&#39;input&#39; =&gt; $media-&gt;getURI()));</span>
<span style="color: #00A000">+                        case &#39;next_media&#39;:</span>
<span style="color: #00A000">+                                return $this-&gt;send_command(&#39;pl_next&#39;);</span>
<span style="color: #00A000">+                        case &#39;previous_media&#39;:</span>
<span style="color: #00A000">+                                return $this-&gt;send_command(&#39;pl_previous&#39;);</span>
<span style="color: #00A000">+                        default:</span>
<span style="color: #00A000">+                                return parent::doMediaAction($action, $media);</span>
<span style="color: #00A000">+                }</span>
         }
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #000080; font-weight: bold">index b3eaa84..5ec90e8 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #800080; font-weight: bold">@@ -27,53 +27,80 @@ This file is part of MediaBrotha.</span>
 require_once(&#39;MediaBrotha/Backend.php&#39;);
 require_once(&#39;MediaBrotha/Frontend.php&#39;);
 require_once(&#39;MediaBrotha/Media.php&#39;);
<span style="color: #00A000">+require_once(&#39;MediaBrotha/MediaIterator.php&#39;);</span>
 
 class MediaBrotha_Core {
         private static $_frontend = NULL;
         private static $_backends = Array();
<span style="color: #A00000">-        private static $_mime_types = Array();</span>
         private static $_media = NULL;
         
         public static function init() {
<span style="color: #00A000">+                if (!session_start()) {</span>
<span style="color: #00A000">+                        die(&#39;Unable to start session&#39;);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                if (!isset($_SESSION[&#39;HASHES&#39;])) {</span>
<span style="color: #00A000">+                        $_SESSION[&#39;HASHES&#39;] = Array();</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                if (isset($_SERVER[&quot;QUERY_STRING&quot;])) {</span>
<span style="color: #00A000">+                        $tmp = explode(&#39;&amp;&#39;, $_SERVER[&quot;QUERY_STRING&quot;]);</span>
<span style="color: #00A000">+                        foreach ($tmp as $h) {</span>
<span style="color: #00A000">+                                if (preg_match(&#39;/^[a-z0-9]+$/&#39;, $h)) {</span>
<span style="color: #00A000">+                                        if ($s = MediaBrotha_Core::hash2string($h)) {</span>
<span style="color: #00A000">+                                                parse_str($s, $output);</span>
<span style="color: #00A000">+                                                $_GET = array_merge($_GET, $output);</span>
<span style="color: #00A000">+                                        }</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                }</span>
                 MediaBrotha_Core::loadBackend(&#39;Root&#39;);
         }
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public static function hash2string($h) {</span>
<span style="color: #00A000">+                if (isset($_SESSION[&#39;HASHES&#39;][$h])) {</span>
<span style="color: #00A000">+                        return $_SESSION[&#39;HASHES&#39;][$h];</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        //print &#39;NO string for hash &#39;.$h;</span>
<span style="color: #00A000">+                        return NULL;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public static function string2hash($s) {</span>
<span style="color: #00A000">+                for($hash_length = 1 ; $hash_length &lt;=41 ; $hash_length++) {</span>
<span style="color: #00A000">+                        $h = substr(sha1($s), 0, $hash_length);</span>
<span style="color: #00A000">+                        if (!isset($_SESSION[&#39;HASHES&#39;][$h]) || ($_SESSION[&#39;HASHES&#39;][$h] === $s)) {</span>
<span style="color: #00A000">+                                break;</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                $_SESSION[&#39;HASHES&#39;][$h] = $s;</span>
<span style="color: #00A000">+                return $h;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
         public static function go() {
                 $current_backend = MediaBrotha_Core::getCurrentBackend();
<span style="color: #A00000">-                switch(MediaBrotha_Core::getAction()) {</span>
<span style="color: #A00000">-                        case &#39;play&#39;:</span>
<span style="color: #A00000">-                                $current_backend-&gt;play(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #A00000">-                                break;</span>
<span style="color: #A00000">-                        case &#39;pause&#39;:</span>
<span style="color: #A00000">-                                $current_backend-&gt;pause(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #A00000">-                                break;</span>
<span style="color: #A00000">-                        case &#39;stop&#39;:</span>
<span style="color: #A00000">-                                $current_backend-&gt;stop(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #A00000">-                                break;</span>
<span style="color: #A00000">-                        case &#39;pl_enqueue&#39;:</span>
<span style="color: #A00000">-                                $current_backend-&gt;playlistEnqueue(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #A00000">-                                break;</span>
<span style="color: #A00000">-                        case &#39;pl_next&#39;:</span>
<span style="color: #A00000">-                                $current_backend-&gt;playlistNext(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #A00000">-                                break;</span>
<span style="color: #A00000">-                        case &#39;pl_previous&#39;:</span>
<span style="color: #A00000">-                                $current_backend-&gt;playlistPrevious(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #A00000">-                                break;</span>
<span style="color: #A00000">-                        case &#39;browse&#39;:</span>
<span style="color: #A00000">-                        default:</span>
<span style="color: #A00000">-                                $current_uri = MediaBrotha_Core::getCurrentURI();</span>
<span style="color: #A00000">-                                $current_backend-&gt;fetch((string) $current_uri);</span>
<span style="color: #A00000">-                                MediaBrotha_Core::$_frontend-&gt;begin($current_backend);</span>
<span style="color: #A00000">-                                foreach($current_backend as $item) {</span>
<span style="color: #00A000">+                $current_media = MediaBrotha_Core::getCurrentMedia();</span>
<span style="color: #00A000">+                if (MediaBrotha_Core::getAction() == &#39;browse&#39;) {</span>
<span style="color: #00A000">+                        if ($media_iterator = $current_backend-&gt;fetch($current_media)) {</span>
<span style="color: #00A000">+                                MediaBrotha_Core::$_frontend-&gt;begin($current_media);</span>
<span style="color: #00A000">+                                foreach ($media_iterator as $item) {</span>
                                         if ($item-&gt;isHidden()) {
                                                 continue;
                                         }
                                         MediaBrotha_Core::$_frontend-&gt;addItem($item);
                                 }
<span style="color: #A00000">-                                MediaBrotha_Core::$_frontend-&gt;finish($current_backend);</span>
<span style="color: #A00000">-                                MediaBrotha_Core::$_frontend-&gt;render();</span>
<span style="color: #00A000">+                                MediaBrotha_Core::$_frontend-&gt;finish($current_media);</span>
<span style="color: #00A000">+                                MediaBrotha_Core::$_frontend-&gt;render($current_media);</span>
<span style="color: #00A000">+                        } else {</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        $current_backend-&gt;doMediaAction(MediaBrotha_Core::getAction(), $current_media);</span>
                 }
         }
 
<span style="color: #00A000">+        public function addRootMedia($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                MediaBrotha_Core::$_backends[&#39;Root&#39;]-&gt;addRootMedia(</span>
<span style="color: #00A000">+                        new MediaBrotha_Media($URI, $metadata, $mime_type,$mime_encoding)</span>
<span style="color: #00A000">+                );</span>
<span style="color: #00A000">+        }</span>
         /*
          * Backends
          */
<span style="color: #800080; font-weight: bold">@@ -85,20 +112,29 @@ class MediaBrotha_Core {</span>
                 return new $class_name($args);
         }
         public static function registerBackend($backend) {
<span style="color: #A00000">-                MediaBrotha_Core::$_backends[] = $backend;</span>
<span style="color: #00A000">+                MediaBrotha_Core::$_backends[$backend-&gt;getBackendName()] = $backend;</span>
         }
<span style="color: #A00000">-        public static function registerMimeType($backend, $mime_type) {</span>
<span style="color: #A00000">-                MediaBrotha_Core::$_mime_types[$mime_type][] = $backend;</span>
<span style="color: #00A000">+        public static function getBackend($name) {</span>
<span style="color: #00A000">+                return MediaBrotha_Core::$_backends[$name];</span>
         }
         public static function getBackends() {
                 return MediaBrotha_Core::$_backends;
         }
         public static function getCurrentBackend() {
<span style="color: #A00000">-                if (!empty($_GET[&#39;mime_type&#39;]) &amp;&amp; !empty(MediaBrotha_Core::$_mime_types[$_GET[&#39;mime_type&#39;]])) {</span>
<span style="color: #A00000">-                        return MediaBrotha_Core::$_mime_types[$_GET[&#39;mime_type&#39;]][0];</span>
<span style="color: #A00000">-                } else {</span>
<span style="color: #A00000">-                        return MediaBrotha_Core::$_backends[0];</span>
<span style="color: #00A000">+                if (!empty($_GET[&#39;backend&#39;]) &amp;&amp; !empty(MediaBrotha_Core::$_backends[$_GET[&#39;backend&#39;]])) {</span>
<span style="color: #00A000">+                        return MediaBrotha_Core::$_backends[$_GET[&#39;backend&#39;]];</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                foreach (MediaBrotha_Core::getBackends() as $backend) {</span>
<span style="color: #00A000">+                        foreach ($backend-&gt;getMediaActions(MediaBrotha_Core::getCurrentURI()) as $action) {</span>
<span style="color: #00A000">+                                if ($backend-&gt;getBackendName() == &#39;Root&#39;) {</span>
<span style="color: #00A000">+                                        continue;</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                                if ($action === MediaBrotha_Core::getAction()) {</span>
<span style="color: #00A000">+                                        return $backend;</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                        }</span>
                 }
<span style="color: #00A000">+                return MediaBrotha_Core::$_backends[&#39;Root&#39;];</span>
         }
         /*
          * Frontend
<span style="color: #800080; font-weight: bold">@@ -132,8 +168,7 @@ class MediaBrotha_Core {</span>
         }
         public static function getCurrentMedia() {
                 if (empty(MediaBrotha_Core::$_media)) {
<span style="color: #A00000">-                        MediaBrotha_Core::$_media = new MediaBrotha_Media();</span>
<span style="color: #A00000">-                        MediaBrotha_Core::$_media-&gt;setURI(MediaBrotha_Core::getCurrentURI());</span>
<span style="color: #00A000">+                        MediaBrotha_Core::$_media = new MediaBrotha_Media(MediaBrotha_Core::getCurrentURI());</span>
                 }
                 return MediaBrotha_Core::$_media;
         }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #000080; font-weight: bold">index 84ce7b7..2cc6060 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #800080; font-weight: bold">@@ -26,9 +26,9 @@ This file is part of MediaBrotha.</span>
 
 class MediaBrotha_Frontend {
         protected $_infos = NULL;
<span style="color: #00A000">+</span>
         public function __construct(array $args = Array()) {
                 $this-&gt;_infos = $args;
         }
 }
 
<span style="color: #A00000">-</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #000080; font-weight: bold">index ce2f711..2baa6af 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #800080; font-weight: bold">@@ -24,44 +24,48 @@ This file is part of MediaBrotha.</span>
  * @author Mathieu Parent
  */
 
<span style="color: #A00000">-class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend {</span>
<span style="color: #00A000">+require_once(&#39;HTTP.php&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend_HTTP {</span>
         private $_xml = NULL;
         public function begin($item) {
                 $this-&gt;_xml = new CiscoIPPhoneMenu();
                 $this-&gt;_xml-&gt;setCiscoElement(&#39;Title&#39;, $item-&gt;getDisplayName());
<span style="color: #A00000">-                //$this-&gt;_xml-&gt;setCiscoElement(&#39;Prompt&#39;, &#39;kk&#39;);</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;Prompt&#39;, substr($item-&gt;getURI(), -32));</span>
         }
         public function addItem($item) {
<span style="color: #A00000">-                $url = &#39;http://&#39;.$_SERVER[&#39;SERVER_NAME&#39;].$_SERVER[&#39;SCRIPT_NAME&#39;].&#39;?&#39;.</span>
<span style="color: #A00000">-                        &#39;mime_type=&#39;.urlencode($item-&gt;getMimeType()).&#39;&amp;&#39;.</span>
<span style="color: #A00000">-                        ($item-&gt;getMimeEncoding() ? (&#39;mime_encoding=&#39;.urlencode($item-&gt;getMimeEncoding()).&#39;&amp;&#39;) : &#39;&#39;).</span>
<span style="color: #A00000">-                        &#39;uri=&#39;.urlencode($item-&gt;getURI());</span>
<span style="color: #A00000">-                //$url = &#39;http://&#39;.$_SERVER[&#39;SERVER_NAME&#39;].$_SERVER[&#39;SCRIPT_NAME&#39;];</span>
<span style="color: #00A000">+                $url = $this-&gt;rootURL().&#39;?&#39;.</span>
<span style="color: #00A000">+                        MediaBrotha_Core::string2hash(</span>
<span style="color: #00A000">+                                &#39;mime_type=&#39;.urlencode($item-&gt;getMimeType()).&#39;&amp;&#39;.</span>
<span style="color: #00A000">+                                ($item-&gt;getMimeEncoding() ? (&#39;mime_encoding=&#39;.urlencode($item-&gt;getMimeEncoding()).&#39;&amp;&#39;) : &#39;&#39;).</span>
<span style="color: #00A000">+                                &#39;uri=&#39;.urlencode($item-&gt;getURI()));</span>
                 $this-&gt;_xml-&gt;setCiscoElement(&#39;MenuItem&#39;,
                         Array(&#39;Name&#39; =&gt; $item-&gt;getDisplayName(), &#39;URL&#39; =&gt; $url));
         }
<span style="color: #A00000">-        public function finish() {</span>
<span style="color: #A00000">-                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #A00000">-                        Array(&#39;Name&#39; =&gt; &#39;Select&#39;, &#39;URL&#39; =&gt; &#39;SoftKey:Select&#39;, &#39;Position&#39; =&gt; &#39;1&#39;));</span>
<span style="color: #A00000">-                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #A00000">-                        Array(&#39;Name&#39; =&gt; &#39;Play&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=play&#39;, &#39;Position&#39; =&gt; &#39;2&#39;));</span>
<span style="color: #A00000">-                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #A00000">-                        Array(&#39;Name&#39; =&gt; &#39;Pause&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pause&#39;, &#39;Position&#39; =&gt; &#39;3&#39;));</span>
<span style="color: #A00000">-                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #A00000">-                        Array(&#39;Name&#39; =&gt; &#39;Stop&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=stop&#39;, &#39;Position&#39; =&gt; &#39;4&#39;));</span>
<span style="color: #A00000">-                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #A00000">-                        Array(&#39;Name&#39; =&gt; &#39;Enqueue&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pl_enqueue&#39;, &#39;Position&#39; =&gt; &#39;5&#39;));</span>
<span style="color: #A00000">-                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #A00000">-                        Array(&#39;Name&#39; =&gt; &#39;Next&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pl_next&#39;, &#39;Position&#39; =&gt; &#39;6&#39;));</span>
<span style="color: #A00000">-                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #A00000">-                        Array(&#39;Name&#39; =&gt; &#39;Previous&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pl_previous&#39;, &#39;Position&#39; =&gt; &#39;7&#39;));</span>
<span style="color: #00A000">+        public function finish($item) {</span>
<span style="color: #00A000">+                $pos = 1;</span>
                 $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,
<span style="color: #A00000">-                        Array(&#39;Name&#39; =&gt; &#39;Quit&#39;, &#39;URL&#39; =&gt; &#39;SoftKey:Exit&#39;, &#39;Position&#39; =&gt; &#39;8&#39;));</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Select&#39;,</span>
<span style="color: #00A000">+                        &#39;URL&#39; =&gt; &#39;SoftKey:Select&#39;,</span>
<span style="color: #00A000">+                        &#39;Position&#39; =&gt; $pos++));</span>
<span style="color: #00A000">+                foreach (MediaBrotha_Core::getBackends() as $backend) {</span>
<span style="color: #00A000">+                        foreach ($backend-&gt;getMediaActions(MediaBrotha_Core::getCurrentURI()) as $action) {</span>
<span style="color: #00A000">+                                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                                        Array(&#39;Name&#39; =&gt; $action,</span>
<span style="color: #00A000">+                                        &#39;URL&#39; =&gt; &#39;QueryStringParam:&#39;.MediaBrotha_Core::string2hash(&#39;action=&#39;.$action.&#39;&amp;backend=&#39;.$backend-&gt;getBackendName()),</span>
<span style="color: #00A000">+                                        &#39;Position&#39; =&gt; $pos++));</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                }</span>
         }
         public function render() {
<span style="color: #A00000">-                CiscoXMLObject::HttpHeader();</span>
<span style="color: #A00000">-                print $this-&gt;_xml;</span>
<span style="color: #A00000">-                //$this-&gt;_xml-&gt;execute($this-&gt;_infos[&#39;push_url&#39;]);</span>
<span style="color: #00A000">+                if (true) {</span>
<span style="color: #00A000">+                        CiscoXMLObject::HttpHeader();</span>
<span style="color: #00A000">+                        print $this-&gt;_xml;</span>
<span style="color: #00A000">+                        //print &quot;\n&lt;!--&quot;.strlen($this-&gt;_xml).&#39;--&gt;&#39;;</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        print strlen($this-&gt;_xml).&quot;\n&quot;;</span>
<span style="color: #00A000">+                        print $this-&gt;_xml-&gt;execute($this-&gt;_infos[&#39;push_url&#39;]);</span>
<span style="color: #00A000">+                }</span>
         }
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php</span>
similarity index 77%
copy from sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
copy to sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php
<span style="color: #000080; font-weight: bold">index 84ce7b7..de19bf7 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php</span>
<span style="color: #800080; font-weight: bold">@@ -24,11 +24,10 @@ This file is part of MediaBrotha.</span>
  * @author Mathieu Parent
  */
 
<span style="color: #A00000">-class MediaBrotha_Frontend {</span>
<span style="color: #A00000">-        protected $_infos = NULL;</span>
<span style="color: #A00000">-        public function __construct(array $args = Array()) {</span>
<span style="color: #A00000">-                $this-&gt;_infos = $args;</span>
<span style="color: #00A000">+class MediaBrotha_Frontend_HTTP extends MediaBrotha_Frontend {</span>
<span style="color: #00A000">+        public function rootURL() {</span>
<span style="color: #00A000">+                $url = &#39;http://&#39;.$_SERVER[&#39;SERVER_NAME&#39;].$_SERVER[&#39;SCRIPT_NAME&#39;];</span>
<span style="color: #00A000">+                $url = preg_replace(&#39;/index\.php$/&#39;, &#39;&#39;, $url);</span>
<span style="color: #00A000">+                return $url;</span>
         }
 }
<span style="color: #A00000">-</span>
<span style="color: #A00000">-</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Media.php b/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #000080; font-weight: bold">index cf3d66d..6efd1db 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #800080; font-weight: bold">@@ -26,25 +26,27 @@ This file is part of MediaBrotha.</span>
 
 class MediaBrotha_Media {
         private $_metadata = Array();
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        private $_URI = NULL;</span>
         private $_mimeType = NULL;
         private $_mimeEncoding = NULL;
<span style="color: #A00000">-        public function __construct(array $metadata = Array()) {</span>
<span style="color: #A00000">-                 $this-&gt;_metadata = $metadata;</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        public function setMimeType($mime_type) {</span>
<span style="color: #A00000">-                $this-&gt;_mimeType = $mime_type;</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-        public function getMimeType() {</span>
<span style="color: #A00000">-                // TODO</span>
<span style="color: #A00000">-                return $this-&gt;_mimeType;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function __construct($URI, array $metadata = Array(), $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                 $this-&gt;setURI($URI);</span>
<span style="color: #00A000">+                 $this-&gt;setMetadata($metadata);</span>
<span style="color: #00A000">+                 $this-&gt;setMimeType($mime_type);</span>
<span style="color: #00A000">+                 $this-&gt;setMimeEncoding($mime_encoding);</span>
         }
<span style="color: #A00000">-        public function setMimeEncoding($mime_encoding) {</span>
<span style="color: #A00000">-                $this-&gt;_mimeEncoding = $mime_encoding;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        /* URI */</span>
<span style="color: #00A000">+        public function getURI() {</span>
<span style="color: #00A000">+                return $this-&gt;_URI;</span>
         }
<span style="color: #A00000">-        public function getMimeEncoding() {</span>
<span style="color: #A00000">-                // TODO</span>
<span style="color: #A00000">-                return $this-&gt;_mimeEncoding;</span>
<span style="color: #00A000">+        public function setURI($URI) {</span>
<span style="color: #00A000">+                $this-&gt;_URI = $URI;</span>
         }
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        /* metadata */</span>
         public function getMetadata($name = NULL) {
                 if ($name === NULL) {
                         return $this-&gt;_metadata;
<span style="color: #800080; font-weight: bold">@@ -54,7 +56,7 @@ class MediaBrotha_Media {</span>
                         return NULL;
                 }
         }
<span style="color: #A00000">-        public function setMetadata($name, $value) {</span>
<span style="color: #00A000">+        public function setMetadata($name, $value = NULL) {</span>
                 if (is_array($name)) {
                         $this-&gt;_metadata = $name;
                 } else {
<span style="color: #800080; font-weight: bold">@@ -62,21 +64,36 @@ class MediaBrotha_Media {</span>
 
                 }
         }
<span style="color: #A00000">-        /* Most used metadata */</span>
<span style="color: #A00000">-        public function getDisplayName($max_length = 0) {</span>
<span style="color: #A00000">-                return $this-&gt;getMetadata(&#39;name&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        /* mimeType */</span>
<span style="color: #00A000">+        public function getMimeType() {</span>
<span style="color: #00A000">+                return $this-&gt;_mimeType;</span>
         }
<span style="color: #A00000">-        public function getURI() {</span>
<span style="color: #A00000">-                return $this-&gt;getMetadata(&#39;uri&#39;);</span>
<span style="color: #00A000">+        public function setMimeType($mime_type) {</span>
<span style="color: #00A000">+                $this-&gt;_mimeType = $mime_type;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        /* mimeEncoding */</span>
<span style="color: #00A000">+        public function getMimeEncoding() {</span>
<span style="color: #00A000">+                return $this-&gt;_mimeEncoding;</span>
         }
<span style="color: #A00000">-        public function setURI($value) {</span>
<span style="color: #A00000">-                return $this-&gt;setMetadata(&#39;uri&#39;, $value);</span>
<span style="color: #00A000">+        public function setMimeEncoding($mime_encoding) {</span>
<span style="color: #00A000">+                $this-&gt;_mimeEncoding = $mime_encoding;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        /* Most used metadata */</span>
<span style="color: #00A000">+        public function getDisplayName($max_length = 0) {</span>
<span style="color: #00A000">+                if ($name = $this-&gt;getMetadata(&#39;name&#39;)) {</span>
<span style="color: #00A000">+                        return $name;</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        return &#39;?&#39;;</span>
<span style="color: #00A000">+                }</span>
         }
         public function getURIComponent($component) {
                 return parse_url($this-&gt;getURI($component));
         }
         public function isHidden() {
<span style="color: #A00000">-                return isset($this-&gt;_metadata[&#39;hidden&#39;]) &amp;&amp; $this-&gt;_metadata[&#39;hidden&#39;];</span>
<span style="color: #00A000">+                return (bool) $this-&gt;getMetadata(&#39;hidden&#39;);</span>
         }
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php b/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..096759a</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,71 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of MediaBrotha.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with MediaBrotha. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+require_once(&#39;MediaBrotha/Media.php&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_MediaIterator implements Iterator {</span>
<span style="color: #00A000">+        private $_backend = NULL;</span>
<span style="color: #00A000">+        private $_media = NULL;</span>
<span style="color: #00A000">+        private $_handle = NULL;</span>
<span style="color: #00A000">+        protected $_buffer = NULL;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function __construct(MediaBrotha_Backend $backend, MediaBrotha_Media $media, $buffer = NULL) {</span>
<span style="color: #00A000">+                $this-&gt;_backend = $backend;</span>
<span style="color: #00A000">+                $this-&gt;_media = $media;</span>
<span style="color: #00A000">+                if ($buffer) {</span>
<span style="color: #00A000">+                        $this-&gt;_buffer = $buffer;</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        $this-&gt;_buffer = new ArrayIterator();</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        /* buffer */</span>
<span style="color: #00A000">+        public function bufferAdd($media) {</span>
<span style="color: #00A000">+                $this-&gt;_buffer[] = $media;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        /* iterator */</span>
<span style="color: #00A000">+        public function rewind() {</span>
<span style="color: #00A000">+                $this-&gt;_buffer-&gt;rewind();</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function current() {</span>
<span style="color: #00A000">+                return $this-&gt;_backend-&gt;mediaFromBufferItem($this-&gt;_buffer-&gt;current());</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function key() {</span>
<span style="color: #00A000">+                return $this-&gt;_buffer-&gt;key();</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function next() {</span>
<span style="color: #00A000">+                return $this-&gt;_backend-&gt;mediaFromBufferItem($this-&gt;_buffer-&gt;next());</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function valid() {</span>
<span style="color: #00A000">+                return $this-&gt;_buffer-&gt;valid();</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBrotha: adding LDAP backend

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..d275ff1</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,88 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of MediaBrotha.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with MediaBrotha. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+require_once(&#39;Net/LDAP2.php&#39;);</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_Backend_LDAP extends MediaBrotha_Backend {</span>
<span style="color: #00A000">+        private $_ldap;</span>
<span style="color: #00A000">+        public function __construct(array $args = Array()) {</span>
<span style="color: #00A000">+                parent::__construct($args);</span>
<span style="color: #00A000">+                $this-&gt;_ldap = Net_LDAP2::connect($this-&gt;getMetadata(&#39;ldap_connect_config&#39;));</span>
<span style="color: #00A000">+                if (Net_LDAP2::isError($this-&gt;_ldap)) {</span>
<span style="color: #00A000">+                        die(&#39;Could not fetch entry: &#39;.$this-&gt;_ldap-&gt;getMessage());</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function register() {</span>
<span style="color: #00A000">+                parent::register();</span>
<span style="color: #00A000">+                MediaBrotha_Core::registerMimeType($this, &#39;text/directory&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                return Array(</span>
<span style="color: #00A000">+                        &#39;browse&#39;,</span>
<span style="color: #00A000">+                );</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function isURISafe($uri) {</span>
<span style="color: #00A000">+                return true;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        </span>
<span style="color: #00A000">+        </span>
<span style="color: #00A000">+        public static function parseLDAPURI($uri, $component = NULL) {</span>
<span style="color: #00A000">+                $uri = preg_replace(&#39;@^ldap:///@&#39;, &#39;ldap://fake_host/&#39;, $uri);</span>
<span style="color: #00A000">+                $components = parse_url($uri, $component);</span>
<span style="color: #00A000">+                if (is_array($components) &amp;&amp; ($components[&#39;host&#39;] === &#39;fake_host&#39;)) {</span>
<span style="color: #00A000">+                        $components[&#39;host&#39;] = NULL;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                return $components;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        // Capability browse</span>
<span style="color: #00A000">+        public function fetch($uri) {</span>
<span style="color: #00A000">+                if (($this::parseLDAPURI($uri, PHP_URL_SCHEME) != &#39;ldap&#39;) || !$this-&gt;isURISafe($uri)) {</span>
<span style="color: #00A000">+                        $ldap_connect_config = $this-&gt;getMetadata(&#39;ldap_connect_config&#39;);</span>
<span style="color: #00A000">+                        $uri = &#39;ldap:///&#39;.$ldap_connect_config[&#39;basedn&#39;];</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                $basedn = $this::parseLDAPURI($uri, PHP_URL_PATH);</span>
<span style="color: #00A000">+                if ($basedn &amp;&amp; ($basedn{0} = &#39;/&#39;)) {</span>
<span style="color: #00A000">+                        $basedn = substr($basedn, 1);        </span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                $this-&gt;_buffer = $this-&gt;_ldap-&gt;search($basedn, NULL,</span>
<span style="color: #00A000">+                        Array());</span>
<span style="color: #00A000">+                return true;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        protected function _mediaFromBufferItem($entry) {</span>
<span style="color: #00A000">+                if ($entry) {</span>
<span style="color: #00A000">+                        $media = new MediaBrotha_Media(Array(</span>
<span style="color: #00A000">+                                &#39;uri&#39; =&gt; &#39;ldap:///&#39;.$entry-&gt;dn(),</span>
<span style="color: #00A000">+                                &#39;name&#39; =&gt; $entry-&gt;dn(), //$entry-&gt;getValue(&#39;sn&#39;, &#39;single&#39;),</span>
<span style="color: #00A000">+                        ));</span>
<span style="color: #00A000">+                        $media-&gt;setMimeType(&#39;text/directory&#39;);</span>
<span style="color: #00A000">+                        //        $media-&gt;setMimeEncoding($finfo-&gt;file($file-&gt;getPathname(), FILEINFO_MIME_ENCODING));</span>
<span style="color: #00A000">+                        return $media;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
MediaBrotha: Rewrite backend logic a bit
And:
<span style="color: #A00000">- use type hinting</span>
<span style="color: #A00000">- MediaBrotha_Backend::_buffer is an Iterator</span>

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #000080; font-weight: bold">index f85001b..bb1fe8f 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #800080; font-weight: bold">@@ -28,7 +28,7 @@ require_once(&#39;MediaBrotha/Media.php&#39;);</span>
 
 class MediaBrotha_Backend extends MediaBrotha_Media implements Iterator {
         protected $_buffer = Array();
<span style="color: #A00000">-        public function __construct($args = Array()) {</span>
<span style="color: #00A000">+        public function __construct(array $args = Array()) {</span>
                 parent::__construct($args);
                 $this-&gt;register();
                 $this-&gt;setMimeType(&#39;application/x-mediabrotha-backend-&#39;.strtolower($this-&gt;getName()));
<span style="color: #800080; font-weight: bold">@@ -54,34 +54,36 @@ class MediaBrotha_Backend extends MediaBrotha_Media implements Iterator {</span>
         }
 
         // Capability browse
<span style="color: #00A000">+        protected function _mediaFromBufferItem($item) {</span>
<span style="color: #00A000">+                return $item;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
         public function fetch($uri) {
                 return false;
         }
 
         public function rewind() {
<span style="color: #A00000">-                reset($this-&gt;_buffer);</span>
<span style="color: #00A000">+                $this-&gt;_buffer-&gt;rewind();</span>
         }
 
         public function current() {
<span style="color: #A00000">-                return current($this-&gt;_buffer);</span>
<span style="color: #00A000">+                return $this-&gt;_mediaFromBufferItem($this-&gt;_buffer-&gt;current());</span>
         }
 
         public function key() {
<span style="color: #A00000">-                return key($this-&gt;_buffer);</span>
<span style="color: #00A000">+                return $this-&gt;_buffer-&gt;key();</span>
         }
 
         public function next() {
<span style="color: #A00000">-                return next($this-&gt;_buffer);</span>
<span style="color: #00A000">+                return $this-&gt;_mediaFromBufferItem($this-&gt;_buffer-&gt;next());</span>
         }
 
         public function valid() {
<span style="color: #A00000">-                $key = key($this-&gt;_buffer);</span>
<span style="color: #A00000">-                $var = ($key !== NULL &amp;&amp; $key !== FALSE);</span>
<span style="color: #A00000">-                return $var;</span>
<span style="color: #00A000">+                return $this-&gt;_buffer-&gt;valid();</span>
         }
 
         // Capability play
<span style="color: #A00000">-        public function play($media) {</span>
<span style="color: #00A000">+        public function play(MediaBrotha_Media $media) {</span>
                 return false;
         }
         public function pause() {
<span style="color: #800080; font-weight: bold">@@ -91,13 +93,13 @@ class MediaBrotha_Backend extends MediaBrotha_Media implements Iterator {</span>
                 return false;
         }
         // Capability playlist
<span style="color: #A00000">-        public function playlistEnqueue($media) {</span>
<span style="color: #00A000">+        public function playlistEnqueue(MediaBrotha_Media $media) {</span>
                 return false;
         }
<span style="color: #A00000">-        public function playlistNext($media) {</span>
<span style="color: #00A000">+        public function playlistNext(MediaBrotha_Media $media) {</span>
                 return false;
         }
<span style="color: #A00000">-        public function playlistPrevious($media) {</span>
<span style="color: #00A000">+        public function playlistPrevious(MediaBrotha_Media $media) {</span>
                 return false;
         }
 }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #000080; font-weight: bold">index 62fcb6f..0dc8972 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #800080; font-weight: bold">@@ -41,20 +41,13 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {</span>
                 return false;
         }
 
<span style="color: #A00000">-        public function fetch($uri) {</span>
<span style="color: #A00000">-                if ((parse_url($uri, PHP_URL_SCHEME) != &#39;file&#39;) || !$this-&gt;isURISafe($uri)) {</span>
<span style="color: #A00000">-                        $uri = &#39;file://&#39;.$this-&gt;getMetadata(&#39;base_path&#39;);</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-                $this-&gt;_buffer = new DirectoryIterator(parse_url($uri, PHP_URL_PATH));</span>
<span style="color: #A00000">-                return true;</span>
<span style="color: #A00000">-        }</span>
         public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
                 return Array(
                         &#39;browse&#39;,
                 );
         }
<span style="color: #A00000">-        // Iterator</span>
<span style="color: #A00000">-        public function mediaFromFile($file) {</span>
<span style="color: #00A000">+        // Capability browse</span>
<span style="color: #00A000">+        protected function _mediaFromBufferItem($file) {</span>
                 if ($file) {
                         $media = new MediaBrotha_Media(Array(
                                 &#39;uri&#39; =&gt; &#39;file://&#39;.realpath($file-&gt;getPathname()),
<span style="color: #800080; font-weight: bold">@@ -72,16 +65,12 @@ class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {</span>
                 }
         }
 
<span style="color: #A00000">-        public function current() {</span>
<span style="color: #A00000">-                return $this-&gt;mediaFromFile($this-&gt;_buffer-&gt;current());</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-        public function next() {</span>
<span style="color: #A00000">-                return $this-&gt;mediaFromFile($this-&gt;_buffer-&gt;next());</span>
<span style="color: #A00000">-        }</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-        public function valid() {</span>
<span style="color: #A00000">-                return $this-&gt;_buffer-&gt;valid();</span>
<span style="color: #00A000">+        public function fetch($uri) {</span>
<span style="color: #00A000">+                if ((parse_url($uri, PHP_URL_SCHEME) != &#39;file&#39;) || !$this-&gt;isURISafe($uri)) {</span>
<span style="color: #00A000">+                        $uri = &#39;file://&#39;.$this-&gt;getMetadata(&#39;base_path&#39;);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                $this-&gt;_buffer = new DirectoryIterator(parse_url($uri, PHP_URL_PATH));</span>
<span style="color: #00A000">+                return true;</span>
         }
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #000080; font-weight: bold">index 5e9c5fb..5357cc3 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #800080; font-weight: bold">@@ -25,13 +25,6 @@ This file is part of MediaBrotha.</span>
  */
 
 class MediaBrotha_Backend_Root extends MediaBrotha_Backend {
<span style="color: #A00000">-        public function fetch($uri) {</span>
<span style="color: #A00000">-                $this-&gt;_buffer = Array();</span>
<span style="color: #A00000">-                foreach(MediaBrotha_Core::getBackends() as $id =&gt; $backend) {</span>
<span style="color: #A00000">-                        $this-&gt;_buffer[] = $backend;</span>
<span style="color: #A00000">-                }</span>
<span style="color: #A00000">-                return true;</span>
<span style="color: #A00000">-        }</span>
         public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
                 return Array(
                         &#39;browse&#39;,
<span style="color: #800080; font-weight: bold">@@ -40,6 +33,16 @@ class MediaBrotha_Backend_Root extends MediaBrotha_Backend {</span>
         public function isHidden() {
                 return true;
         }
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        // Capability browse</span>
<span style="color: #00A000">+        public function fetch($uri) {</span>
<span style="color: #00A000">+                $this-&gt;_buffer = new ArrayIterator();</span>
<span style="color: #00A000">+                foreach(MediaBrotha_Core::getBackends() as $id =&gt; $backend) {</span>
<span style="color: #00A000">+                        $this-&gt;_buffer[] = $backend;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                return true;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
 }
 
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #000080; font-weight: bold">index 12cbff6..df10f93 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #800080; font-weight: bold">@@ -31,28 +31,32 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {</span>
                 MediaBrotha_Core::registerMimeType($this, &#39;video/x-msvideo&#39;);
         }
 
<span style="color: #A00000">-        public function fetch($uri) {</span>
<span style="color: #A00000">-                $this-&gt;_buffer[] = new MediaBrotha_Media();</span>
<span style="color: #A00000">-                return true;</span>
<span style="color: #A00000">-        }</span>
         public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {
                 return Array(
                         &#39;play&#39;,
                         &#39;playlist&#39;,
                 );
         }
<span style="color: #A00000">-        private function send_command($command, $args = Array()) {</span>
<span style="color: #00A000">+        private function send_command($command, array $args = Array()) {</span>
                 $url = $this-&gt;getMetadata(&#39;http_intf&#39;).
                         &#39;/requests/status.xml&#39;.
                         &#39;?command=&#39;.$command;
                 foreach ($args as $k =&gt; $v) {
                         $url.= &#39;&amp;&#39;.$k.&#39;=&#39;.rawurlencode($v);
                 }
<span style="color: #A00000">-                return fopen($url, &#39;r&#39;);</span>
<span style="color: #00A000">+                $output = file_get_contents($url);</span>
<span style="color: #00A000">+                Header(&#39;Content-Type: text/xml&#39;);</span>
<span style="color: #00A000">+                print $output.&#39;&lt;!--&#39;.$url.&quot;--&gt;\n&quot;;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        // Capability browse</span>
<span style="color: #00A000">+        public function fetch($uri) {</span>
<span style="color: #00A000">+                $this-&gt;_buffer[] = new MediaBrotha_Media();</span>
<span style="color: #00A000">+                return true;</span>
         }
 
         // Capability play
<span style="color: #A00000">-        public function play($media) {</span>
<span style="color: #00A000">+        public function play(MediaBrotha_Media $media) {</span>
                 return $this-&gt;send_command(&#39;in_play&#39;, Array(&#39;input&#39; =&gt; $media-&gt;getURI()));
         }
         public function pause() {
<span style="color: #800080; font-weight: bold">@@ -62,13 +66,13 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {</span>
                 return $this-&gt;send_command(&#39;pl_stop&#39;);
         }
         // Capability playlist
<span style="color: #A00000">-        public function playlistEnqueue($media) {</span>
<span style="color: #00A000">+        public function playlistEnqueue(MediaBrotha_Media $media) {</span>
                 return $this-&gt;send_command(&#39;in_enqueue&#39;, Array(&#39;input&#39; =&gt; $media-&gt;getURI()));
         }
<span style="color: #A00000">-        public function playlistNext($media) {</span>
<span style="color: #00A000">+        public function playlistNext(MediaBrotha_Media $media) {</span>
                 return $this-&gt;send_command(&#39;pl_next&#39;);
         }
<span style="color: #A00000">-        public function playlistPrevious($media) {</span>
<span style="color: #00A000">+        public function playlistPrevious(MediaBrotha_Media $media) {</span>
                 return $this-&gt;send_command(&#39;pl_previous&#39;);
         }
 }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #000080; font-weight: bold">index e31ee47..b3eaa84 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #800080; font-weight: bold">@@ -60,7 +60,8 @@ class MediaBrotha_Core {</span>
                                 break;
                         case &#39;browse&#39;:
                         default:
<span style="color: #A00000">-                                $current_backend-&gt;fetch(MediaBrotha_Core::getCurrentURI());</span>
<span style="color: #00A000">+                                $current_uri = MediaBrotha_Core::getCurrentURI();</span>
<span style="color: #00A000">+                                $current_backend-&gt;fetch((string) $current_uri);</span>
                                 MediaBrotha_Core::$_frontend-&gt;begin($current_backend);
                                 foreach($current_backend as $item) {
                                         if ($item-&gt;isHidden()) {
<span style="color: #800080; font-weight: bold">@@ -126,7 +127,7 @@ class MediaBrotha_Core {</span>
 
         public static function getCurrentURI() {
                 if (!empty($_GET[&#39;uri&#39;])) {
<span style="color: #A00000">-                        return $_GET[&#39;uri&#39;];</span>
<span style="color: #00A000">+                        return (string) $_GET[&#39;uri&#39;];</span>
                 }
         }
         public static function getCurrentMedia() {
<span style="color: #800080; font-weight: bold">@@ -136,5 +137,6 @@ class MediaBrotha_Core {</span>
                 }
                 return MediaBrotha_Core::$_media;
         }
<span style="color: #00A000">+</span>
 }
 
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #000080; font-weight: bold">index 9eab63c..84ce7b7 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #800080; font-weight: bold">@@ -25,10 +25,8 @@ This file is part of MediaBrotha.</span>
  */
 
 class MediaBrotha_Frontend {
<span style="color: #A00000">-        protected $_browser = NULL;</span>
         protected $_infos = NULL;
<span style="color: #A00000">-        public function __construct($browser, $args = Array()) {</span>
<span style="color: #A00000">-                $this-&gt;_browser = $browser;</span>
<span style="color: #00A000">+        public function __construct(array $args = Array()) {</span>
                 $this-&gt;_infos = $args;
         }
 }
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Media.php b/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #000080; font-weight: bold">index 0b50a52..cf3d66d 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #800080; font-weight: bold">@@ -28,7 +28,7 @@ class MediaBrotha_Media {</span>
         private $_metadata = Array();
         private $_mimeType = NULL;
         private $_mimeEncoding = NULL;
<span style="color: #A00000">-        public function __construct($metadata = Array()) {</span>
<span style="color: #00A000">+        public function __construct(array $metadata = Array()) {</span>
                  $this-&gt;_metadata = $metadata;
         }
         public function setMimeType($mime_type) {
<span style="color: #800080; font-weight: bold">@@ -63,7 +63,7 @@ class MediaBrotha_Media {</span>
                 }
         }
         /* Most used metadata */
<span style="color: #A00000">-        public function getDisplayName() {</span>
<span style="color: #00A000">+        public function getDisplayName($max_length = 0) {</span>
                 return $this-&gt;getMetadata(&#39;name&#39;);
         }
         public function getURI() {
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Added auto jitterbuffer to sofia settings

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Sofia.cs b/mitchcapper/FSClient/Sofia.cs</span>
<span style="color: #000080; font-weight: bold">index f33d963..0a5d2c7 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Sofia.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Sofia.cs</span>
<span style="color: #800080; font-weight: bold">@@ -57,6 +57,7 @@ namespace FSClient {</span>
                                                                                         new Field(Field.FIELD_TYPE.Int,&quot;SIP Port&quot;,&quot;sip-port&quot;,&quot;sip-port&quot;,&quot;12346&quot;,&quot;Advanced&quot;),
                                                                                         new Field(Field.FIELD_TYPE.Int,&quot;DTMF Duration&quot;,&quot;dtmf-duration&quot;,&quot;dtmf-duration&quot;,&quot;2000&quot;,&quot;Advanced&quot;),
                                                                                         new Field(Field.FIELD_TYPE.Bool,&quot;STUN Enabled&quot;,&quot;stun-enabled&quot;,&quot;stun-enabled&quot;,&quot;true&quot;,&quot;Advanced&quot;),
<span style="color: #00A000">+                                                                                        new Field(Field.FIELD_TYPE.Int,&quot;Jitter Buffer&quot;,&quot;auto-jitterbuffer-msec&quot;,&quot;auto-jitterbuffer-msec&quot;,&quot;60&quot;,&quot;Advanced&quot;),</span>
 
                                                                                         /*Advanced Less Important*/
                                                                                         new Field(Field.FIELD_TYPE.Int,&quot;Max Proceeding&quot;,&quot;max-proceeding&quot;,&quot;max-proceeding&quot;,&quot;3&quot;,&quot;Advanced&quot;),
</pre></div>
<div class="highlight"><pre>committer: Jeff Lenk
comments: 
FSClient remove redundant setup

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Setup/Setup.wixproj b/mitchcapper/FSClient/Setup/Setup.wixproj</span>
<span style="color: #000080; font-weight: bold">index acfcb35..acc41b5 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Setup/Setup.wixproj</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Setup/Setup.wixproj</span>
<span style="color: #800080; font-weight: bold">@@ -101,6 +101,6 @@</span>
         &lt;/Target&gt;
         --&gt;
   &lt;Target Name=&quot;AfterBuild&quot;&gt;
<span style="color: #A00000">-    &lt;GenerateBootstrapper ApplicationFile=&quot;$(TargetFileName)&quot; ApplicationName=&quot;FSClient Setup&quot; BootstrapperItems=&quot;@(BootstrapperFile)&quot; ComponentsLocation=&quot;HomeSite&quot; CopyComponents=&quot;True&quot; OutputPath=&quot;$(OutputPath)&quot; Path=&quot;C:\Program Files (X86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\&quot; /&gt;</span>
<span style="color: #00A000">+    &lt;GenerateBootstrapper ApplicationFile=&quot;$(TargetFileName)&quot; ApplicationName=&quot;FSClient&quot; BootstrapperItems=&quot;@(BootstrapperFile)&quot; ComponentsLocation=&quot;HomeSite&quot; CopyComponents=&quot;True&quot; OutputPath=&quot;$(OutputPath)&quot; Path=&quot;C:\Program Files (X86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\&quot; /&gt;</span>
   &lt;/Target&gt;
 &lt;/Project&gt;
\ No newline at end of file
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
Cisco-XML: add ms-video support for VLC

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #000080; font-weight: bold">index 03f5360..12cbff6 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #800080; font-weight: bold">@@ -28,6 +28,7 @@ class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {</span>
         public function register() {
                 parent::register();
                 MediaBrotha_Core::registerMimeType($this, &#39;audio/mpeg&#39;);
<span style="color: #00A000">+                MediaBrotha_Core::registerMimeType($this, &#39;video/x-msvideo&#39;);</span>
         }
 
         public function fetch($uri) {
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
Cisco-XML: correct typos

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #000080; font-weight: bold">index a0a9078..ce2f711 100644</span>
<span style="color: #A00000">--- a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #800080; font-weight: bold">@@ -52,9 +52,9 @@ class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend {</span>
                 $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,
                         Array(&#39;Name&#39; =&gt; &#39;Enqueue&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pl_enqueue&#39;, &#39;Position&#39; =&gt; &#39;5&#39;));
                 $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,
<span style="color: #A00000">-                        Array(&#39;Name&#39; =&gt; &#39;Enqueue&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pl_next&#39;, &#39;Position&#39; =&gt; &#39;6&#39;));</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Next&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pl_next&#39;, &#39;Position&#39; =&gt; &#39;6&#39;));</span>
                 $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,
<span style="color: #A00000">-                        Array(&#39;Name&#39; =&gt; &#39;Enqueue&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pl_previous&#39;, &#39;Position&#39; =&gt; &#39;7&#39;));</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Previous&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pl_previous&#39;, &#39;Position&#39; =&gt; &#39;7&#39;));</span>
                 $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,
                         Array(&#39;Name&#39; =&gt; &#39;Quit&#39;, &#39;URL&#39; =&gt; &#39;SoftKey:Exit&#39;, &#39;Position&#39; =&gt; &#39;8&#39;));
         }
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Removed DX patch it is now in trunk

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/External Items/portaudio_dx_win.patch b/mitchcapper/FSClient/External Items/portaudio_dx_win.patch</span>
deleted file mode 100644
<span style="color: #000080; font-weight: bold">index 21c1caf..0000000</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/External Items/portaudio_dx_win.patch        </span>
<span style="color: #00A000">+++ /dev/null</span>
<span style="color: #800080; font-weight: bold">@@ -1,426 +0,0 @@</span>
<span style="color: #A00000">-diff --git a/Freeswitch.2010.sln b/Freeswitch.2010.sln</span>
<span style="color: #A00000">-index edee701..464cb2e 100644</span>
<span style="color: #A00000">---- a/Freeswitch.2010.sln</span>
<span style="color: #A00000">-+++ b/Freeswitch.2010.sln</span>
<span style="color: #A00000">-@@ -1569,18 +1569,18 @@ Global</span>
<span style="color: #A00000">-                 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #A00000">-                 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.Build.0 = Release DirectSound|x64</span>
<span style="color: #A00000">-                 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x86 Setup.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug|Win32</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug DirectSound|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug DirectSound|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug DirectSound|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release DirectSound|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release DirectSound|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release DirectSound|Win32</span>
<span style="color: #A00000">-                 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64</span>
<span style="color: #A00000">-                 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64</span>
<span style="color: #A00000">-                 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64</span>
<span style="color: #A00000">-diff --git a/libs/portaudio/build/msvc/portaudio.2010.vcxproj b/libs/portaudio/build/msvc/portaudio.2010.vcxproj</span>
<span style="color: #A00000">-index b4eca56..10b4c25 100644</span>
<span style="color: #A00000">---- a/libs/portaudio/build/msvc/portaudio.2010.vcxproj</span>
<span style="color: #A00000">-+++ b/libs/portaudio/build/msvc/portaudio.2010.vcxproj</span>
<span style="color: #A00000">-@@ -41,11 +41,11 @@</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.Default.props&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #A00000">--    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #A00000">--    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #A00000">-@@ -57,11 +57,11 @@</span>
<span style="color: #A00000">-     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #A00000">--    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #A00000">--    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|x64&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #A00000">-@@ -77,9 +77,11 @@</span>
<span style="color: #A00000">-   &lt;/ImportGroup&gt;</span>
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #A00000">-+    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;/ImportGroup&gt;</span>
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #A00000">-+    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;/ImportGroup&gt;</span>
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #A00000">-@@ -92,10 +94,12 @@</span>
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props&quot; /&gt;</span>
<span style="color: #A00000">-+    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;/ImportGroup&gt;</span>
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props&quot; /&gt;</span>
<span style="color: #A00000">-+    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;/ImportGroup&gt;</span>
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|x64&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #A00000">-@@ -110,18 +114,6 @@</span>
<span style="color: #A00000">-   &lt;PropertyGroup Label=&quot;UserMacros&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup&gt;</span>
<span style="color: #A00000">-     &lt;_ProjectFileVersion&gt;10.0.30319.1&lt;/_ProjectFileVersion&gt;</span>
<span style="color: #A00000">--    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #A00000">--    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #A00000">--    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/LinkIncremental&gt;</span>
<span style="color: #A00000">--    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #A00000">--    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #A00000">--    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/LinkIncremental&gt;</span>
<span style="color: #A00000">--    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #A00000">--    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #A00000">--    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;false&lt;/LinkIncremental&gt;</span>
<span style="color: #A00000">--    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #A00000">--    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #A00000">--    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;false&lt;/LinkIncremental&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Midl&gt;</span>
<span style="color: #A00000">-@@ -231,45 +223,23 @@</span>
<span style="color: #A00000">-       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-       &lt;TargetEnvironment&gt;Win32&lt;/TargetEnvironment&gt;</span>
<span style="color: #A00000">--      &lt;TypeLibraryName&gt;.\Debug_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #A00000">--      &lt;HeaderFileName&gt;</span>
<span style="color: #A00000">--      &lt;/HeaderFileName&gt;</span>
<span style="color: #A00000">-     &lt;/Midl&gt;</span>
<span style="color: #A00000">-     &lt;ClCompile&gt;</span>
<span style="color: #A00000">-       &lt;Optimization&gt;Disabled&lt;/Optimization&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">--      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;</span>
<span style="color: #A00000">-       &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;</span>
<span style="color: #A00000">-       &lt;RuntimeLibrary&gt;MultiThreadedDebugDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #A00000">--      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)/portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #A00000">--      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #A00000">--      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #A00000">-       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;</span>
<span style="color: #A00000">-     &lt;/ClCompile&gt;</span>
<span style="color: #A00000">-     &lt;ResourceCompile&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions&gt;_DEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #A00000">-     &lt;/ResourceCompile&gt;</span>
<span style="color: #A00000">--    &lt;Link&gt;</span>
<span style="color: #A00000">--      &lt;AdditionalDependencies&gt;ksuser.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x86.dll&lt;/OutputFile&gt;</span>
<span style="color: #A00000">--      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #A00000">--      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)\portaudio_x86.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #A00000">--      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #A00000">--      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)\portaudio_x86.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #A00000">--      &lt;TargetMachine&gt;MachineX86&lt;/TargetMachine&gt;</span>
<span style="color: #A00000">--    &lt;/Link&gt;</span>
<span style="color: #A00000">-     &lt;Bscmake&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio.bsc&lt;/OutputFile&gt;</span>
<span style="color: #A00000">-     &lt;/Bscmake&gt;</span>
<span style="color: #A00000">-   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #A00000">-   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;</span>
<span style="color: #A00000">-@@ -278,45 +248,23 @@</span>
<span style="color: #A00000">-       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-       &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;</span>
<span style="color: #A00000">--      &lt;TypeLibraryName&gt;.\Debug_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #A00000">--      &lt;HeaderFileName&gt;</span>
<span style="color: #A00000">--      &lt;/HeaderFileName&gt;</span>
<span style="color: #A00000">-     &lt;/Midl&gt;</span>
<span style="color: #A00000">-     &lt;ClCompile&gt;</span>
<span style="color: #A00000">-       &lt;Optimization&gt;Disabled&lt;/Optimization&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">--      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;</span>
<span style="color: #A00000">-       &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;</span>
<span style="color: #A00000">-       &lt;RuntimeLibrary&gt;MultiThreadedDebugDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #A00000">--      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)\portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #A00000">--      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #A00000">--      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #A00000">-       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;</span>
<span style="color: #A00000">-     &lt;/ClCompile&gt;</span>
<span style="color: #A00000">-     &lt;ResourceCompile&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions&gt;_DEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #A00000">-     &lt;/ResourceCompile&gt;</span>
<span style="color: #A00000">--    &lt;Link&gt;</span>
<span style="color: #A00000">--      &lt;AdditionalDependencies&gt;ksuser.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x64.dll&lt;/OutputFile&gt;</span>
<span style="color: #A00000">--      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #A00000">--      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)/portaudio_x64.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #A00000">--      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #A00000">--      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)\portaudio_x64.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #A00000">--      &lt;TargetMachine&gt;MachineX64&lt;/TargetMachine&gt;</span>
<span style="color: #A00000">--    &lt;/Link&gt;</span>
<span style="color: #A00000">-     &lt;Bscmake&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)/portaudio_x64.bsc&lt;/OutputFile&gt;</span>
<span style="color: #A00000">-     &lt;/Bscmake&gt;</span>
<span style="color: #A00000">-   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #A00000">-   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;</span>
<span style="color: #A00000">-@@ -325,22 +273,15 @@</span>
<span style="color: #A00000">-       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-       &lt;TargetEnvironment&gt;Win32&lt;/TargetEnvironment&gt;</span>
<span style="color: #A00000">--      &lt;TypeLibraryName&gt;.\Release_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #A00000">--      &lt;HeaderFileName&gt;</span>
<span style="color: #A00000">--      &lt;/HeaderFileName&gt;</span>
<span style="color: #A00000">-     &lt;/Midl&gt;</span>
<span style="color: #A00000">-     &lt;ClCompile&gt;</span>
<span style="color: #A00000">-       &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;</span>
<span style="color: #A00000">--      &lt;InlineFunctionExpansion&gt;OnlyExplicitInline&lt;/InlineFunctionExpansion&gt;</span>
<span style="color: #A00000">-+      &lt;InlineFunctionExpansion&gt;Default&lt;/InlineFunctionExpansion&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">--      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;StringPooling&gt;true&lt;/StringPooling&gt;</span>
<span style="color: #A00000">-       &lt;RuntimeLibrary&gt;MultiThreadedDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #A00000">-       &lt;FunctionLevelLinking&gt;true&lt;/FunctionLevelLinking&gt;</span>
<span style="color: #A00000">--      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)/portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #A00000">--      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #A00000">--      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #A00000">-       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-     &lt;/ClCompile&gt;</span>
<span style="color: #A00000">-@@ -348,20 +289,8 @@</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions&gt;NDEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #A00000">-     &lt;/ResourceCompile&gt;</span>
<span style="color: #A00000">--    &lt;Link&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x86.dll&lt;/OutputFile&gt;</span>
<span style="color: #A00000">--      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)\portaudio_x86.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #A00000">--      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #A00000">--      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)\portaudio_x86.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #A00000">--      &lt;TargetMachine&gt;MachineX86&lt;/TargetMachine&gt;</span>
<span style="color: #A00000">--    &lt;/Link&gt;</span>
<span style="color: #A00000">-     &lt;Bscmake&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio.bsc&lt;/OutputFile&gt;</span>
<span style="color: #A00000">-     &lt;/Bscmake&gt;</span>
<span style="color: #A00000">-   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #A00000">-   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;</span>
<span style="color: #A00000">-@@ -370,22 +299,15 @@</span>
<span style="color: #A00000">-       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-       &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;</span>
<span style="color: #A00000">--      &lt;TypeLibraryName&gt;.\Release_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #A00000">--      &lt;HeaderFileName&gt;</span>
<span style="color: #A00000">--      &lt;/HeaderFileName&gt;</span>
<span style="color: #A00000">-     &lt;/Midl&gt;</span>
<span style="color: #A00000">-     &lt;ClCompile&gt;</span>
<span style="color: #A00000">-       &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;</span>
<span style="color: #A00000">--      &lt;InlineFunctionExpansion&gt;OnlyExplicitInline&lt;/InlineFunctionExpansion&gt;</span>
<span style="color: #A00000">--      &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">--      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;InlineFunctionExpansion&gt;Default&lt;/InlineFunctionExpansion&gt;</span>
<span style="color: #A00000">-+      &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-+      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;StringPooling&gt;true&lt;/StringPooling&gt;</span>
<span style="color: #A00000">-       &lt;RuntimeLibrary&gt;MultiThreadedDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #A00000">-       &lt;FunctionLevelLinking&gt;true&lt;/FunctionLevelLinking&gt;</span>
<span style="color: #A00000">--      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)\portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #A00000">--      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #A00000">--      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #A00000">-       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-     &lt;/ClCompile&gt;</span>
<span style="color: #A00000">-@@ -393,20 +315,8 @@</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions&gt;NDEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #A00000">-     &lt;/ResourceCompile&gt;</span>
<span style="color: #A00000">--    &lt;Link&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x64.dll&lt;/OutputFile&gt;</span>
<span style="color: #A00000">--      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)/portaudio_x64.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #A00000">--      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #A00000">--      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)/portaudio_x64.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #A00000">--      &lt;TargetMachine&gt;MachineX64&lt;/TargetMachine&gt;</span>
<span style="color: #A00000">--    &lt;/Link&gt;</span>
<span style="color: #A00000">-     &lt;Bscmake&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x64.bsc&lt;/OutputFile&gt;</span>
<span style="color: #A00000">-     &lt;/Bscmake&gt;</span>
<span style="color: #A00000">-   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #A00000">-   &lt;ItemGroup&gt;</span>
<span style="color: #A00000">-@@ -594,6 +504,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -605,6 +516,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -618,6 +530,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -629,6 +542,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -642,6 +556,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -653,6 +568,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -666,6 +582,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -677,6 +594,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -690,6 +608,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -701,6 +620,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -714,6 +634,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -725,6 +646,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -738,6 +660,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -749,6 +672,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -762,6 +686,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-@@ -773,6 +698,7 @@</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/FSClient.sln b/mitchcapper/FSClient/FSClient.sln</span>
<span style="color: #000080; font-weight: bold">index 12ca810..f4512a5 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/FSClient.sln</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/FSClient.sln</span>
<span style="color: #800080; font-weight: bold">@@ -11,7 +11,6 @@ Project(&quot;{2150E333-8FDC-42A3-9474-1A3956D46DE8}&quot;) = &quot;External Items&quot;, &quot;External</span>
         ProjectSection(SolutionItems) = preProject
                 External Items\JabraTelephonyAPI.dll = External Items\JabraTelephonyAPI.dll
                 External Items\Plantronics.Device.Common.dll = External Items\Plantronics.Device.Common.dll
<span style="color: #A00000">-                External Items\portaudio_dx_win.patch = External Items\portaudio_dx_win.patch</span>
         EndProjectSection
 EndProject
 Project(&quot;{2150E333-8FDC-42A3-9474-1A3956D46DE8}&quot;) = &quot;conf&quot;, &quot;conf&quot;, &quot;{BDB28E84-D1D5-4102-BD29-C638197EFD42}&quot;
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Seems x64 builds were not excluding things properly

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/External Items/portaudio_dx_win.patch b/mitchcapper/FSClient/External Items/portaudio_dx_win.patch</span>
<span style="color: #000080; font-weight: bold">index 12df16e..21c1caf 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/External Items/portaudio_dx_win.patch        </span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/External Items/portaudio_dx_win.patch        </span>
<span style="color: #800080; font-weight: bold">@@ -3,294 +3,424 @@ index edee701..464cb2e 100644</span>
 --- a/Freeswitch.2010.sln
 +++ b/Freeswitch.2010.sln
 @@ -1569,18 +1569,18 @@ Global
<span style="color: #A00000">-                 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #A00000">-                 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.Build.0 = Release DirectSound|x64</span>
<span style="color: #A00000">-                 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x86 Setup.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug|Win32</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release|x64</span>
<span style="color: #A00000">--                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug DirectSound|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug DirectSound|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug DirectSound|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release DirectSound|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release DirectSound|Win32</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #A00000">-+                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release DirectSound|Win32</span>
<span style="color: #A00000">-                 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64</span>
<span style="color: #A00000">-                 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64</span>
<span style="color: #A00000">-                 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64</span>
<span style="color: #00A000">+                 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #00A000">+                 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x64 Setup.Build.0 = Release DirectSound|x64</span>
<span style="color: #00A000">+                 {0A18A071-125E-442F-AFF7-A3F68ABECF99}.All|x86 Setup.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug|Win32</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug|Win32</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug|x64</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug|x64</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug|x64</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug|Win32</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release|Win32</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release|Win32</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release|x64</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release|x64</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release|x64</span>
<span style="color: #00A000">+-                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release|Win32</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.ActiveCfg = Debug DirectSound|Win32</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|Win32.Build.0 = Debug DirectSound|Win32</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.ActiveCfg = Debug DirectSound|x64</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64.Build.0 = Debug DirectSound|x64</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x64 Setup.ActiveCfg = Debug DirectSound|x64</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Debug|x86 Setup.ActiveCfg = Debug DirectSound|Win32</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.ActiveCfg = Release DirectSound|Win32</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|Win32.Build.0 = Release DirectSound|Win32</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64.Build.0 = Release DirectSound|x64</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x64 Setup.ActiveCfg = Release DirectSound|x64</span>
<span style="color: #00A000">++                {0A18A071-125E-442F-AFF7-A3F68ABECF99}.Release|x86 Setup.ActiveCfg = Release DirectSound|Win32</span>
<span style="color: #00A000">+                 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|Win32.ActiveCfg = Release|x64</span>
<span style="color: #00A000">+                 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.ActiveCfg = Release|x64</span>
<span style="color: #00A000">+                 {08DAD348-9E0A-4A2E-97F1-F1E7E24A7836}.All|x64.Build.0 = Release|x64</span>
 diff --git a/libs/portaudio/build/msvc/portaudio.2010.vcxproj b/libs/portaudio/build/msvc/portaudio.2010.vcxproj
<span style="color: #A00000">-index b4eca56..cfc35c5 100644</span>
<span style="color: #00A000">+index b4eca56..10b4c25 100644</span>
 --- a/libs/portaudio/build/msvc/portaudio.2010.vcxproj
 +++ b/libs/portaudio/build/msvc/portaudio.2010.vcxproj
 @@ -41,11 +41,11 @@
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.Default.props&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #A00000">--    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #A00000">--    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #00A000">+   &lt;/PropertyGroup&gt;</span>
<span style="color: #00A000">+   &lt;Import Project=&quot;$(VCTargetsPath)\Microsoft.Cpp.Default.props&quot; /&gt;</span>
<span style="color: #00A000">+   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #00A000">+-    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #00A000">++    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #00A000">+     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #00A000">+   &lt;/PropertyGroup&gt;</span>
<span style="color: #00A000">+   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #00A000">+-    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #00A000">++    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #00A000">+     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #00A000">+   &lt;/PropertyGroup&gt;</span>
<span style="color: #00A000">+   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
 @@ -57,11 +57,11 @@
<span style="color: #A00000">-     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #A00000">--    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #A00000">--    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-+    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #A00000">-     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|x64&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #00A000">+     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #00A000">+   &lt;/PropertyGroup&gt;</span>
<span style="color: #00A000">+   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #00A000">+-    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #00A000">++    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #00A000">+     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #00A000">+   &lt;/PropertyGroup&gt;</span>
<span style="color: #00A000">+   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
<span style="color: #00A000">+-    &lt;ConfigurationType&gt;DynamicLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #00A000">++    &lt;ConfigurationType&gt;StaticLibrary&lt;/ConfigurationType&gt;</span>
<span style="color: #00A000">+     &lt;UseOfMfc&gt;false&lt;/UseOfMfc&gt;</span>
<span style="color: #00A000">+   &lt;/PropertyGroup&gt;</span>
<span style="color: #00A000">+   &lt;PropertyGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|x64&#39;&quot; Label=&quot;Configuration&quot;&gt;</span>
 @@ -77,9 +77,11 @@
<span style="color: #A00000">-   &lt;/ImportGroup&gt;</span>
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #A00000">-+    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;/ImportGroup&gt;</span>
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #A00000">-+    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;/ImportGroup&gt;</span>
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #00A000">+   &lt;/ImportGroup&gt;</span>
<span style="color: #00A000">+   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #00A000">+     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #00A000">++    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #00A000">+   &lt;/ImportGroup&gt;</span>
<span style="color: #00A000">+   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #00A000">+     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #00A000">++    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #00A000">+   &lt;/ImportGroup&gt;</span>
<span style="color: #00A000">+   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #00A000">+     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
 @@ -92,10 +94,12 @@
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props&quot; /&gt;</span>
<span style="color: #A00000">-+    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;/ImportGroup&gt;</span>
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props&quot; /&gt;</span>
<span style="color: #A00000">-+    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;/ImportGroup&gt;</span>
<span style="color: #A00000">-   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|x64&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #00A000">+   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #00A000">+     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #00A000">+     &lt;Import Project=&quot;$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props&quot; /&gt;</span>
<span style="color: #00A000">++    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #00A000">+   &lt;/ImportGroup&gt;</span>
<span style="color: #00A000">+   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #00A000">+     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
<span style="color: #00A000">+     &lt;Import Project=&quot;$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC60.props&quot; /&gt;</span>
<span style="color: #00A000">++    &lt;Import Project=&quot;..\..\..\..\w32\extlib.props&quot; /&gt;</span>
<span style="color: #00A000">+   &lt;/ImportGroup&gt;</span>
<span style="color: #00A000">+   &lt;ImportGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|x64&#39;&quot; Label=&quot;PropertySheets&quot;&gt;</span>
<span style="color: #00A000">+     &lt;Import Project=&quot;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&quot; Condition=&quot;exists(&#39;$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props&#39;)&quot; Label=&quot;LocalAppDataPlatform&quot; /&gt;</span>
 @@ -110,18 +114,6 @@
<span style="color: #A00000">-   &lt;PropertyGroup Label=&quot;UserMacros&quot; /&gt;</span>
<span style="color: #A00000">-   &lt;PropertyGroup&gt;</span>
<span style="color: #A00000">-     &lt;_ProjectFileVersion&gt;10.0.30319.1&lt;/_ProjectFileVersion&gt;</span>
<span style="color: #A00000">--    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #A00000">--    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #A00000">--    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/LinkIncremental&gt;</span>
<span style="color: #A00000">--    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #A00000">--    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #A00000">--    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/LinkIncremental&gt;</span>
<span style="color: #A00000">--    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #A00000">--    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #A00000">--    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;false&lt;/LinkIncremental&gt;</span>
<span style="color: #A00000">--    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #A00000">--    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #A00000">--    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;false&lt;/LinkIncremental&gt;</span>
<span style="color: #A00000">-   &lt;/PropertyGroup&gt;</span>
<span style="color: #A00000">-   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;</span>
<span style="color: #A00000">-     &lt;Midl&gt;</span>
<span style="color: #00A000">+   &lt;PropertyGroup Label=&quot;UserMacros&quot; /&gt;</span>
<span style="color: #00A000">+   &lt;PropertyGroup&gt;</span>
<span style="color: #00A000">+     &lt;_ProjectFileVersion&gt;10.0.30319.1&lt;/_ProjectFileVersion&gt;</span>
<span style="color: #00A000">+-    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #00A000">+-    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #00A000">+-    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/LinkIncremental&gt;</span>
<span style="color: #00A000">+-    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #00A000">+-    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #00A000">+-    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/LinkIncremental&gt;</span>
<span style="color: #00A000">+-    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #00A000">+-    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #00A000">+-    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;false&lt;/LinkIncremental&gt;</span>
<span style="color: #00A000">+-    &lt;OutDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/OutDir&gt;</span>
<span style="color: #00A000">+-    &lt;IntDir Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;$(Platform)\$(Configuration)\&lt;/IntDir&gt;</span>
<span style="color: #00A000">+-    &lt;LinkIncremental Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;false&lt;/LinkIncremental&gt;</span>
<span style="color: #00A000">+   &lt;/PropertyGroup&gt;</span>
<span style="color: #00A000">+   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;</span>
<span style="color: #00A000">+     &lt;Midl&gt;</span>
 @@ -231,45 +223,23 @@
<span style="color: #A00000">-       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-       &lt;TargetEnvironment&gt;Win32&lt;/TargetEnvironment&gt;</span>
<span style="color: #A00000">--      &lt;TypeLibraryName&gt;.\Debug_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #A00000">--      &lt;HeaderFileName&gt;</span>
<span style="color: #A00000">--      &lt;/HeaderFileName&gt;</span>
<span style="color: #A00000">-     &lt;/Midl&gt;</span>
<span style="color: #A00000">-     &lt;ClCompile&gt;</span>
<span style="color: #A00000">-       &lt;Optimization&gt;Disabled&lt;/Optimization&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">--      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;</span>
<span style="color: #A00000">-       &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;</span>
<span style="color: #A00000">-       &lt;RuntimeLibrary&gt;MultiThreadedDebugDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #A00000">--      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)/portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #A00000">--      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #A00000">--      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #A00000">-       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;</span>
<span style="color: #A00000">-     &lt;/ClCompile&gt;</span>
<span style="color: #A00000">-     &lt;ResourceCompile&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions&gt;_DEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #A00000">-     &lt;/ResourceCompile&gt;</span>
<span style="color: #A00000">--    &lt;Link&gt;</span>
<span style="color: #A00000">--      &lt;AdditionalDependencies&gt;ksuser.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x86.dll&lt;/OutputFile&gt;</span>
<span style="color: #A00000">--      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #A00000">--      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)\portaudio_x86.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #A00000">--      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #A00000">--      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)\portaudio_x86.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #A00000">--      &lt;TargetMachine&gt;MachineX86&lt;/TargetMachine&gt;</span>
<span style="color: #A00000">--    &lt;/Link&gt;</span>
<span style="color: #A00000">-     &lt;Bscmake&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio.bsc&lt;/OutputFile&gt;</span>
<span style="color: #A00000">-     &lt;/Bscmake&gt;</span>
<span style="color: #A00000">-   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #A00000">-   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;</span>
<span style="color: #00A000">+       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+       &lt;TargetEnvironment&gt;Win32&lt;/TargetEnvironment&gt;</span>
<span style="color: #00A000">+-      &lt;TypeLibraryName&gt;.\Debug_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #00A000">+-      &lt;HeaderFileName&gt;</span>
<span style="color: #00A000">+-      &lt;/HeaderFileName&gt;</span>
<span style="color: #00A000">+     &lt;/Midl&gt;</span>
<span style="color: #00A000">+     &lt;ClCompile&gt;</span>
<span style="color: #00A000">+       &lt;Optimization&gt;Disabled&lt;/Optimization&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+-      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;</span>
<span style="color: #00A000">+       &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;</span>
<span style="color: #00A000">+       &lt;RuntimeLibrary&gt;MultiThreadedDebugDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #00A000">+-      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)/portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #00A000">+-      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #00A000">+-      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #00A000">+-      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #00A000">+       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+-      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;</span>
<span style="color: #00A000">+     &lt;/ClCompile&gt;</span>
<span style="color: #00A000">+     &lt;ResourceCompile&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions&gt;_DEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #00A000">+     &lt;/ResourceCompile&gt;</span>
<span style="color: #00A000">+-    &lt;Link&gt;</span>
<span style="color: #00A000">+-      &lt;AdditionalDependencies&gt;ksuser.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;</span>
<span style="color: #00A000">+-      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x86.dll&lt;/OutputFile&gt;</span>
<span style="color: #00A000">+-      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+-      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #00A000">+-      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;</span>
<span style="color: #00A000">+-      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)\portaudio_x86.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #00A000">+-      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #00A000">+-      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #00A000">+-      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #00A000">+-      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)\portaudio_x86.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #00A000">+-      &lt;TargetMachine&gt;MachineX86&lt;/TargetMachine&gt;</span>
<span style="color: #00A000">+-    &lt;/Link&gt;</span>
<span style="color: #00A000">+     &lt;Bscmake&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+-      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio.bsc&lt;/OutputFile&gt;</span>
<span style="color: #00A000">+     &lt;/Bscmake&gt;</span>
<span style="color: #00A000">+   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #00A000">+   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;</span>
 @@ -278,45 +248,23 @@
<span style="color: #A00000">-       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-       &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;</span>
<span style="color: #A00000">--      &lt;TypeLibraryName&gt;.\Debug_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #A00000">--      &lt;HeaderFileName&gt;</span>
<span style="color: #A00000">--      &lt;/HeaderFileName&gt;</span>
<span style="color: #A00000">-     &lt;/Midl&gt;</span>
<span style="color: #A00000">-     &lt;ClCompile&gt;</span>
<span style="color: #A00000">-       &lt;Optimization&gt;Disabled&lt;/Optimization&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">--      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;</span>
<span style="color: #A00000">-       &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;</span>
<span style="color: #A00000">-       &lt;RuntimeLibrary&gt;MultiThreadedDebugDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #A00000">--      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)\portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #A00000">--      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #A00000">--      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #A00000">-       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;</span>
<span style="color: #A00000">-     &lt;/ClCompile&gt;</span>
<span style="color: #A00000">-     &lt;ResourceCompile&gt;</span>
<span style="color: #A00000">-       &lt;PreprocessorDefinitions&gt;_DEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #A00000">-     &lt;/ResourceCompile&gt;</span>
<span style="color: #A00000">--    &lt;Link&gt;</span>
<span style="color: #A00000">--      &lt;AdditionalDependencies&gt;ksuser.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x64.dll&lt;/OutputFile&gt;</span>
<span style="color: #A00000">--      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #A00000">--      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)/portaudio_x64.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #A00000">--      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #A00000">--      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)\portaudio_x64.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #A00000">--      &lt;TargetMachine&gt;MachineX64&lt;/TargetMachine&gt;</span>
<span style="color: #A00000">--    &lt;/Link&gt;</span>
<span style="color: #A00000">-     &lt;Bscmake&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)/portaudio_x64.bsc&lt;/OutputFile&gt;</span>
<span style="color: #A00000">-     &lt;/Bscmake&gt;</span>
<span style="color: #A00000">-   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #A00000">-   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;</span>
<span style="color: #00A000">+       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+       &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;</span>
<span style="color: #00A000">+-      &lt;TypeLibraryName&gt;.\Debug_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #00A000">+-      &lt;HeaderFileName&gt;</span>
<span style="color: #00A000">+-      &lt;/HeaderFileName&gt;</span>
<span style="color: #00A000">+     &lt;/Midl&gt;</span>
<span style="color: #00A000">+     &lt;ClCompile&gt;</span>
<span style="color: #00A000">+       &lt;Optimization&gt;Disabled&lt;/Optimization&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+-      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;PreprocessorDefinitions&gt;WIN32;_DEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;PAWIN_USE_WDMKS_DEVICE_INFO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;MinimalRebuild&gt;true&lt;/MinimalRebuild&gt;</span>
<span style="color: #00A000">+       &lt;BasicRuntimeChecks&gt;EnableFastChecks&lt;/BasicRuntimeChecks&gt;</span>
<span style="color: #00A000">+       &lt;RuntimeLibrary&gt;MultiThreadedDebugDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #00A000">+-      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)\portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #00A000">+-      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #00A000">+-      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #00A000">+-      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #00A000">+       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+-      &lt;DebugInformationFormat&gt;ProgramDatabase&lt;/DebugInformationFormat&gt;</span>
<span style="color: #00A000">+     &lt;/ClCompile&gt;</span>
<span style="color: #00A000">+     &lt;ResourceCompile&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions&gt;_DEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #00A000">+     &lt;/ResourceCompile&gt;</span>
<span style="color: #00A000">+-    &lt;Link&gt;</span>
<span style="color: #00A000">+-      &lt;AdditionalDependencies&gt;ksuser.lib;%(AdditionalDependencies)&lt;/AdditionalDependencies&gt;</span>
<span style="color: #00A000">+-      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x64.dll&lt;/OutputFile&gt;</span>
<span style="color: #00A000">+-      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+-      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #00A000">+-      &lt;GenerateDebugInformation&gt;true&lt;/GenerateDebugInformation&gt;</span>
<span style="color: #00A000">+-      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)/portaudio_x64.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #00A000">+-      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #00A000">+-      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #00A000">+-      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #00A000">+-      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)\portaudio_x64.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #00A000">+-      &lt;TargetMachine&gt;MachineX64&lt;/TargetMachine&gt;</span>
<span style="color: #00A000">+-    &lt;/Link&gt;</span>
<span style="color: #00A000">+     &lt;Bscmake&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+-      &lt;OutputFile&gt;$(Platform)\$(Configuration)/portaudio_x64.bsc&lt;/OutputFile&gt;</span>
<span style="color: #00A000">+     &lt;/Bscmake&gt;</span>
<span style="color: #00A000">+   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #00A000">+   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;</span>
 @@ -325,22 +273,15 @@
<span style="color: #A00000">-       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-       &lt;TargetEnvironment&gt;Win32&lt;/TargetEnvironment&gt;</span>
<span style="color: #A00000">--      &lt;TypeLibraryName&gt;.\Release_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #A00000">--      &lt;HeaderFileName&gt;</span>
<span style="color: #A00000">--      &lt;/HeaderFileName&gt;</span>
<span style="color: #A00000">-     &lt;/Midl&gt;</span>
<span style="color: #A00000">-     &lt;ClCompile&gt;</span>
<span style="color: #A00000">-       &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;</span>
<span style="color: #A00000">--      &lt;InlineFunctionExpansion&gt;OnlyExplicitInline&lt;/InlineFunctionExpansion&gt;</span>
<span style="color: #A00000">-+      &lt;InlineFunctionExpansion&gt;Default&lt;/InlineFunctionExpansion&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">--      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;StringPooling&gt;true&lt;/StringPooling&gt;</span>
<span style="color: #A00000">-       &lt;RuntimeLibrary&gt;MultiThreadedDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #A00000">-       &lt;FunctionLevelLinking&gt;true&lt;/FunctionLevelLinking&gt;</span>
<span style="color: #A00000">--      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)/portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #A00000">--      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #A00000">--      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #A00000">-       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-     &lt;/ClCompile&gt;</span>
<span style="color: #00A000">+       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+       &lt;TargetEnvironment&gt;Win32&lt;/TargetEnvironment&gt;</span>
<span style="color: #00A000">+-      &lt;TypeLibraryName&gt;.\Release_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #00A000">+-      &lt;HeaderFileName&gt;</span>
<span style="color: #00A000">+-      &lt;/HeaderFileName&gt;</span>
<span style="color: #00A000">+     &lt;/Midl&gt;</span>
<span style="color: #00A000">+     &lt;ClCompile&gt;</span>
<span style="color: #00A000">+       &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;</span>
<span style="color: #00A000">+-      &lt;InlineFunctionExpansion&gt;OnlyExplicitInline&lt;/InlineFunctionExpansion&gt;</span>
<span style="color: #00A000">++      &lt;InlineFunctionExpansion&gt;Default&lt;/InlineFunctionExpansion&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+-      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;StringPooling&gt;true&lt;/StringPooling&gt;</span>
<span style="color: #00A000">+       &lt;RuntimeLibrary&gt;MultiThreadedDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #00A000">+       &lt;FunctionLevelLinking&gt;true&lt;/FunctionLevelLinking&gt;</span>
<span style="color: #00A000">+-      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)/portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #00A000">+-      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #00A000">+-      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #00A000">+-      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #00A000">+       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+     &lt;/ClCompile&gt;</span>
 @@ -348,20 +289,8 @@
<span style="color: #A00000">-       &lt;PreprocessorDefinitions&gt;NDEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #A00000">-     &lt;/ResourceCompile&gt;</span>
<span style="color: #A00000">--    &lt;Link&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x86.dll&lt;/OutputFile&gt;</span>
<span style="color: #A00000">--      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)\portaudio_x86.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #A00000">--      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #A00000">--      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)\portaudio_x86.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #A00000">--      &lt;TargetMachine&gt;MachineX86&lt;/TargetMachine&gt;</span>
<span style="color: #A00000">--    &lt;/Link&gt;</span>
<span style="color: #A00000">-     &lt;Bscmake&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio.bsc&lt;/OutputFile&gt;</span>
<span style="color: #A00000">-     &lt;/Bscmake&gt;</span>
<span style="color: #A00000">-   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #A00000">-   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions&gt;NDEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #00A000">+     &lt;/ResourceCompile&gt;</span>
<span style="color: #00A000">+-    &lt;Link&gt;</span>
<span style="color: #00A000">+-      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x86.dll&lt;/OutputFile&gt;</span>
<span style="color: #00A000">+-      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+-      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #00A000">+-      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)\portaudio_x86.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #00A000">+-      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #00A000">+-      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #00A000">+-      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #00A000">+-      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)\portaudio_x86.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #00A000">+-      &lt;TargetMachine&gt;MachineX86&lt;/TargetMachine&gt;</span>
<span style="color: #00A000">+-    &lt;/Link&gt;</span>
<span style="color: #00A000">+     &lt;Bscmake&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+-      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio.bsc&lt;/OutputFile&gt;</span>
<span style="color: #00A000">+     &lt;/Bscmake&gt;</span>
<span style="color: #00A000">+   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #00A000">+   &lt;ItemDefinitionGroup Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;</span>
 @@ -370,22 +299,15 @@
<span style="color: #A00000">-       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-       &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;</span>
<span style="color: #A00000">--      &lt;TypeLibraryName&gt;.\Release_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #A00000">--      &lt;HeaderFileName&gt;</span>
<span style="color: #A00000">--      &lt;/HeaderFileName&gt;</span>
<span style="color: #A00000">-     &lt;/Midl&gt;</span>
<span style="color: #A00000">-     &lt;ClCompile&gt;</span>
<span style="color: #A00000">-       &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;</span>
<span style="color: #A00000">-       &lt;InlineFunctionExpansion&gt;OnlyExplicitInline&lt;/InlineFunctionExpansion&gt;</span>
<span style="color: #A00000">-       &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #A00000">--      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-+      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;StringPooling&gt;true&lt;/StringPooling&gt;</span>
<span style="color: #A00000">-       &lt;RuntimeLibrary&gt;MultiThreadedDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #A00000">-       &lt;FunctionLevelLinking&gt;true&lt;/FunctionLevelLinking&gt;</span>
<span style="color: #A00000">--      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)\portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #A00000">--      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #A00000">--      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #A00000">-       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">-     &lt;/ClCompile&gt;</span>
<span style="color: #00A000">+       &lt;MkTypLibCompatible&gt;true&lt;/MkTypLibCompatible&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+       &lt;TargetEnvironment&gt;X64&lt;/TargetEnvironment&gt;</span>
<span style="color: #00A000">+-      &lt;TypeLibraryName&gt;.\Release_x86/portaudio.tlb&lt;/TypeLibraryName&gt;</span>
<span style="color: #00A000">+-      &lt;HeaderFileName&gt;</span>
<span style="color: #00A000">+-      &lt;/HeaderFileName&gt;</span>
<span style="color: #00A000">+     &lt;/Midl&gt;</span>
<span style="color: #00A000">+     &lt;ClCompile&gt;</span>
<span style="color: #00A000">+       &lt;Optimization&gt;MaxSpeed&lt;/Optimization&gt;</span>
<span style="color: #00A000">+-      &lt;InlineFunctionExpansion&gt;OnlyExplicitInline&lt;/InlineFunctionExpansion&gt;</span>
<span style="color: #00A000">+-      &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+-      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;InlineFunctionExpansion&gt;Default&lt;/InlineFunctionExpansion&gt;</span>
<span style="color: #00A000">++      &lt;AdditionalIncludeDirectories&gt;..\..\src\common;..\..\include;.\;..\..\src\os\win;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">++      &lt;PreprocessorDefinitions&gt;WIN32;NDEBUG;_USRDLL;PA_ENABLE_DEBUG_OUTPUT;_CRT_SECURE_NO_DEPRECATE;PA_NO_ASIO;PA_NO_WMME;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;StringPooling&gt;true&lt;/StringPooling&gt;</span>
<span style="color: #00A000">+       &lt;RuntimeLibrary&gt;MultiThreadedDLL&lt;/RuntimeLibrary&gt;</span>
<span style="color: #00A000">+       &lt;FunctionLevelLinking&gt;true&lt;/FunctionLevelLinking&gt;</span>
<span style="color: #00A000">+-      &lt;PrecompiledHeaderOutputFile&gt;$(Platform)\$(Configuration)\portaudio.pch&lt;/PrecompiledHeaderOutputFile&gt;</span>
<span style="color: #00A000">+-      &lt;AssemblerListingLocation&gt;$(Platform)\$(Configuration)\&lt;/AssemblerListingLocation&gt;</span>
<span style="color: #00A000">+-      &lt;ObjectFileName&gt;$(Platform)\$(Configuration)\&lt;/ObjectFileName&gt;</span>
<span style="color: #00A000">+-      &lt;ProgramDataBaseFileName&gt;$(Platform)\$(Configuration)\&lt;/ProgramDataBaseFileName&gt;</span>
<span style="color: #00A000">+       &lt;WarningLevel&gt;Level3&lt;/WarningLevel&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+     &lt;/ClCompile&gt;</span>
 @@ -393,20 +315,8 @@
<span style="color: #A00000">-       &lt;PreprocessorDefinitions&gt;NDEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #A00000">-       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #A00000">-     &lt;/ResourceCompile&gt;</span>
<span style="color: #A00000">--    &lt;Link&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x64.dll&lt;/OutputFile&gt;</span>
<span style="color: #A00000">--      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #A00000">--      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)/portaudio_x64.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #A00000">--      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #A00000">--      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #A00000">--      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)/portaudio_x64.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #A00000">--      &lt;TargetMachine&gt;MachineX64&lt;/TargetMachine&gt;</span>
<span style="color: #A00000">--    &lt;/Link&gt;</span>
<span style="color: #A00000">-     &lt;Bscmake&gt;</span>
<span style="color: #A00000">-       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #A00000">--      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x64.bsc&lt;/OutputFile&gt;</span>
<span style="color: #A00000">-     &lt;/Bscmake&gt;</span>
<span style="color: #A00000">-   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #A00000">-   &lt;ItemGroup&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions&gt;NDEBUG;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;Culture&gt;0x0409&lt;/Culture&gt;</span>
<span style="color: #00A000">+     &lt;/ResourceCompile&gt;</span>
<span style="color: #00A000">+-    &lt;Link&gt;</span>
<span style="color: #00A000">+-      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x64.dll&lt;/OutputFile&gt;</span>
<span style="color: #00A000">+-      &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+-      &lt;ModuleDefinitionFile&gt;.\portaudio.def&lt;/ModuleDefinitionFile&gt;</span>
<span style="color: #00A000">+-      &lt;ProgramDatabaseFile&gt;$(Platform)\$(Configuration)/portaudio_x64.pdb&lt;/ProgramDatabaseFile&gt;</span>
<span style="color: #00A000">+-      &lt;RandomizedBaseAddress&gt;false&lt;/RandomizedBaseAddress&gt;</span>
<span style="color: #00A000">+-      &lt;DataExecutionPrevention&gt;</span>
<span style="color: #00A000">+-      &lt;/DataExecutionPrevention&gt;</span>
<span style="color: #00A000">+-      &lt;ImportLibrary&gt;$(Platform)\$(Configuration)/portaudio_x64.lib&lt;/ImportLibrary&gt;</span>
<span style="color: #00A000">+-      &lt;TargetMachine&gt;MachineX64&lt;/TargetMachine&gt;</span>
<span style="color: #00A000">+-    &lt;/Link&gt;</span>
<span style="color: #00A000">+     &lt;Bscmake&gt;</span>
<span style="color: #00A000">+       &lt;SuppressStartupBanner&gt;true&lt;/SuppressStartupBanner&gt;</span>
<span style="color: #00A000">+-      &lt;OutputFile&gt;$(Platform)\$(Configuration)\portaudio_x64.bsc&lt;/OutputFile&gt;</span>
<span style="color: #00A000">+     &lt;/Bscmake&gt;</span>
<span style="color: #00A000">+   &lt;/ItemDefinitionGroup&gt;</span>
<span style="color: #00A000">+   &lt;ItemGroup&gt;</span>
<span style="color: #00A000">+@@ -594,6 +504,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -605,6 +516,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -618,6 +530,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -629,6 +542,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -642,6 +556,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -653,6 +568,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -666,6 +582,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -677,6 +594,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -690,6 +608,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -701,6 +620,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -714,6 +634,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -725,6 +646,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -738,6 +660,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -749,6 +672,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -762,6 +686,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Debug|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+@@ -773,6 +698,7 @@</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|Win32&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">++      &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
<span style="color: #00A000">+       &lt;AdditionalIncludeDirectories Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;..\..\src\hostapi\asio\ASIOSDK\host;..\..\src\hostapi\asio\ASIOSDK\host\pc;..\..\src\hostapi\asio\ASIOSDK\common;%(AdditionalIncludeDirectories)&lt;/AdditionalIncludeDirectories&gt;</span>
<span style="color: #00A000">+       &lt;PreprocessorDefinitions Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release DirectSound|x64&#39;&quot;&gt;%(PreprocessorDefinitions)&lt;/PreprocessorDefinitions&gt;</span>
<span style="color: #00A000">+       &lt;ExcludedFromBuild Condition=&quot;&#39;$(Configuration)|$(Platform)&#39;==&#39;Release|Win32&#39;&quot;&gt;true&lt;/ExcludedFromBuild&gt;</span>
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
FS-3025 - this should be the last commit on this bug id

<span style="color: #000080; font-weight: bold">diff --git a/file.txt b/file.txt</span>
deleted file mode 100644
<span style="color: #000080; font-weight: bold">index f611376..0000000</span>
<span style="color: #A00000">--- a/file.txt</span>
<span style="color: #00A000">+++ /dev/null</span>
<span style="color: #800080; font-weight: bold">@@ -1,8 +0,0 @@</span>
<span style="color: #A00000">-blaaaaaah</span>
<span style="color: #A00000">-blaaaaaah</span>
<span style="color: #A00000">-blaaaaaah</span>
<span style="color: #A00000">-blaaaaaah</span>
<span style="color: #A00000">-blaaaaaah</span>
<span style="color: #A00000">-testing</span>
<span style="color: #A00000">-testing</span>
<span style="color: #A00000">-WT</span>
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
FS-3025

<span style="color: #000080; font-weight: bold">diff --git a/file.txt b/file.txt</span>
<span style="color: #000080; font-weight: bold">index bd6e5e0..f611376 100644</span>
<span style="color: #A00000">--- a/file.txt</span>
<span style="color: #00A000">+++ b/file.txt</span>
<span style="color: #800080; font-weight: bold">@@ -5,3 +5,4 @@ blaaaaaah</span>
 blaaaaaah
 testing
 testing
<span style="color: #00A000">+WT</span>
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
FS-3025

<span style="color: #000080; font-weight: bold">diff --git a/file.txt b/file.txt</span>
<span style="color: #000080; font-weight: bold">index 201120d..bd6e5e0 100644</span>
<span style="color: #A00000">--- a/file.txt</span>
<span style="color: #00A000">+++ b/file.txt</span>
<span style="color: #800080; font-weight: bold">@@ -4,3 +4,4 @@ blaaaaaah</span>
 blaaaaaah
 blaaaaaah
 testing
<span style="color: #00A000">+testing</span>
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
Merge branch &#39;master&#39; of git.freeswitch.org:freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
FS-3025

<span style="color: #000080; font-weight: bold">diff --git a/file.txt b/file.txt</span>
<span style="color: #000080; font-weight: bold">index 3fdc27e..201120d 100644</span>
<span style="color: #A00000">--- a/file.txt</span>
<span style="color: #00A000">+++ b/file.txt</span>
<span style="color: #800080; font-weight: bold">@@ -3,3 +3,4 @@ blaaaaaah</span>
 blaaaaaah
 blaaaaaah
 blaaaaaah
<span style="color: #00A000">+testing</span>
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
merged setup changes

<span style="color: #000080; font-weight: bold">diff --cc mitchcapper/FSClient/Setup/Product.wxs</span>
<span style="color: #000080; font-weight: bold">index 4cbf2a3,0ab94b7..bb93a12</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Setup/Product.wxs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Setup/Product.wxs</span>
<span style="color: #800080; font-weight: bold">@@@ -11,10 -11,9 +11,10 @@@</span>
  &lt;?endif ?&gt;
  
  &lt;Wix xmlns=&quot;http://schemas.microsoft.com/wix/2006/wi&quot;
 +         xmlns:util=&quot;http://schemas.microsoft.com/wix/UtilExtension&quot;
                xmlns:netfx=&quot;http://schemas.microsoft.com/wix/NetFxExtension&quot;&gt;
 -        &lt;Product Id=&quot;f20f4348-01f9-457f-9112-60edb77761f4&quot; Name=&quot;$(var.ProductName)&quot; Language=&quot;1033&quot; Version=&quot;1.0.0.0&quot; Manufacturer=&quot;FreeSWITCH&quot; UpgradeCode=&quot;7668faef-2ab3-4079-a986-07a33739b42e&quot;&gt;
 +        &lt;Product Id=&quot;*&quot; Name=&quot;$(var.ProductName)&quot; Language=&quot;1033&quot; Version=&quot;1.0.1.0&quot; Manufacturer=&quot;FreeSWITCH&quot; UpgradeCode=&quot;7668FAEF-2AB3-4079-A986-07A33739B42E&quot;&gt;
<span style="color: #A00000">-                 &lt;Package InstallerVersion=&quot;200&quot; Compressed=&quot;yes&quot; /&gt;</span>
<span style="color: #00A000">+                 &lt;Package InstallerVersion=&quot;300&quot; Compressed=&quot;yes&quot; /&gt;</span>
  
                  &lt;Media Id=&quot;1&quot; Cabinet=&quot;media1.cab&quot; EmbedCab=&quot;yes&quot; /&gt;
  
<span style="color: #800080; font-weight: bold">@@@ -28,85 -27,64 +28,85 @@@</span>
                                  &lt;Directory Id=&quot;INSTALLLOCATION&quot; Name=&quot;FSClient&quot;&gt;
                                          &lt;!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. --&gt;
                                          &lt;!-- &lt;Component Id=&quot;ProductComponent&quot; Guid=&quot;594203af-235a-4a7d-aff8-045997f872ec&quot;&gt; --&gt;
<span style="color: #A00000">-                                         &lt;!-- TODO: Insert files, registry keys, and other resources here. --&gt;</span>
<span style="color: #00A000">+                                                 &lt;!-- TODO: Insert files, registry keys, and other resources here. --&gt;</span>
                                          &lt;!-- &lt;/Component&gt; --&gt;
<span style="color: #A00000">-                                         &lt;Directory Id=&quot;MODLOCATION&quot; Name=&quot;Mod&quot;&gt;</span>
<span style="color: #A00000">-                                         &lt;/Directory&gt;</span>
<span style="color: #A00000">-                                         &lt;Directory Id=&quot;CONFLOCATION&quot; Name=&quot;Conf&quot;&gt;</span>
<span style="color: #A00000">-                                         &lt;/Directory&gt;</span>
<span style="color: #A00000">-                                         &lt;Directory Id=&quot;PLUGINLOCATION&quot; Name=&quot;Plugins&quot;&gt;</span>
<span style="color: #A00000">-                                         &lt;/Directory&gt;</span>
<span style="color: #00A000">+           &lt;Directory Id=&quot;MODLOCATION&quot; Name=&quot;Mod&quot;&gt;</span>
<span style="color: #00A000">+           &lt;/Directory&gt;</span>
<span style="color: #00A000">+           &lt;Directory Id=&quot;CONFLOCATION&quot; Name=&quot;Conf&quot;&gt;</span>
<span style="color: #00A000">+           &lt;/Directory&gt;</span>
<span style="color: #00A000">+           &lt;Directory Id=&quot;PLUGINLOCATION&quot; Name=&quot;Plugins&quot;&gt;</span>
<span style="color: #00A000">+           &lt;/Directory&gt;</span>
                                  &lt;/Directory&gt;
                          &lt;/Directory&gt;
<span style="color: #A00000">-                         &lt;?if $(var.Platform) != x64 ?&gt;</span>
<span style="color: #A00000">-                         &lt;Merge Id=&quot;CrtFiles_x86&quot;</span>
<span style="color: #A00000">-                         SourceFile=&quot;$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC100_CRT_x86.msm&quot;</span>
<span style="color: #A00000">-                         DiskId=&quot;1&quot;</span>
<span style="color: #A00000">-                         Language=&quot;1033&quot;/&gt;</span>
<span style="color: #A00000">-                         &lt;?endif ?&gt;</span>
<span style="color: #A00000">-                         &lt;?if $(var.Platform) = x64 ?&gt;</span>
<span style="color: #A00000">-                         &lt;Merge Id=&quot;CrtFiles_x64&quot;</span>
<span style="color: #A00000">-                         SourceFile=&quot;$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC100_CRT_x64.msm&quot;</span>
<span style="color: #A00000">-                         DiskId=&quot;1&quot;</span>
<span style="color: #A00000">-                         Language=&quot;1033&quot;/&gt;</span>
<span style="color: #A00000">-                         &lt;?endif ?&gt;</span>
<span style="color: #A00000">-                         &lt;Directory Id=&quot;ProgramMenuFolder&quot;&gt;</span>
<span style="color: #A00000">-                                 &lt;Directory Id=&quot;ApplicationProgramsFolder&quot; Name=&quot;FSClient&quot;/&gt;</span>
<span style="color: #A00000">-                         &lt;/Directory&gt;</span>
<span style="color: #00A000">+       &lt;?if $(var.Platform) != x64 ?&gt;</span>
<span style="color: #00A000">+       &lt;Merge Id=&quot;CrtFiles_x86&quot;</span>
<span style="color: #00A000">+       SourceFile=&quot;$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC100_CRT_x86.msm&quot;</span>
<span style="color: #00A000">+       DiskId=&quot;1&quot;</span>
<span style="color: #00A000">+       Language=&quot;1033&quot;/&gt;</span>
<span style="color: #00A000">+       &lt;?endif ?&gt;</span>
<span style="color: #00A000">+       &lt;?if $(var.Platform) = x64 ?&gt;</span>
<span style="color: #00A000">+       &lt;Merge Id=&quot;CrtFiles_x64&quot;</span>
<span style="color: #00A000">+       SourceFile=&quot;$(env.CommonProgramFiles)\Merge Modules\Microsoft_VC100_CRT_x64.msm&quot;</span>
<span style="color: #00A000">+       DiskId=&quot;1&quot;</span>
<span style="color: #00A000">+       Language=&quot;1033&quot;/&gt;</span>
<span style="color: #00A000">+       &lt;?endif ?&gt;</span>
<span style="color: #00A000">+       &lt;Directory Id=&quot;ProgramMenuFolder&quot;&gt;</span>
<span style="color: #00A000">+         &lt;Directory Id=&quot;ApplicationProgramsFolder&quot; Name=&quot;FSClient&quot;/&gt;</span>
<span style="color: #00A000">+       &lt;/Directory&gt;</span>
                  &lt;/Directory&gt;
  
<span style="color: #A00000">-                 &lt;DirectoryRef Id=&quot;ApplicationProgramsFolder&quot;&gt;</span>
<span style="color: #A00000">-                         &lt;Component Id=&quot;ApplicationShortcut&quot; Guid=&quot;20BC8446-684B-44F5-A1E3-AF6010EAF37C&quot;&gt;</span>
<span style="color: #A00000">-                                 &lt;Shortcut Id=&quot;ApplicationStartMenuShortcut&quot;</span>
<span style="color: #A00000">-                                                                          Name=&quot;FSClient&quot;</span>
<span style="color: #A00000">-                                                                          Description=&quot;FreeSWITCH Windows Phone&quot;</span>
<span style="color: #A00000">-                                                                          Target=&quot;[INSTALLLOCATION]FSClient.exe&quot;</span>
<span style="color: #A00000">-                                                                          WorkingDirectory=&quot;INSTALLLOCATION&quot;/&gt;</span>
<span style="color: #00A000">+     &lt;DirectoryRef Id=&quot;ApplicationProgramsFolder&quot;&gt;</span>
<span style="color: #00A000">+       &lt;Component Id=&quot;ApplicationShortcut&quot; Guid=&quot;20BC8446-684B-44F5-A1E3-AF6010EAF37C&quot;&gt;</span>
<span style="color: #00A000">+         &lt;Shortcut Id=&quot;ApplicationStartMenuShortcut&quot;</span>
<span style="color: #00A000">+                                                          Name=&quot;FSClient&quot;</span>
<span style="color: #00A000">+                                                          Description=&quot;FreeSWITCH Windows Phone&quot;</span>
<span style="color: #00A000">+                                                          Target=&quot;[INSTALLLOCATION]FSClient.exe&quot;</span>
<span style="color: #00A000">+                                                          WorkingDirectory=&quot;INSTALLLOCATION&quot;/&gt;</span>
 +                                &lt;util:InternetShortcut Id=&quot;OnlineDocumentationShortcut&quot;
 +                                                                        Name=&quot;Online Documentation&quot;
 +                                                                        Target=&quot;http://wiki.freeswitch.com/wiki/FSClient&quot;/&gt;
 +                                &lt;Shortcut Id=&quot;UninstallProduct&quot;
 +                                                                          Name=&quot;Uninstall FSClient&quot;
 +                                                                          Target=&quot;[SystemFolder]msiexec.exe&quot;
 +                                                                          Arguments=&quot;/x [ProductCode]&quot;
 +                                                                          Description=&quot;Uninstalls FSClient&quot; /&gt;
 +
<span style="color: #A00000">-                                 &lt;RemoveFolder Id=&quot;ApplicationProgramsFolder&quot; On=&quot;uninstall&quot;/&gt;</span>
<span style="color: #A00000">-                                 &lt;RegistryValue Root=&quot;HKCU&quot; Key=&quot;Software\FreeSWITCH\FSClient&quot; Name=&quot;installed&quot; Type=&quot;integer&quot; Value=&quot;1&quot; KeyPath=&quot;yes&quot;/&gt;</span>
<span style="color: #A00000">-                         &lt;/Component&gt;</span>
<span style="color: #A00000">-                 &lt;/DirectoryRef&gt;</span>
<span style="color: #00A000">+         &lt;RemoveFolder Id=&quot;ApplicationProgramsFolder&quot; On=&quot;uninstall&quot;/&gt;</span>
<span style="color: #00A000">+         &lt;RegistryValue Root=&quot;HKCU&quot; Key=&quot;Software\FreeSWITCH\FSClient&quot; Name=&quot;installed&quot; Type=&quot;integer&quot; Value=&quot;1&quot; KeyPath=&quot;yes&quot;/&gt;</span>
<span style="color: #00A000">+       &lt;/Component&gt;</span>
<span style="color: #00A000">+     &lt;/DirectoryRef&gt;</span>
  
                  &lt;Feature Id=&quot;ProductFeature&quot; Title=&quot;FSClient Core&quot; Level=&quot;1&quot;&gt;
                          &lt;!-- TODO: Remove the comments around this ComponentRef element and the Component above in order to add resources to this installer. --&gt;
<span style="color: #A00000">-                         &lt;!-- &lt;ComponentRef Id=&quot;ProductComponent&quot; /&gt; --&gt;</span>
<span style="color: #A00000">-                         &lt;ComponentGroupRef Id=&quot;FSCoreComp&quot;/&gt;</span>
<span style="color: #A00000">-                         &lt;ComponentGroupRef Id=&quot;FSCoreModComp&quot;/&gt;</span>
<span style="color: #A00000">-                         &lt;ComponentRef Id=&quot;FSCoreConfComp&quot;/&gt;</span>
<span style="color: #A00000">-                         &lt;ComponentGroupRef Id=&quot;FSClientComp&quot;/&gt;</span>
<span style="color: #A00000">-                         &lt;ComponentRef Id=&quot;ApplicationShortcut&quot; /&gt;</span>
<span style="color: #A00000">- </span>
<span style="color: #00A000">+       &lt;!-- &lt;ComponentRef Id=&quot;ProductComponent&quot; /&gt; --&gt;</span>
<span style="color: #00A000">+       &lt;ComponentGroupRef Id=&quot;FSCoreComp&quot;/&gt;</span>
<span style="color: #00A000">+       &lt;ComponentGroupRef Id=&quot;FSCoreModComp&quot;/&gt;</span>
<span style="color: #00A000">+       &lt;ComponentRef Id=&quot;FSCoreConfComp&quot;/&gt;</span>
<span style="color: #00A000">+       &lt;ComponentGroupRef Id=&quot;FSClientComp&quot;/&gt;</span>
<span style="color: #00A000">+       &lt;ComponentRef Id=&quot;ApplicationShortcut&quot; /&gt;</span>
<span style="color: #00A000">+                         </span>
                          &lt;!-- Note: The following ComponentGroupRef is required to pull in generated authoring from project references. --&gt;
                          &lt;ComponentGroupRef Id=&quot;Product.Generated&quot; /&gt;
<span style="color: #A00000">-                         &lt;?if $(var.Platform) != x64 ?&gt;</span>
<span style="color: #A00000">-                         &lt;MergeRef Id=&quot;CrtFiles_x86&quot;/&gt;</span>
<span style="color: #A00000">-                         &lt;?endif ?&gt;</span>
<span style="color: #A00000">-                         &lt;?if $(var.Platform) = x64 ?&gt;</span>
<span style="color: #A00000">-                         &lt;MergeRef Id=&quot;CrtFiles_x64&quot;/&gt;</span>
<span style="color: #A00000">-                         &lt;?endif ?&gt;</span>
<span style="color: #00A000">+       &lt;?if $(var.Platform) != x64 ?&gt;</span>
<span style="color: #00A000">+       &lt;MergeRef Id=&quot;CrtFiles_x86&quot;/&gt;</span>
<span style="color: #00A000">+       &lt;?endif ?&gt;</span>
<span style="color: #00A000">+       &lt;?if $(var.Platform) = x64 ?&gt;</span>
<span style="color: #00A000">+       &lt;MergeRef Id=&quot;CrtFiles_x64&quot;/&gt;</span>
<span style="color: #00A000">+       &lt;?endif ?&gt;</span>
                  &lt;/Feature&gt;
<span style="color: #A00000">-                 &lt;Property Id=&quot;WIXUI_INSTALLDIR&quot; Value=&quot;INSTALLLOCATION&quot; /&gt;</span>
<span style="color: #A00000">-                 &lt;UIRef Id=&quot;WixUI_InstallDir&quot; /&gt;</span>
<span style="color: #00A000">+     &lt;Property Id=&quot;WIXUI_INSTALLDIR&quot; Value=&quot;INSTALLLOCATION&quot; /&gt;</span>
<span style="color: #00A000">+     &lt;UIRef Id=&quot;WixUI_InstallDir&quot; /&gt;</span>
 +                &lt;Property Id=&quot;WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT&quot; Value=&quot;Launch FSClient&quot; /&gt;
 +                &lt;Property Id=&quot;WixShellExecTarget&quot; Value=&quot;[INSTALLLOCATION]FSClient.exe&quot; /&gt;
 +                &lt;CustomAction Id=&quot;LaunchApplication&quot; BinaryKey=&quot;WixCA&quot; DllEntry=&quot;WixShellExec&quot; Impersonate=&quot;yes&quot; /&gt;
 +                &lt;UI&gt;
 +                        &lt;Publish Dialog=&quot;ExitDialog&quot; Control=&quot;Finish&quot; Event=&quot;DoAction&quot; Value=&quot;LaunchApplication&quot;&gt;WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed&lt;/Publish&gt;
 +                &lt;/UI&gt;
 +                &lt;WixVariable Id=&quot;WixUIBannerBmp&quot; Value=&quot;Banner.bmp&quot; /&gt;
 +                &lt;WixVariable Id=&quot;WixUIDialogBmp&quot; Value=&quot;Dialog.bmp&quot; /&gt;
 +                &lt;Icon Id=&quot;icon.ico&quot; SourceFile=&quot;../phone.ico&quot;/&gt;
 +                &lt;Property Id=&quot;ARPPRODUCTICON&quot; Value=&quot;icon.ico&quot; /&gt;
 +                &lt;MajorUpgrade DowngradeErrorMessage=&quot;A later version of [ProductName] is already installed. Setup will now exit.&quot; AllowSameVersionUpgrades=&quot;yes&quot;  /&gt;
 +
<span style="color: #A00000">-                 &lt;/Product&gt;</span>
<span style="color: #00A000">+         &lt;/Product&gt;</span>
  &lt;/Wix&gt;
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
FS-3025

<span style="color: #000080; font-weight: bold">diff --git a/file.txt b/file.txt</span>
<span style="color: #000080; font-weight: bold">index 41f89d6..3fdc27e 100644</span>
<span style="color: #A00000">--- a/file.txt</span>
<span style="color: #00A000">+++ b/file.txt</span>
<span style="color: #800080; font-weight: bold">@@ -2,3 +2,4 @@ blaaaaaah</span>
 blaaaaaah
 blaaaaaah
 blaaaaaah
<span style="color: #00A000">+blaaaaaah</span>
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
test

<span style="color: #000080; font-weight: bold">diff --git a/file.txt b/file.txt</span>
<span style="color: #000080; font-weight: bold">index a6d581e..41f89d6 100644</span>
<span style="color: #A00000">--- a/file.txt</span>
<span style="color: #00A000">+++ b/file.txt</span>
<span style="color: #800080; font-weight: bold">@@ -1,3 +1,4 @@</span>
 blaaaaaah
 blaaaaaah
 blaaaaaah
<span style="color: #00A000">+blaaaaaah</span>
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
Merge branch &#39;master&#39; of git.freeswitch.org:freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
test

<span style="color: #000080; font-weight: bold">diff --git a/file.txt b/file.txt</span>
<span style="color: #000080; font-weight: bold">index 56ec127..a6d581e 100644</span>
<span style="color: #A00000">--- a/file.txt</span>
<span style="color: #00A000">+++ b/file.txt</span>
<span style="color: #800080; font-weight: bold">@@ -1,2 +1,3 @@</span>
 blaaaaaah
 blaaaaaah
<span style="color: #00A000">+blaaaaaah</span>
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
test

<span style="color: #000080; font-weight: bold">diff --git a/file.txt b/file.txt</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..56ec127</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/file.txt</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,2 @@</span>
<span style="color: #00A000">+blaaaaaah</span>
<span style="color: #00A000">+blaaaaaah</span>
</pre></div>
<div class="highlight"><pre>committer: Jeff Lenk
comments: 
change version of installer required

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Setup/Product.wxs b/mitchcapper/FSClient/Setup/Product.wxs</span>
<span style="color: #000080; font-weight: bold">index 073c9f0..0ab94b7 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Setup/Product.wxs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Setup/Product.wxs</span>
<span style="color: #800080; font-weight: bold">@@ -13,7 +13,7 @@</span>
 &lt;Wix xmlns=&quot;http://schemas.microsoft.com/wix/2006/wi&quot;
               xmlns:netfx=&quot;http://schemas.microsoft.com/wix/NetFxExtension&quot;&gt;
         &lt;Product Id=&quot;f20f4348-01f9-457f-9112-60edb77761f4&quot; Name=&quot;$(var.ProductName)&quot; Language=&quot;1033&quot; Version=&quot;1.0.0.0&quot; Manufacturer=&quot;FreeSWITCH&quot; UpgradeCode=&quot;7668faef-2ab3-4079-a986-07a33739b42e&quot;&gt;
<span style="color: #A00000">-                &lt;Package InstallerVersion=&quot;200&quot; Compressed=&quot;yes&quot; /&gt;</span>
<span style="color: #00A000">+                &lt;Package InstallerVersion=&quot;300&quot; Compressed=&quot;yes&quot; /&gt;</span>
 
                 &lt;Media Id=&quot;1&quot; Cabinet=&quot;media1.cab&quot; EmbedCab=&quot;yes&quot; /&gt;
 
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Make accounts default to 0 last rather than after 1,  add a proper remove account function and kill it out of sofia first, don&#39;t add a new account if a user clicks cancel.

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Account.cs b/mitchcapper/FSClient/Account.cs</span>
<span style="color: #000080; font-weight: bold">index d987ced..59f0197 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Account.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Account.cs</span>
<span style="color: #800080; font-weight: bold">@@ -125,7 +125,11 @@ namespace FSClient {</span>
                         account.guid = &quot;&quot;;
                         account.guid = old_guid;
                 }
<span style="color: #A00000">-</span>
<span style="color: #00A000">+                public static void RemoveAccount(Account account){</span>
<span style="color: #00A000">+                        account.KillGateway();</span>
<span style="color: #00A000">+                        accounts.Remove(account);</span>
<span style="color: #00A000">+                        ReloadSofia();</span>
<span style="color: #00A000">+                }</span>
 
                 public static void create_gateway_nodes(XmlNode gateways_node) {
                         foreach (Account account in accounts) {
<span style="color: #800080; font-weight: bold">@@ -170,9 +174,10 @@ namespace FSClient {</span>
                         _guid.PropertyChanged += (s, e) =&gt; {
 
                                 if (!guid_ok(this, _guid.value) || String.IsNullOrEmpty(_guid.value)) {
<span style="color: #A00000">-                                        for (int i = 0; i &lt; 10; i++) {</span>
<span style="color: #A00000">-                                                if (guid_ok(this, i.ToString())) {</span>
<span style="color: #A00000">-                                                        _guid.value = i.ToString();</span>
<span style="color: #00A000">+                                        for (int i = 1; i &lt;= 10; i++){</span>
<span style="color: #00A000">+                                                int val = i == 10 ? 0 : i; // want 0 checked last.</span>
<span style="color: #00A000">+                                                if (guid_ok(this, val.ToString())) {</span>
<span style="color: #00A000">+                                                        _guid.value = val.ToString();</span>
                                                         return;
                                                 }
                                         }
<span style="color: #800080; font-weight: bold">@@ -329,13 +334,16 @@ namespace FSClient {</span>
                         KillGateway();
                         ReloadSofia();
                 }
<span style="color: #A00000">-                public void edit() {</span>
<span style="color: #00A000">+                public bool edit() {</span>
                         current_editing_account = this;
                         GenericEditor editor = new GenericEditor();
                         editor.Init(&quot;Editing Account&quot;, values);
                         editor.ShowDialog();
                         if (editor.DialogResult == true)
                                 ReloadAccount();
<span style="color: #00A000">+                        else</span>
<span style="color: #00A000">+                                return false;</span>
<span style="color: #00A000">+                        return true;</span>
                 }
         }
 }
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Broker.cs b/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #000080; font-weight: bold">index b774695..58d6d91 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #800080; font-weight: bold">@@ -228,7 +228,7 @@ namespace FSClient {</span>
                 }
                 public void DialString(String str){
                         if (string.IsNullOrWhiteSpace(str))
<span style="color: #A00000">-                                return;</span>
<span style="color: #00A000">+                                return;</span>
                         MainWindowRemoveFocus(true);
 
                         if (str.StartsWith(&quot;#&quot;) &amp;&amp; str.Length &gt; 2) {
<span style="color: #800080; font-weight: bold">@@ -572,8 +572,8 @@ namespace FSClient {</span>
                 public OurAutoCompleteBox GetContactSearchBox() {
                         return MainWindow.get_instance().GetContactSearchBox();
                 }
<span style="color: #A00000">-                public void MainWindowRemoveFocus(bool ResetContactSearchText=false){</span>
<span style="color: #A00000">-                        MainWindow.get_instance().RemoveFocus(ResetContactSearchText);</span>
<span style="color: #00A000">+                public void MainWindowRemoveFocus(bool ResetContactSearchText=false){</span>
<span style="color: #00A000">+                        MainWindow.get_instance().RemoveFocus(ResetContactSearchText);</span>
                 }
                 private delegate void BroadcastEventDel(FSEvent evt);
                 BroadcastEventDel BroadcastHandler;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/MainWindow.xaml.cs b/mitchcapper/FSClient/MainWindow.xaml.cs</span>
<span style="color: #000080; font-weight: bold">index 2201cf0..1ea68a4 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/MainWindow.xaml.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/MainWindow.xaml.cs</span>
<span style="color: #800080; font-weight: bold">@@ -365,7 +365,8 @@ namespace FSClient {</span>
                 private void AccountNew_Click(object sender, RoutedEventArgs e) {
                         Account acct = new Account();
                         Account.AddAccount(acct);
<span style="color: #A00000">-                        acct.edit();</span>
<span style="color: #00A000">+                        if (!acct.edit())</span>
<span style="color: #00A000">+                                Account.RemoveAccount(acct);</span>
 
                 }
 
<span style="color: #800080; font-weight: bold">@@ -387,7 +388,7 @@ namespace FSClient {</span>
                         Account acct = gridAccounts.SelectedItem as Account;
                         if (acct == null)
                                 return;
<span style="color: #A00000">-                        Account.accounts.Remove(acct);</span>
<span style="color: #00A000">+                        Account.RemoveAccount(acct);</span>
                 }
 
 
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
I cannot spell the word balloons.

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Broker.cs b/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #000080; font-weight: bold">index 0195525..b774695 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #800080; font-weight: bold">@@ -46,7 +46,7 @@ namespace FSClient {</span>
                                 Account.LoadSettings();
 
 
<span style="color: #A00000">-                                IncomingBallons = Properties.Settings.Default.IncomingBallons;</span>
<span style="color: #00A000">+                                IncomingBalloons = Properties.Settings.Default.IncomingBalloons;</span>
                                 IncomingTopMost = Properties.Settings.Default.FrontOnIncoming;
                                 ClearDTMFS = Properties.Settings.Default.ClearDTMFS;
                                 UseNumberOnlyInput = Properties.Settings.Default.UseNumberOnlyInput;
<span style="color: #800080; font-weight: bold">@@ -306,7 +306,7 @@ namespace FSClient {</span>
                         try {
                                 SaveAudioSettings();
                                 Account.SaveSettings();
<span style="color: #A00000">-                                Properties.Settings.Default.IncomingBallons = IncomingBallons;</span>
<span style="color: #00A000">+                                Properties.Settings.Default.IncomingBalloons = IncomingBalloons;</span>
                                 Properties.Settings.Default.FrontOnIncoming = IncomingTopMost;
                                 Properties.Settings.Default.ClearDTMFS = ClearDTMFS;
                                 Properties.Settings.Default.UseNumberOnlyInput = UseNumberOnlyInput;
<span style="color: #800080; font-weight: bold">@@ -389,7 +389,7 @@ namespace FSClient {</span>
                                 if (IncomingTopMost) {
                                         MainWindow.get_instance().BringToFront();
                                 }
<span style="color: #A00000">-                                if (IncomingBallons &amp;&amp; !DND) {</span>
<span style="color: #00A000">+                                if (IncomingBalloons &amp;&amp; !DND) {</span>
                                         IncomingCallNotification.ShowCallNotification(args.call);
                                         if (Call.active_call != args.call &amp;&amp; Call.active_call != null)
                                                 HandleCallWaiting(null, args.call);
<span style="color: #800080; font-weight: bold">@@ -404,7 +404,7 @@ namespace FSClient {</span>
                 }
                 #region properties
 
<span style="color: #A00000">-                public bool IncomingBallons;</span>
<span style="color: #00A000">+                public bool IncomingBalloons;</span>
                 public bool IncomingTopMost;
 
                 public bool UseNumberOnlyInput {
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Options.xaml b/mitchcapper/FSClient/Options.xaml</span>
<span style="color: #000080; font-weight: bold">index 992af17..7fc4ba9 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Options.xaml</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Options.xaml</span>
<span style="color: #800080; font-weight: bold">@@ -45,7 +45,7 @@</span>
                 &lt;ComboBox Height=&quot;23&quot; Grid.Row=&quot;6&quot; Grid.Column=&quot;1&quot; Name=&quot;comboRingDevice&quot; Width=&quot;340&quot; /&gt;
                 &lt;StackPanel Grid.Row=&quot;7&quot; Grid.Column=&quot;1&quot; Grid.RowSpan=&quot;3&quot;&gt;
                 &lt;CheckBox x:Name=&quot;chkIncomingFront&quot;  Content=&quot;Bring To Front On Incoming Calls&quot; VerticalAlignment=&quot;Center&quot; FontWeight=&quot;Bold&quot; FontSize=&quot;13.333&quot; /&gt;
<span style="color: #A00000">-                &lt;CheckBox x:Name=&quot;chkIncomingBallons&quot; Content=&quot;Show Incoming Call Notification Ballons&quot; VerticalAlignment=&quot;Center&quot; FontWeight=&quot;Bold&quot; FontSize=&quot;13.333&quot; /&gt;</span>
<span style="color: #00A000">+                &lt;CheckBox x:Name=&quot;chkIncomingBalloons&quot; Content=&quot;Show Incoming Call Notification Balloons&quot; VerticalAlignment=&quot;Center&quot; FontWeight=&quot;Bold&quot; FontSize=&quot;13.333&quot; /&gt;</span>
                 &lt;CheckBox x:Name=&quot;chkClearDTMFS&quot; Content=&quot;Clear Key Presses In Call Stats On Disconnect&quot; VerticalAlignment=&quot;Center&quot; FontWeight=&quot;Bold&quot; FontSize=&quot;13.333&quot; /&gt;
                 &lt;CheckBox x:Name=&quot;chkUseNumbers&quot; Content=&quot;Only Allow Numerical Input While Dialing&quot; VerticalAlignment=&quot;Center&quot; FontWeight=&quot;Bold&quot; FontSize=&quot;13.333&quot; /&gt;
                 &lt;/StackPanel&gt;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Options.xaml.cs b/mitchcapper/FSClient/Options.xaml.cs</span>
<span style="color: #000080; font-weight: bold">index 11fcd70..fb7c1f3 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Options.xaml.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Options.xaml.cs</span>
<span style="color: #800080; font-weight: bold">@@ -31,7 +31,7 @@ namespace FSClient {</span>
                                 comboSpeakerInput.SelectedItem = broker.SpeakerInDev;
                                 comboSpeakerOutput.SelectedItem = broker.SpeakerOutDev;
                                 comboRingDevice.SelectedItem = broker.RingDev;
<span style="color: #A00000">-                                chkIncomingBallons.IsChecked = broker.IncomingBallons;</span>
<span style="color: #00A000">+                                chkIncomingBalloons.IsChecked = broker.IncomingBalloons;</span>
                                 chkIncomingFront.IsChecked = broker.IncomingTopMost;
                                 chkClearDTMFS.IsChecked = broker.ClearDTMFS;
                                 chkUseNumbers.IsChecked = broker.UseNumberOnlyInput;
<span style="color: #800080; font-weight: bold">@@ -51,7 +51,7 @@ namespace FSClient {</span>
                         broker.SetSpeakerDevs(indev == null ? &quot;&quot; : indev.name, outdev == null ? &quot;&quot; : outdev.name);
                         outdev = comboRingDevice.SelectedItem as PortAudio.AudioDevice;
                         broker.SetRingDev(outdev == null ? &quot;&quot; : outdev.name);
<span style="color: #A00000">-                        broker.IncomingBallons = chkIncomingBallons.IsChecked == true;</span>
<span style="color: #00A000">+                        broker.IncomingBalloons = chkIncomingBalloons.IsChecked == true;</span>
                         broker.IncomingTopMost = chkIncomingFront.IsChecked == true;
                         broker.ClearDTMFS = chkClearDTMFS.IsChecked == true;
                         broker.UseNumberOnlyInput = chkUseNumbers.IsChecked == true;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Properties/Settings.Designer.cs b/mitchcapper/FSClient/Properties/Settings.Designer.cs</span>
<span style="color: #000080; font-weight: bold">index fa47b05..84e25f5 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Properties/Settings.Designer.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Properties/Settings.Designer.cs</span>
<span style="color: #800080; font-weight: bold">@@ -120,12 +120,12 @@ namespace FSClient.Properties {</span>
         [global::System.Configuration.UserScopedSettingAttribute()]
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         [global::System.Configuration.DefaultSettingValueAttribute(&quot;True&quot;)]
<span style="color: #A00000">-        public bool IncomingBallons {</span>
<span style="color: #00A000">+        public bool IncomingBalloons {</span>
             get {
<span style="color: #A00000">-                return ((bool)(this[&quot;IncomingBallons&quot;]));</span>
<span style="color: #00A000">+                return ((bool)(this[&quot;IncomingBalloons&quot;]));</span>
             }
             set {
<span style="color: #A00000">-                this[&quot;IncomingBallons&quot;] = value;</span>
<span style="color: #00A000">+                this[&quot;IncomingBalloons&quot;] = value;</span>
             }
         }
         
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Properties/Settings.settings b/mitchcapper/FSClient/Properties/Settings.settings</span>
<span style="color: #000080; font-weight: bold">index e74d6ce..74ba8e9 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Properties/Settings.settings</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Properties/Settings.settings</span>
<span style="color: #800080; font-weight: bold">@@ -26,7 +26,7 @@</span>
     &lt;Setting Name=&quot;FrontOnIncoming&quot; Type=&quot;System.Boolean&quot; Scope=&quot;User&quot;&gt;
       &lt;Value Profile=&quot;(Default)&quot;&gt;True&lt;/Value&gt;
     &lt;/Setting&gt;
<span style="color: #A00000">-    &lt;Setting Name=&quot;IncomingBallons&quot; Type=&quot;System.Boolean&quot; Scope=&quot;User&quot;&gt;</span>
<span style="color: #00A000">+    &lt;Setting Name=&quot;IncomingBalloons&quot; Type=&quot;System.Boolean&quot; Scope=&quot;User&quot;&gt;</span>
       &lt;Value Profile=&quot;(Default)&quot;&gt;True&lt;/Value&gt;
     &lt;/Setting&gt;
     &lt;Setting Name=&quot;HeadsetDevice&quot; Type=&quot;System.String&quot; Scope=&quot;User&quot;&gt;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/SimpleContactPluginBase.cs b/mitchcapper/FSClient/SimpleContactPluginBase.cs</span>
<span style="color: #000080; font-weight: bold">index 4575f30..3c1b33b 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/SimpleContactPluginBase.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/SimpleContactPluginBase.cs</span>
<span style="color: #800080; font-weight: bold">@@ -127,8 +127,8 @@ namespace FSClient</span>
                 }
                 protected void refresh_search_box(){
                         if (search_box == null)
<span style="color: #A00000">-                                return;</span>
<span style="color: #A00000">-                        search_box.ItemsSource = from c in number_to_alias select new SearchAutoCompleteEntry(c.Key,c.Value);</span>
<span style="color: #00A000">+                                return;</span>
<span style="color: #00A000">+                        search_box.ItemsSource = from c in number_to_alias orderby c.Value,c.Key select new SearchAutoCompleteEntry(c.Key, c.Value);</span>
                 }
                 protected class SearchAutoCompleteEntry{
                         public string number;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/app.config b/mitchcapper/FSClient/app.config</span>
<span style="color: #000080; font-weight: bold">index 27ee233..292f672 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/app.config</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/app.config</span>
<span style="color: #800080; font-weight: bold">@@ -25,7 +25,7 @@</span>
             &lt;setting name=&quot;FrontOnIncoming&quot; serializeAs=&quot;String&quot;&gt;
                 &lt;value&gt;True&lt;/value&gt;
             &lt;/setting&gt;
<span style="color: #A00000">-            &lt;setting name=&quot;IncomingBallons&quot; serializeAs=&quot;String&quot;&gt;</span>
<span style="color: #00A000">+            &lt;setting name=&quot;IncomingBalloons&quot; serializeAs=&quot;String&quot;&gt;</span>
                 &lt;value&gt;True&lt;/value&gt;
             &lt;/setting&gt;
             &lt;setting name=&quot;HeadsetDevice&quot; serializeAs=&quot;String&quot;&gt;
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
multiple congratulates

<span style="color: #000080; font-weight: bold">diff --git a/intralanman/PHP/fs_curl/README b/intralanman/PHP/fs_curl/README</span>
<span style="color: #000080; font-weight: bold">index ec4930b..bc8d301 100644</span>
<span style="color: #A00000">--- a/intralanman/PHP/fs_curl/README</span>
<span style="color: #00A000">+++ b/intralanman/PHP/fs_curl/README</span>
<span style="color: #800080; font-weight: bold">@@ -181,7 +181,7 @@ you see this results</span>
 
 
 
<span style="color: #A00000">-CONGRADULATION... XML_CURL with intralan contrib working</span>
<span style="color: #00A000">+CONGRADULATIONS... XML_CURL with intralan contrib working</span>
 
 now its your own, how you like to do next
 
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
Merge branch &#39;master&#39; of git.freeswitch.org:freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
testing

<span style="color: #000080; font-weight: bold">diff --git a/intralanman/PHP/fs_curl/README b/intralanman/PHP/fs_curl/README</span>
<span style="color: #000080; font-weight: bold">index 0fe8567..ec4930b 100644</span>
<span style="color: #A00000">--- a/intralanman/PHP/fs_curl/README</span>
<span style="color: #00A000">+++ b/intralanman/PHP/fs_curl/README</span>
<span style="color: #800080; font-weight: bold">@@ -197,4 +197,4 @@ try calling</span>
 5000 - demo IVR (requires sounds and music files to be installed) 
 9995 - five second delay echo test 
 9996 - standard echo test 
<span style="color: #A00000">-9999 - music on hold (requires music files to be installed) </span>
\ No newline at end of file
<span style="color: #00A000">+9999 - music on hold (requires music files to be installed) </span>
</pre></div>
<div class="highlight"><pre>committer: Jeff Lenk
comments: 
add quotes on path

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/FSClient.csproj b/mitchcapper/FSClient/FSClient.csproj</span>
<span style="color: #000080; font-weight: bold">index b12ef37..3e6aaa1 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/FSClient.csproj</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/FSClient.csproj</span>
<span style="color: #800080; font-weight: bold">@@ -252,7 +252,7 @@ if not exist &quot;.\conf&quot; md conf</span>
 copy ..\..\&quot;external items&quot;\conf\freeswitch.xml .\conf&lt;/PostBuildEvent&gt;
   &lt;/PropertyGroup&gt;
   &lt;PropertyGroup&gt;
<span style="color: #A00000">-    &lt;PreBuildEvent&gt;if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy  %25FREESWITCH_SRC_LOCATION%25\Win32\$(ConfigurationName)\mod\FreeSWITCH.Managed.dll ..\..\&quot;external items&quot;&lt;/PreBuildEvent&gt;</span>
<span style="color: #00A000">+    &lt;PreBuildEvent&gt;if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy  &quot;%25FREESWITCH_SRC_LOCATION%25&quot;\Win32\$(ConfigurationName)\mod\FreeSWITCH.Managed.dll ..\..\&quot;external items&quot;&lt;/PreBuildEvent&gt;</span>
   &lt;/PropertyGroup&gt;
   &lt;!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
</pre></div>
<div class="highlight"><pre>committer: Jeff Lenk
comments: 
try to fix the localization install fail again

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Setup/FSCore.wxs b/mitchcapper/FSClient/Setup/FSCore.wxs</span>
<span style="color: #000080; font-weight: bold">index b59f5f8..2e95778 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Setup/FSCore.wxs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Setup/FSCore.wxs</span>
<span style="color: #800080; font-weight: bold">@@ -18,7 +18,7 @@</span>
           &lt;Component Id=&quot;cmp3900B358BC2FB69DF2C42DDE35C5BBB2&quot; Guid=&quot;*&quot;&gt;
             &lt;File Id=&quot;fil322A57E96A97A8179B75065ABF94F809&quot; KeyPath=&quot;yes&quot; Source=&quot;$(var.FSClient.TargetDir)\FreeSwitch.dll&quot; /&gt;
             &lt;CreateFolder Directory=&quot;INSTALLLOCATION&quot;&gt;
<span style="color: #A00000">-              &lt;Permission User=&quot;Users&quot; GenericAll=&quot;yes&quot; /&gt;</span>
<span style="color: #00A000">+              &lt;PermissionEx User=&quot;Users&quot; GenericRead=&quot;yes&quot; GenericWrite=&quot;yes&quot; CreateFile=&quot;yes&quot; xmlns=&quot;http://schemas.microsoft.com/wix/UtilExtension&quot;/&gt;</span>
             &lt;/CreateFolder&gt;
           &lt;/Component&gt;
           &lt;Component Id=&quot;cmp3CD83BDDE0C679AC83F36ABCCC44B85F&quot; Guid=&quot;*&quot;&gt;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Setup/Setup.wixproj b/mitchcapper/FSClient/Setup/Setup.wixproj</span>
<span style="color: #000080; font-weight: bold">index 62c873c..7fea603 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Setup/Setup.wixproj</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Setup/Setup.wixproj</span>
<span style="color: #800080; font-weight: bold">@@ -72,6 +72,10 @@</span>
     &lt;/BootstrapperFile&gt;
   &lt;/ItemGroup&gt;
   &lt;ItemGroup&gt;
<span style="color: #00A000">+    &lt;WixExtension Include=&quot;WixUtilExtension&quot;&gt;</span>
<span style="color: #00A000">+      &lt;HintPath&gt;$(WixExtDir)\WixUtilExtension.dll&lt;/HintPath&gt;</span>
<span style="color: #00A000">+      &lt;Name&gt;WixUtilExtension&lt;/Name&gt;</span>
<span style="color: #00A000">+    &lt;/WixExtension&gt;</span>
     &lt;WixExtension Include=&quot;WixNetFxExtension&quot;&gt;
       &lt;HintPath&gt;$(WixExtDir)\WixNetFxExtension.dll&lt;/HintPath&gt;
       &lt;Name&gt;WixNetFxExtension&lt;/Name&gt;
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Reset contact search bar string on escape or dial

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Broker.cs b/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #000080; font-weight: bold">index 0372d51..0195525 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Broker.cs</span>
<span style="color: #800080; font-weight: bold">@@ -229,7 +229,7 @@ namespace FSClient {</span>
                 public void DialString(String str){
                         if (string.IsNullOrWhiteSpace(str))
                                 return;
<span style="color: #A00000">-                        MainWindowRemoveFocus();</span>
<span style="color: #00A000">+                        MainWindowRemoveFocus(true);</span>
 
                         if (str.StartsWith(&quot;#&quot;) &amp;&amp; str.Length &gt; 2) {
                                 String acct_num = str.Substring(1, 1);
<span style="color: #800080; font-weight: bold">@@ -572,8 +572,8 @@ namespace FSClient {</span>
                 public OurAutoCompleteBox GetContactSearchBox() {
                         return MainWindow.get_instance().GetContactSearchBox();
                 }
<span style="color: #A00000">-                public void MainWindowRemoveFocus(){</span>
<span style="color: #A00000">-                        MainWindow.get_instance().RemoveFocus();</span>
<span style="color: #00A000">+                public void MainWindowRemoveFocus(bool ResetContactSearchText=false){</span>
<span style="color: #00A000">+                        MainWindow.get_instance().RemoveFocus(ResetContactSearchText);</span>
                 }
                 private delegate void BroadcastEventDel(FSEvent evt);
                 BroadcastEventDel BroadcastHandler;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/MainWindow.xaml.cs b/mitchcapper/FSClient/MainWindow.xaml.cs</span>
<span style="color: #000080; font-weight: bold">index 2dd780b..2201cf0 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/MainWindow.xaml.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/MainWindow.xaml.cs</span>
<span style="color: #800080; font-weight: bold">@@ -268,8 +268,10 @@ namespace FSClient {</span>
 
                 }
 
<span style="color: #A00000">-                public void RemoveFocus(){</span>
<span style="color: #00A000">+                public void RemoveFocus(bool ResetContactSearchText=false){</span>
                         btnMute.Focus(); //should really divert focus a better way
<span style="color: #00A000">+                        if (ResetContactSearchText)</span>
<span style="color: #00A000">+                                ResetContactSearchStr();</span>
                 }
 
 
<span style="color: #800080; font-weight: bold">@@ -424,10 +426,11 @@ namespace FSClient {</span>
                         return txtSearchBox;
                 }
 
<span style="color: #00A000">+                private const string contact_search_text = &quot;Contact Search&quot;;</span>
                 private void txtSearchBox_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) {
                         text_interception_enabled = false;
                         txtSearchBox.Opacity = 1;
<span style="color: #A00000">-                        if (txtSearchBox.Text == &quot;Contact Search&quot;)</span>
<span style="color: #00A000">+                        if (txtSearchBox.Text == contact_search_text)</span>
                                 txtSearchBox.Text = &quot;&quot;;
                 }
 
<span style="color: #800080; font-weight: bold">@@ -436,7 +439,10 @@ namespace FSClient {</span>
                         txtSearchBox.Opacity = 0.8;
 
                         if (String.IsNullOrWhiteSpace(txtSearchBox.Text))
<span style="color: #A00000">-                                txtSearchBox.Text = &quot;Contact Search&quot;;</span>
<span style="color: #00A000">+                                ResetContactSearchStr();</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                public void ResetContactSearchStr(){</span>
<span style="color: #00A000">+                        txtSearchBox.Text = contact_search_text;</span>
                 }
 
                 private bool ContactMenuOpen;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/SimpleContactPluginBase.cs b/mitchcapper/FSClient/SimpleContactPluginBase.cs</span>
<span style="color: #000080; font-weight: bold">index d2fbc41..4575f30 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/SimpleContactPluginBase.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/SimpleContactPluginBase.cs</span>
<span style="color: #800080; font-weight: bold">@@ -150,7 +150,7 @@ namespace FSClient</span>
                         if (e.Key == Key.Enter)
                                 call_current_contact();
                         else if (e.Key == Key.Escape)
<span style="color: #A00000">-                                Broker.get_instance().MainWindowRemoveFocus();</span>
<span style="color: #00A000">+                                Broker.get_instance().MainWindowRemoveFocus(true);</span>
                 }
 
                 protected OurAutoCompleteBox search_box;
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Jeff Lenk
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Jeff Lenk
comments: 
Fix installation problem - with non English locales

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Setup/FSCore.wxs b/mitchcapper/FSClient/Setup/FSCore.wxs</span>
<span style="color: #000080; font-weight: bold">index ac22889..b59f5f8 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Setup/FSCore.wxs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Setup/FSCore.wxs</span>
<span style="color: #800080; font-weight: bold">@@ -18,7 +18,7 @@</span>
           &lt;Component Id=&quot;cmp3900B358BC2FB69DF2C42DDE35C5BBB2&quot; Guid=&quot;*&quot;&gt;
             &lt;File Id=&quot;fil322A57E96A97A8179B75065ABF94F809&quot; KeyPath=&quot;yes&quot; Source=&quot;$(var.FSClient.TargetDir)\FreeSwitch.dll&quot; /&gt;
             &lt;CreateFolder Directory=&quot;INSTALLLOCATION&quot;&gt;
<span style="color: #A00000">-              &lt;Permission User=&quot;Authenticated Users&quot; GenericAll=&quot;yes&quot; /&gt;</span>
<span style="color: #00A000">+              &lt;Permission User=&quot;Users&quot; GenericAll=&quot;yes&quot; /&gt;</span>
             &lt;/CreateFolder&gt;
           &lt;/Component&gt;
           &lt;Component Id=&quot;cmp3CD83BDDE0C679AC83F36ABCCC44B85F&quot; Guid=&quot;*&quot;&gt;
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Minor text changes to make things clearer

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/README.txt b/mitchcapper/FSClient/README.txt</span>
<span style="color: #000080; font-weight: bold">index 6863643..68288a3 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/README.txt</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/README.txt</span>
<span style="color: #800080; font-weight: bold">@@ -22,7 +22,7 @@ Plugins</span>
                 There are two native headset plugins provided for Jabra and Plantronics headsets.  If you do not have one of these you can still leave the plugin in the directory it will not harm anything.  If you do have one of these headsets you will then be able to select the headset in the options.  This will automatically open/close the audio link, support muting and buttons, caller id, etc in the headset.  You may need the runtime/sdk for the headset installed for it to work.
 
         Contact Plugins
<span style="color: #A00000">-                There is one contact plugin provided by default, SimpleXML.  This plugin allows you to attach a name/alias to a phone number so future calls show this information for the number.  Right click and click edit on a call to edit the name/alias.  The plugin stores all the names in an xml file in the AppData\Local folder for the app.  Note you cannot have more than one contact plugin in the plugins folder or else only the first will be used.  There are two ways to write a contact plugin, you can inherit from the SimpleContactPluginBase or IContactPlugin classes.  SimpleContactPluginBase is just a base class that inherits from IContactPlugin to make things a bit easier.  It uses basically the same interface as SimpleXML but you could replace SimpleXML with something to tie it to outlook, a ldap address book etc.</span>
<span style="color: #00A000">+                There is one contact plugin provided by default, SimpleXML.  This plugin allows you to attach a name/alias to a phone number so future calls show this information for the number.  Right click and click edit on a call to edit the name/alias. Control +F or click in the contact search box on the bottom right, search by name right click for options.  The plugin stores all the names in an xml file in the AppData\Local folder for the app.  Note you cannot have more than one contact plugin in the plugins folder or else only the first will be used.  There are two ways to write a contact plugin, you can inherit from the SimpleContactPluginBase or IContactPlugin classes.  SimpleContactPluginBase is just a base class that inherits from IContactPlugin to make things a bit easier.  It uses basically the same interface as SimpleXML but you could replace SimpleXML with something to tie it to outlook, a ldap address book etc.</span>
         
         Plugin Development
                 FSClient was made to make it easy to extend through plugins.  The two plugin types supported are noted above.  Writing a plugin is exceptionally easy, you simply inherit the base interface fill in a few functions and are good to go.  Use the above for examples.  As for how easy, well the SimpleXML Contact Plugin was written in under an hour and under 100 lines of code.  Writing plugins is easiest in a .net language (although you can write them in any language).  FSClient will try to load any plugins in the plugin dir.  
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Sofia.cs b/mitchcapper/FSClient/Sofia.cs</span>
<span style="color: #000080; font-weight: bold">index 15fd750..f33d963 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Sofia.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Sofia.cs</span>
<span style="color: #800080; font-weight: bold">@@ -126,7 +126,7 @@ namespace FSClient {</span>
                         master_profile_ok = true;
                         String res = Utils.api_exec(&quot;sofia&quot;, &quot;status profile softphone&quot;);
                         if (res.Trim() == &quot;Invalid Profile!&quot;) {
<span style="color: #A00000">-                                MessageBox.Show(&quot;Warning the master sofia profile was not able to load and the phone will most likely _not_ work, make sure the local bind port (&quot; + FieldValue.GetByName(values, &quot;sip-port&quot;).value + &quot;) is free(set under the Advanced tab of in the sofia settings), otherwise check the freeswitch.log for more details.  You can try reloading the sofia profile by editing the sofia settings and clicking save.&quot;);</span>
<span style="color: #00A000">+                                MessageBox.Show(&quot;Warning the master sofia profile was not able to load and the phone will most likely _not_ work, make sure the local bind port (&quot; + FieldValue.GetByName(values, &quot;sip-port&quot;).value + &quot;) is free(set under the Advanced tab of in the sofia settings) and FSClient is allowed through your firewall, otherwise check the freeswitch.log for more details.  You can try reloading the sofia profile by editing the sofia settings and clicking save to see if fixed.&quot;);</span>
                                 master_profile_ok = false;
                         }
 
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/TODO.txt b/mitchcapper/FSClient/TODO.txt</span>
<span style="color: #000080; font-weight: bold">index 7e3f1fb..4e65bb3 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/TODO.txt</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/TODO.txt</span>
<span style="color: #800080; font-weight: bold">@@ -1,4 +1,2 @@</span>
<span style="color: #A00000">-Better address book integration.   Right now the integration is pretty lame to say the least, you cannot lookup contacts or do much in the way of editing them. I think a nice interm solution would be a control + f support to find a contact to atleast make outgoing calls.  Right now contact plugins can add right click menus but maybe making a more central way for them to add right click options so they don&#39;t have to do so much work would be better.</span>
<span style="color: #A00000">-Volume control / gain.   Right now you can use the system volume to adjust things but it would be nice to have this built into the GUI and also have a gain option.  Gain would require changes to portaudio to support it most likely (although should be decently simple) or using set_audio_level.  -- Partially implemented now with the ability to set audio levels on a call by right clicking on it.</span>
 Plugin control, ability to enable or disable plugins from the options menu.
 Figure out a way to sort codecs, a draggable combo box may work well.
\ No newline at end of file
</pre></div>
<div class="highlight"><pre>committer: Jeff Lenk
comments: 
add dependency for new file

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Setup/FSClient.wxs b/mitchcapper/FSClient/Setup/FSClient.wxs</span>
<span style="color: #000080; font-weight: bold">index 68d0886..ba6960a 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Setup/FSClient.wxs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Setup/FSClient.wxs</span>
<span style="color: #800080; font-weight: bold">@@ -4,6 +4,7 @@</span>
       &lt;ComponentGroup Id=&quot;FSClientComp&quot;&gt;
         &lt;ComponentRef Id=&quot;cmp98E16C7E23D449F3BC0ECF003543C3F9&quot;/&gt;
         &lt;ComponentRef Id=&quot;cmp32DB946E4669A895FAC4826678D1CE7A&quot;/&gt;
<span style="color: #00A000">+        &lt;ComponentRef Id=&quot;cmpD17CBE22A3B94CCE9CF46B849289D40D&quot;/&gt;</span>
       &lt;/ComponentGroup&gt;
         &lt;DirectoryRef Id=&quot;INSTALLLOCATION&quot;&gt;
           &lt;Component Id=&quot;cmp98E16C7E23D449F3BC0ECF003543C3F9&quot; Guid=&quot;*&quot;&gt;
<span style="color: #800080; font-weight: bold">@@ -12,6 +13,9 @@</span>
           &lt;Component Id=&quot;cmp32DB946E4669A895FAC4826678D1CE7A&quot; Guid=&quot;*&quot;&gt;
             &lt;File Id=&quot;filE4CB78ABCF2AE91B89FB0446A607E70C&quot; KeyPath=&quot;yes&quot; Source=&quot;$(var.FSClient.TargetDir)\WPFToolkit.dll&quot; /&gt;
           &lt;/Component&gt;
<span style="color: #00A000">+          &lt;Component Id=&quot;cmpD17CBE22A3B94CCE9CF46B849289D40D&quot; Guid=&quot;*&quot;&gt;</span>
<span style="color: #00A000">+            &lt;File Id=&quot;fil00037BE15D6A4893973045263EA4B117&quot; KeyPath=&quot;yes&quot; Source=&quot;$(var.FSClient.TargetDir)\System.Windows.Controls.Input.Toolkit.dll&quot; /&gt;</span>
<span style="color: #00A000">+          &lt;/Component&gt;</span>
         &lt;/DirectoryRef&gt;
     &lt;/Fragment&gt;
 &lt;/Wix&gt;
\ No newline at end of file
</pre></div>
<div class="highlight"><pre>committer: Mitch Capper
comments: 
Make sure to hide the contact search box if no contact plugin supports it

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/IContactPlugin.cs b/mitchcapper/FSClient/IContactPlugin.cs</span>
<span style="color: #000080; font-weight: bold">index b064ff6..c1a1c24 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/IContactPlugin.cs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/IContactPlugin.cs</span>
<span style="color: #800080; font-weight: bold">@@ -5,9 +5,9 @@ using System.ComponentModel;</span>
 using System.IO;
 using System.Reflection;
 using System.Windows;
<span style="color: #A00000">-using System.Windows.Controls;</span>
<span style="color: #A00000">-using FSClient.Controls;</span>
<span style="color: #A00000">-</span>
<span style="color: #00A000">+using System.Windows.Controls;</span>
<span style="color: #00A000">+using FSClient.Controls;</span>
<span style="color: #00A000">+</span>
 namespace FSClient {
         public class ContactPluginManager : IDisposable {
                 private bool IsTypeOf(Type to_check, Type of) {
<span style="color: #800080; font-weight: bold">@@ -36,19 +36,24 @@ namespace FSClient {</span>
                 }
                 private void ContactInit(){
                         IContactPlugin plugin = plugins[0];
<span style="color: #A00000">-                        ContactMenuItems = plugin.ContactRightClickMenu();</span>
<span style="color: #00A000">+                        ContactMenuItems = plugin.ContactRightClickMenu();</span>
                         OurAutoCompleteBox box = Broker.get_instance().GetContactSearchBox();
<span style="color: #A00000">-                        if (!plugin.HandleSearchBox(box))</span>
<span style="color: #A00000">-                                box.Visibility = Visibility.Collapsed;</span>
<span style="color: #00A000">+                        if (plugin.HandleSearchBox(box))</span>
<span style="color: #00A000">+                                box.Visibility = Visibility.Visible;</span>
                 }
                 private void HandleError(IContactPlugin plugin, Exception e) {
                         Utils.PluginLog(&quot;Contact Plugin Manager&quot;, &quot;Plugin \&quot;&quot; + plugin.ProviderName() + &quot;\&quot; had an error Due to: &quot; + e.Message);
 
                 }
         
<span style="color: #A00000">-                public ContactPluginManager() {</span>
<span style="color: #A00000">-</span>
<span style="color: #A00000">-</span>
<span style="color: #00A000">+                public ContactPluginManager() {</span>
<span style="color: #00A000">+                        OurAutoCompleteBox box = Broker.get_instance().GetContactSearchBox();</span>
<span style="color: #00A000">+                        Application.Current.Dispatcher.BeginInvoke((Action) (() =&gt; {</span>
<span style="color: #00A000">+                                                                                     box.Visibility = Visibility.Collapsed;</span>
<span style="color: #00A000">+                                                                             }));</span>
<span style="color: #00A000">+                        </span>
<span style="color: #00A000">+                        </span>
<span style="color: #00A000">+</span>
                         String plugin_dir = Utils.plugins_dir();
                         string[] dlls;
                         try {
<span style="color: #800080; font-weight: bold">@@ -161,7 +166,7 @@ namespace FSClient {</span>
                 public abstract IEnumerable&lt;MenuItem&gt; ContactRightClickMenu();
                 public abstract void Initialize();
                 public abstract void Terminate();
<span style="color: #A00000">-                public abstract string ProviderName();</span>
<span style="color: #00A000">+                public abstract string ProviderName();</span>
                 public abstract bool HandleSearchBox(OurAutoCompleteBox box);
 
         }
</pre></div>
<div class="highlight"><pre>committer: Jeff Lenk
comments: 
remove passthrough codecs and align files with setup

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/External Items/conf/freeswitch.xml b/mitchcapper/FSClient/External Items/conf/freeswitch.xml</span>
<span style="color: #000080; font-weight: bold">index e2afea6..a297f69 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/External Items/conf/freeswitch.xml        </span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/External Items/conf/freeswitch.xml        </span>
<span style="color: #800080; font-weight: bold">@@ -55,8 +55,6 @@</span>
                                 &lt;load module=&quot;mod_dptools&quot;/&gt;
                                 &lt;load module=&quot;mod_dialplan_xml&quot;/&gt;
                                                                 &lt;load module=&quot;mod_spandsp&quot;/&gt;
<span style="color: #A00000">-                                                                &lt;load module=&quot;mod_g723_1&quot;/&gt;</span>
<span style="color: #A00000">-                                                                &lt;load module=&quot;mod_amr&quot;/&gt;</span>
                                 &lt;load module=&quot;mod_ilbc&quot;/&gt;
                                 &lt;load module=&quot;mod_speex&quot;/&gt;
                                                                 &lt;load module=&quot;mod_siren&quot;/&gt;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/FSClient.csproj b/mitchcapper/FSClient/FSClient.csproj</span>
<span style="color: #000080; font-weight: bold">index a29cb51..f4e250c 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/FSClient.csproj</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/FSClient.csproj</span>
<span style="color: #800080; font-weight: bold">@@ -240,7 +240,6 @@ if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Wi</span>
 if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_sofia.dll .\mod
 if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_speex.dll .\mod
 if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_tone_stream.dll .\mod
<span style="color: #A00000">-if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_h26x.dll .\mod</span>
 if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_silk.dll .\mod
 if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_bv.dll .\mod
 
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/Setup/FSCore.wxs b/mitchcapper/FSClient/Setup/FSCore.wxs</span>
<span style="color: #000080; font-weight: bold">index 7e1b42b..ac22889 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/Setup/FSCore.wxs</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/Setup/FSCore.wxs</span>
<span style="color: #800080; font-weight: bold">@@ -62,7 +62,6 @@</span>
         &lt;ComponentRef Id=&quot;cmp7F1E9A4820D7ABC50BB56176F1C5C203&quot;/&gt;
         &lt;ComponentRef Id=&quot;cmpB1F423B56230E52C4F261BB0A2D31A50&quot;/&gt;
         &lt;ComponentRef Id=&quot;cmpED6FDBCCBE7E25A518A406A7EEBF19E7&quot;/&gt;
<span style="color: #A00000">-        &lt;ComponentRef Id=&quot;cmpC32E981DE1987696848505946E7E40C7&quot;/&gt;</span>
         &lt;ComponentRef Id=&quot;cmpBEC9C50CA6BEA1BDAA538AC014270ACA&quot;/&gt;
         &lt;ComponentRef Id=&quot;cmp484B206DD9362CCE151AE281DC2B9653&quot;/&gt;
         &lt;ComponentRef Id=&quot;cmp57A16823D68C54AF4DD1BEF68206C2E6&quot;/&gt;
<span style="color: #800080; font-weight: bold">@@ -98,9 +97,6 @@</span>
             &lt;Component Id=&quot;cmpED6FDBCCBE7E25A518A406A7EEBF19E7&quot; Guid=&quot;*&quot;&gt;
                 &lt;File Id=&quot;fil2D28C6A5674AFCA7F9F1E06EEB33E823&quot; KeyPath=&quot;yes&quot; Source=&quot;$(var.FSClient.TargetDir)\mod\mod_event_socket.dll&quot; /&gt;
             &lt;/Component&gt;
<span style="color: #A00000">-            &lt;Component Id=&quot;cmpC32E981DE1987696848505946E7E40C7&quot; Guid=&quot;*&quot;&gt;</span>
<span style="color: #A00000">-                &lt;File Id=&quot;filD5487CAC6CE60107178EA7AD41CDDA31&quot; KeyPath=&quot;yes&quot; Source=&quot;$(var.FSClient.TargetDir)\mod\mod_h26x.dll&quot; /&gt;</span>
<span style="color: #A00000">-            &lt;/Component&gt;</span>
             &lt;Component Id=&quot;cmpBEC9C50CA6BEA1BDAA538AC014270ACA&quot; Guid=&quot;*&quot;&gt;
                 &lt;File Id=&quot;fil623B81F2BE4376CCA8C66EDB2EA2EBA8&quot; KeyPath=&quot;yes&quot; Source=&quot;$(var.FSClient.TargetDir)\mod\mod_ilbc.dll&quot; /&gt;
             &lt;/Component&gt;
</pre></div>
<div class="highlight"><pre>committer: Jeff Lenk
comments: 
change project output paths add buildevents to copy fs depends if FREESWITCH_SRC_LOCATION environment variable is set

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/FSClient.csproj b/mitchcapper/FSClient/FSClient.csproj</span>
<span style="color: #000080; font-weight: bold">index 8681ee7..a29cb51 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/FSClient.csproj</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/FSClient.csproj</span>
<span style="color: #800080; font-weight: bold">@@ -21,13 +21,28 @@</span>
     &lt;SccLocalPath&gt;SAK&lt;/SccLocalPath&gt;
     &lt;SccAuxPath&gt;SAK&lt;/SccAuxPath&gt;
     &lt;SccProvider&gt;SAK&lt;/SccProvider&gt;
<span style="color: #00A000">+    &lt;PublishUrl&gt;publish\&lt;/PublishUrl&gt;</span>
<span style="color: #00A000">+    &lt;Install&gt;true&lt;/Install&gt;</span>
<span style="color: #00A000">+    &lt;InstallFrom&gt;Disk&lt;/InstallFrom&gt;</span>
<span style="color: #00A000">+    &lt;UpdateEnabled&gt;false&lt;/UpdateEnabled&gt;</span>
<span style="color: #00A000">+    &lt;UpdateMode&gt;Foreground&lt;/UpdateMode&gt;</span>
<span style="color: #00A000">+    &lt;UpdateInterval&gt;7&lt;/UpdateInterval&gt;</span>
<span style="color: #00A000">+    &lt;UpdateIntervalUnits&gt;Days&lt;/UpdateIntervalUnits&gt;</span>
<span style="color: #00A000">+    &lt;UpdatePeriodically&gt;false&lt;/UpdatePeriodically&gt;</span>
<span style="color: #00A000">+    &lt;UpdateRequired&gt;false&lt;/UpdateRequired&gt;</span>
<span style="color: #00A000">+    &lt;MapFileExtensions&gt;true&lt;/MapFileExtensions&gt;</span>
<span style="color: #00A000">+    &lt;ApplicationRevision&gt;0&lt;/ApplicationRevision&gt;</span>
<span style="color: #00A000">+    &lt;ApplicationVersion&gt;1.0.0.%2a&lt;/ApplicationVersion&gt;</span>
<span style="color: #00A000">+    &lt;IsWebBootstrapper&gt;false&lt;/IsWebBootstrapper&gt;</span>
<span style="color: #00A000">+    &lt;UseApplicationTrust&gt;false&lt;/UseApplicationTrust&gt;</span>
<span style="color: #00A000">+    &lt;BootstrapperEnabled&gt;true&lt;/BootstrapperEnabled&gt;</span>
   &lt;/PropertyGroup&gt;
   &lt;PropertyGroup Condition=&quot; &#39;$(Configuration)|$(Platform)&#39; == &#39;Debug|x86&#39; &quot;&gt;
     &lt;PlatformTarget&gt;x86&lt;/PlatformTarget&gt;
     &lt;DebugSymbols&gt;true&lt;/DebugSymbols&gt;
     &lt;DebugType&gt;full&lt;/DebugType&gt;
     &lt;Optimize&gt;false&lt;/Optimize&gt;
<span style="color: #A00000">-    &lt;OutputPath&gt;working\&lt;/OutputPath&gt;</span>
<span style="color: #00A000">+    &lt;OutputPath&gt;bin\Debug\&lt;/OutputPath&gt;</span>
     &lt;DefineConstants&gt;DEBUG;TRACE&lt;/DefineConstants&gt;
     &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
     &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
<span style="color: #800080; font-weight: bold">@@ -172,7 +187,69 @@</span>
       &lt;CopyToOutputDirectory&gt;Always&lt;/CopyToOutputDirectory&gt;
     &lt;/Resource&gt;
   &lt;/ItemGroup&gt;
<span style="color: #00A000">+  &lt;ItemGroup&gt;</span>
<span style="color: #00A000">+    &lt;BootstrapperPackage Include=&quot;.NETFramework,Version=v4.0,Profile=Client&quot;&gt;</span>
<span style="color: #00A000">+      &lt;Visible&gt;False&lt;/Visible&gt;</span>
<span style="color: #00A000">+      &lt;ProductName&gt;Microsoft .NET Framework 4 Client Profile %28x86 and x64%29&lt;/ProductName&gt;</span>
<span style="color: #00A000">+      &lt;Install&gt;true&lt;/Install&gt;</span>
<span style="color: #00A000">+    &lt;/BootstrapperPackage&gt;</span>
<span style="color: #00A000">+    &lt;BootstrapperPackage Include=&quot;Microsoft.Net.Client.3.5&quot;&gt;</span>
<span style="color: #00A000">+      &lt;Visible&gt;False&lt;/Visible&gt;</span>
<span style="color: #00A000">+      &lt;ProductName&gt;.NET Framework 3.5 SP1 Client Profile&lt;/ProductName&gt;</span>
<span style="color: #00A000">+      &lt;Install&gt;false&lt;/Install&gt;</span>
<span style="color: #00A000">+    &lt;/BootstrapperPackage&gt;</span>
<span style="color: #00A000">+    &lt;BootstrapperPackage Include=&quot;Microsoft.Net.Framework.3.5.SP1&quot;&gt;</span>
<span style="color: #00A000">+      &lt;Visible&gt;False&lt;/Visible&gt;</span>
<span style="color: #00A000">+      &lt;ProductName&gt;.NET Framework 3.5 SP1&lt;/ProductName&gt;</span>
<span style="color: #00A000">+      &lt;Install&gt;false&lt;/Install&gt;</span>
<span style="color: #00A000">+    &lt;/BootstrapperPackage&gt;</span>
<span style="color: #00A000">+    &lt;BootstrapperPackage Include=&quot;Microsoft.Windows.Installer.3.1&quot;&gt;</span>
<span style="color: #00A000">+      &lt;Visible&gt;False&lt;/Visible&gt;</span>
<span style="color: #00A000">+      &lt;ProductName&gt;Windows Installer 3.1&lt;/ProductName&gt;</span>
<span style="color: #00A000">+      &lt;Install&gt;true&lt;/Install&gt;</span>
<span style="color: #00A000">+    &lt;/BootstrapperPackage&gt;</span>
<span style="color: #00A000">+  &lt;/ItemGroup&gt;</span>
   &lt;Import Project=&quot;$(MSBuildToolsPath)\Microsoft.CSharp.targets&quot; /&gt;
<span style="color: #00A000">+  &lt;PropertyGroup&gt;</span>
<span style="color: #00A000">+    &lt;PostBuildEvent&gt;if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\FreeSwitch.dll .</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\libapr.dll .</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\libaprutil.dll .</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\libbroadvoice.dll .</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\libspandsp.dll .</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\libteletone.dll .</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\libeay32.dll .</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\ssleay32.dll .</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\pthread.dll .</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+if not exist &quot;.\mod&quot; md mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_managed.dll .</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_spandsp.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_celt.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_commands.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_console.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_dialplan_xml.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_dptools.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_event_socket.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_ilbc.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_logfile.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_local_stream.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_loopback.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_PortAudio.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_siren.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_sndfile.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_sofia.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_speex.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_tone_stream.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_h26x.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_silk.dll .\mod</span>
<span style="color: #00A000">+if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy &quot;%25FREESWITCH_SRC_LOCATION%25\&quot;Win32\$(ConfigurationName)\mod\mod_bv.dll .\mod</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+if not exist &quot;.\conf&quot; md conf</span>
<span style="color: #00A000">+copy ..\..\&quot;external items&quot;\conf\freeswitch.xml .\conf&lt;/PostBuildEvent&gt;</span>
<span style="color: #00A000">+  &lt;/PropertyGroup&gt;</span>
<span style="color: #00A000">+  &lt;PropertyGroup&gt;</span>
<span style="color: #00A000">+    &lt;PreBuildEvent&gt;if exist &quot;%25FREESWITCH_SRC_LOCATION%25&quot; copy  %25FREESWITCH_SRC_LOCATION%25\Win32\$(ConfigurationName)\mod\FreeSWITCH.Managed.dll ..\..\&quot;external items&quot;&lt;/PreBuildEvent&gt;</span>
<span style="color: #00A000">+  &lt;/PropertyGroup&gt;</span>
   &lt;!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   &lt;Target Name=&quot;BeforeBuild&quot;&gt;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/JabraHeadset/JabraHeadset.csproj b/mitchcapper/FSClient/JabraHeadset/JabraHeadset.csproj</span>
<span style="color: #000080; font-weight: bold">index 4908229..103d468 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/JabraHeadset/JabraHeadset.csproj</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/JabraHeadset/JabraHeadset.csproj</span>
<span style="color: #800080; font-weight: bold">@@ -22,7 +22,7 @@</span>
     &lt;DebugSymbols&gt;true&lt;/DebugSymbols&gt;
     &lt;DebugType&gt;full&lt;/DebugType&gt;
     &lt;Optimize&gt;false&lt;/Optimize&gt;
<span style="color: #A00000">-    &lt;OutputPath&gt;..\working\plugins\&lt;/OutputPath&gt;</span>
<span style="color: #00A000">+    &lt;OutputPath&gt;..\bin\Debug\plugins\&lt;/OutputPath&gt;</span>
     &lt;DefineConstants&gt;DEBUG;TRACE&lt;/DefineConstants&gt;
     &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
     &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
<span style="color: #800080; font-weight: bold">@@ -31,7 +31,7 @@</span>
   &lt;PropertyGroup Condition=&quot; &#39;$(Configuration)|$(Platform)&#39; == &#39;Release|AnyCPU&#39; &quot;&gt;
     &lt;DebugType&gt;pdbonly&lt;/DebugType&gt;
     &lt;Optimize&gt;true&lt;/Optimize&gt;
<span style="color: #A00000">-    &lt;OutputPath&gt;bin\Release\&lt;/OutputPath&gt;</span>
<span style="color: #00A000">+    &lt;OutputPath&gt;..\bin\Release\plugins\&lt;/OutputPath&gt;</span>
     &lt;DefineConstants&gt;TRACE&lt;/DefineConstants&gt;
     &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
     &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/PlantronicsHeadset/PlantronicsHeadset.csproj b/mitchcapper/FSClient/PlantronicsHeadset/PlantronicsHeadset.csproj</span>
<span style="color: #000080; font-weight: bold">index 9a434b5..36099a7 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/PlantronicsHeadset/PlantronicsHeadset.csproj</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/PlantronicsHeadset/PlantronicsHeadset.csproj</span>
<span style="color: #800080; font-weight: bold">@@ -23,7 +23,7 @@</span>
     &lt;DebugSymbols&gt;true&lt;/DebugSymbols&gt;
     &lt;DebugType&gt;full&lt;/DebugType&gt;
     &lt;Optimize&gt;false&lt;/Optimize&gt;
<span style="color: #A00000">-    &lt;OutputPath&gt;..\working\plugins\&lt;/OutputPath&gt;</span>
<span style="color: #00A000">+    &lt;OutputPath&gt;..\bin\Debug\plugins\&lt;/OutputPath&gt;</span>
     &lt;DefineConstants&gt;DEBUG;TRACE&lt;/DefineConstants&gt;
     &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
     &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
<span style="color: #800080; font-weight: bold">@@ -32,7 +32,7 @@</span>
   &lt;PropertyGroup Condition=&quot; &#39;$(Configuration)|$(Platform)&#39; == &#39;Release|AnyCPU&#39; &quot;&gt;
     &lt;DebugType&gt;pdbonly&lt;/DebugType&gt;
     &lt;Optimize&gt;true&lt;/Optimize&gt;
<span style="color: #A00000">-    &lt;OutputPath&gt;bin\Release\&lt;/OutputPath&gt;</span>
<span style="color: #00A000">+    &lt;OutputPath&gt;..\bin\Release\plugins\&lt;/OutputPath&gt;</span>
     &lt;DefineConstants&gt;TRACE&lt;/DefineConstants&gt;
     &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
     &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.csproj b/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.csproj</span>
<span style="color: #000080; font-weight: bold">index a05acb1..1d3756f 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.csproj</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.csproj</span>
<span style="color: #800080; font-weight: bold">@@ -21,7 +21,7 @@</span>
     &lt;DebugSymbols&gt;true&lt;/DebugSymbols&gt;
     &lt;DebugType&gt;full&lt;/DebugType&gt;
     &lt;Optimize&gt;false&lt;/Optimize&gt;
<span style="color: #A00000">-    &lt;OutputPath&gt;..\working\plugins\&lt;/OutputPath&gt;</span>
<span style="color: #00A000">+    &lt;OutputPath&gt;..\bin\Debug\plugins\&lt;/OutputPath&gt;</span>
     &lt;DefineConstants&gt;DEBUG;TRACE&lt;/DefineConstants&gt;
     &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
     &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
<span style="color: #800080; font-weight: bold">@@ -29,7 +29,7 @@</span>
   &lt;PropertyGroup Condition=&quot; &#39;$(Configuration)|$(Platform)&#39; == &#39;Release|AnyCPU&#39; &quot;&gt;
     &lt;DebugType&gt;pdbonly&lt;/DebugType&gt;
     &lt;Optimize&gt;true&lt;/Optimize&gt;
<span style="color: #A00000">-    &lt;OutputPath&gt;bin\Release\&lt;/OutputPath&gt;</span>
<span style="color: #00A000">+    &lt;OutputPath&gt;..\bin\Release\plugins\&lt;/OutputPath&gt;</span>
     &lt;DefineConstants&gt;TRACE&lt;/DefineConstants&gt;
     &lt;ErrorReport&gt;prompt&lt;/ErrorReport&gt;
     &lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
</pre></div>
<div class="highlight"><pre>committer: Jeff Lenk
comments: 
add setup to solution - more to come later

<span style="color: #000080; font-weight: bold">diff --git a/mitchcapper/FSClient/FSClient.sln b/mitchcapper/FSClient/FSClient.sln</span>
<span style="color: #000080; font-weight: bold">index c2301d9..ed5bc69 100644</span>
<span style="color: #A00000">--- a/mitchcapper/FSClient/FSClient.sln</span>
<span style="color: #00A000">+++ b/mitchcapper/FSClient/FSClient.sln</span>
<span style="color: #800080; font-weight: bold">@@ -22,6 +22,8 @@ Project(&quot;{2150E333-8FDC-42A3-9474-1A3956D46DE8}&quot;) = &quot;conf&quot;, &quot;conf&quot;, &quot;{BDB28E84-D</span>
 EndProject
 Project(&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&quot;) = &quot;SimpleXmlContactPlugin&quot;, &quot;SimpleXmlContactPlugin\SimpleXmlContactPlugin.csproj&quot;, &quot;{8DA31553-28E9-4A08-897E-7EE1E01356A3}&quot;
 EndProject
<span style="color: #00A000">+Project(&quot;{930C7802-8A8C-48F9-8165-68863BCCD9DD}&quot;) = &quot;Setup&quot;, &quot;Setup\Setup.wixproj&quot;, &quot;{80D26E64-EECF-47F2-8132-804F087C27BA}&quot;</span>
<span style="color: #00A000">+EndProject</span>
 Global
         GlobalSection(SourceCodeControl) = preSolution
                 SccNumberOfProjects = 5
<span style="color: #800080; font-weight: bold">@@ -84,6 +86,16 @@ Global</span>
                 {8DA31553-28E9-4A08-897E-7EE1E01356A3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
                 {8DA31553-28E9-4A08-897E-7EE1E01356A3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
                 {8DA31553-28E9-4A08-897E-7EE1E01356A3}.Release|x86.ActiveCfg = Release|Any CPU
<span style="color: #00A000">+                {80D26E64-EECF-47F2-8132-804F087C27BA}.Debug|Any CPU.ActiveCfg = Debug|x86</span>
<span style="color: #00A000">+                {80D26E64-EECF-47F2-8132-804F087C27BA}.Debug|Mixed Platforms.ActiveCfg = Debug|x86</span>
<span style="color: #00A000">+                {80D26E64-EECF-47F2-8132-804F087C27BA}.Debug|Mixed Platforms.Build.0 = Debug|x86</span>
<span style="color: #00A000">+                {80D26E64-EECF-47F2-8132-804F087C27BA}.Debug|x86.ActiveCfg = Debug|x86</span>
<span style="color: #00A000">+                {80D26E64-EECF-47F2-8132-804F087C27BA}.Debug|x86.Build.0 = Debug|x86</span>
<span style="color: #00A000">+                {80D26E64-EECF-47F2-8132-804F087C27BA}.Release|Any CPU.ActiveCfg = Release|x86</span>
<span style="color: #00A000">+                {80D26E64-EECF-47F2-8132-804F087C27BA}.Release|Mixed Platforms.ActiveCfg = Release|x86</span>
<span style="color: #00A000">+                {80D26E64-EECF-47F2-8132-804F087C27BA}.Release|Mixed Platforms.Build.0 = Release|x86</span>
<span style="color: #00A000">+                {80D26E64-EECF-47F2-8132-804F087C27BA}.Release|x86.ActiveCfg = Release|x86</span>
<span style="color: #00A000">+                {80D26E64-EECF-47F2-8132-804F087C27BA}.Release|x86.Build.0 = Release|x86</span>
         EndGlobalSection
         GlobalSection(SolutionProperties) = preSolution
                 HideSolutionNode = FALSE
</pre></div>
<div class="highlight"><pre>committer: Jeff Lenk
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
formatting

<span style="color: #000080; font-weight: bold">diff --git a/intralanman/PHP/fs_curl/configuration/conference.conf.php b/intralanman/PHP/fs_curl/configuration/conference.conf.php</span>
<span style="color: #000080; font-weight: bold">index 3441a10..3d0ad77 100644</span>
<span style="color: #A00000">--- a/intralanman/PHP/fs_curl/configuration/conference.conf.php</span>
<span style="color: #00A000">+++ b/intralanman/PHP/fs_curl/configuration/conference.conf.php</span>
<span style="color: #800080; font-weight: bold">@@ -178,7 +178,7 @@ class conference_conf extends fs_configuration {</span>
                 $this -&gt; xmlw -&gt; startElement(&#39;control&#39;);
                 $this -&gt; xmlw -&gt; writeAttribute(&#39;action&#39;, $controls[&#39;action&#39;]);
                 $this -&gt; xmlw -&gt; writeAttribute(&#39;digits&#39;, $controls[&#39;digits&#39;]);
<span style="color: #A00000">-                                if($controls[&#39;data&#39;]) {$this -&gt; xmlw -&gt; writeAttribute(&#39;data&#39;, $controls[&#39;data&#39;]);}</span>
<span style="color: #00A000">+                if($controls[&#39;data&#39;]) {$this -&gt; xmlw -&gt; writeAttribute(&#39;data&#39;, $controls[&#39;data&#39;]);}</span>
                 $this -&gt; xmlw -&gt; endElement();
 
             }
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
formatting

<span style="color: #000080; font-weight: bold">diff --git a/intralanman/PHP/fs_curl/configuration/conference.conf.php b/intralanman/PHP/fs_curl/configuration/conference.conf.php</span>
<span style="color: #000080; font-weight: bold">index cc77fc5..3441a10 100644</span>
<span style="color: #A00000">--- a/intralanman/PHP/fs_curl/configuration/conference.conf.php</span>
<span style="color: #00A000">+++ b/intralanman/PHP/fs_curl/configuration/conference.conf.php</span>
<span style="color: #800080; font-weight: bold">@@ -34,13 +34,13 @@ class conference_conf extends fs_configuration {</span>
      * @return void
     */
     public function main() {
<span style="color: #A00000">-                $this -&gt; xmlw -&gt; startElement(&#39;configuration&#39;);</span>
<span style="color: #A00000">-                $this -&gt; xmlw -&gt; writeAttribute(&#39;name&#39;, &#39;conference.conf&#39;);</span>
<span style="color: #A00000">-                $this -&gt; xmlw -&gt; writeAttribute(&#39;description&#39;, &#39;Audio Conference&#39;);</span>
<span style="color: #A00000">-        $this -&gt; write_advertises();</span>
<span style="color: #A00000">-                if($this -&gt; request[&#39;Controls&#39;]) {$this -&gt; write_controls();}</span>
<span style="color: #00A000">+        $this -&gt; xmlw -&gt; startElement(&#39;configuration&#39;);</span>
<span style="color: #00A000">+        $this -&gt; xmlw -&gt; writeAttribute(&#39;name&#39;, &#39;conference.conf&#39;);</span>
<span style="color: #00A000">+        $this -&gt; xmlw -&gt; writeAttribute(&#39;description&#39;, &#39;Audio Conference&#39;);</span>
<span style="color: #00A000">+        $this -&gt; write_advertises();</span>
<span style="color: #00A000">+        if($this -&gt; request[&#39;Controls&#39;]) {$this -&gt; write_controls();}</span>
         if($this -&gt; request[&#39;profile_name&#39;]) {$this -&gt; write_profiles();}
<span style="color: #A00000">-                $this -&gt; xmlw -&gt; endElement();</span>
<span style="color: #00A000">+        $this -&gt; xmlw -&gt; endElement();</span>
     }
 
     /**
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
Merge branch &#39;master&#39; of git.freeswitch.org:freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Raymond Chandler
comments: 
thanks to Alex Goulis &lt;alex@xpandercommunications.com&gt;

<span style="color: #000080; font-weight: bold">diff --git a/intralanman/PHP/fs_curl/configuration/conference.conf.php b/intralanman/PHP/fs_curl/configuration/conference.conf.php</span>
<span style="color: #000080; font-weight: bold">index fd51a34..cc77fc5 100644</span>
<span style="color: #A00000">--- a/intralanman/PHP/fs_curl/configuration/conference.conf.php</span>
<span style="color: #00A000">+++ b/intralanman/PHP/fs_curl/configuration/conference.conf.php</span>
<span style="color: #800080; font-weight: bold">@@ -34,9 +34,13 @@ class conference_conf extends fs_configuration {</span>
      * @return void
     */
     public function main() {
<span style="color: #00A000">+                $this -&gt; xmlw -&gt; startElement(&#39;configuration&#39;);</span>
<span style="color: #00A000">+                $this -&gt; xmlw -&gt; writeAttribute(&#39;name&#39;, &#39;conference.conf&#39;);</span>
<span style="color: #00A000">+                $this -&gt; xmlw -&gt; writeAttribute(&#39;description&#39;, &#39;Audio Conference&#39;);</span>
         $this -&gt; write_advertises();
<span style="color: #A00000">-        $this -&gt; write_controls();</span>
<span style="color: #A00000">-        $this -&gt; write_profiles();</span>
<span style="color: #00A000">+                if($this -&gt; request[&#39;Controls&#39;]) {$this -&gt; write_controls();}</span>
<span style="color: #00A000">+        if($this -&gt; request[&#39;profile_name&#39;]) {$this -&gt; write_profiles();}</span>
<span style="color: #00A000">+                $this -&gt; xmlw -&gt; endElement();</span>
     }
 
     /**
<span style="color: #800080; font-weight: bold">@@ -76,10 +80,9 @@ class conference_conf extends fs_configuration {</span>
      * @return array
     */
     private function get_profiles_array() {
<span style="color: #A00000">-        $query = sprintf(&#39;%s %s;&#39;</span>
<span style="color: #A00000">-        , &quot;SELECT * FROM conference_profiles&quot;</span>
<span style="color: #A00000">-        , &quot;ORDER BY profile_name&quot;</span>
<span style="color: #A00000">-        );</span>
<span style="color: #00A000">+        </span>
<span style="color: #00A000">+        $prof = $this -&gt; request[&#39;profile_name&#39;];</span>
<span style="color: #00A000">+        $query = &quot;SELECT * FROM conference_profiles where profile_name=&#39;$prof&#39;&quot;;</span>
         $res = $this -&gt; db -&gt; query($query);
         if (FS_PDO::isError($res)) {
             $this -&gt; comment($query);
<span style="color: #800080; font-weight: bold">@@ -130,8 +133,9 @@ class conference_conf extends fs_configuration {</span>
      * @return array
     */
     private function get_controls_array() {
<span style="color: #A00000">-        $query = sprintf(</span>
<span style="color: #A00000">-        &quot;SELECT * FROM conference_controls ORDER BY conf_group&quot;</span>
<span style="color: #00A000">+        $cont = $this -&gt; request[&#39;Controls&#39;];</span>
<span style="color: #00A000">+                $query = sprintf(</span>
<span style="color: #00A000">+                  &quot;SELECT * FROM conference_controls where conf_group = &#39;$cont&#39;&quot;</span>
         );
         $res = $this -&gt; db -&gt; query($query);
         if (FS_PDO::isError($res)) {
<span style="color: #800080; font-weight: bold">@@ -174,6 +178,7 @@ class conference_conf extends fs_configuration {</span>
                 $this -&gt; xmlw -&gt; startElement(&#39;control&#39;);
                 $this -&gt; xmlw -&gt; writeAttribute(&#39;action&#39;, $controls[&#39;action&#39;]);
                 $this -&gt; xmlw -&gt; writeAttribute(&#39;digits&#39;, $controls[&#39;digits&#39;]);
<span style="color: #00A000">+                                if($controls[&#39;data&#39;]) {$this -&gt; xmlw -&gt; writeAttribute(&#39;data&#39;, $controls[&#39;data&#39;]);}</span>
                 $this -&gt; xmlw -&gt; endElement();
 
             }
</pre></div>
<div class="highlight"><pre>committer: Mitch
comments: 
Merge branch &#39;master&#39; of ssh://git.freeswitch.org/freeswitch-contrib
</pre></div>
<div class="highlight"><pre>committer: Mathieu Parent
comments: 
Initial implementation of cisco-xml libs and MediaBrotha
Subject to major changes and more possibly lack of time

<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/auth/index.php b/sathieu/cisco-xml/auth/index.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..0030ded</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/auth/index.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,3 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+echo &#39;AUTHORIZED&#39;;</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/browser/index.php b/sathieu/cisco-xml/browser/index.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..1f0ae25</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/browser/index.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,44 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of XML services for Cisco IP Phones.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        XML services for Cisco IP Phones is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        XML services for Cisco IP Phones is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with XML services for Cisco IP Phones. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+//* Debug</span>
<span style="color: #00A000">+ini_set(&#39;error_reporting&#39;, E_ALL | E_STRUCT);</span>
<span style="color: #00A000">+ini_set(&#39;display_errors&#39;, 1);</span>
<span style="color: #00A000">+// */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+ini_set(&#39;include_path&#39;, ini_get(&#39;include_path&#39;).PATH_SEPARATOR.&#39;../lib&#39;);</span>
<span style="color: #00A000">+require(&#39;Cisco-XML/Cisco-XML.php&#39;);</span>
<span style="color: #00A000">+require_once(&#39;MediaBrotha/Core.php&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+MediaBrotha_Core::init();</span>
<span style="color: #00A000">+MediaBrotha_Core::connectFrontend(&#39;CiscoXML&#39;, Array(&#39;push_url&#39; =&gt; &#39;http://cisco:cisco@192.168.0.220/CGI/Execute&#39;));</span>
<span style="color: #00A000">+MediaBrotha_Core::loadBackend(&#39;FileSystem&#39;, Array(&#39;base_path&#39; =&gt; &#39;/home/share/music/&#39;));</span>
<span style="color: #00A000">+MediaBrotha_Core::loadBackend(&#39;VLC&#39;, Array(&#39;http_intf&#39; =&gt; &#39;http://127.0.0.1:8080&#39;));</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+MediaBrotha_Core::go();</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..2253ca9</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,163 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of XML services for Cisco IP Phones.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        XML services for Cisco IP Phones is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        XML services for Cisco IP Phones is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with XML services for Cisco IP Phones. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class CiscoXMLField {</span>
<span style="color: #00A000">+        private $_allowed_fields = NULL;</span>
<span style="color: #00A000">+        private $_xml = NULL;</span>
<span style="color: #00A000">+        </span>
<span style="color: #00A000">+        public function __construct($tag_name, $value = NULL, $parent = NULL, $allowed_fields = Array()) {</span>
<span style="color: #00A000">+                $this-&gt;_allowed_fields = $allowed_fields;</span>
<span style="color: #00A000">+                if (is_a($parent, &#39;DOMDocument&#39;)) {</span>
<span style="color: #00A000">+                        $doc = $parent;</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        $doc = $parent-&gt;ownerDocument;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                $this-&gt;_xml = $doc-&gt;createElement($tag_name);</span>
<span style="color: #00A000">+                if (is_array($value)) {</span>
<span style="color: #00A000">+                        $this-&gt;setCiscoElements($value);</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        $this-&gt;_xml-&gt;nodeValue = htmlspecialchars($value);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                $parent-&gt;appendChild($this-&gt;_xml);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function setCiscoElements($args) {</span>
<span style="color: #00A000">+                foreach ($args as $k =&gt; $v) {</span>
<span style="color: #00A000">+                        $this-&gt;setCiscoElement($k, $v);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function setCiscoElement($name, $value) {</span>
<span style="color: #00A000">+                $short_name = preg_replace(&#39;/(:[^:]+)$/&#39;,&#39;&#39;, $name);</span>
<span style="color: #00A000">+                if (!array_key_exists($short_name, $this-&gt;_allowed_fields))</span>
<span style="color: #00A000">+                        return;</span>
<span style="color: #00A000">+                return new CiscoXMLField($short_name, $value, $this-&gt;_xml, $this-&gt;_allowed_fields[$short_name]);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class CiscoXMLObject {</span>
<span style="color: #00A000">+        protected $_allowed_fields = NULL;</span>
<span style="color: #00A000">+        private $_xml = NULL;</span>
<span style="color: #00A000">+        private $_root = NULL;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        /*</span>
<span style="color: #00A000">+         * Constructor</span>
<span style="color: #00A000">+         */</span>
<span style="color: #00A000">+        public function __construct($args = Array()) {</span>
<span style="color: #00A000">+                if (!$this-&gt;_allowed_fields) {</span>
<span style="color: #00A000">+                        die(&quot;Error: Unknow CiscoXMLObject &#39;&quot;.get_class($this).&quot;&#39;&quot;);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                $this-&gt;addAllowedFields();</span>
<span style="color: #00A000">+                $this-&gt;_xml = new DOMDocument(&#39;1.0&#39;, &#39;utf-8&#39;);</span>
<span style="color: #00A000">+                $this-&gt;_root = new CiscoXMLField(get_class($this), NULL, $this-&gt;_xml, $this-&gt;_allowed_fields);</span>
<span style="color: #00A000">+                $this-&gt;_root-&gt;setCiscoElements($args);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        protected function addAllowedFields() {</span>
<span style="color: #00A000">+                switch(get_class($this)) {</span>
<span style="color: #00A000">+                        case &#39;CiscoIPPhoneStatus&#39;:</span>
<span style="color: #00A000">+                        case &#39;CiscoIPPhoneExecute&#39;:</span>
<span style="color: #00A000">+                                break;</span>
<span style="color: #00A000">+                        default:</span>
<span style="color: #00A000">+                                $this-&gt;_allowed_fields[&#39;SoftKeyItem&#39;] = Array(</span>
<span style="color: #00A000">+                                        &#39;Name&#39; =&gt; true,</span>
<span style="color: #00A000">+                                        &#39;URL&#39; =&gt; true,</span>
<span style="color: #00A000">+                                        &#39;URLDown&#39; =&gt; true,</span>
<span style="color: #00A000">+                                        &#39;Position&#39; =&gt; true,</span>
<span style="color: #00A000">+                                        );</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        /*</span>
<span style="color: #00A000">+         * Private methods</span>
<span style="color: #00A000">+         */</span>
<span style="color: #00A000">+        /*</span>
<span style="color: #00A000">+         * Public methods</span>
<span style="color: #00A000">+         */</span>
<span style="color: #00A000">+        public function __toString() {</span>
<span style="color: #00A000">+                return $this-&gt;_xml-&gt;saveXML();</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function setCiscoElement($name, $value) {</span>
<span style="color: #00A000">+                return $this-&gt;_root-&gt;setCiscoElement($name, $value);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function setCiscoElements($args) {</span>
<span style="color: #00A000">+                $this-&gt;_root-&gt;setCiscoElements($args);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        static public function HttpHeader() {</span>
<span style="color: #00A000">+                Header(&#39;Content-Type: text/xml&#39;);</span>
<span style="color: #00A000">+                header(&quot;Connection: close&quot;);</span>
<span style="color: #00A000">+                header(&quot;Expires: -1&quot;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function execute($url) {</span>
<span style="color: #00A000">+                $opts = array(&#39;http&#39; =&gt;</span>
<span style="color: #00A000">+                        array(</span>
<span style="color: #00A000">+                                &#39;method&#39;  =&gt; &#39;POST&#39;,</span>
<span style="color: #00A000">+                                &#39;header&#39;  =&gt; &#39;Content-type: application/x-www-form-urlencoded&#39;,</span>
<span style="color: #00A000">+                                &#39;content&#39; =&gt; &quot;XML=&quot;.urlencode($this)</span>
<span style="color: #00A000">+                                )</span>
<span style="color: #00A000">+                        );</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                $context  = stream_context_create($opts);</span>
<span style="color: #00A000">+                return file_get_contents($url, false, $context);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class CiscoIPPhoneMenu extends CiscoXMLObject {</span>
<span style="color: #00A000">+        protected $_allowed_fields = Array(</span>
<span style="color: #00A000">+                &#39;Title&#39; =&gt; true,</span>
<span style="color: #00A000">+                &#39;Prompt&#39; =&gt; true,</span>
<span style="color: #00A000">+                &#39;MenuItem&#39; =&gt; Array(</span>
<span style="color: #00A000">+                        &#39;Name&#39; =&gt; true,</span>
<span style="color: #00A000">+                        &#39;URL&#39; =&gt; true),</span>
<span style="color: #00A000">+                );</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class CiscoIPPhoneText extends CiscoXMLObject {</span>
<span style="color: #00A000">+        protected $_allowed_fields = Array(</span>
<span style="color: #00A000">+                &#39;Title&#39; =&gt; true,</span>
<span style="color: #00A000">+                &#39;Prompt&#39; =&gt; true,</span>
<span style="color: #00A000">+                &#39;Text&#39; =&gt; true,</span>
<span style="color: #00A000">+                );</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class CiscoIPPhoneInput extends CiscoXMLObject {</span>
<span style="color: #00A000">+        protected $_allowed_fields = Array(</span>
<span style="color: #00A000">+                &#39;Title&#39; =&gt; true,</span>
<span style="color: #00A000">+                &#39;Prompt&#39; =&gt; true,</span>
<span style="color: #00A000">+                &#39;URL&#39; =&gt; true,</span>
<span style="color: #00A000">+                &#39;InputItem&#39; =&gt; Array(</span>
<span style="color: #00A000">+                        &#39;DisplayName&#39; =&gt; true,</span>
<span style="color: #00A000">+                        &#39;QueryStringParam&#39; =&gt; true,</span>
<span style="color: #00A000">+                        &#39;DefaultValue&#39; =&gt; true,</span>
<span style="color: #00A000">+                        &#39;InputFlags&#39; =&gt; true),</span>
<span style="color: #00A000">+                );</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..f85001b</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,104 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of MediaBrotha.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with MediaBrotha. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+require_once(&#39;MediaBrotha/Media.php&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_Backend extends MediaBrotha_Media implements Iterator {</span>
<span style="color: #00A000">+        protected $_buffer = Array();</span>
<span style="color: #00A000">+        public function __construct($args = Array()) {</span>
<span style="color: #00A000">+                parent::__construct($args);</span>
<span style="color: #00A000">+                $this-&gt;register();</span>
<span style="color: #00A000">+                $this-&gt;setMimeType(&#39;application/x-mediabrotha-backend-&#39;.strtolower($this-&gt;getName()));</span>
<span style="color: #00A000">+                MediaBrotha_Core::registerMimeType($this, &#39;application/x-mediabrotha-backend-&#39;.strtolower($this-&gt;getName()));</span>
<span style="color: #00A000">+                $this-&gt;setMetadata(&#39;name&#39;, $this-&gt;getName());</span>
<span style="color: #00A000">+                $this-&gt;setMetadata(&#39;uri&#39;, &#39;MediaBrotha_Backend://&#39;.$this-&gt;getName());</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function register() {</span>
<span style="color: #00A000">+                MediaBrotha_Core::registerBackend($this);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function getName() {</span>
<span style="color: #00A000">+                return preg_replace(&#39;/^MediaBrotha_Backend_(.*)$/&#39;, &#39;$1&#39;, get_class($this));</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                return Array();</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function isHidden() {</span>
<span style="color: #00A000">+                return parent::isHidden() || !in_array(&#39;browse&#39;, $this-&gt;capabilities());</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        // Capability browse</span>
<span style="color: #00A000">+        public function fetch($uri) {</span>
<span style="color: #00A000">+                return false;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function rewind() {</span>
<span style="color: #00A000">+                reset($this-&gt;_buffer);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function current() {</span>
<span style="color: #00A000">+                return current($this-&gt;_buffer);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function key() {</span>
<span style="color: #00A000">+                return key($this-&gt;_buffer);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function next() {</span>
<span style="color: #00A000">+                return next($this-&gt;_buffer);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function valid() {</span>
<span style="color: #00A000">+                $key = key($this-&gt;_buffer);</span>
<span style="color: #00A000">+                $var = ($key !== NULL &amp;&amp; $key !== FALSE);</span>
<span style="color: #00A000">+                return $var;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        // Capability play</span>
<span style="color: #00A000">+        public function play($media) {</span>
<span style="color: #00A000">+                return false;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function pause() {</span>
<span style="color: #00A000">+                return false;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function stop() {</span>
<span style="color: #00A000">+                return false;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        // Capability playlist</span>
<span style="color: #00A000">+        public function playlistEnqueue($media) {</span>
<span style="color: #00A000">+                return false;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function playlistNext($media) {</span>
<span style="color: #00A000">+                return false;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function playlistPrevious($media) {</span>
<span style="color: #00A000">+                return false;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..62fcb6f</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,87 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of MediaBrotha.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with MediaBrotha. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_Backend_FileSystem extends MediaBrotha_Backend {</span>
<span style="color: #00A000">+        public function register() {</span>
<span style="color: #00A000">+                parent::register();</span>
<span style="color: #00A000">+                MediaBrotha_Core::registerMimeType($this, &#39;application/x-directory&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function isURISafe($uri) {</span>
<span style="color: #00A000">+                $real_path = realpath(parse_url($uri, PHP_URL_PATH));</span>
<span style="color: #00A000">+                $real_base_path = realpath($this-&gt;getMetadata(&#39;base_path&#39;));</span>
<span style="color: #00A000">+                do {</span>
<span style="color: #00A000">+                        if ($real_path === $real_base_path) {</span>
<span style="color: #00A000">+                                return true;</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                } while(($real_path != dirname($real_path)) &amp;&amp; $real_path = dirname($real_path));</span>
<span style="color: #00A000">+                return false;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function fetch($uri) {</span>
<span style="color: #00A000">+                if ((parse_url($uri, PHP_URL_SCHEME) != &#39;file&#39;) || !$this-&gt;isURISafe($uri)) {</span>
<span style="color: #00A000">+                        $uri = &#39;file://&#39;.$this-&gt;getMetadata(&#39;base_path&#39;);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                $this-&gt;_buffer = new DirectoryIterator(parse_url($uri, PHP_URL_PATH));</span>
<span style="color: #00A000">+                return true;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                return Array(</span>
<span style="color: #00A000">+                        &#39;browse&#39;,</span>
<span style="color: #00A000">+                );</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        // Iterator</span>
<span style="color: #00A000">+        public function mediaFromFile($file) {</span>
<span style="color: #00A000">+                if ($file) {</span>
<span style="color: #00A000">+                        $media = new MediaBrotha_Media(Array(</span>
<span style="color: #00A000">+                                &#39;uri&#39; =&gt; &#39;file://&#39;.realpath($file-&gt;getPathname()),</span>
<span style="color: #00A000">+                                &#39;name&#39; =&gt; $file-&gt;getFilename(),</span>
<span style="color: #00A000">+                                &#39;hidden&#39; =&gt; !$file-&gt;isReadable() || preg_match(&#39;/^\.([^.]|$)/&#39;, $file-&gt;getFilename()),</span>
<span style="color: #00A000">+                        ));</span>
<span style="color: #00A000">+                        if ($file-&gt;isDir()) {</span>
<span style="color: #00A000">+                                $media-&gt;setMimeType(&#39;application/x-directory&#39;);</span>
<span style="color: #00A000">+                        } else {</span>
<span style="color: #00A000">+                                $finfo = new finfo(FILEINFO_MIME_TYPE);</span>
<span style="color: #00A000">+                                $media-&gt;setMimeType($finfo-&gt;file($file-&gt;getPathname()));</span>
<span style="color: #00A000">+                                $media-&gt;setMimeEncoding($finfo-&gt;file($file-&gt;getPathname(), FILEINFO_MIME_ENCODING));</span>
<span style="color: #00A000">+                        }</span>
<span style="color: #00A000">+                        return $media;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function current() {</span>
<span style="color: #00A000">+                return $this-&gt;mediaFromFile($this-&gt;_buffer-&gt;current());</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function next() {</span>
<span style="color: #00A000">+                return $this-&gt;mediaFromFile($this-&gt;_buffer-&gt;next());</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function valid() {</span>
<span style="color: #00A000">+                return $this-&gt;_buffer-&gt;valid();</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..5e9c5fb</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,45 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of MediaBrotha.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with MediaBrotha. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_Backend_Root extends MediaBrotha_Backend {</span>
<span style="color: #00A000">+        public function fetch($uri) {</span>
<span style="color: #00A000">+                $this-&gt;_buffer = Array();</span>
<span style="color: #00A000">+                foreach(MediaBrotha_Core::getBackends() as $id =&gt; $backend) {</span>
<span style="color: #00A000">+                        $this-&gt;_buffer[] = $backend;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                return true;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                return Array(</span>
<span style="color: #00A000">+                        &#39;browse&#39;,</span>
<span style="color: #00A000">+                );</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function isHidden() {</span>
<span style="color: #00A000">+                return true;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..03f5360</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,75 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of MediaBrotha.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with MediaBrotha. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_Backend_VLC extends MediaBrotha_Backend {</span>
<span style="color: #00A000">+        public function register() {</span>
<span style="color: #00A000">+                parent::register();</span>
<span style="color: #00A000">+                MediaBrotha_Core::registerMimeType($this, &#39;audio/mpeg&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public function fetch($uri) {</span>
<span style="color: #00A000">+                $this-&gt;_buffer[] = new MediaBrotha_Media();</span>
<span style="color: #00A000">+                return true;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function capabilities($uri = NULL, $mime_type = NULL, $mime_encoding = NULL) {</span>
<span style="color: #00A000">+                return Array(</span>
<span style="color: #00A000">+                        &#39;play&#39;,</span>
<span style="color: #00A000">+                        &#39;playlist&#39;,</span>
<span style="color: #00A000">+                );</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        private function send_command($command, $args = Array()) {</span>
<span style="color: #00A000">+                $url = $this-&gt;getMetadata(&#39;http_intf&#39;).</span>
<span style="color: #00A000">+                        &#39;/requests/status.xml&#39;.</span>
<span style="color: #00A000">+                        &#39;?command=&#39;.$command;</span>
<span style="color: #00A000">+                foreach ($args as $k =&gt; $v) {</span>
<span style="color: #00A000">+                        $url.= &#39;&amp;&#39;.$k.&#39;=&#39;.rawurlencode($v);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                return fopen($url, &#39;r&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        // Capability play</span>
<span style="color: #00A000">+        public function play($media) {</span>
<span style="color: #00A000">+                return $this-&gt;send_command(&#39;in_play&#39;, Array(&#39;input&#39; =&gt; $media-&gt;getURI()));</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function pause() {</span>
<span style="color: #00A000">+                return $this-&gt;send_command(&#39;pl_pause&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function stop() {</span>
<span style="color: #00A000">+                return $this-&gt;send_command(&#39;pl_stop&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        // Capability playlist</span>
<span style="color: #00A000">+        public function playlistEnqueue($media) {</span>
<span style="color: #00A000">+                return $this-&gt;send_command(&#39;in_enqueue&#39;, Array(&#39;input&#39; =&gt; $media-&gt;getURI()));</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function playlistNext($media) {</span>
<span style="color: #00A000">+                return $this-&gt;send_command(&#39;pl_next&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function playlistPrevious($media) {</span>
<span style="color: #00A000">+                return $this-&gt;send_command(&#39;pl_previous&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Core.php b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..e31ee47</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Core.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,140 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of MediaBrotha.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with MediaBrotha. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+require_once(&#39;MediaBrotha/Backend.php&#39;);</span>
<span style="color: #00A000">+require_once(&#39;MediaBrotha/Frontend.php&#39;);</span>
<span style="color: #00A000">+require_once(&#39;MediaBrotha/Media.php&#39;);</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_Core {</span>
<span style="color: #00A000">+        private static $_frontend = NULL;</span>
<span style="color: #00A000">+        private static $_backends = Array();</span>
<span style="color: #00A000">+        private static $_mime_types = Array();</span>
<span style="color: #00A000">+        private static $_media = NULL;</span>
<span style="color: #00A000">+        </span>
<span style="color: #00A000">+        public static function init() {</span>
<span style="color: #00A000">+                MediaBrotha_Core::loadBackend(&#39;Root&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public static function go() {</span>
<span style="color: #00A000">+                $current_backend = MediaBrotha_Core::getCurrentBackend();</span>
<span style="color: #00A000">+                switch(MediaBrotha_Core::getAction()) {</span>
<span style="color: #00A000">+                        case &#39;play&#39;:</span>
<span style="color: #00A000">+                                $current_backend-&gt;play(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #00A000">+                                break;</span>
<span style="color: #00A000">+                        case &#39;pause&#39;:</span>
<span style="color: #00A000">+                                $current_backend-&gt;pause(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #00A000">+                                break;</span>
<span style="color: #00A000">+                        case &#39;stop&#39;:</span>
<span style="color: #00A000">+                                $current_backend-&gt;stop(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #00A000">+                                break;</span>
<span style="color: #00A000">+                        case &#39;pl_enqueue&#39;:</span>
<span style="color: #00A000">+                                $current_backend-&gt;playlistEnqueue(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #00A000">+                                break;</span>
<span style="color: #00A000">+                        case &#39;pl_next&#39;:</span>
<span style="color: #00A000">+                                $current_backend-&gt;playlistNext(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #00A000">+                                break;</span>
<span style="color: #00A000">+                        case &#39;pl_previous&#39;:</span>
<span style="color: #00A000">+                                $current_backend-&gt;playlistPrevious(MediaBrotha_Core::getCurrentMedia());</span>
<span style="color: #00A000">+                                break;</span>
<span style="color: #00A000">+                        case &#39;browse&#39;:</span>
<span style="color: #00A000">+                        default:</span>
<span style="color: #00A000">+                                $current_backend-&gt;fetch(MediaBrotha_Core::getCurrentURI());</span>
<span style="color: #00A000">+                                MediaBrotha_Core::$_frontend-&gt;begin($current_backend);</span>
<span style="color: #00A000">+                                foreach($current_backend as $item) {</span>
<span style="color: #00A000">+                                        if ($item-&gt;isHidden()) {</span>
<span style="color: #00A000">+                                                continue;</span>
<span style="color: #00A000">+                                        }</span>
<span style="color: #00A000">+                                        MediaBrotha_Core::$_frontend-&gt;addItem($item);</span>
<span style="color: #00A000">+                                }</span>
<span style="color: #00A000">+                                MediaBrotha_Core::$_frontend-&gt;finish($current_backend);</span>
<span style="color: #00A000">+                                MediaBrotha_Core::$_frontend-&gt;render();</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        /*</span>
<span style="color: #00A000">+         * Backends</span>
<span style="color: #00A000">+         */</span>
<span style="color: #00A000">+        public static function loadBackend($provider_name, $args = Array()) {</span>
<span style="color: #00A000">+                $class_name = &quot;MediaBrotha_Backend_${provider_name}&quot;;</span>
<span style="color: #00A000">+                if (!class_exists($class_name)) {</span>
<span style="color: #00A000">+                        require_once(&quot;MediaBrotha/Backend/${provider_name}.php&quot;);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                return new $class_name($args);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public static function registerBackend($backend) {</span>
<span style="color: #00A000">+                MediaBrotha_Core::$_backends[] = $backend;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public static function registerMimeType($backend, $mime_type) {</span>
<span style="color: #00A000">+                MediaBrotha_Core::$_mime_types[$mime_type][] = $backend;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public static function getBackends() {</span>
<span style="color: #00A000">+                return MediaBrotha_Core::$_backends;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public static function getCurrentBackend() {</span>
<span style="color: #00A000">+                if (!empty($_GET[&#39;mime_type&#39;]) &amp;&amp; !empty(MediaBrotha_Core::$_mime_types[$_GET[&#39;mime_type&#39;]])) {</span>
<span style="color: #00A000">+                        return MediaBrotha_Core::$_mime_types[$_GET[&#39;mime_type&#39;]][0];</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        return MediaBrotha_Core::$_backends[0];</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        /*</span>
<span style="color: #00A000">+         * Frontend</span>
<span style="color: #00A000">+         */</span>
<span style="color: #00A000">+        public static function connectFrontend($provider_name, $args = Array()) {</span>
<span style="color: #00A000">+                if (!$provider_name) {</span>
<span style="color: #00A000">+                        return;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                $args[&#39;provider&#39;] = $provider_name;</span>
<span style="color: #00A000">+                $class_name = &quot;MediaBrotha_Frontend_$provider_name&quot;;</span>
<span style="color: #00A000">+                if (!class_exists($class_name)) {</span>
<span style="color: #00A000">+                        require_once(&quot;MediaBrotha/Frontend/${provider_name}.php&quot;);</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                MediaBrotha_Core::$_frontend = new $class_name($args);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        /*</span>
<span style="color: #00A000">+         * ...</span>
<span style="color: #00A000">+         */</span>
<span style="color: #00A000">+        public static function getAction() {</span>
<span style="color: #00A000">+                if (!empty($_GET[&#39;action&#39;])) {</span>
<span style="color: #00A000">+                        return $_GET[&#39;action&#39;];</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        return &#39;browse&#39;;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        public static function getCurrentURI() {</span>
<span style="color: #00A000">+                if (!empty($_GET[&#39;uri&#39;])) {</span>
<span style="color: #00A000">+                        return $_GET[&#39;uri&#39;];</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public static function getCurrentMedia() {</span>
<span style="color: #00A000">+                if (empty(MediaBrotha_Core::$_media)) {</span>
<span style="color: #00A000">+                        MediaBrotha_Core::$_media = new MediaBrotha_Media();</span>
<span style="color: #00A000">+                        MediaBrotha_Core::$_media-&gt;setURI(MediaBrotha_Core::getCurrentURI());</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+                return MediaBrotha_Core::$_media;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..9eab63c</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,36 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of MediaBrotha.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with MediaBrotha. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_Frontend {</span>
<span style="color: #00A000">+        protected $_browser = NULL;</span>
<span style="color: #00A000">+        protected $_infos = NULL;</span>
<span style="color: #00A000">+        public function __construct($browser, $args = Array()) {</span>
<span style="color: #00A000">+                $this-&gt;_browser = $browser;</span>
<span style="color: #00A000">+                $this-&gt;_infos = $args;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..a0a9078</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,67 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of MediaBrotha.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with MediaBrotha. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_Frontend_CiscoXML extends MediaBrotha_Frontend {</span>
<span style="color: #00A000">+        private $_xml = NULL;</span>
<span style="color: #00A000">+        public function begin($item) {</span>
<span style="color: #00A000">+                $this-&gt;_xml = new CiscoIPPhoneMenu();</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;Title&#39;, $item-&gt;getDisplayName());</span>
<span style="color: #00A000">+                //$this-&gt;_xml-&gt;setCiscoElement(&#39;Prompt&#39;, &#39;kk&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function addItem($item) {</span>
<span style="color: #00A000">+                $url = &#39;http://&#39;.$_SERVER[&#39;SERVER_NAME&#39;].$_SERVER[&#39;SCRIPT_NAME&#39;].&#39;?&#39;.</span>
<span style="color: #00A000">+                        &#39;mime_type=&#39;.urlencode($item-&gt;getMimeType()).&#39;&amp;&#39;.</span>
<span style="color: #00A000">+                        ($item-&gt;getMimeEncoding() ? (&#39;mime_encoding=&#39;.urlencode($item-&gt;getMimeEncoding()).&#39;&amp;&#39;) : &#39;&#39;).</span>
<span style="color: #00A000">+                        &#39;uri=&#39;.urlencode($item-&gt;getURI());</span>
<span style="color: #00A000">+                //$url = &#39;http://&#39;.$_SERVER[&#39;SERVER_NAME&#39;].$_SERVER[&#39;SCRIPT_NAME&#39;];</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;MenuItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; $item-&gt;getDisplayName(), &#39;URL&#39; =&gt; $url));</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function finish() {</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Select&#39;, &#39;URL&#39; =&gt; &#39;SoftKey:Select&#39;, &#39;Position&#39; =&gt; &#39;1&#39;));</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Play&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=play&#39;, &#39;Position&#39; =&gt; &#39;2&#39;));</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Pause&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pause&#39;, &#39;Position&#39; =&gt; &#39;3&#39;));</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Stop&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=stop&#39;, &#39;Position&#39; =&gt; &#39;4&#39;));</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Enqueue&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pl_enqueue&#39;, &#39;Position&#39; =&gt; &#39;5&#39;));</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Enqueue&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pl_next&#39;, &#39;Position&#39; =&gt; &#39;6&#39;));</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Enqueue&#39;, &#39;URL&#39; =&gt; &#39;QueryStringParam:action=pl_previous&#39;, &#39;Position&#39; =&gt; &#39;7&#39;));</span>
<span style="color: #00A000">+                $this-&gt;_xml-&gt;setCiscoElement(&#39;SoftKeyItem&#39;,</span>
<span style="color: #00A000">+                        Array(&#39;Name&#39; =&gt; &#39;Quit&#39;, &#39;URL&#39; =&gt; &#39;SoftKey:Exit&#39;, &#39;Position&#39; =&gt; &#39;8&#39;));</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function render() {</span>
<span style="color: #00A000">+                CiscoXMLObject::HttpHeader();</span>
<span style="color: #00A000">+                print $this-&gt;_xml;</span>
<span style="color: #00A000">+                //$this-&gt;_xml-&gt;execute($this-&gt;_infos[&#39;push_url&#39;]);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #000080; font-weight: bold">diff --git a/sathieu/cisco-xml/lib/MediaBrotha/Media.php b/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
new file mode 100644
<span style="color: #000080; font-weight: bold">index 0000000..0b50a52</span>
<span style="color: #A00000">--- /dev/null</span>
<span style="color: #00A000">+++ b/sathieu/cisco-xml/lib/MediaBrotha/Media.php</span>
<span style="color: #800080; font-weight: bold">@@ -0,0 +1,92 @@</span>
<span style="color: #00A000">+&lt;?php</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+Copyright 2011 Mathieu Parent &lt;math.parent@gmail.com&gt; </span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+This file is part of MediaBrotha.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is free software: you can</span>
<span style="color: #00A000">+        redistribute it and/or modify it under the terms of the GNU General</span>
<span style="color: #00A000">+        Public License as published by the Free Software Foundation, either</span>
<span style="color: #00A000">+        version 3 of the License, or (at your option) any later version.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        MediaBrotha is distributed in the hope that it</span>
<span style="color: #00A000">+        will be useful, but WITHOUT ANY WARRANTY; without even the implied</span>
<span style="color: #00A000">+        warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See</span>
<span style="color: #00A000">+        the GNU General Public License for more details.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+        You should have received a copy of the GNU General Public License</span>
<span style="color: #00A000">+        along with MediaBrotha. If not, see</span>
<span style="color: #00A000">+        &lt;http://www.gnu.org/licenses/&gt;.</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+*/</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/**</span>
<span style="color: #00A000">+ * @author Mathieu Parent</span>
<span style="color: #00A000">+ */</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+class MediaBrotha_Media {</span>
<span style="color: #00A000">+        private $_metadata = Array();</span>
<span style="color: #00A000">+        private $_mimeType = NULL;</span>
<span style="color: #00A000">+        private $_mimeEncoding = NULL;</span>
<span style="color: #00A000">+        public function __construct($metadata = Array()) {</span>
<span style="color: #00A000">+                 $this-&gt;_metadata = $metadata;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function setMimeType($mime_type) {</span>
<span style="color: #00A000">+                $this-&gt;_mimeType = $mime_type;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function getMimeType() {</span>
<span style="color: #00A000">+                // TODO</span>
<span style="color: #00A000">+                return $this-&gt;_mimeType;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function setMimeEncoding($mime_encoding) {</span>
<span style="color: #00A000">+                $this-&gt;_mimeEncoding = $mime_encoding;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function getMimeEncoding() {</span>
<span style="color: #00A000">+                // TODO</span>
<span style="color: #00A000">+                return $this-&gt;_mimeEncoding;</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function getMetadata($name = NULL) {</span>
<span style="color: #00A000">+                if ($name === NULL) {</span>
<span style="color: #00A000">+                        return $this-&gt;_metadata;</span>
<span style="color: #00A000">+                } elseif (isset($this-&gt;_metadata[$name])) {</span>
<span style="color: #00A000">+                        return $this-&gt;_metadata[$name];</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        return NULL;</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function setMetadata($name, $value) {</span>
<span style="color: #00A000">+                if (is_array($name)) {</span>
<span style="color: #00A000">+                        $this-&gt;_metadata = $name;</span>
<span style="color: #00A000">+                } else {</span>
<span style="color: #00A000">+                        $this-&gt;_metadata[$name] = $value;</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+                }</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        /* Most used metadata */</span>
<span style="color: #00A000">+        public function getDisplayName() {</span>
<span style="color: #00A000">+                return $this-&gt;getMetadata(&#39;name&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function getURI() {</span>
<span style="color: #00A000">+                return $this-&gt;getMetadata(&#39;uri&#39;);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function setURI($value) {</span>
<span style="color: #00A000">+                return $this-&gt;setMetadata(&#39;uri&#39;, $value);</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function getURIComponent($component) {</span>
<span style="color: #00A000">+                return parse_url($this-&gt;getURI($component));</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+        public function isHidden() {</span>
<span style="color: #00A000">+                return isset($this-&gt;_metadata[&#39;hidden&#39;]) &amp;&amp; $this-&gt;_metadata[&#39;hidden&#39;];</span>
<span style="color: #00A000">+        }</span>
<span style="color: #00A000">+}</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+/*</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+Mandatory metadata:</span>
<span style="color: #00A000">+uri</span>
<span style="color: #00A000">+name</span>
<span style="color: #00A000">+</span>
<span style="color: #00A000">+Usual metadata:</span>
<span style="color: #00A000">+artist</span>
<span style="color: #00A000">+album</span>
<span style="color: #00A000">+*/</span>
</pre></div>
========================================================================<pre>

Summary of changes:
 intralanman/PHP/fs_curl/README                     |    4 +-
 .../PHP/fs_curl/configuration/conference.conf.php  |   23 +-
 mcollins/wakeup_call/01_Wakeup_Call.xml            |   50 ++
 mcollins/wakeup_call/README                        |   12 +
 mcollins/wakeup_call/date.doc.chm                  |  Bin 0 -> 46674 bytes
 mcollins/wakeup_call/date.doc.htm                  |  525 ++++++++++++++
 mcollins/wakeup_call/date.lua                      |  745 ++++++++++++++++++++
 mcollins/wakeup_call/mkcalendar.lua                |   64 ++
 mcollins/wakeup_call/mkisocal.lua                  |   41 ++
 mcollins/wakeup_call/wakeup-call.lua               |  123 ++++
 mitchcapper/FSClient/Account.cs                    |  349 +++++++++
 mitchcapper/FSClient/App.xaml                      |  396 +++++++++++
 mitchcapper/FSClient/App.xaml.cs                   |   18 +
 mitchcapper/FSClient/Broker.cs                     |  689 ++++++++++++++++++
 mitchcapper/FSClient/Call.cs                       |  585 +++++++++++++++
 .../FSClient/Controls/OurAutoCompleteBox.cs        |   32 +
 mitchcapper/FSClient/Controls/PhonePadButton.xaml  |   27 +
 .../FSClient/Controls/PhonePadButton.xaml.cs       |   49 ++
 mitchcapper/FSClient/Converters.cs                 |  124 ++++
 mitchcapper/FSClient/DelayedFunction.cs            |   58 ++
 mitchcapper/FSClient/EventSocket.cs                |   60 ++
 .../FSClient/External Items/JabraTelephonyAPI.dll  |  Bin 0 -> 18944 bytes
 .../External Items/Plantronics.Device.Common.dll   |  Bin 0 -> 154056 bytes
 .../FSClient/External Items/conf/freeswitch.xml    |  123 ++++
 mitchcapper/FSClient/External Items/link.pl        |   52 ++
 .../FSClient/External Items/portaudio_notes.txt    |   25 +
 mitchcapper/FSClient/FSClient.csproj               |  278 ++++++++
 mitchcapper/FSClient/FSClient.sln                  |  107 +++
 mitchcapper/FSClient/FSEvent.cs                    |   23 +
 mitchcapper/FSClient/Field.cs                      |  115 +++
 mitchcapper/FSClient/GenericEditor.xaml            |   17 +
 mitchcapper/FSClient/GenericEditor.xaml.cs         |  184 +++++
 mitchcapper/FSClient/IContactPlugin.cs             |  198 ++++++
 mitchcapper/FSClient/IHeadsetPlugin.cs             |  419 +++++++++++
 mitchcapper/FSClient/IPlugin.cs                    |   16 +
 mitchcapper/FSClient/IncomingCallNotification.xaml |   33 +
 .../FSClient/IncomingCallNotification.xaml.cs      |   83 +++
 mitchcapper/FSClient/InputBox.xaml                 |   24 +
 mitchcapper/FSClient/InputBox.xaml.cs              |   44 ++
 .../FSClient/JabraHeadset/JabraHeadset.csproj      |   70 ++
 mitchcapper/FSClient/JabraHeadset/JabraProvider.cs |  202 ++++++
 .../JabraHeadset/Properties/AssemblyInfo.cs        |   36 +
 mitchcapper/FSClient/MainWindow.xaml               |  198 ++++++
 mitchcapper/FSClient/MainWindow.xaml.cs            |  465 ++++++++++++
 mitchcapper/FSClient/ObservableClass.cs            |   24 +
 mitchcapper/FSClient/Options.xaml                  |   62 ++
 mitchcapper/FSClient/Options.xaml.cs               |   94 +++
 .../PlantronicsHeadset/PlantronicsHeadset.csproj   |   72 ++
 .../PlantronicsHeadset/PlantronicsProvider.cs      |  139 ++++
 .../PlantronicsHeadset/Properties/AssemblyInfo.cs  |   36 +
 mitchcapper/FSClient/PluginManagerBase.cs          |  147 ++++
 mitchcapper/FSClient/PluginOptionsWindow.xaml      |   42 ++
 mitchcapper/FSClient/PluginOptionsWindow.xaml.cs   |  120 ++++
 mitchcapper/FSClient/PortAudio.cs                  |  149 ++++
 mitchcapper/FSClient/Properties/AssemblyInfo.cs    |   55 ++
 .../FSClient/Properties/Resources.Designer.cs      |   84 +++
 mitchcapper/FSClient/Properties/Resources.resx     |  130 ++++
 .../FSClient/Properties/Settings.Designer.cs       |  211 ++++++
 mitchcapper/FSClient/Properties/Settings.settings  |   54 ++
 mitchcapper/FSClient/README.txt                    |    1 +
 mitchcapper/FSClient/Setup/Banner.bmp              |  Bin 0 -> 2380 bytes
 mitchcapper/FSClient/Setup/Dialog.bmp              |  Bin 0 -> 8896 bytes
 mitchcapper/FSClient/Setup/FSClient.wxs            |   17 +
 mitchcapper/FSClient/Setup/FSCore.wxs              |  145 ++++
 mitchcapper/FSClient/Setup/Product.wxs             |  112 +++
 mitchcapper/FSClient/Setup/Setup.wixproj           |  106 +++
 mitchcapper/FSClient/SimpleContactPluginBase.cs    |  217 ++++++
 .../Properties/AssemblyInfo.cs                     |   36 +
 .../SimpleXmlContactPlugin.cs                      |   98 +++
 .../SimpleXmlContactPlugin.csproj                  |   65 ++
 mitchcapper/FSClient/Sofia.cs                      |  146 ++++
 mitchcapper/FSClient/Utils.cs                      |  126 ++++
 mitchcapper/FSClient/Windows.cs                    |   38 +
 mitchcapper/FSClient/XmlUtils.cs                   |   44 ++
 mitchcapper/FSClient/app.config                    |   45 ++
 mitchcapper/FSClient/phone.ico                     |  Bin 0 -> 4286 bytes
 mitchcapper/FSClient/phone_dnd.ico                 |  Bin 0 -> 4286 bytes
 mitchcapper/FSClient/warning.png                   |  Bin 0 -> 4568 bytes
 mitchcapper/SampleClient/App.xaml                  |    8 +
 mitchcapper/SampleClient/App.xaml.cs               |   14 +
 .../SampleClient/FSSampleEmbeddedClient.zip        |  Bin 0 -> 11257 bytes
 mitchcapper/SampleClient/MainWindow.xaml           |   15 +
 mitchcapper/SampleClient/MainWindow.xaml.cs        |  115 +++
 .../SampleClient/Properties/AssemblyInfo.cs        |   55 ++
 .../SampleClient/Properties/Resources.Designer.cs  |   62 ++
 .../SampleClient}/Properties/Resources.resx        |    0
 .../SampleClient/Properties/Settings.Designer.cs   |   26 +
 .../SampleClient/Properties/Settings.settings      |    7 +
 mitchcapper/SampleClient/SampleClient.csproj       |  106 +++
 mitchcapper/SampleClient/SampleClient.sln          |   20 +
 .../SampleClient/bin/Debug/conf/freeswitch.xml     |   84 +++
 .../SampleClient/bin/Debug/files_needed_here.txt   |   11 +
 .../bin/Debug/mod/files_needed_here.txt            |   12 +
 sathieu/cisco-xml/auth/index.php                   |    3 +
 sathieu/cisco-xml/browser/index.php                |   63 ++
 sathieu/cisco-xml/browser/static/default.css       |   49 ++
 sathieu/cisco-xml/browser/static/dynamic.js        |    4 +
 sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php      |  174 +++++
 sathieu/cisco-xml/lib/MediaBrotha/Backend.php      |   93 +++
 .../lib/MediaBrotha/Backend/FileSystem.php         |  117 +++
 sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php |  181 +++++
 sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php |   60 ++
 sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php  |   86 +++
 sathieu/cisco-xml/lib/MediaBrotha/Core.php         |  222 ++++++
 sathieu/cisco-xml/lib/MediaBrotha/Form.php         |   55 ++
 sathieu/cisco-xml/lib/MediaBrotha/Frontend.php     |   42 ++
 .../lib/MediaBrotha/Frontend/CiscoXML.php          |  117 +++
 .../cisco-xml/lib/MediaBrotha/Frontend/HTML.php    |  193 +++++
 .../cisco-xml/lib/MediaBrotha/Frontend/HTTP.php    |   37 +
 sathieu/cisco-xml/lib/MediaBrotha/Media.php        |  124 ++++
 .../cisco-xml/lib/MediaBrotha/MediaIterator.php    |   69 ++
 111 files changed, 11514 insertions(+), 11 deletions(-)
 create mode 100644 mcollins/wakeup_call/01_Wakeup_Call.xml
 create mode 100644 mcollins/wakeup_call/README
 create mode 100644 mcollins/wakeup_call/date.doc.chm
 create mode 100644 mcollins/wakeup_call/date.doc.htm
 create mode 100644 mcollins/wakeup_call/date.lua
 create mode 100644 mcollins/wakeup_call/mkcalendar.lua
 create mode 100644 mcollins/wakeup_call/mkisocal.lua
 create mode 100644 mcollins/wakeup_call/wakeup-call.lua
 create mode 100644 mitchcapper/FSClient/Account.cs
 create mode 100644 mitchcapper/FSClient/App.xaml
 create mode 100644 mitchcapper/FSClient/App.xaml.cs
 create mode 100644 mitchcapper/FSClient/Broker.cs
 create mode 100644 mitchcapper/FSClient/Call.cs
 create mode 100644 mitchcapper/FSClient/Controls/OurAutoCompleteBox.cs
 create mode 100644 mitchcapper/FSClient/Controls/PhonePadButton.xaml
 create mode 100644 mitchcapper/FSClient/Controls/PhonePadButton.xaml.cs
 create mode 100644 mitchcapper/FSClient/Converters.cs
 create mode 100644 mitchcapper/FSClient/DelayedFunction.cs
 create mode 100644 mitchcapper/FSClient/EventSocket.cs
 create mode 100644 mitchcapper/FSClient/External Items/JabraTelephonyAPI.dll
 create mode 100644 mitchcapper/FSClient/External Items/Plantronics.Device.Common.dll
 create mode 100644 mitchcapper/FSClient/External Items/conf/freeswitch.xml
 create mode 100644 mitchcapper/FSClient/External Items/link.pl
 create mode 100644 mitchcapper/FSClient/External Items/portaudio_notes.txt
 create mode 100644 mitchcapper/FSClient/FSClient.csproj
 create mode 100644 mitchcapper/FSClient/FSClient.sln
 create mode 100644 mitchcapper/FSClient/FSEvent.cs
 create mode 100644 mitchcapper/FSClient/Field.cs
 create mode 100644 mitchcapper/FSClient/GenericEditor.xaml
 create mode 100644 mitchcapper/FSClient/GenericEditor.xaml.cs
 create mode 100644 mitchcapper/FSClient/IContactPlugin.cs
 create mode 100644 mitchcapper/FSClient/IHeadsetPlugin.cs
 create mode 100644 mitchcapper/FSClient/IPlugin.cs
 create mode 100644 mitchcapper/FSClient/IncomingCallNotification.xaml
 create mode 100644 mitchcapper/FSClient/IncomingCallNotification.xaml.cs
 create mode 100644 mitchcapper/FSClient/InputBox.xaml
 create mode 100644 mitchcapper/FSClient/InputBox.xaml.cs
 create mode 100644 mitchcapper/FSClient/JabraHeadset/JabraHeadset.csproj
 create mode 100644 mitchcapper/FSClient/JabraHeadset/JabraProvider.cs
 create mode 100644 mitchcapper/FSClient/JabraHeadset/Properties/AssemblyInfo.cs
 create mode 100644 mitchcapper/FSClient/MainWindow.xaml
 create mode 100644 mitchcapper/FSClient/MainWindow.xaml.cs
 create mode 100644 mitchcapper/FSClient/ObservableClass.cs
 create mode 100644 mitchcapper/FSClient/Options.xaml
 create mode 100644 mitchcapper/FSClient/Options.xaml.cs
 create mode 100644 mitchcapper/FSClient/PlantronicsHeadset/PlantronicsHeadset.csproj
 create mode 100644 mitchcapper/FSClient/PlantronicsHeadset/PlantronicsProvider.cs
 create mode 100644 mitchcapper/FSClient/PlantronicsHeadset/Properties/AssemblyInfo.cs
 create mode 100644 mitchcapper/FSClient/PluginManagerBase.cs
 create mode 100644 mitchcapper/FSClient/PluginOptionsWindow.xaml
 create mode 100644 mitchcapper/FSClient/PluginOptionsWindow.xaml.cs
 create mode 100644 mitchcapper/FSClient/PortAudio.cs
 create mode 100644 mitchcapper/FSClient/Properties/AssemblyInfo.cs
 create mode 100644 mitchcapper/FSClient/Properties/Resources.Designer.cs
 create mode 100644 mitchcapper/FSClient/Properties/Resources.resx
 create mode 100644 mitchcapper/FSClient/Properties/Settings.Designer.cs
 create mode 100644 mitchcapper/FSClient/Properties/Settings.settings
 create mode 100644 mitchcapper/FSClient/README.txt
 create mode 100644 mitchcapper/FSClient/Setup/Banner.bmp
 create mode 100644 mitchcapper/FSClient/Setup/Dialog.bmp
 create mode 100644 mitchcapper/FSClient/Setup/FSClient.wxs
 create mode 100644 mitchcapper/FSClient/Setup/FSCore.wxs
 create mode 100644 mitchcapper/FSClient/Setup/Product.wxs
 create mode 100644 mitchcapper/FSClient/Setup/Setup.wixproj
 create mode 100644 mitchcapper/FSClient/SimpleContactPluginBase.cs
 create mode 100644 mitchcapper/FSClient/SimpleXmlContactPlugin/Properties/AssemblyInfo.cs
 create mode 100644 mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.cs
 create mode 100644 mitchcapper/FSClient/SimpleXmlContactPlugin/SimpleXmlContactPlugin.csproj
 create mode 100644 mitchcapper/FSClient/Sofia.cs
 create mode 100644 mitchcapper/FSClient/Utils.cs
 create mode 100644 mitchcapper/FSClient/Windows.cs
 create mode 100644 mitchcapper/FSClient/XmlUtils.cs
 create mode 100644 mitchcapper/FSClient/app.config
 create mode 100644 mitchcapper/FSClient/phone.ico
 create mode 100644 mitchcapper/FSClient/phone_dnd.ico
 create mode 100644 mitchcapper/FSClient/warning.png
 create mode 100644 mitchcapper/SampleClient/App.xaml
 create mode 100644 mitchcapper/SampleClient/App.xaml.cs
 create mode 100644 mitchcapper/SampleClient/FSSampleEmbeddedClient.zip
 create mode 100644 mitchcapper/SampleClient/MainWindow.xaml
 create mode 100644 mitchcapper/SampleClient/MainWindow.xaml.cs
 create mode 100644 mitchcapper/SampleClient/Properties/AssemblyInfo.cs
 create mode 100644 mitchcapper/SampleClient/Properties/Resources.Designer.cs
 copy {verifier/EventSocket/trunk/EventWatcher => mitchcapper/SampleClient}/Properties/Resources.resx (100%)
 create mode 100644 mitchcapper/SampleClient/Properties/Settings.Designer.cs
 create mode 100644 mitchcapper/SampleClient/Properties/Settings.settings
 create mode 100644 mitchcapper/SampleClient/SampleClient.csproj
 create mode 100644 mitchcapper/SampleClient/SampleClient.sln
 create mode 100644 mitchcapper/SampleClient/bin/Debug/conf/freeswitch.xml
 create mode 100644 mitchcapper/SampleClient/bin/Debug/files_needed_here.txt
 create mode 100644 mitchcapper/SampleClient/bin/Debug/mod/files_needed_here.txt
 create mode 100644 sathieu/cisco-xml/auth/index.php
 create mode 100644 sathieu/cisco-xml/browser/index.php
 create mode 100644 sathieu/cisco-xml/browser/static/default.css
 create mode 100644 sathieu/cisco-xml/browser/static/dynamic.js
 create mode 100644 sathieu/cisco-xml/lib/Cisco-XML/Cisco-XML.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Backend.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Backend/FileSystem.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Backend/LDAP.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Backend/Root.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Backend/VLC.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Core.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Form.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Frontend.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Frontend/CiscoXML.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTML.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Frontend/HTTP.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/Media.php
 create mode 100644 sathieu/cisco-xml/lib/MediaBrotha/MediaIterator.php
</pre>
<p>this email was generated because of /git/your-repo.git/hooks/post-receive by the file /git-core/contrib/hooks/post-receive-email<br />
For more info, see <a href="http://blog.chomperstomp.com/?p=630">http://blog.chomperstomp.com/?p=630</a>
-- <br />
FreeSWITCH user-contributed scripts, etc</p>