<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: Passing Multiple Parameters to Scripts - Advanced</title>
	<link>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/</link>
	<description>smart business solutions</description>
	<pubDate>Thu, 04 Dec 2008 20:27:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>By: Geoff Coffey</title>
		<link>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-1240</link>
		<dc:creator>Geoff Coffey</dc:creator>
		<pubDate>Mon, 07 Jul 2008 16:39:43 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-1240</guid>
		<description>@Brian:

Thanks for the heads up. Alas, the cleanup process isn't as simple as one would hope. Wordpress seems to have incorrectly interpreted UTF-8 data as Latin-1, then re-transcoded it to UTF-8. This happened with our last upgrade (using their built in import/export functions). The end result is we have valid UTF-8 content, properly encoded and displayed, which contains wacky characters.

Fixing it requires correcting each problem case. Some day I'll get a script written to do this for me.

Thanks,

Geoff</description>
		<content:encoded><![CDATA[<p>@Brian:</p>
<p>Thanks for the heads up. Alas, the cleanup process isn&#8217;t as simple as one would hope. Wordpress seems to have incorrectly interpreted UTF-8 data as Latin-1, then re-transcoded it to UTF-8. This happened with our last upgrade (using their built in import/export functions). The end result is we have valid UTF-8 content, properly encoded and displayed, which contains wacky characters.</p>
<p>Fixing it requires correcting each problem case. Some day I&#8217;ll get a script written to do this for me.</p>
<p>Thanks,</p>
<p>Geoff</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Boise Ruby and FileMaker Developer</title>
		<link>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-1238</link>
		<dc:creator>Boise Ruby and FileMaker Developer</dc:creator>
		<pubDate>Thu, 03 Jul 2008 15:04:57 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-1238</guid>
		<description>Guys,

I appreciate the posts, the mistakes, and the humor.  I see that your blog renders some characters in the FileMaker syntax as different entities and wonder if perhaps the pages need re-saved with a BOM as UTF 8 to parse and display correctly. 

While it's easy enough to read, and experienced developers know what is missing it might frustrate people newer to FileMaker who might actually cut and paste code from the browser.

-Brian Loomis</description>
		<content:encoded><![CDATA[<p>Guys,</p>
<p>I appreciate the posts, the mistakes, and the humor.  I see that your blog renders some characters in the FileMaker syntax as different entities and wonder if perhaps the pages need re-saved with a BOM as UTF 8 to parse and display correctly. </p>
<p>While it&#8217;s easy enough to read, and experienced developers know what is missing it might frustrate people newer to FileMaker who might actually cut and paste code from the browser.</p>
<p>-Brian Loomis</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thomas Seidler</title>
		<link>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-1220</link>
		<dc:creator>Thomas Seidler</dc:creator>
		<pubDate>Tue, 17 Jun 2008 12:16:14 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-1220</guid>
		<description>DictGet formula is missing a bracket at the end. It needs three not two. Cheers, t</description>
		<content:encoded><![CDATA[<p>DictGet formula is missing a bracket at the end. It needs three not two. Cheers, t</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luc Thomaere</title>
		<link>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-720</link>
		<dc:creator>Luc Thomaere</dc:creator>
		<pubDate>Fri, 12 Oct 2007 09:03:14 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-720</guid>
		<description>I made this fucntion to do the trick : 

GetParamValue ( "City==Antwerp&#124;Country==Belgium&#124;TelNo==0485638536" )

The paramters can be in any order and text constants (like "Antwerp") don't have to be between "". It's very easy and fast to use.
The only minus is that I can't use == nor &#124; nor " in my parameters, but till now that has never been a problem.

Evaluate ( "Let ( [âˆ" &#38; Substitute ( Get ( ScriptParameter ) ; ["==" ; "=\â€"] ; ["&#124;" ; "\â€;âˆ"] ) &#38; "\â€] ; âˆ" &#38; ParName &#38; ")" )

I use the âˆ to avoid a problem I had in teh past with certain parameter names, but I can't remember which (!)</description>
		<content:encoded><![CDATA[<p>I made this fucntion to do the trick : </p>
<p>GetParamValue ( &#8220;City==Antwerp|Country==Belgium|TelNo==0485638536&#8243; )</p>
<p>The paramters can be in any order and text constants (like &#8220;Antwerp&#8221;) don&#8217;t have to be between &#8220;&#8221;. It&#8217;s very easy and fast to use.<br />
The only minus is that I can&#8217;t use == nor | nor &#8221; in my parameters, but till now that has never been a problem.</p>
<p>Evaluate ( &#8220;Let ( [âˆ&#8221; &amp; Substitute ( Get ( ScriptParameter ) ; [&#8221;==&#8221; ; &#8220;=\â€&#8221;] ; [&#8221;|&#8221; ; &#8220;\â€;âˆ&#8221;] ) &amp; &#8220;\â€] ; âˆ&#8221; &amp; ParName &amp; &#8220;)&#8221; )</p>
<p>I use the âˆ to avoid a problem I had in teh past with certain parameter names, but I can&#8217;t remember which (!)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: FileMaker Dictionary Functions : SFR FileMaker Blog</title>
		<link>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-669</link>
		<dc:creator>FileMaker Dictionary Functions : SFR FileMaker Blog</dc:creator>
		<pubDate>Fri, 05 Oct 2007 17:32:55 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-669</guid>
		<description>[...] Passing Multiple Parameters to Scripts - Advanced : SFR FileMaker Blog [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] Passing Multiple Parameters to Scripts - Advanced : SFR FileMaker Blog [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesse Antunes</title>
		<link>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-530</link>
		<dc:creator>Jesse Antunes</dc:creator>
		<pubDate>Thu, 13 Sep 2007 19:16:03 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-530</guid>
		<description>@Chris -

I will write up a post for that by the end of next week.  I was planning about doing it a lot earlier but became quite lazy :-).

I appreciate your interest.</description>
		<content:encoded><![CDATA[<p>@Chris -</p>
<p>I will write up a post for that by the end of next week.  I was planning about doing it a lot earlier but became quite lazy :-).</p>
<p>I appreciate your interest.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Wack</title>
		<link>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-527</link>
		<dc:creator>Chris Wack</dc:creator>
		<pubDate>Wed, 12 Sep 2007 15:15:59 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-527</guid>
		<description>@Jesse,

Thanks for posting this code.  

You mentioned that you have a â€œwhole suite of custom functions that expand upon this ideaâ€ (DictFirst, DictRemove, DictAdd, DictToString, DictList and my personal favorite DictToXML).  

Would you be willing to post that code?  Iâ€™ve been looking into building my own dictionary functionality, but Iâ€™d like to avoid reinventing the wheel.

Thanks,

Chris</description>
		<content:encoded><![CDATA[<p>@Jesse,</p>
<p>Thanks for posting this code.  </p>
<p>You mentioned that you have a â€œwhole suite of custom functions that expand upon this ideaâ€ (DictFirst, DictRemove, DictAdd, DictToString, DictList and my personal favorite DictToXML).  </p>
<p>Would you be willing to post that code?  Iâ€™ve been looking into building my own dictionary functionality, but Iâ€™d like to avoid reinventing the wheel.</p>
<p>Thanks,</p>
<p>Chris</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Zakary</title>
		<link>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-248</link>
		<dc:creator>David Zakary</dc:creator>
		<pubDate>Thu, 26 Jul 2007 02:04:28 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-248</guid>
		<description>I've been using a custom function to pass multiple script parameters. Its a modification of a CF that I found on Brian Dunning's website.

The CF, which I call GSP, has a single function parameter (number) and looks like this:

&lt;pre&gt;&lt;code&gt;
Let (
  [x = MiddleValues (Substitute (Get (ScriptParameter); "&#124;"; "Â¶"); Number; 1);
  y = Left (x; Length (x)-1)];

  Case (
    PatternCount (Get (ScriptParameter); "&#124;" ); y;
    Get (ScriptParameter)
  )
)
&lt;/code&gt;&lt;/pre&gt;


When I want to pass multiple parameters to the script I separate each value with the verical pipe character "&#124;".

So if I wanted to pass apple, banana and orange the paramter would look like "apple&#124;banana&#124;orange". The passed parameter could obviously be a calculated set of values or field names, etc. They just have to be separated with a &#124;.

If I wanted to use the second parameter I would call GSP (2) and return "banana". 

It has worked very well for me and it can take an unlimited set of parameters so that it can easily be used with 1 parameter or 100 without having to modify the code.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve been using a custom function to pass multiple script parameters. Its a modification of a CF that I found on Brian Dunning&#8217;s website.</p>
<p>The CF, which I call GSP, has a single function parameter (number) and looks like this:</p>
<pre><code>
Let (
  [x = MiddleValues (Substitute (Get (ScriptParameter); "|"; "Â¶"); Number; 1);
  y = Left (x; Length (x)-1)];

  Case (
    PatternCount (Get (ScriptParameter); "|" ); y;
    Get (ScriptParameter)
  )
)
</code></pre>
<p>When I want to pass multiple parameters to the script I separate each value with the verical pipe character &#8220;|&#8221;.</p>
<p>So if I wanted to pass apple, banana and orange the paramter would look like &#8220;apple|banana|orange&#8221;. The passed parameter could obviously be a calculated set of values or field names, etc. They just have to be separated with a |.</p>
<p>If I wanted to use the second parameter I would call GSP (2) and return &#8220;banana&#8221;. </p>
<p>It has worked very well for me and it can take an unlimited set of parameters so that it can easily be used with 1 parameter or 100 without having to modify the code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesse Antunes</title>
		<link>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-236</link>
		<dc:creator>Jesse Antunes</dc:creator>
		<pubDate>Mon, 23 Jul 2007 04:15:19 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-236</guid>
		<description>&lt;p&gt;@garbanzito: That was a great post.  We actually feel pretty much the same way about these custom functions... with one notable exception but I will get to that later.  I definitely agree that PassParameter is too specific a name and in our personal copy of these CF's we actually use then name &lt;code&gt;#()&lt;/code&gt;.  We use this because of the fact that it reminds of the  hash data structure in other languages... it obviously isn't the same but you get the point ;).  As far as decoupling goes, we implemented `DictGet()` seperately from `PassParameter()` and `GetParameter()` for just this reason &lt;/p&gt;

&lt;p&gt;Also, we actually have a whole suite of custom functions that expand upon this idea.  It's awesome that you had the same first impression of where to go once one starts using the Dictionary concept.   We have implemented  DictFirst, DictRemove, DictAdd, DictToString, DictList and my personal favorite DictToXML.  There are a couple of others that we use as well but those are the ones I believe you mentioned in your post.&lt;/p&gt;

&lt;p&gt;The one think I don't think we agree on is the need for local variables in the script that house the same data as in the dictionary.  Why not access the data directly???  The dictionary data is just as transient as the data in the variables.  I also don't like that you lose the transparency of where the data came from because they are in a let function buried in a recursive custom function that is solely used to place data you already have access to into variables.&lt;/p&gt;

&lt;p&gt;I think at this point though, we both are agreeing on the idea that this type of construct is beneficial but don't agree on it's exact implementation.  Please feel free to modify our code in any way you see fit to meet your own specifications for it's functionality.  I really appreciate the critique and hope you continue to provide comments on our methods in the future.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>@garbanzito: That was a great post.  We actually feel pretty much the same way about these custom functions&#8230; with one notable exception but I will get to that later.  I definitely agree that PassParameter is too specific a name and in our personal copy of these CF&#8217;s we actually use then name <code>#()</code>.  We use this because of the fact that it reminds of the  hash data structure in other languages&#8230; it obviously isn&#8217;t the same but you get the point ;).  As far as decoupling goes, we implemented `DictGet()` seperately from `PassParameter()` and `GetParameter()` for just this reason </p>
<p>Also, we actually have a whole suite of custom functions that expand upon this idea.  It&#8217;s awesome that you had the same first impression of where to go once one starts using the Dictionary concept.   We have implemented  DictFirst, DictRemove, DictAdd, DictToString, DictList and my personal favorite DictToXML.  There are a couple of others that we use as well but those are the ones I believe you mentioned in your post.</p>
<p>The one think I don&#8217;t think we agree on is the need for local variables in the script that house the same data as in the dictionary.  Why not access the data directly???  The dictionary data is just as transient as the data in the variables.  I also don&#8217;t like that you lose the transparency of where the data came from because they are in a let function buried in a recursive custom function that is solely used to place data you already have access to into variables.</p>
<p>I think at this point though, we both are agreeing on the idea that this type of construct is beneficial but don&#8217;t agree on it&#8217;s exact implementation.  Please feel free to modify our code in any way you see fit to meet your own specifications for it&#8217;s functionality.  I really appreciate the critique and hope you continue to provide comments on our methods in the future.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: garbanzito</title>
		<link>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-234</link>
		<dc:creator>garbanzito</dc:creator>
		<pubDate>Sun, 22 Jul 2007 08:47:20 +0000</pubDate>
		<guid>http://sixfriedrice.com/wp/passing-multiple-parameters-to-scripts-advanced/#comment-234</guid>
		<description>&lt;p&gt;basically you've done a fairly robust implementation of &lt;em&gt;parts&lt;/em&gt; of basic general serialized dictionary; i think "PassParameter" is much too specific a name for the set function, and there are some pieces missing to make it fully general; also, your approach turns every dictionary value into a string&lt;/p&gt;

&lt;p&gt;in itself, though, it isn't especially convenient for passing parameters, which deserve to become local variables as soon as they reach the called procedure, as in almost all general programming languages; sure, a group of Set Variable steps could "fix" this, but that's tedious and a potential source of error, so i suggest using a helper script to do that part, and keeping it apart from the general dictionary functions by packaging one use of the dictionary object as a local-variable factory; this would make parameter passing more convenient and support defining default values for optional parameters (another common feature of programming languages)&lt;/p&gt;

&lt;p&gt;i would thus see your dictionary as an opportunity to refine my local -setting technique (http://www.briandunning.com/cf/453) by decoupling the dictionary from the parameter handling&lt;/p&gt;

&lt;p&gt;so what i'd want to do with it first is to make a full set of dictionary functions:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dict_set (dict; itemname; value) â€“&#62; dict&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dict_get (dict; itemname) â€“&#62; item or null&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dict_delete (dict; itemname) â€“&#62; dict&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dict_names (dict) â€“&#62; names valuelist&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;this would create a dictionary type for any of several purposes -- these dictionaries can be stored in the database and reloaded at startup, for example; and this is how i'd use such a dictionary for parameter passing in FileMaker; i'd define a local variable factory (untested off the cuff definition):&lt;/p&gt;

&lt;p&gt;&lt;code allow="none&gt;&lt;/p&gt;

&lt;p&gt;dict_to_locals (dict) --&#62;returns true unless the parameter is not a dictionary or is defective;  creates local variables for each item in a dictionary; &lt;/p&gt;

&lt;p&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code allow="none"&gt;&lt;/p&gt;

&lt;p&gt;Let (a_name = trim_val (dict_names (dict); 1);&lt;/p&gt;

&lt;p&gt; 	&#160; 	&#160;Case (&lt;/p&gt;

&lt;p&gt; 	&#160; 	&#160; 	&#160; 	&#160;is_empty (a_name);&lt;/p&gt;

&lt;p&gt;&lt;code allow="none"&gt;
    	&#160; 	&#160; 	&#160; 	&#160; 1;
     	&#160; 	&#160; 	&#160; 	&#160;  (
 	&#160; 	&#160; 	&#160; 	&#160;  Evaluate ("Let ($" &#38; a_name &#38; "=\"" &#38; 
 	&#160; 	&#160; 	&#160; 	&#160; 	&#160;dict_get (dict; a_name) &#38; "\"; 1) "
 	&#160; 	&#160; 	&#160; 	&#160;  );
       	&#160; 	&#160; 	&#160; 	&#160;  dict_to_locals (dict_delete_item (dict; a_name));
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt; 	&#160; 	&#160; 	&#160; 	&#160;0&lt;/p&gt;

&lt;p&gt; 	&#160; 	&#160;)&lt;/p&gt;

&lt;p&gt;)
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;the  convenience function,  trim_val (dict; n) simply removes returns and trims the result of MilddleValues (list; n; 1)&lt;/p&gt;

&lt;p&gt;another convenience function, param_dict() would simply do&lt;/p&gt;

&lt;p&gt;dict&lt;em&gt;to&lt;/em&gt;locals (Get (ScriptParameter))&lt;/p&gt;

&lt;p&gt;then you could pass params with e.g.&lt;/p&gt;
&lt;code allow="none"&gt;
Perform Script ["myscript"; Parameter: set_dict_item (set_dict_item (""; "var1"; val1); "var2"; val2)
&lt;/code&gt;
&lt;p&gt;and the called script would start like this (except for any default values for parameters):&lt;/p&gt;

&lt;p&gt;If [not param_dict())] &lt;/p&gt;

&lt;p&gt;&lt;p&gt;   // handle parameter error&lt;/p&gt;
 &lt;p&gt; Else&lt;/p&gt;
   &lt;p&gt; // do things with the local script vars created&lt;/p&gt;
 &lt;p&gt; End If&lt;/p&gt;&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>basically you&#8217;ve done a fairly robust implementation of <em>parts</em> of basic general serialized dictionary; i think &#8220;PassParameter&#8221; is much too specific a name for the set function, and there are some pieces missing to make it fully general; also, your approach turns every dictionary value into a string</p>
<p>in itself, though, it isn&#8217;t especially convenient for passing parameters, which deserve to become local variables as soon as they reach the called procedure, as in almost all general programming languages; sure, a group of Set Variable steps could &#8220;fix&#8221; this, but that&#8217;s tedious and a potential source of error, so i suggest using a helper script to do that part, and keeping it apart from the general dictionary functions by packaging one use of the dictionary object as a local-variable factory; this would make parameter passing more convenient and support defining default values for optional parameters (another common feature of programming languages)</p>
<p>i would thus see your dictionary as an opportunity to refine my local -setting technique (http://www.briandunning.com/cf/453) by decoupling the dictionary from the parameter handling</p>
<p>so what i&#8217;d want to do with it first is to make a full set of dictionary functions:</p>
<p><code>dict_set (dict; itemname; value) â€“&gt; dict</code></p>
<p><code>dict_get (dict; itemname) â€“&gt; item or null</code></p>
<p><code>dict_delete (dict; itemname) â€“&gt; dict</code></p>
<p><code>dict_names (dict) â€“&gt; names valuelist</code></p>
<p>this would create a dictionary type for any of several purposes &#8212; these dictionaries can be stored in the database and reloaded at startup, for example; and this is how i&#8217;d use such a dictionary for parameter passing in FileMaker; i&#8217;d define a local variable factory (untested off the cuff definition):</p>
<p><code allow="none></code></p>
<p>dict_to_locals (dict) &#8211;&gt;returns true unless the parameter is not a dictionary or is defective;  creates local variables for each item in a dictionary; </p>
</p>
<p><code allow="none"></code></p>
<p>Let (a_name = trim_val (dict_names (dict); 1);</p>
<p> 	&nbsp; 	&nbsp;Case (</p>
<p> 	&nbsp; 	&nbsp; 	&nbsp; 	&nbsp;is_empty (a_name);</p>
<p><code allow="none"><br />
    	&nbsp; 	&nbsp; 	&nbsp; 	&nbsp; 1;<br />
     	&nbsp; 	&nbsp; 	&nbsp; 	&nbsp;  (<br />
 	&nbsp; 	&nbsp; 	&nbsp; 	&nbsp;  Evaluate ("Let ($" &amp; a_name &amp; "=\"" &amp;<br />
 	&nbsp; 	&nbsp; 	&nbsp; 	&nbsp; 	&nbsp;dict_get (dict; a_name) &amp; "\"; 1) "<br />
 	&nbsp; 	&nbsp; 	&nbsp; 	&nbsp;  );<br />
       	&nbsp; 	&nbsp; 	&nbsp; 	&nbsp;  dict_to_locals (dict_delete_item (dict; a_name));<br />
</code></p>
<p> 	&nbsp; 	&nbsp; 	&nbsp; 	&nbsp;0</p>
<p> 	&nbsp; 	&nbsp;)</p>
<p>)
</p>
<p>the  convenience function,  trim_val (dict; n) simply removes returns and trims the result of MilddleValues (list; n; 1)</p>
<p>another convenience function, param_dict() would simply do</p>
<p>dict<em>to</em>locals (Get (ScriptParameter))</p>
<p>then you could pass params with e.g.</p>
<p><code allow="none"><br />
Perform Script ["myscript"; Parameter: set_dict_item (set_dict_item (""; "var1"; val1); "var2"; val2)<br />
</code></p>
<p>and the called script would start like this (except for any default values for parameters):</p>
<p>If [not param_dict())] </p>
</p>
<p>   // handle parameter error</p>
<p> Else</p>
<p> // do things with the local script vars created</p>
<p> End If</p>
]]></content:encoded>
	</item>
</channel>
</rss>
