From 43335b172b8683f3546ba8c5afb735a22880136f Mon Sep 17 00:00:00 2001
From: titoko titoko
Date: Sun, 24 Nov 2013 11:03:28 +0100
Subject: [PATCH] add 1.10 source
---
source/LICENSE | 339 +
source/README.md | 41 +
source/api/index.php | 74 +
source/atom-to-html.xsl | 51 +
source/backend.php | 154 +
source/cache/.htaccess | 2 +
source/classes/.htaccess | 2 +
source/classes/api.php | 784 +++
source/classes/article.php | 346 +
source/classes/auth/base.php | 61 +
source/classes/backend.php | 119 +
source/classes/db.php | 98 +
source/classes/db/mysql.php | 76 +
source/classes/db/mysqli.php | 80 +
source/classes/db/pdo.php | 100 +
source/classes/db/pgsql.php | 85 +
source/classes/db/prefs.php | 190 +
source/classes/db/stmt.php | 32 +
source/classes/dbupdater.php | 65 +
source/classes/dlg.php | 272 +
source/classes/feedenclosure.php | 8 +
source/classes/feeditem.php | 15 +
source/classes/feeditem/atom.php | 159 +
source/classes/feeditem/common.php | 62 +
source/classes/feeditem/rss.php | 134 +
source/classes/feedparser.php | 246 +
source/classes/feeds.php | 1161 ++++
source/classes/handler.php | 24 +
source/classes/handler/protected.php | 8 +
source/classes/handler/public.php | 976 +++
source/classes/iauthmodule.php | 5 +
source/classes/idb.php | 13 +
source/classes/ihandler.php | 7 +
source/classes/logger.php | 65 +
source/classes/logger/sql.php | 28 +
source/classes/logger/syslog.php | 31 +
source/classes/opml.php | 523 ++
source/classes/plugin.php | 30 +
source/classes/pluginhandler.php | 22 +
source/classes/pluginhost.php | 389 ++
source/classes/pref/feeds.php | 1928 ++++++
source/classes/pref/filters.php | 1070 +++
source/classes/pref/labels.php | 330 +
source/classes/pref/prefs.php | 1127 +++
source/classes/pref/system.php | 90 +
source/classes/pref/users.php | 457 ++
source/classes/rpc.php | 655 ++
source/classes/ttrssmailer.php | 64 +
source/config.php-dist | 214 +
source/css/cdm.css | 344 +
source/css/layout.css | 7 +
source/css/prefs.css | 126 +
source/css/tt-rss.css | 1200 ++++
source/css/utility.css | 264 +
source/errors.php | 50 +
source/image.php | 54 +
source/images/alert.png | Bin 0 -> 701 bytes
source/images/archive.png | Bin 0 -> 555 bytes
source/images/blank_icon.gif | Bin 0 -> 80 bytes
source/images/collapse.png | Bin 0 -> 317 bytes
source/images/cross.png | Bin 0 -> 655 bytes
source/images/error.png | Bin 0 -> 666 bytes
source/images/favicon-72px.png | Bin 0 -> 5474 bytes
source/images/favicon.png | Bin 0 -> 772 bytes
source/images/feed.png | Bin 0 -> 691 bytes
source/images/filter.png | Bin 0 -> 586 bytes
source/images/folder.png | Bin 0 -> 537 bytes
source/images/fresh.png | Bin 0 -> 633 bytes
source/images/indicator_tiny.gif | Bin 0 -> 723 bytes
source/images/indicator_white.gif | Bin 0 -> 2611 bytes
source/images/information.png | Bin 0 -> 778 bytes
source/images/label.png | Bin 0 -> 586 bytes
source/images/logo_small.png | Bin 0 -> 4134 bytes
source/images/logo_wide.png | Bin 0 -> 2065 bytes
source/images/mark_set.png | Bin 0 -> 670 bytes
source/images/mark_unset.png | Bin 0 -> 610 bytes
source/images/new_version.png | Bin 0 -> 372 bytes
source/images/page_white_go.png | Bin 0 -> 612 bytes
source/images/plugin.png | Bin 0 -> 591 bytes
source/images/plugin_disabled.png | Bin 0 -> 347 bytes
source/images/pub_set.png | Bin 0 -> 691 bytes
source/images/pub_unset.png | Bin 0 -> 718 bytes
source/images/score_half_high.png | Bin 0 -> 332 bytes
source/images/score_half_low.png | Bin 0 -> 295 bytes
source/images/score_high.png | Bin 0 -> 295 bytes
source/images/score_low.png | Bin 0 -> 211 bytes
source/images/score_neutral.png | Bin 0 -> 201 bytes
source/images/star.png | Bin 0 -> 670 bytes
source/images/tag.png | Bin 0 -> 594 bytes
source/images/time.png | Bin 0 -> 793 bytes
source/images/toolbar.png | Bin 0 -> 415 bytes
source/images/user.png | Bin 0 -> 741 bytes
source/include/autoload.php | 14 +
source/include/ccache.php | 222 +
source/include/colors.php | 351 +
source/include/crypt.php | 36 +
source/include/db-prefs.php | 11 +
source/include/db.php | 36 +
source/include/digest.php | 194 +
source/include/errorhandler.php | 39 +
source/include/feedbrowser.php | 112 +
source/include/functions.php | 4369 ++++++++++++
source/include/labels.php | 201 +
source/include/login_form.php | 254 +
source/include/rssfuncs.php | 1397 ++++
source/include/sanity_check.php | 204 +
source/include/sanity_config.php | 3 +
source/include/sessions.php | 165 +
source/include/version.php | 19 +
source/index.php | 281 +
source/install/index.php | 498 ++
source/js/FeedTree.js | 584 ++
source/js/PluginHost.js | 35 +
source/js/PrefFeedTree.js | 125 +
source/js/PrefFilterTree.js | 88 +
source/js/PrefLabelTree.js | 43 +
source/js/deprecated.js | 29 +
source/js/feedlist.js | 506 ++
source/js/functions.js | 1936 ++++++
source/js/index.html | 0
source/js/prefs.js | 1806 +++++
source/js/tt-rss.js | 1139 +++
source/js/viewfeed.js | 2317 +++++++
source/lib/CheckBoxTree.js | 474 ++
source/lib/MiniTemplator.class.php | 922 +++
source/lib/Mobile_Detect.php | 220 +
source/lib/accept-to-gettext.php | 184 +
source/lib/button/license.txt | 10 +
source/lib/button/musicplayer.swf | Bin 0 -> 6134 bytes
source/lib/button/musicplayer_f6.swf | Bin 0 -> 6463 bytes
source/lib/dijit/BackgroundIframe.js | 2 +
source/lib/dijit/Calendar.js | 2 +
source/lib/dijit/CalendarLite.js | 2 +
source/lib/dijit/CheckedMenuItem.js | 2 +
source/lib/dijit/ColorPalette.js | 2 +
source/lib/dijit/Declaration.js | 2 +
source/lib/dijit/Destroyable.js | 2 +
source/lib/dijit/Dialog.js | 2 +
source/lib/dijit/DialogUnderlay.js | 2 +
source/lib/dijit/DropDownMenu.js | 2 +
source/lib/dijit/Editor.js | 2 +
source/lib/dijit/InlineEditBox.js | 2 +
source/lib/dijit/LICENSE | 195 +
source/lib/dijit/Menu.js | 2 +
source/lib/dijit/MenuBar.js | 2 +
source/lib/dijit/MenuBarItem.js | 2 +
source/lib/dijit/MenuItem.js | 2 +
source/lib/dijit/MenuSeparator.js | 2 +
source/lib/dijit/PopupMenuBarItem.js | 2 +
source/lib/dijit/PopupMenuItem.js | 2 +
source/lib/dijit/ProgressBar.js | 2 +
source/lib/dijit/TitlePane.js | 2 +
source/lib/dijit/Toolbar.js | 2 +
source/lib/dijit/ToolbarSeparator.js | 2 +
source/lib/dijit/Tooltip.js | 2 +
source/lib/dijit/TooltipDialog.js | 2 +
source/lib/dijit/Tree.js | 2 +
source/lib/dijit/Viewport.js | 2 +
source/lib/dijit/WidgetSet.js | 2 +
source/lib/dijit/_BidiSupport.js | 2 +
source/lib/dijit/_Calendar.js | 2 +
source/lib/dijit/_Contained.js | 2 +
source/lib/dijit/_Container.js | 2 +
source/lib/dijit/_CssStateMixin.js | 2 +
source/lib/dijit/_DialogMixin.js | 2 +
source/lib/dijit/_FocusMixin.js | 2 +
source/lib/dijit/_HasDropDown.js | 2 +
source/lib/dijit/_KeyNavContainer.js | 2 +
source/lib/dijit/_MenuBase.js | 2 +
source/lib/dijit/_OnDijitClickMixin.js | 2 +
source/lib/dijit/_PaletteMixin.js | 2 +
source/lib/dijit/_Templated.js | 2 +
source/lib/dijit/_TemplatedMixin.js | 2 +
source/lib/dijit/_TimePicker.js | 2 +
source/lib/dijit/_Widget.js | 2 +
source/lib/dijit/_WidgetBase.js | 2 +
source/lib/dijit/_WidgetsInTemplateMixin.js | 2 +
source/lib/dijit/_base.js | 2 +
source/lib/dijit/_base/focus.js | 2 +
source/lib/dijit/_base/manager.js | 2 +
source/lib/dijit/_base/place.js | 2 +
source/lib/dijit/_base/popup.js | 2 +
source/lib/dijit/_base/scroll.js | 2 +
source/lib/dijit/_base/sniff.js | 2 +
source/lib/dijit/_base/typematic.js | 2 +
source/lib/dijit/_base/wai.js | 2 +
source/lib/dijit/_base/window.js | 2 +
source/lib/dijit/_editor/RichText.js | 2 +
source/lib/dijit/_editor/_Plugin.js | 2 +
source/lib/dijit/_editor/html.js | 2 +
source/lib/dijit/_editor/nls/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/ar/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/ar/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/ar/commands.js | 2 +
source/lib/dijit/_editor/nls/az/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/az/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/az/commands.js | 2 +
source/lib/dijit/_editor/nls/ca/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/ca/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/ca/commands.js | 2 +
source/lib/dijit/_editor/nls/commands.js | 2 +
source/lib/dijit/_editor/nls/cs/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/cs/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/cs/commands.js | 2 +
source/lib/dijit/_editor/nls/da/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/da/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/da/commands.js | 2 +
source/lib/dijit/_editor/nls/de/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/de/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/de/commands.js | 2 +
source/lib/dijit/_editor/nls/el/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/el/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/el/commands.js | 2 +
source/lib/dijit/_editor/nls/es/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/es/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/es/commands.js | 2 +
source/lib/dijit/_editor/nls/fi/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/fi/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/fi/commands.js | 2 +
source/lib/dijit/_editor/nls/fr/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/fr/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/fr/commands.js | 2 +
source/lib/dijit/_editor/nls/he/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/he/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/he/commands.js | 2 +
source/lib/dijit/_editor/nls/hr/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/hr/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/hr/commands.js | 2 +
source/lib/dijit/_editor/nls/hu/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/hu/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/hu/commands.js | 2 +
source/lib/dijit/_editor/nls/it/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/it/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/it/commands.js | 2 +
source/lib/dijit/_editor/nls/ja/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/ja/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/ja/commands.js | 2 +
source/lib/dijit/_editor/nls/kk/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/kk/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/kk/commands.js | 2 +
source/lib/dijit/_editor/nls/ko/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/ko/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/ko/commands.js | 2 +
source/lib/dijit/_editor/nls/nb/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/nb/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/nb/commands.js | 2 +
source/lib/dijit/_editor/nls/nl/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/nl/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/nl/commands.js | 2 +
source/lib/dijit/_editor/nls/pl/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/pl/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/pl/commands.js | 2 +
.../lib/dijit/_editor/nls/pt-pt/FontChoice.js | 2 +
.../lib/dijit/_editor/nls/pt-pt/LinkDialog.js | 2 +
.../lib/dijit/_editor/nls/pt-pt/commands.js | 2 +
source/lib/dijit/_editor/nls/pt/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/pt/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/pt/commands.js | 2 +
source/lib/dijit/_editor/nls/ro/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/ro/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/ro/commands.js | 2 +
source/lib/dijit/_editor/nls/ru/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/ru/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/ru/commands.js | 2 +
source/lib/dijit/_editor/nls/sk/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/sk/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/sk/commands.js | 2 +
source/lib/dijit/_editor/nls/sl/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/sl/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/sl/commands.js | 2 +
source/lib/dijit/_editor/nls/sv/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/sv/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/sv/commands.js | 2 +
source/lib/dijit/_editor/nls/th/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/th/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/th/commands.js | 2 +
source/lib/dijit/_editor/nls/tr/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/tr/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/tr/commands.js | 2 +
.../lib/dijit/_editor/nls/zh-tw/FontChoice.js | 2 +
.../lib/dijit/_editor/nls/zh-tw/LinkDialog.js | 2 +
.../lib/dijit/_editor/nls/zh-tw/commands.js | 2 +
source/lib/dijit/_editor/nls/zh/FontChoice.js | 2 +
source/lib/dijit/_editor/nls/zh/LinkDialog.js | 2 +
source/lib/dijit/_editor/nls/zh/commands.js | 2 +
.../_editor/plugins/AlwaysShowToolbar.js | 2 +
.../dijit/_editor/plugins/EnterKeyHandling.js | 2 +
.../lib/dijit/_editor/plugins/FontChoice.js | 2 +
.../lib/dijit/_editor/plugins/FullScreen.js | 2 +
.../lib/dijit/_editor/plugins/LinkDialog.js | 2 +
source/lib/dijit/_editor/plugins/NewPage.js | 2 +
source/lib/dijit/_editor/plugins/Print.js | 2 +
source/lib/dijit/_editor/plugins/TabIndent.js | 2 +
source/lib/dijit/_editor/plugins/TextColor.js | 2 +
source/lib/dijit/_editor/plugins/ToggleDir.js | 2 +
.../lib/dijit/_editor/plugins/ViewSource.js | 2 +
source/lib/dijit/_editor/range.js | 2 +
source/lib/dijit/_editor/selection.js | 2 +
source/lib/dijit/_tree/dndSource.js | 2 +
source/lib/dijit/a11y.js | 2 +
source/lib/dijit/a11yclick.js | 2 +
source/lib/dijit/dijit-all.js | 2 +
source/lib/dijit/dijit.js | 2 +
source/lib/dijit/dijit.profile.js | 35 +
source/lib/dijit/focus.js | 2 +
source/lib/dijit/form/Button.js | 2 +
source/lib/dijit/form/CheckBox.js | 2 +
source/lib/dijit/form/ComboBox.js | 2 +
source/lib/dijit/form/ComboBoxMixin.js | 2 +
source/lib/dijit/form/ComboButton.js | 2 +
source/lib/dijit/form/CurrencyTextBox.js | 2 +
source/lib/dijit/form/DataList.js | 2 +
source/lib/dijit/form/DateTextBox.js | 2 +
source/lib/dijit/form/DropDownButton.js | 2 +
source/lib/dijit/form/FilteringSelect.js | 2 +
source/lib/dijit/form/Form.js | 2 +
source/lib/dijit/form/HorizontalRule.js | 2 +
source/lib/dijit/form/HorizontalRuleLabels.js | 2 +
source/lib/dijit/form/HorizontalSlider.js | 2 +
source/lib/dijit/form/MappedTextBox.js | 2 +
source/lib/dijit/form/MultiSelect.js | 2 +
source/lib/dijit/form/NumberSpinner.js | 2 +
source/lib/dijit/form/NumberTextBox.js | 2 +
source/lib/dijit/form/RadioButton.js | 2 +
source/lib/dijit/form/RangeBoundTextBox.js | 2 +
source/lib/dijit/form/Select.js | 2 +
source/lib/dijit/form/SimpleTextarea.js | 2 +
source/lib/dijit/form/Slider.js | 2 +
source/lib/dijit/form/TextBox.js | 2 +
source/lib/dijit/form/Textarea.js | 2 +
source/lib/dijit/form/TimeTextBox.js | 2 +
source/lib/dijit/form/ToggleButton.js | 2 +
source/lib/dijit/form/ValidationTextBox.js | 2 +
source/lib/dijit/form/VerticalRule.js | 2 +
source/lib/dijit/form/VerticalRuleLabels.js | 2 +
source/lib/dijit/form/VerticalSlider.js | 2 +
source/lib/dijit/form/_AutoCompleterMixin.js | 2 +
source/lib/dijit/form/_ButtonMixin.js | 2 +
source/lib/dijit/form/_CheckBoxMixin.js | 2 +
source/lib/dijit/form/_ComboBoxMenu.js | 2 +
source/lib/dijit/form/_ComboBoxMenuMixin.js | 2 +
source/lib/dijit/form/_DateTimeTextBox.js | 2 +
.../lib/dijit/form/_ExpandingTextAreaMixin.js | 2 +
source/lib/dijit/form/_FormMixin.js | 2 +
source/lib/dijit/form/_FormSelectWidget.js | 2 +
source/lib/dijit/form/_FormValueMixin.js | 2 +
source/lib/dijit/form/_FormValueWidget.js | 2 +
source/lib/dijit/form/_FormWidget.js | 2 +
source/lib/dijit/form/_FormWidgetMixin.js | 2 +
source/lib/dijit/form/_ListBase.js | 2 +
source/lib/dijit/form/_ListMouseMixin.js | 2 +
source/lib/dijit/form/_RadioButtonMixin.js | 2 +
source/lib/dijit/form/_SearchMixin.js | 2 +
source/lib/dijit/form/_Spinner.js | 2 +
source/lib/dijit/form/_TextBoxMixin.js | 2 +
source/lib/dijit/form/_ToggleButtonMixin.js | 2 +
source/lib/dijit/form/nls/ComboBox.js | 2 +
source/lib/dijit/form/nls/Textarea.js | 2 +
source/lib/dijit/form/nls/ar/ComboBox.js | 2 +
source/lib/dijit/form/nls/ar/Textarea.js | 2 +
source/lib/dijit/form/nls/ar/validate.js | 2 +
source/lib/dijit/form/nls/az/ComboBox.js | 2 +
source/lib/dijit/form/nls/az/Textarea.js | 2 +
source/lib/dijit/form/nls/az/validate.js | 2 +
source/lib/dijit/form/nls/ca/ComboBox.js | 2 +
source/lib/dijit/form/nls/ca/Textarea.js | 2 +
source/lib/dijit/form/nls/ca/validate.js | 2 +
source/lib/dijit/form/nls/cs/ComboBox.js | 2 +
source/lib/dijit/form/nls/cs/Textarea.js | 2 +
source/lib/dijit/form/nls/cs/validate.js | 2 +
source/lib/dijit/form/nls/da/ComboBox.js | 2 +
source/lib/dijit/form/nls/da/Textarea.js | 2 +
source/lib/dijit/form/nls/da/validate.js | 2 +
source/lib/dijit/form/nls/de/ComboBox.js | 2 +
source/lib/dijit/form/nls/de/Textarea.js | 2 +
source/lib/dijit/form/nls/de/validate.js | 2 +
source/lib/dijit/form/nls/el/ComboBox.js | 2 +
source/lib/dijit/form/nls/el/Textarea.js | 2 +
source/lib/dijit/form/nls/el/validate.js | 2 +
source/lib/dijit/form/nls/es/ComboBox.js | 2 +
source/lib/dijit/form/nls/es/Textarea.js | 2 +
source/lib/dijit/form/nls/es/validate.js | 2 +
source/lib/dijit/form/nls/fi/ComboBox.js | 2 +
source/lib/dijit/form/nls/fi/Textarea.js | 2 +
source/lib/dijit/form/nls/fi/validate.js | 2 +
source/lib/dijit/form/nls/fr/ComboBox.js | 2 +
source/lib/dijit/form/nls/fr/Textarea.js | 2 +
source/lib/dijit/form/nls/fr/validate.js | 2 +
source/lib/dijit/form/nls/he/ComboBox.js | 2 +
source/lib/dijit/form/nls/he/Textarea.js | 2 +
source/lib/dijit/form/nls/he/validate.js | 2 +
source/lib/dijit/form/nls/hr/ComboBox.js | 2 +
source/lib/dijit/form/nls/hr/Textarea.js | 2 +
source/lib/dijit/form/nls/hr/validate.js | 2 +
source/lib/dijit/form/nls/hu/ComboBox.js | 2 +
source/lib/dijit/form/nls/hu/Textarea.js | 2 +
source/lib/dijit/form/nls/hu/validate.js | 2 +
source/lib/dijit/form/nls/it/ComboBox.js | 2 +
source/lib/dijit/form/nls/it/Textarea.js | 2 +
source/lib/dijit/form/nls/it/validate.js | 2 +
source/lib/dijit/form/nls/ja/ComboBox.js | 2 +
source/lib/dijit/form/nls/ja/Textarea.js | 2 +
source/lib/dijit/form/nls/ja/validate.js | 2 +
source/lib/dijit/form/nls/kk/ComboBox.js | 2 +
source/lib/dijit/form/nls/kk/Textarea.js | 2 +
source/lib/dijit/form/nls/kk/validate.js | 2 +
source/lib/dijit/form/nls/ko/ComboBox.js | 2 +
source/lib/dijit/form/nls/ko/Textarea.js | 2 +
source/lib/dijit/form/nls/ko/validate.js | 2 +
source/lib/dijit/form/nls/nb/ComboBox.js | 2 +
source/lib/dijit/form/nls/nb/Textarea.js | 2 +
source/lib/dijit/form/nls/nb/validate.js | 2 +
source/lib/dijit/form/nls/nl/ComboBox.js | 2 +
source/lib/dijit/form/nls/nl/Textarea.js | 2 +
source/lib/dijit/form/nls/nl/validate.js | 2 +
source/lib/dijit/form/nls/pl/ComboBox.js | 2 +
source/lib/dijit/form/nls/pl/Textarea.js | 2 +
source/lib/dijit/form/nls/pl/validate.js | 2 +
source/lib/dijit/form/nls/pt-pt/ComboBox.js | 2 +
source/lib/dijit/form/nls/pt-pt/Textarea.js | 2 +
source/lib/dijit/form/nls/pt-pt/validate.js | 2 +
source/lib/dijit/form/nls/pt/ComboBox.js | 2 +
source/lib/dijit/form/nls/pt/Textarea.js | 2 +
source/lib/dijit/form/nls/pt/validate.js | 2 +
source/lib/dijit/form/nls/ro/ComboBox.js | 2 +
source/lib/dijit/form/nls/ro/Textarea.js | 2 +
source/lib/dijit/form/nls/ro/validate.js | 2 +
source/lib/dijit/form/nls/ru/ComboBox.js | 2 +
source/lib/dijit/form/nls/ru/Textarea.js | 2 +
source/lib/dijit/form/nls/ru/validate.js | 2 +
source/lib/dijit/form/nls/sk/ComboBox.js | 2 +
source/lib/dijit/form/nls/sk/Textarea.js | 2 +
source/lib/dijit/form/nls/sk/validate.js | 2 +
source/lib/dijit/form/nls/sl/ComboBox.js | 2 +
source/lib/dijit/form/nls/sl/Textarea.js | 2 +
source/lib/dijit/form/nls/sl/validate.js | 2 +
source/lib/dijit/form/nls/sv/ComboBox.js | 2 +
source/lib/dijit/form/nls/sv/Textarea.js | 2 +
source/lib/dijit/form/nls/sv/validate.js | 2 +
source/lib/dijit/form/nls/th/ComboBox.js | 2 +
source/lib/dijit/form/nls/th/Textarea.js | 2 +
source/lib/dijit/form/nls/th/validate.js | 2 +
source/lib/dijit/form/nls/tr/ComboBox.js | 2 +
source/lib/dijit/form/nls/tr/Textarea.js | 2 +
source/lib/dijit/form/nls/tr/validate.js | 2 +
source/lib/dijit/form/nls/validate.js | 2 +
source/lib/dijit/form/nls/zh-tw/ComboBox.js | 2 +
source/lib/dijit/form/nls/zh-tw/Textarea.js | 2 +
source/lib/dijit/form/nls/zh-tw/validate.js | 2 +
source/lib/dijit/form/nls/zh/ComboBox.js | 2 +
source/lib/dijit/form/nls/zh/Textarea.js | 2 +
source/lib/dijit/form/nls/zh/validate.js | 2 +
source/lib/dijit/form/templates/Button.html | 17 +
source/lib/dijit/form/templates/CheckBox.html | 7 +
.../lib/dijit/form/templates/ComboButton.html | 23 +
.../lib/dijit/form/templates/DropDownBox.html | 16 +
.../dijit/form/templates/DropDownButton.html | 20 +
.../form/templates/HorizontalSlider.html | 38 +
source/lib/dijit/form/templates/Select.html | 18 +
source/lib/dijit/form/templates/Spinner.html | 27 +
source/lib/dijit/form/templates/TextBox.html | 6 +
.../form/templates/ValidationTextBox.html | 10 +
.../dijit/form/templates/VerticalSlider.html | 46 +
source/lib/dijit/hccss.js | 2 +
source/lib/dijit/icons/commonIcons.css | 1 +
source/lib/dijit/icons/commonIcons_rtl.css | 1 +
source/lib/dijit/icons/editorIcons.css | 1 +
source/lib/dijit/icons/editorIcons_rtl.css | 1 +
.../images/commonIconsObjActDisabled.png | Bin 0 -> 4956 bytes
.../images/commonIconsObjActDisabled_rtl.png | Bin 0 -> 5820 bytes
.../icons/images/commonIconsObjActEnabled.png | Bin 0 -> 12474 bytes
.../images/commonIconsObjActEnabled8bit.png | Bin 0 -> 4334 bytes
.../commonIconsObjActEnabled8bit_rtl.png | Bin 0 -> 5258 bytes
.../images/commonIconsObjActEnabled_rtl.png | Bin 0 -> 10481 bytes
.../icons/images/editorIconsDisabled.png | Bin 0 -> 3289 bytes
.../icons/images/editorIconsDisabled_rtl.png | Bin 0 -> 6965 bytes
.../dijit/icons/images/editorIconsEnabled.png | Bin 0 -> 3846 bytes
.../icons/images/editorIconsEnabled_rtl.png | Bin 0 -> 7144 bytes
.../icons/images/loadingAnimation_rtl.gif | Bin 0 -> 1513 bytes
source/lib/dijit/layout/AccordionContainer.js | 2 +
source/lib/dijit/layout/AccordionPane.js | 2 +
source/lib/dijit/layout/BorderContainer.js | 2 +
source/lib/dijit/layout/ContentPane.js | 2 +
source/lib/dijit/layout/LayoutContainer.js | 2 +
source/lib/dijit/layout/LinkPane.js | 2 +
.../dijit/layout/ScrollingTabController.js | 2 +
source/lib/dijit/layout/SplitContainer.js | 2 +
source/lib/dijit/layout/StackContainer.js | 2 +
source/lib/dijit/layout/StackController.js | 2 +
source/lib/dijit/layout/TabContainer.js | 2 +
source/lib/dijit/layout/TabController.js | 2 +
.../dijit/layout/_ContentPaneResizeMixin.js | 2 +
source/lib/dijit/layout/_LayoutWidget.js | 2 +
source/lib/dijit/layout/_TabContainerBase.js | 2 +
.../layout/templates/AccordionButton.html | 10 +
.../templates/ScrollingTabController.html | 22 +
.../dijit/layout/templates/TabContainer.html | 5 +
.../_ScrollingTabControllerButton.html | 4 +
.../dijit/layout/templates/_TabButton.html | 8 +
source/lib/dijit/layout/utils.js | 2 +
source/lib/dijit/main.js | 2 +
source/lib/dijit/nls/ar/common.js | 2 +
source/lib/dijit/nls/ar/loading.js | 2 +
source/lib/dijit/nls/az/common.js | 2 +
source/lib/dijit/nls/az/loading.js | 2 +
source/lib/dijit/nls/ca/common.js | 2 +
source/lib/dijit/nls/ca/loading.js | 2 +
source/lib/dijit/nls/common.js | 2 +
source/lib/dijit/nls/cs/common.js | 2 +
source/lib/dijit/nls/cs/loading.js | 2 +
source/lib/dijit/nls/da/common.js | 2 +
source/lib/dijit/nls/da/loading.js | 2 +
source/lib/dijit/nls/de/common.js | 2 +
source/lib/dijit/nls/de/loading.js | 2 +
source/lib/dijit/nls/el/common.js | 2 +
source/lib/dijit/nls/el/loading.js | 2 +
source/lib/dijit/nls/es/common.js | 2 +
source/lib/dijit/nls/es/loading.js | 2 +
source/lib/dijit/nls/fi/common.js | 2 +
source/lib/dijit/nls/fi/loading.js | 2 +
source/lib/dijit/nls/fr/common.js | 2 +
source/lib/dijit/nls/fr/loading.js | 2 +
source/lib/dijit/nls/he/common.js | 2 +
source/lib/dijit/nls/he/loading.js | 2 +
source/lib/dijit/nls/hr/common.js | 2 +
source/lib/dijit/nls/hr/loading.js | 2 +
source/lib/dijit/nls/hu/common.js | 2 +
source/lib/dijit/nls/hu/loading.js | 2 +
source/lib/dijit/nls/it/common.js | 2 +
source/lib/dijit/nls/it/loading.js | 2 +
source/lib/dijit/nls/ja/common.js | 2 +
source/lib/dijit/nls/ja/loading.js | 2 +
source/lib/dijit/nls/kk/common.js | 2 +
source/lib/dijit/nls/kk/loading.js | 2 +
source/lib/dijit/nls/ko/common.js | 2 +
source/lib/dijit/nls/ko/loading.js | 2 +
source/lib/dijit/nls/loading.js | 2 +
source/lib/dijit/nls/nb/common.js | 2 +
source/lib/dijit/nls/nb/loading.js | 2 +
source/lib/dijit/nls/nl/common.js | 2 +
source/lib/dijit/nls/nl/loading.js | 2 +
source/lib/dijit/nls/pl/common.js | 2 +
source/lib/dijit/nls/pl/loading.js | 2 +
source/lib/dijit/nls/pt-pt/common.js | 2 +
source/lib/dijit/nls/pt-pt/loading.js | 2 +
source/lib/dijit/nls/pt/common.js | 2 +
source/lib/dijit/nls/pt/loading.js | 2 +
source/lib/dijit/nls/ro/common.js | 2 +
source/lib/dijit/nls/ro/loading.js | 2 +
source/lib/dijit/nls/ru/common.js | 2 +
source/lib/dijit/nls/ru/loading.js | 2 +
source/lib/dijit/nls/sk/common.js | 2 +
source/lib/dijit/nls/sk/loading.js | 2 +
source/lib/dijit/nls/sl/common.js | 2 +
source/lib/dijit/nls/sl/loading.js | 2 +
source/lib/dijit/nls/sv/common.js | 2 +
source/lib/dijit/nls/sv/loading.js | 2 +
source/lib/dijit/nls/th/common.js | 2 +
source/lib/dijit/nls/th/loading.js | 2 +
source/lib/dijit/nls/tr/common.js | 2 +
source/lib/dijit/nls/tr/loading.js | 2 +
source/lib/dijit/nls/zh-tw/common.js | 2 +
source/lib/dijit/nls/zh-tw/loading.js | 2 +
source/lib/dijit/nls/zh/common.js | 2 +
source/lib/dijit/nls/zh/loading.js | 2 +
source/lib/dijit/package.json | 26 +
source/lib/dijit/place.js | 2 +
source/lib/dijit/popup.js | 2 +
source/lib/dijit/registry.js | 2 +
source/lib/dijit/templates/Calendar.html | 35 +
.../lib/dijit/templates/CheckedMenuItem.html | 9 +
source/lib/dijit/templates/ColorPalette.html | 5 +
source/lib/dijit/templates/Dialog.html | 10 +
source/lib/dijit/templates/InlineEditBox.html | 10 +
source/lib/dijit/templates/Menu.html | 4 +
source/lib/dijit/templates/MenuBar.html | 1 +
source/lib/dijit/templates/MenuBarItem.html | 4 +
source/lib/dijit/templates/MenuItem.html | 13 +
source/lib/dijit/templates/MenuSeparator.html | 10 +
source/lib/dijit/templates/ProgressBar.html | 8 +
source/lib/dijit/templates/TimePicker.html | 9 +
source/lib/dijit/templates/TitlePane.html | 17 +
source/lib/dijit/templates/Tooltip.html | 4 +
source/lib/dijit/templates/TooltipDialog.html | 6 +
source/lib/dijit/templates/Tree.html | 3 +
source/lib/dijit/templates/TreeNode.html | 14 +
source/lib/dijit/themes/a11y/README.txt | 3 +
source/lib/dijit/themes/a11y/colors3x4.png | Bin 0 -> 282 bytes
source/lib/dijit/themes/a11y/colors7x10.png | Bin 0 -> 808 bytes
.../themes/a11y/indeterminate_progress.gif | Bin 0 -> 2907 bytes
source/lib/dijit/themes/claro/Calendar.css | 1 +
source/lib/dijit/themes/claro/Calendar.less | 277 +
.../lib/dijit/themes/claro/Calendar_rtl.css | 1 +
.../lib/dijit/themes/claro/Calendar_rtl.less | 19 +
.../lib/dijit/themes/claro/ColorPalette.css | 1 +
.../lib/dijit/themes/claro/ColorPalette.less | 44 +
source/lib/dijit/themes/claro/Common.css | 1 +
source/lib/dijit/themes/claro/Common.less | 86 +
source/lib/dijit/themes/claro/Dialog.css | 1 +
source/lib/dijit/themes/claro/Dialog.less | 209 +
source/lib/dijit/themes/claro/Dialog_rtl.css | 1 +
source/lib/dijit/themes/claro/Dialog_rtl.less | 13 +
source/lib/dijit/themes/claro/Editor.css | 1 +
source/lib/dijit/themes/claro/Editor.less | 57 +
source/lib/dijit/themes/claro/Editor_rtl.css | 1 +
source/lib/dijit/themes/claro/Editor_rtl.less | 9 +
.../lib/dijit/themes/claro/InlineEditBox.css | 1 +
.../lib/dijit/themes/claro/InlineEditBox.less | 25 +
source/lib/dijit/themes/claro/Menu.css | 1 +
source/lib/dijit/themes/claro/Menu.less | 179 +
source/lib/dijit/themes/claro/Menu_rtl.css | 1 +
source/lib/dijit/themes/claro/Menu_rtl.less | 11 +
source/lib/dijit/themes/claro/ProgressBar.css | 1 +
.../lib/dijit/themes/claro/ProgressBar.less | 64 +
source/lib/dijit/themes/claro/README | 11 +
source/lib/dijit/themes/claro/TimePicker.css | 1 +
source/lib/dijit/themes/claro/TimePicker.less | 115 +
.../lib/dijit/themes/claro/TimePicker_rtl.css | 1 +
.../dijit/themes/claro/TimePicker_rtl.less | 12 +
source/lib/dijit/themes/claro/TitlePane.css | 1 +
source/lib/dijit/themes/claro/TitlePane.less | 70 +
.../lib/dijit/themes/claro/TitlePane_rtl.css | 1 +
.../lib/dijit/themes/claro/TitlePane_rtl.less | 7 +
source/lib/dijit/themes/claro/Toolbar.css | 1 +
source/lib/dijit/themes/claro/Toolbar.less | 173 +
source/lib/dijit/themes/claro/Toolbar_rtl.css | 1 +
.../lib/dijit/themes/claro/Toolbar_rtl.less | 32 +
source/lib/dijit/themes/claro/Tree.css | 1 +
source/lib/dijit/themes/claro/Tree.less | 127 +
source/lib/dijit/themes/claro/claro.css | 1 +
source/lib/dijit/themes/claro/claro_rtl.css | 1 +
source/lib/dijit/themes/claro/compile.js | 52 +
source/lib/dijit/themes/claro/document.css | 1 +
source/lib/dijit/themes/claro/document.less | 45 +
source/lib/dijit/themes/claro/form/Button.css | 1 +
.../lib/dijit/themes/claro/form/Button.less | 164 +
.../dijit/themes/claro/form/Button_rtl.css | 1 +
.../dijit/themes/claro/form/Button_rtl.less | 16 +
.../lib/dijit/themes/claro/form/Checkbox.css | 1 +
.../lib/dijit/themes/claro/form/Checkbox.less | 79 +
source/lib/dijit/themes/claro/form/Common.css | 1 +
.../lib/dijit/themes/claro/form/Common.less | 241 +
.../dijit/themes/claro/form/Common_rtl.css | 1 +
.../dijit/themes/claro/form/Common_rtl.less | 8 +
.../dijit/themes/claro/form/NumberSpinner.css | 1 +
.../themes/claro/form/NumberSpinner.less | 150 +
.../dijit/themes/claro/form/RadioButton.css | 1 +
.../dijit/themes/claro/form/RadioButton.less | 84 +
source/lib/dijit/themes/claro/form/Select.css | 1 +
.../lib/dijit/themes/claro/form/Select.less | 98 +
source/lib/dijit/themes/claro/form/Slider.css | 1 +
.../lib/dijit/themes/claro/form/Slider.less | 344 +
.../dijit/themes/claro/form/Slider_rtl.css | 1 +
.../dijit/themes/claro/form/Slider_rtl.less | 33 +
.../themes/claro/form/images/buttonArrows.png | Bin 0 -> 297 bytes
.../claro/form/images/buttonDisabled.png | Bin 0 -> 105 bytes
.../claro/form/images/buttonDisabled.svg | 23 +
.../claro/form/images/buttonEnabled.png | Bin 0 -> 122 bytes
.../claro/form/images/buttonEnabled.svg | 24 +
.../images/checkboxAndRadioButtons_IE6.png | Bin 0 -> 2160 bytes
.../form/images/checkboxRadioButtonStates.png | Bin 0 -> 3438 bytes
.../claro/form/images/commonFormArrows.png | Bin 0 -> 314 bytes
.../dijit/themes/claro/form/images/error.png | Bin 0 -> 355 bytes
.../themes/claro/form/images/sliderThumbs.png | Bin 0 -> 1222 bytes
.../themes/claro/images/activeGradient.png | Bin 0 -> 146 bytes
.../themes/claro/images/activeGradient.svg | 19 +
.../dijit/themes/claro/images/calendar.png | Bin 0 -> 194 bytes
.../themes/claro/images/calendarArrows.png | Bin 0 -> 1425 bytes
.../claro/images/calendarArrows8bit.png | Bin 0 -> 1053 bytes
.../themes/claro/images/checkmarkNoBorder.gif | Bin 0 -> 1658 bytes
.../themes/claro/images/checkmarkNoBorder.png | Bin 0 -> 4401 bytes
.../themes/claro/images/dialogCloseIcon.png | Bin 0 -> 1660 bytes
.../claro/images/dialogCloseIcon8bit.png | Bin 0 -> 705 bytes
source/lib/dijit/themes/claro/images/dnd.png | Bin 0 -> 2127 bytes
.../themes/claro/images/loadingAnimation.gif | Bin 0 -> 718 bytes
.../themes/claro/images/progressBarAnim.gif | Bin 0 -> 4458 bytes
.../themes/claro/images/progressBarFull.png | Bin 0 -> 177 bytes
.../themes/claro/images/spriteArrows.png | Bin 0 -> 233 bytes
.../themes/claro/images/standardGradient.png | Bin 0 -> 153 bytes
.../themes/claro/images/standardGradient.svg | 18 +
.../lib/dijit/themes/claro/images/tooltip.png | Bin 0 -> 1818 bytes
.../dijit/themes/claro/images/tooltip8bit.png | Bin 0 -> 589 bytes
.../themes/claro/images/treeExpandImages.png | Bin 0 -> 676 bytes
.../claro/images/treeExpandImages8bit.png | Bin 0 -> 799 bytes
.../claro/layout/AccordionContainer.css | 1 +
.../claro/layout/AccordionContainer.less | 111 +
.../themes/claro/layout/BorderContainer.css | 1 +
.../themes/claro/layout/BorderContainer.less | 124 +
.../dijit/themes/claro/layout/ContentPane.css | 1 +
.../themes/claro/layout/ContentPane.less | 43 +
.../themes/claro/layout/TabContainer.css | 1 +
.../themes/claro/layout/TabContainer.less | 366 +
.../themes/claro/layout/TabContainer_rtl.css | 1 +
.../themes/claro/layout/TabContainer_rtl.less | 7 +
.../claro/layout/images/tabBottomSelected.png | Bin 0 -> 118 bytes
.../claro/layout/images/tabBottomSelected.svg | 18 +
.../layout/images/tabBottomUnselected.png | Bin 0 -> 110 bytes
.../layout/images/tabBottomUnselected.svg | 19 +
.../themes/claro/layout/images/tabClose.png | Bin 0 -> 1410 bytes
.../claro/layout/images/tabLeftSelected.png | Bin 0 -> 213 bytes
.../claro/layout/images/tabLeftSelected.svg | 17 +
.../claro/layout/images/tabLeftUnselected.png | Bin 0 -> 106 bytes
.../claro/layout/images/tabLeftUnselected.svg | 16 +
.../themes/claro/layout/images/tabNested.png | Bin 0 -> 272 bytes
.../claro/layout/images/tabRightSelected.png | Bin 0 -> 210 bytes
.../claro/layout/images/tabRightSelected.svg | 17 +
.../layout/images/tabRightUnselected.png | Bin 0 -> 105 bytes
.../layout/images/tabRightUnselected.svg | 16 +
.../claro/layout/images/tabTopSelected.png | Bin 0 -> 120 bytes
.../claro/layout/images/tabTopSelected.svg | 18 +
.../claro/layout/images/tabTopUnselected.png | Bin 0 -> 121 bytes
.../claro/layout/images/tabTopUnselected.svg | 19 +
source/lib/dijit/themes/claro/variables.less | 378 +
source/lib/dijit/themes/dijit.css | 1 +
source/lib/dijit/themes/dijit_rtl.css | 1 +
source/lib/dijit/themes/nihilo/Calendar.css | 1 +
.../lib/dijit/themes/nihilo/Calendar_rtl.css | 1 +
.../lib/dijit/themes/nihilo/ColorPalette.css | 1 +
source/lib/dijit/themes/nihilo/Common.css | 1 +
source/lib/dijit/themes/nihilo/Dialog.css | 1 +
source/lib/dijit/themes/nihilo/Dialog_rtl.css | 1 +
source/lib/dijit/themes/nihilo/Editor.css | 1 +
source/lib/dijit/themes/nihilo/Editor_rtl.css | 1 +
source/lib/dijit/themes/nihilo/Menu.css | 1 +
source/lib/dijit/themes/nihilo/Menu_rtl.css | 1 +
.../lib/dijit/themes/nihilo/ProgressBar.css | 1 +
source/lib/dijit/themes/nihilo/TimePicker.css | 1 +
.../dijit/themes/nihilo/TimePicker_rtl.css | 1 +
source/lib/dijit/themes/nihilo/TitlePane.css | 1 +
.../lib/dijit/themes/nihilo/TitlePane_rtl.css | 1 +
source/lib/dijit/themes/nihilo/Toolbar.css | 1 +
source/lib/dijit/themes/nihilo/Tree.css | 1 +
source/lib/dijit/themes/nihilo/Tree_rtl.css | 1 +
.../lib/dijit/themes/nihilo/form/Button.css | 1 +
.../dijit/themes/nihilo/form/Button_rtl.css | 1 +
.../lib/dijit/themes/nihilo/form/Checkbox.css | 1 +
.../lib/dijit/themes/nihilo/form/Common.css | 1 +
.../dijit/themes/nihilo/form/RadioButton.css | 1 +
.../lib/dijit/themes/nihilo/form/Select.css | 1 +
.../lib/dijit/themes/nihilo/form/Slider.css | 1 +
.../dijit/themes/nihilo/form/Slider_rtl.css | 1 +
.../dijit/themes/nihilo/form/TimeTextBox.css | 1 +
.../nihilo/images/accordionItemActive.png | Bin 0 -> 148 bytes
.../themes/nihilo/images/buttonActive.png | Bin 0 -> 139 bytes
.../themes/nihilo/images/buttonDisabled.png | Bin 0 -> 139 bytes
.../themes/nihilo/images/buttonEnabled.png | Bin 0 -> 135 bytes
.../themes/nihilo/images/buttonHover.png | Bin 0 -> 134 bytes
.../dijit/themes/nihilo/images/dndCopy.png | Bin 0 -> 777 bytes
.../dijit/themes/nihilo/images/dndMove.png | Bin 0 -> 726 bytes
.../dijit/themes/nihilo/images/dndNoCopy.png | Bin 0 -> 1332 bytes
.../dijit/themes/nihilo/images/dndNoMove.png | Bin 0 -> 991 bytes
source/lib/dijit/themes/nihilo/images/no.gif | Bin 0 -> 179 bytes
.../nihilo/images/preciseSliderThumb.gif | Bin 0 -> 258 bytes
.../nihilo/images/preciseSliderThumb.png | Bin 0 -> 413 bytes
.../nihilo/images/preciseSliderThumbFocus.gif | Bin 0 -> 258 bytes
.../nihilo/images/preciseSliderThumbFocus.png | Bin 0 -> 434 bytes
.../themes/nihilo/images/progressBarAnim.gif | Bin 0 -> 7064 bytes
.../themes/nihilo/images/progressBarEmpty.png | Bin 0 -> 314 bytes
.../themes/nihilo/images/progressBarFull.png | Bin 0 -> 746 bytes
.../themes/nihilo/images/sliderEmpty.png | Bin 0 -> 114 bytes
.../nihilo/images/sliderEmptyVertical.png | Bin 0 -> 114 bytes
.../dijit/themes/nihilo/images/sliderFull.png | Bin 0 -> 130 bytes
.../themes/nihilo/images/sliderFullFocus.png | Bin 0 -> 132 bytes
.../nihilo/images/sliderFullVertical.png | Bin 0 -> 126 bytes
.../nihilo/images/sliderFullVerticalFocus.png | Bin 0 -> 126 bytes
.../themes/nihilo/images/sliderThumb.gif | Bin 0 -> 238 bytes
.../themes/nihilo/images/sliderThumb.png | Bin 0 -> 413 bytes
.../themes/nihilo/images/sliderThumbFocus.gif | Bin 0 -> 238 bytes
.../themes/nihilo/images/sliderThumbFocus.png | Bin 0 -> 421 bytes
.../images/splitContainerSizerH-thumb.png | Bin 0 -> 127 bytes
.../nihilo/images/splitContainerSizerH.png | Bin 0 -> 121 bytes
.../images/splitContainerSizerV-thumb.png | Bin 0 -> 129 bytes
.../nihilo/images/splitContainerSizerV.png | Bin 0 -> 116 bytes
.../themes/nihilo/images/spriteArrows.gif | Bin 0 -> 446 bytes
.../themes/nihilo/images/spriteArrows.png | Bin 0 -> 720 bytes
.../themes/nihilo/images/spriteCheckbox.gif | Bin 0 -> 774 bytes
.../themes/nihilo/images/spriteCheckbox.png | Bin 0 -> 707 bytes
.../themes/nihilo/images/spriteDivIcons.gif | Bin 0 -> 875 bytes
.../themes/nihilo/images/spriteDivIcons.png | Bin 0 -> 1062 bytes
.../themes/nihilo/images/spriteRadio.gif | Bin 0 -> 1137 bytes
.../themes/nihilo/images/spriteRadio.png | Bin 0 -> 1073 bytes
.../nihilo/images/spriteRoundedIconsSmall.gif | Bin 0 -> 1863 bytes
.../nihilo/images/spriteRoundedIconsSmall.png | Bin 0 -> 2195 bytes
.../dijit/themes/nihilo/images/spriteTree.gif | Bin 0 -> 233 bytes
.../dijit/themes/nihilo/images/spriteTree.png | Bin 0 -> 337 bytes
.../themes/nihilo/images/spriteTree_rtl.gif | Bin 0 -> 233 bytes
.../themes/nihilo/images/spriteTree_rtl.png | Bin 0 -> 335 bytes
.../themes/nihilo/images/tabBottomActiveC.gif | Bin 0 -> 518 bytes
.../nihilo/images/tabBottomEnabledC.gif | Bin 0 -> 511 bytes
.../themes/nihilo/images/tabBottomHoverC.gif | Bin 0 -> 542 bytes
.../nihilo/images/tabContainerSprite.gif | Bin 0 -> 1285 bytes
.../dijit/themes/nihilo/images/titleBar.png | Bin 0 -> 148 bytes
.../themes/nihilo/images/titleBarActive.png | Bin 0 -> 155 bytes
.../nihilo/images/tooltipConnectorDown.gif | Bin 0 -> 205 bytes
.../nihilo/images/tooltipConnectorDown.png | Bin 0 -> 342 bytes
.../nihilo/images/tooltipConnectorLeft.gif | Bin 0 -> 205 bytes
.../nihilo/images/tooltipConnectorLeft.png | Bin 0 -> 361 bytes
.../nihilo/images/tooltipConnectorRight.gif | Bin 0 -> 204 bytes
.../nihilo/images/tooltipConnectorRight.png | Bin 0 -> 363 bytes
.../nihilo/images/tooltipConnectorUp.gif | Bin 0 -> 205 bytes
.../nihilo/images/tooltipConnectorUp.png | Bin 0 -> 319 bytes
.../nihilo/images/treeExpand_loading.gif | Bin 0 -> 662 bytes
.../dijit/themes/nihilo/images/treeHover.png | Bin 0 -> 112 bytes
.../lib/dijit/themes/nihilo/images/treeI.gif | Bin 0 -> 71 bytes
.../dijit/themes/nihilo/images/treeI_half.gif | Bin 0 -> 65 bytes
.../themes/nihilo/images/treeI_half_rtl.gif | Bin 0 -> 66 bytes
.../dijit/themes/nihilo/images/treeI_rtl.gif | Bin 0 -> 72 bytes
.../nihilo/images/validationInputBg.gif | Bin 0 -> 93 bytes
.../nihilo/images/validationInputBg.png | Bin 0 -> 126 bytes
.../dijit/themes/nihilo/images/warning.png | Bin 0 -> 1275 bytes
.../nihilo/layout/AccordionContainer.css | 1 +
.../nihilo/layout/AccordionContainer_rtl.css | 1 +
.../themes/nihilo/layout/BorderContainer.css | 1 +
.../themes/nihilo/layout/ContentPane.css | 1 +
.../themes/nihilo/layout/SplitContainer.css | 1 +
.../themes/nihilo/layout/TabContainer.css | 1 +
.../themes/nihilo/layout/TabContainer_rtl.css | 1 +
source/lib/dijit/themes/nihilo/nihilo.css | 1 +
source/lib/dijit/themes/nihilo/nihilo_rtl.css | 1 +
source/lib/dijit/themes/soria/Calendar.css | 1 +
.../lib/dijit/themes/soria/Calendar_rtl.css | 1 +
.../lib/dijit/themes/soria/ColorPalette.css | 1 +
source/lib/dijit/themes/soria/Common.css | 1 +
source/lib/dijit/themes/soria/Dialog.css | 1 +
source/lib/dijit/themes/soria/Dialog_rtl.css | 1 +
source/lib/dijit/themes/soria/Editor.css | 1 +
source/lib/dijit/themes/soria/Editor_rtl.css | 1 +
source/lib/dijit/themes/soria/Menu.css | 1 +
source/lib/dijit/themes/soria/Menu_rtl.css | 1 +
source/lib/dijit/themes/soria/ProgressBar.css | 1 +
source/lib/dijit/themes/soria/TimePicker.css | 1 +
.../lib/dijit/themes/soria/TimePicker_rtl.css | 1 +
source/lib/dijit/themes/soria/TitlePane.css | 1 +
.../lib/dijit/themes/soria/TitlePane_rtl.css | 1 +
source/lib/dijit/themes/soria/Toolbar.css | 1 +
source/lib/dijit/themes/soria/Tree.css | 1 +
source/lib/dijit/themes/soria/Tree_rtl.css | 1 +
source/lib/dijit/themes/soria/form/Button.css | 1 +
.../dijit/themes/soria/form/Button_rtl.css | 1 +
.../lib/dijit/themes/soria/form/Checkbox.css | 1 +
source/lib/dijit/themes/soria/form/Common.css | 1 +
.../dijit/themes/soria/form/RadioButton.css | 1 +
source/lib/dijit/themes/soria/form/Select.css | 1 +
source/lib/dijit/themes/soria/form/Slider.css | 1 +
.../dijit/themes/soria/form/Slider_rtl.css | 1 +
.../dijit/themes/soria/form/TimeTextBox.css | 1 +
.../soria/images/accordionItemActive.gif | Bin 0 -> 174 bytes
.../soria/images/accordionItemActive.png | Bin 0 -> 171 bytes
.../themes/soria/images/buttonActive.png | Bin 0 -> 187 bytes
.../themes/soria/images/buttonDisabled.png | Bin 0 -> 187 bytes
.../themes/soria/images/buttonEnabled.png | Bin 0 -> 174 bytes
.../dijit/themes/soria/images/buttonHover.png | Bin 0 -> 160 bytes
.../lib/dijit/themes/soria/images/dndCopy.png | Bin 0 -> 777 bytes
.../lib/dijit/themes/soria/images/dndMove.png | Bin 0 -> 726 bytes
.../dijit/themes/soria/images/dndNoCopy.png | Bin 0 -> 1332 bytes
.../dijit/themes/soria/images/dndNoMove.png | Bin 0 -> 991 bytes
.../soria/images/preciseSliderThumb.gif | Bin 0 -> 258 bytes
.../soria/images/preciseSliderThumb.png | Bin 0 -> 413 bytes
.../soria/images/preciseSliderThumbFocus.gif | Bin 0 -> 258 bytes
.../soria/images/preciseSliderThumbFocus.png | Bin 0 -> 434 bytes
.../themes/soria/images/progressBarAnim.gif | Bin 0 -> 9304 bytes
.../themes/soria/images/progressBarEmpty.png | Bin 0 -> 232 bytes
.../themes/soria/images/progressBarFull.png | Bin 0 -> 251 bytes
.../dijit/themes/soria/images/sliderEmpty.png | Bin 0 -> 114 bytes
.../soria/images/sliderEmptyVertical.png | Bin 0 -> 114 bytes
.../dijit/themes/soria/images/sliderFull.png | Bin 0 -> 131 bytes
.../themes/soria/images/sliderFullFocus.png | Bin 0 -> 146 bytes
.../soria/images/sliderFullVertical.png | Bin 0 -> 127 bytes
.../soria/images/sliderFullVerticalFocus.png | Bin 0 -> 143 bytes
.../dijit/themes/soria/images/sliderThumb.gif | Bin 0 -> 238 bytes
.../dijit/themes/soria/images/sliderThumb.png | Bin 0 -> 413 bytes
.../themes/soria/images/sliderThumbFocus.gif | Bin 0 -> 238 bytes
.../themes/soria/images/sliderThumbFocus.png | Bin 0 -> 421 bytes
.../images/splitContainerSizerH-thumb.png | Bin 0 -> 125 bytes
.../soria/images/splitContainerSizerH.png | Bin 0 -> 127 bytes
.../images/splitContainerSizerV-thumb.png | Bin 0 -> 121 bytes
.../soria/images/splitContainerSizerV.png | Bin 0 -> 124 bytes
.../themes/soria/images/spriteArrows.gif | Bin 0 -> 446 bytes
.../themes/soria/images/spriteArrows.png | Bin 0 -> 720 bytes
.../themes/soria/images/spriteCheckbox.gif | Bin 0 -> 774 bytes
.../themes/soria/images/spriteCheckbox.png | Bin 0 -> 707 bytes
.../themes/soria/images/spriteDivIcons.gif | Bin 0 -> 884 bytes
.../themes/soria/images/spriteDivIcons.png | Bin 0 -> 1114 bytes
.../dijit/themes/soria/images/spriteRadio.gif | Bin 0 -> 1137 bytes
.../dijit/themes/soria/images/spriteRadio.png | Bin 0 -> 1073 bytes
.../soria/images/spriteRoundedIconsSmall.gif | Bin 0 -> 1937 bytes
.../soria/images/spriteRoundedIconsSmall.png | Bin 0 -> 3187 bytes
.../images/spriteRoundedIconsSmallBl.gif | Bin 0 -> 1907 bytes
.../images/spriteRoundedIconsSmallBl.png | Bin 0 -> 3010 bytes
.../dijit/themes/soria/images/spriteTree.gif | Bin 0 -> 233 bytes
.../dijit/themes/soria/images/spriteTree.png | Bin 0 -> 337 bytes
.../themes/soria/images/spriteTree_rtl.gif | Bin 0 -> 233 bytes
.../themes/soria/images/spriteTree_rtl.png | Bin 0 -> 335 bytes
.../themes/soria/images/tabBottomActiveC.gif | Bin 0 -> 482 bytes
.../themes/soria/images/tabBottomEnabledC.gif | Bin 0 -> 337 bytes
.../soria/images/tabBottomEnabledSpriteLR.gif | Bin 0 -> 676 bytes
.../themes/soria/images/tabBottomHoverC.gif | Bin 0 -> 280 bytes
.../soria/images/tabContainerSprite.gif | Bin 0 -> 2570 bytes
.../themes/soria/images/tabLeftChecked.gif | Bin 0 -> 2005 bytes
.../themes/soria/images/tabRightChecked.gif | Bin 0 -> 2003 bytes
.../dijit/themes/soria/images/titleBar.png | Bin 0 -> 183 bytes
.../themes/soria/images/titleBarActive.png | Bin 0 -> 183 bytes
.../soria/images/tooltipConnectorDown.gif | Bin 0 -> 205 bytes
.../soria/images/tooltipConnectorDown.png | Bin 0 -> 342 bytes
.../soria/images/tooltipConnectorLeft.gif | Bin 0 -> 205 bytes
.../soria/images/tooltipConnectorLeft.png | Bin 0 -> 361 bytes
.../soria/images/tooltipConnectorRight.gif | Bin 0 -> 204 bytes
.../soria/images/tooltipConnectorRight.png | Bin 0 -> 363 bytes
.../soria/images/tooltipConnectorUp.gif | Bin 0 -> 205 bytes
.../soria/images/tooltipConnectorUp.png | Bin 0 -> 319 bytes
.../soria/images/treeExpand_loading.gif | Bin 0 -> 662 bytes
.../dijit/themes/soria/images/treeHover.png | Bin 0 -> 112 bytes
.../lib/dijit/themes/soria/images/treeI.gif | Bin 0 -> 71 bytes
.../dijit/themes/soria/images/treeI_half.gif | Bin 0 -> 65 bytes
.../themes/soria/images/treeI_half_rtl.gif | Bin 0 -> 66 bytes
.../dijit/themes/soria/images/treeI_rtl.gif | Bin 0 -> 72 bytes
.../themes/soria/images/validationInputBg.gif | Bin 0 -> 93 bytes
.../themes/soria/images/validationInputBg.png | Bin 0 -> 126 bytes
.../lib/dijit/themes/soria/images/warning.png | Bin 0 -> 1275 bytes
.../soria/layout/AccordionContainer.css | 1 +
.../soria/layout/AccordionContainer_rtl.css | 1 +
.../themes/soria/layout/BorderContainer.css | 1 +
.../dijit/themes/soria/layout/ContentPane.css | 1 +
.../themes/soria/layout/SplitContainer.css | 1 +
.../themes/soria/layout/TabContainer.css | 1 +
.../themes/soria/layout/TabContainer_rtl.css | 1 +
source/lib/dijit/themes/soria/soria.css | 1 +
source/lib/dijit/themes/soria/soria_rtl.css | 1 +
source/lib/dijit/themes/tundra/Calendar.css | 1 +
.../lib/dijit/themes/tundra/Calendar_rtl.css | 1 +
.../lib/dijit/themes/tundra/ColorPalette.css | 1 +
source/lib/dijit/themes/tundra/Common.css | 1 +
source/lib/dijit/themes/tundra/Dialog.css | 1 +
source/lib/dijit/themes/tundra/Dialog_rtl.css | 1 +
source/lib/dijit/themes/tundra/Editor.css | 1 +
source/lib/dijit/themes/tundra/Editor_rtl.css | 1 +
source/lib/dijit/themes/tundra/Menu.css | 1 +
source/lib/dijit/themes/tundra/Menu_rtl.css | 1 +
.../lib/dijit/themes/tundra/ProgressBar.css | 1 +
source/lib/dijit/themes/tundra/TimePicker.css | 1 +
.../dijit/themes/tundra/TimePicker_rtl.css | 1 +
source/lib/dijit/themes/tundra/TitlePane.css | 1 +
.../lib/dijit/themes/tundra/TitlePane_rtl.css | 1 +
source/lib/dijit/themes/tundra/Toolbar.css | 1 +
source/lib/dijit/themes/tundra/Tree.css | 1 +
source/lib/dijit/themes/tundra/Tree_rtl.css | 1 +
.../lib/dijit/themes/tundra/form/Button.css | 1 +
.../lib/dijit/themes/tundra/form/Checkbox.css | 1 +
.../lib/dijit/themes/tundra/form/Common.css | 1 +
.../dijit/themes/tundra/form/RadioButton.css | 1 +
.../lib/dijit/themes/tundra/form/Select.css | 1 +
.../lib/dijit/themes/tundra/form/Slider.css | 1 +
.../dijit/themes/tundra/form/Slider_rtl.css | 1 +
.../tundra/images/accordionItemActive.gif | Bin 0 -> 107 bytes
.../tundra/images/accordionItemHover.gif | Bin 0 -> 171 bytes
.../themes/tundra/images/buttonActive.png | Bin 0 -> 129 bytes
.../themes/tundra/images/buttonDisabled.png | Bin 0 -> 135 bytes
.../themes/tundra/images/buttonEnabled.png | Bin 0 -> 120 bytes
.../themes/tundra/images/buttonHover.png | Bin 0 -> 144 bytes
.../themes/tundra/images/calendarDayLabel.png | Bin 0 -> 161 bytes
.../tundra/images/calendarMonthLabel.png | Bin 0 -> 162 bytes
.../tundra/images/calendarYearLabel.png | Bin 0 -> 172 bytes
.../dijit/themes/tundra/images/checkmark.gif | Bin 0 -> 2060 bytes
.../dijit/themes/tundra/images/checkmark.png | Bin 0 -> 5529 bytes
.../tundra/images/checkmarkNoBorder.gif | Bin 0 -> 1658 bytes
.../tundra/images/checkmarkNoBorder.png | Bin 0 -> 4401 bytes
.../dijit/themes/tundra/images/circleIcon.gif | Bin 0 -> 204 bytes
.../dijit/themes/tundra/images/circleIcon.png | Bin 0 -> 2975 bytes
.../themes/tundra/images/comboArrowDown.gif | Bin 0 -> 49 bytes
.../tundra/images/dijitProgressBarAnim.gif | Bin 0 -> 1676 bytes
.../tundra/images/dijitProgressBarAnim.psd | Bin 0 -> 40142 bytes
.../dijit/themes/tundra/images/dndCopy.png | Bin 0 -> 777 bytes
.../dijit/themes/tundra/images/dndMove.png | Bin 0 -> 726 bytes
.../dijit/themes/tundra/images/dndNoCopy.png | Bin 0 -> 1332 bytes
.../dijit/themes/tundra/images/dndNoMove.png | Bin 0 -> 991 bytes
.../tundra/images/dojoTundraGradientBg.gif | Bin 0 -> 65 bytes
.../tundra/images/dojoTundraGradientBg.png | Bin 0 -> 135 bytes
.../themes/tundra/images/doubleArrowDown.png | Bin 0 -> 152 bytes
.../themes/tundra/images/doubleArrowUp.png | Bin 0 -> 158 bytes
.../themes/tundra/images/folderClosed.gif | Bin 0 -> 933 bytes
.../themes/tundra/images/folderOpened.gif | Bin 0 -> 941 bytes
source/lib/dijit/themes/tundra/images/i.gif | Bin 0 -> 48 bytes
.../lib/dijit/themes/tundra/images/i_half.gif | Bin 0 -> 63 bytes
.../dijit/themes/tundra/images/i_half_rtl.gif | Bin 0 -> 61 bytes
.../lib/dijit/themes/tundra/images/i_rtl.gif | Bin 0 -> 48 bytes
.../lib/dijit/themes/tundra/images/leaf.gif | Bin 0 -> 403 bytes
.../dijit/themes/tundra/images/loading.gif | Bin 0 -> 751 bytes
.../lib/dijit/themes/tundra/images/menu.png | Bin 0 -> 140 bytes
.../themes/tundra/images/minusButton.gif | Bin 0 -> 148 bytes
source/lib/dijit/themes/tundra/images/no.gif | Bin 0 -> 179 bytes
source/lib/dijit/themes/tundra/images/noX.gif | Bin 0 -> 80 bytes
.../dijit/themes/tundra/images/plusButton.gif | Bin 0 -> 212 bytes
.../themes/tundra/images/popupMenuBg.gif | Bin 0 -> 151 bytes
.../tundra/images/preciseSliderThumb.gif | Bin 0 -> 212 bytes
.../tundra/images/preciseSliderThumb.png | Bin 0 -> 248 bytes
.../tundra/images/preciseSliderThumbFocus.gif | Bin 0 -> 212 bytes
.../tundra/images/preciseSliderThumbFocus.png | Bin 0 -> 281 bytes
.../tundra/images/progressBarAnim-1.png | Bin 0 -> 288 bytes
.../tundra/images/progressBarAnim-2.png | Bin 0 -> 289 bytes
.../tundra/images/progressBarAnim-3.png | Bin 0 -> 288 bytes
.../tundra/images/progressBarAnim-4.png | Bin 0 -> 287 bytes
.../tundra/images/progressBarAnim-5.png | Bin 0 -> 283 bytes
.../tundra/images/progressBarAnim-6.png | Bin 0 -> 283 bytes
.../tundra/images/progressBarAnim-7.png | Bin 0 -> 284 bytes
.../tundra/images/progressBarAnim-8.png | Bin 0 -> 286 bytes
.../tundra/images/progressBarAnim-9.png | Bin 0 -> 289 bytes
.../themes/tundra/images/progressBarAnim.gif | Bin 0 -> 2624 bytes
.../themes/tundra/images/progressBarAnim.psd | Bin 0 -> 40142 bytes
.../themes/tundra/images/progressBarEmpty.png | Bin 0 -> 164 bytes
.../themes/tundra/images/progressBarFull.png | Bin 0 -> 160 bytes
.../tundra/images/radioButtonActive.png | Bin 0 -> 550 bytes
.../images/radioButtonActiveDisabled.png | Bin 0 -> 517 bytes
.../tundra/images/radioButtonActiveHover.png | Bin 0 -> 646 bytes
.../tundra/images/radioButtonDisabled.png | Bin 0 -> 403 bytes
.../tundra/images/radioButtonEnabled.png | Bin 0 -> 487 bytes
.../themes/tundra/images/radioButtonHover.png | Bin 0 -> 497 bytes
.../themes/tundra/images/sliderEmpty.png | Bin 0 -> 124 bytes
.../tundra/images/sliderEmptyVertical.png | Bin 0 -> 88 bytes
.../dijit/themes/tundra/images/sliderFull.png | Bin 0 -> 135 bytes
.../themes/tundra/images/sliderFullFocus.png | Bin 0 -> 163 bytes
.../tundra/images/sliderFullVertical.png | Bin 0 -> 99 bytes
.../tundra/images/sliderFullVerticalFocus.png | Bin 0 -> 164 bytes
.../themes/tundra/images/sliderThumb.png | Bin 0 -> 241 bytes
.../themes/tundra/images/sliderThumbFocus.gif | Bin 0 -> 216 bytes
.../themes/tundra/images/sliderThumbFocus.png | Bin 0 -> 288 bytes
.../themes/tundra/images/smallArrowDown.png | Bin 0 -> 134 bytes
.../themes/tundra/images/smallArrowUp.png | Bin 0 -> 134 bytes
.../images/splitContainerSizerH-thumb.png | Bin 0 -> 127 bytes
.../tundra/images/splitContainerSizerH.png | Bin 0 -> 140 bytes
.../images/splitContainerSizerV-thumb.png | Bin 0 -> 129 bytes
.../tundra/images/splitContainerSizerV.png | Bin 0 -> 135 bytes
.../themes/tundra/images/spriteArrows.gif | Bin 0 -> 116 bytes
.../themes/tundra/images/spriteArrows.png | Bin 0 -> 338 bytes
.../tundra/images/spriteRoundedIconsSmall.gif | Bin 0 -> 1863 bytes
.../tundra/images/spriteRoundedIconsSmall.png | Bin 0 -> 2195 bytes
.../dijit/themes/tundra/images/tabActive.png | Bin 0 -> 155 bytes
.../dijit/themes/tundra/images/tabClose.gif | Bin 0 -> 193 bytes
.../dijit/themes/tundra/images/tabClose.png | Bin 0 -> 220 bytes
.../themes/tundra/images/tabCloseHover.gif | Bin 0 -> 193 bytes
.../themes/tundra/images/tabCloseHover.png | Bin 0 -> 220 bytes
.../themes/tundra/images/tabDisabled.png | Bin 0 -> 139 bytes
.../dijit/themes/tundra/images/tabEnabled.png | Bin 0 -> 142 bytes
.../dijit/themes/tundra/images/tabHover.gif | Bin 0 -> 156 bytes
.../dijit/themes/tundra/images/tabHover.png | Bin 0 -> 154 bytes
.../dijit/themes/tundra/images/titleBar.png | Bin 0 -> 151 bytes
.../dijit/themes/tundra/images/titleBarBg.gif | Bin 0 -> 97 bytes
.../tundra/images/tooltipConnectorDown.gif | Bin 0 -> 179 bytes
.../tundra/images/tooltipConnectorDown.png | Bin 0 -> 410 bytes
.../tundra/images/tooltipConnectorLeft.gif | Bin 0 -> 193 bytes
.../tundra/images/tooltipConnectorLeft.png | Bin 0 -> 3106 bytes
.../tundra/images/tooltipConnectorRight.gif | Bin 0 -> 194 bytes
.../tundra/images/tooltipConnectorRight.png | Bin 0 -> 3121 bytes
.../tundra/images/tooltipConnectorUp.gif | Bin 0 -> 184 bytes
.../tundra/images/tooltipConnectorUp.png | Bin 0 -> 3092 bytes
.../themes/tundra/images/treeExpand_leaf.gif | Bin 0 -> 839 bytes
.../tundra/images/treeExpand_leaf_rtl.gif | Bin 0 -> 841 bytes
.../tundra/images/treeExpand_loading.gif | Bin 0 -> 1944 bytes
.../themes/tundra/images/treeExpand_minus.gif | Bin 0 -> 211 bytes
.../tundra/images/treeExpand_minus_rtl.gif | Bin 0 -> 210 bytes
.../themes/tundra/images/treeExpand_mius.gif | Bin 0 -> 211 bytes
.../themes/tundra/images/treeExpand_plus.gif | Bin 0 -> 216 bytes
.../tundra/images/treeExpand_plus_rtl.gif | Bin 0 -> 215 bytes
.../dijit/themes/tundra/images/treeHover.png | Bin 0 -> 112 bytes
.../tundra/images/validationInputBg.gif | Bin 0 -> 109 bytes
.../tundra/images/validationInputBg.png | Bin 0 -> 165 bytes
.../dijit/themes/tundra/images/warning.png | Bin 0 -> 1275 bytes
.../tundra/layout/AccordionContainer.css | 1 +
.../themes/tundra/layout/BorderContainer.css | 1 +
.../themes/tundra/layout/ContentPane.css | 1 +
.../themes/tundra/layout/SplitContainer.css | 1 +
.../themes/tundra/layout/TabContainer.css | 1 +
.../themes/tundra/layout/TabContainer_rtl.css | 1 +
source/lib/dijit/themes/tundra/tundra.css | 1 +
source/lib/dijit/themes/tundra/tundra_rtl.css | 1 +
source/lib/dijit/tree/ForestStoreModel.js | 2 +
source/lib/dijit/tree/ObjectStoreModel.js | 2 +
source/lib/dijit/tree/TreeStoreModel.js | 2 +
source/lib/dijit/tree/_dndContainer.js | 2 +
source/lib/dijit/tree/_dndSelector.js | 2 +
source/lib/dijit/tree/dndSource.js | 2 +
source/lib/dijit/tree/model.js | 2 +
source/lib/dijit/typematic.js | 2 +
source/lib/dojo-src/.gitignore | 7 +
source/lib/dojo-src/rebuild-dojo.sh | 44 +
source/lib/dojo-src/tt-rss.profile.js | 65 +
source/lib/dojo/AdapterRegistry.js | 8 +
source/lib/dojo/Deferred.js | 8 +
source/lib/dojo/DeferredList.js | 8 +
source/lib/dojo/Evented.js | 8 +
source/lib/dojo/LICENSE | 195 +
source/lib/dojo/NodeList-data.js | 8 +
source/lib/dojo/NodeList-dom.js | 8 +
source/lib/dojo/NodeList-fx.js | 8 +
source/lib/dojo/NodeList-html.js | 8 +
source/lib/dojo/NodeList-manipulate.js | 8 +
source/lib/dojo/NodeList-traverse.js | 8 +
source/lib/dojo/NodeList.js | 8 +
source/lib/dojo/OpenAjax.js | 192 +
source/lib/dojo/Stateful.js | 8 +
source/lib/dojo/_base/Color.js | 8 +
source/lib/dojo/_base/Deferred.js | 8 +
source/lib/dojo/_base/NodeList.js | 8 +
source/lib/dojo/_base/array.js | 8 +
source/lib/dojo/_base/browser.js | 8 +
source/lib/dojo/_base/config.js | 8 +
.../lib/dojo/_base/configFirefoxExtension.js | 336 +
source/lib/dojo/_base/configNode.js | 87 +
source/lib/dojo/_base/configRhino.js | 121 +
source/lib/dojo/_base/configSpidermonkey.js | 80 +
source/lib/dojo/_base/connect.js | 8 +
source/lib/dojo/_base/declare.js | 8 +
source/lib/dojo/_base/event.js | 8 +
source/lib/dojo/_base/fx.js | 8 +
source/lib/dojo/_base/html.js | 8 +
source/lib/dojo/_base/json.js | 8 +
source/lib/dojo/_base/kernel.js | 8 +
source/lib/dojo/_base/lang.js | 8 +
source/lib/dojo/_base/loader.js | 8 +
source/lib/dojo/_base/query.js | 8 +
source/lib/dojo/_base/sniff.js | 8 +
source/lib/dojo/_base/unload.js | 8 +
source/lib/dojo/_base/url.js | 8 +
source/lib/dojo/_base/window.js | 8 +
source/lib/dojo/_base/xhr.js | 8 +
source/lib/dojo/_firebug/LICENSE | 37 +
source/lib/dojo/_firebug/errorIcon.png | Bin 0 -> 457 bytes
source/lib/dojo/_firebug/firebug.css | 1 +
source/lib/dojo/_firebug/firebug.js | 8 +
source/lib/dojo/_firebug/infoIcon.png | Bin 0 -> 524 bytes
source/lib/dojo/_firebug/tab_lft_norm.png | Bin 0 -> 193 bytes
source/lib/dojo/_firebug/tab_lft_over.png | Bin 0 -> 196 bytes
source/lib/dojo/_firebug/tab_rgt_norm.png | Bin 0 -> 208 bytes
source/lib/dojo/_firebug/tab_rgt_over.png | Bin 0 -> 208 bytes
source/lib/dojo/_firebug/warningIcon.png | Bin 0 -> 516 bytes
source/lib/dojo/aspect.js | 8 +
source/lib/dojo/back.js | 8 +
source/lib/dojo/behavior.js | 8 +
source/lib/dojo/cache.js | 8 +
source/lib/dojo/cldr/LICENSE | 29 +
source/lib/dojo/cldr/README | 18 +
source/lib/dojo/cldr/monetary.js | 8 +
source/lib/dojo/cldr/nls/ar/buddhist.js | 8 +
source/lib/dojo/cldr/nls/ar/currency.js | 8 +
source/lib/dojo/cldr/nls/ar/gregorian.js | 8 +
source/lib/dojo/cldr/nls/ar/hebrew.js | 8 +
source/lib/dojo/cldr/nls/ar/islamic.js | 8 +
source/lib/dojo/cldr/nls/ar/number.js | 8 +
source/lib/dojo/cldr/nls/buddhist.js | 8 +
source/lib/dojo/cldr/nls/ca/buddhist.js | 8 +
source/lib/dojo/cldr/nls/ca/currency.js | 8 +
source/lib/dojo/cldr/nls/ca/gregorian.js | 8 +
source/lib/dojo/cldr/nls/ca/number.js | 8 +
source/lib/dojo/cldr/nls/cs/buddhist.js | 8 +
source/lib/dojo/cldr/nls/cs/currency.js | 8 +
source/lib/dojo/cldr/nls/cs/gregorian.js | 8 +
source/lib/dojo/cldr/nls/cs/islamic.js | 8 +
source/lib/dojo/cldr/nls/cs/number.js | 8 +
source/lib/dojo/cldr/nls/currency.js | 8 +
source/lib/dojo/cldr/nls/da/buddhist.js | 8 +
source/lib/dojo/cldr/nls/da/currency.js | 8 +
source/lib/dojo/cldr/nls/da/gregorian.js | 8 +
source/lib/dojo/cldr/nls/da/islamic.js | 8 +
source/lib/dojo/cldr/nls/da/number.js | 8 +
source/lib/dojo/cldr/nls/de/buddhist.js | 8 +
source/lib/dojo/cldr/nls/de/currency.js | 8 +
source/lib/dojo/cldr/nls/de/gregorian.js | 8 +
source/lib/dojo/cldr/nls/de/islamic.js | 8 +
source/lib/dojo/cldr/nls/de/number.js | 8 +
source/lib/dojo/cldr/nls/el/buddhist.js | 8 +
source/lib/dojo/cldr/nls/el/currency.js | 8 +
source/lib/dojo/cldr/nls/el/gregorian.js | 8 +
source/lib/dojo/cldr/nls/el/hebrew.js | 8 +
source/lib/dojo/cldr/nls/el/number.js | 8 +
source/lib/dojo/cldr/nls/en-au/currency.js | 8 +
source/lib/dojo/cldr/nls/en-au/gregorian.js | 8 +
source/lib/dojo/cldr/nls/en-au/number.js | 8 +
source/lib/dojo/cldr/nls/en-ca/currency.js | 8 +
source/lib/dojo/cldr/nls/en-ca/gregorian.js | 8 +
source/lib/dojo/cldr/nls/en-gb/buddhist.js | 8 +
source/lib/dojo/cldr/nls/en-gb/currency.js | 8 +
source/lib/dojo/cldr/nls/en-gb/gregorian.js | 8 +
source/lib/dojo/cldr/nls/en-gb/islamic.js | 8 +
source/lib/dojo/cldr/nls/en-gb/number.js | 8 +
source/lib/dojo/cldr/nls/en/buddhist.js | 8 +
source/lib/dojo/cldr/nls/en/currency.js | 8 +
source/lib/dojo/cldr/nls/en/gregorian.js | 8 +
source/lib/dojo/cldr/nls/en/islamic.js | 8 +
source/lib/dojo/cldr/nls/en/number.js | 8 +
source/lib/dojo/cldr/nls/es/buddhist.js | 8 +
source/lib/dojo/cldr/nls/es/currency.js | 8 +
source/lib/dojo/cldr/nls/es/gregorian.js | 8 +
source/lib/dojo/cldr/nls/es/islamic.js | 8 +
source/lib/dojo/cldr/nls/es/number.js | 8 +
source/lib/dojo/cldr/nls/fi/buddhist.js | 8 +
source/lib/dojo/cldr/nls/fi/currency.js | 8 +
source/lib/dojo/cldr/nls/fi/gregorian.js | 8 +
source/lib/dojo/cldr/nls/fi/hebrew.js | 8 +
source/lib/dojo/cldr/nls/fi/islamic.js | 8 +
source/lib/dojo/cldr/nls/fi/number.js | 8 +
source/lib/dojo/cldr/nls/fr-ch/gregorian.js | 8 +
source/lib/dojo/cldr/nls/fr-ch/number.js | 8 +
source/lib/dojo/cldr/nls/fr/buddhist.js | 8 +
source/lib/dojo/cldr/nls/fr/currency.js | 8 +
source/lib/dojo/cldr/nls/fr/gregorian.js | 8 +
source/lib/dojo/cldr/nls/fr/hebrew.js | 8 +
source/lib/dojo/cldr/nls/fr/islamic.js | 8 +
source/lib/dojo/cldr/nls/fr/number.js | 8 +
source/lib/dojo/cldr/nls/gregorian.js | 8 +
source/lib/dojo/cldr/nls/he/currency.js | 8 +
source/lib/dojo/cldr/nls/he/gregorian.js | 8 +
source/lib/dojo/cldr/nls/he/hebrew.js | 8 +
source/lib/dojo/cldr/nls/he/islamic.js | 8 +
source/lib/dojo/cldr/nls/he/number.js | 8 +
source/lib/dojo/cldr/nls/hebrew.js | 8 +
source/lib/dojo/cldr/nls/hu/buddhist.js | 8 +
source/lib/dojo/cldr/nls/hu/currency.js | 8 +
source/lib/dojo/cldr/nls/hu/gregorian.js | 8 +
source/lib/dojo/cldr/nls/hu/hebrew.js | 8 +
source/lib/dojo/cldr/nls/hu/islamic.js | 8 +
source/lib/dojo/cldr/nls/hu/number.js | 8 +
source/lib/dojo/cldr/nls/islamic.js | 8 +
source/lib/dojo/cldr/nls/it/buddhist.js | 8 +
source/lib/dojo/cldr/nls/it/currency.js | 8 +
source/lib/dojo/cldr/nls/it/gregorian.js | 8 +
source/lib/dojo/cldr/nls/it/islamic.js | 8 +
source/lib/dojo/cldr/nls/it/number.js | 8 +
source/lib/dojo/cldr/nls/ja/buddhist.js | 8 +
source/lib/dojo/cldr/nls/ja/currency.js | 8 +
source/lib/dojo/cldr/nls/ja/gregorian.js | 8 +
source/lib/dojo/cldr/nls/ja/hebrew.js | 8 +
source/lib/dojo/cldr/nls/ja/islamic.js | 8 +
source/lib/dojo/cldr/nls/ja/number.js | 8 +
source/lib/dojo/cldr/nls/ko/buddhist.js | 8 +
source/lib/dojo/cldr/nls/ko/currency.js | 8 +
source/lib/dojo/cldr/nls/ko/gregorian.js | 8 +
source/lib/dojo/cldr/nls/ko/number.js | 8 +
source/lib/dojo/cldr/nls/nb/buddhist.js | 8 +
source/lib/dojo/cldr/nls/nb/currency.js | 8 +
source/lib/dojo/cldr/nls/nb/gregorian.js | 8 +
source/lib/dojo/cldr/nls/nb/islamic.js | 8 +
source/lib/dojo/cldr/nls/nb/number.js | 8 +
source/lib/dojo/cldr/nls/nl/buddhist.js | 8 +
source/lib/dojo/cldr/nls/nl/currency.js | 8 +
source/lib/dojo/cldr/nls/nl/gregorian.js | 8 +
source/lib/dojo/cldr/nls/nl/hebrew.js | 8 +
source/lib/dojo/cldr/nls/nl/islamic.js | 8 +
source/lib/dojo/cldr/nls/nl/number.js | 8 +
source/lib/dojo/cldr/nls/number.js | 8 +
source/lib/dojo/cldr/nls/pl/buddhist.js | 8 +
source/lib/dojo/cldr/nls/pl/currency.js | 8 +
source/lib/dojo/cldr/nls/pl/gregorian.js | 8 +
source/lib/dojo/cldr/nls/pl/hebrew.js | 8 +
source/lib/dojo/cldr/nls/pl/islamic.js | 8 +
source/lib/dojo/cldr/nls/pl/number.js | 8 +
source/lib/dojo/cldr/nls/pt-pt/buddhist.js | 8 +
source/lib/dojo/cldr/nls/pt-pt/currency.js | 8 +
source/lib/dojo/cldr/nls/pt-pt/gregorian.js | 8 +
source/lib/dojo/cldr/nls/pt-pt/islamic.js | 8 +
source/lib/dojo/cldr/nls/pt-pt/number.js | 8 +
source/lib/dojo/cldr/nls/pt/buddhist.js | 8 +
source/lib/dojo/cldr/nls/pt/currency.js | 8 +
source/lib/dojo/cldr/nls/pt/gregorian.js | 8 +
source/lib/dojo/cldr/nls/pt/hebrew.js | 8 +
source/lib/dojo/cldr/nls/pt/islamic.js | 8 +
source/lib/dojo/cldr/nls/pt/number.js | 8 +
source/lib/dojo/cldr/nls/ro/buddhist.js | 8 +
source/lib/dojo/cldr/nls/ro/currency.js | 8 +
source/lib/dojo/cldr/nls/ro/gregorian.js | 8 +
source/lib/dojo/cldr/nls/ro/hebrew.js | 8 +
source/lib/dojo/cldr/nls/ro/islamic.js | 8 +
source/lib/dojo/cldr/nls/ro/number.js | 8 +
source/lib/dojo/cldr/nls/ru/buddhist.js | 8 +
source/lib/dojo/cldr/nls/ru/currency.js | 8 +
source/lib/dojo/cldr/nls/ru/gregorian.js | 8 +
source/lib/dojo/cldr/nls/ru/hebrew.js | 8 +
source/lib/dojo/cldr/nls/ru/islamic.js | 8 +
source/lib/dojo/cldr/nls/ru/number.js | 8 +
source/lib/dojo/cldr/nls/sk/currency.js | 8 +
source/lib/dojo/cldr/nls/sk/gregorian.js | 8 +
source/lib/dojo/cldr/nls/sk/number.js | 8 +
source/lib/dojo/cldr/nls/sl/currency.js | 8 +
source/lib/dojo/cldr/nls/sl/gregorian.js | 8 +
source/lib/dojo/cldr/nls/sl/number.js | 8 +
source/lib/dojo/cldr/nls/sv/buddhist.js | 8 +
source/lib/dojo/cldr/nls/sv/currency.js | 8 +
source/lib/dojo/cldr/nls/sv/gregorian.js | 8 +
source/lib/dojo/cldr/nls/sv/hebrew.js | 8 +
source/lib/dojo/cldr/nls/sv/islamic.js | 8 +
source/lib/dojo/cldr/nls/sv/number.js | 8 +
source/lib/dojo/cldr/nls/th/buddhist.js | 8 +
source/lib/dojo/cldr/nls/th/currency.js | 8 +
source/lib/dojo/cldr/nls/th/gregorian.js | 8 +
source/lib/dojo/cldr/nls/th/hebrew.js | 8 +
source/lib/dojo/cldr/nls/th/islamic.js | 8 +
source/lib/dojo/cldr/nls/th/number.js | 8 +
source/lib/dojo/cldr/nls/tr/buddhist.js | 8 +
source/lib/dojo/cldr/nls/tr/currency.js | 8 +
source/lib/dojo/cldr/nls/tr/gregorian.js | 8 +
source/lib/dojo/cldr/nls/tr/hebrew.js | 8 +
source/lib/dojo/cldr/nls/tr/islamic.js | 8 +
source/lib/dojo/cldr/nls/tr/number.js | 8 +
source/lib/dojo/cldr/nls/zh-hant/buddhist.js | 8 +
source/lib/dojo/cldr/nls/zh-hant/currency.js | 8 +
source/lib/dojo/cldr/nls/zh-hant/gregorian.js | 8 +
source/lib/dojo/cldr/nls/zh-hant/hebrew.js | 8 +
source/lib/dojo/cldr/nls/zh-hant/islamic.js | 8 +
source/lib/dojo/cldr/nls/zh-hant/number.js | 8 +
source/lib/dojo/cldr/nls/zh-hk/currency.js | 8 +
source/lib/dojo/cldr/nls/zh-hk/gregorian.js | 8 +
source/lib/dojo/cldr/nls/zh-hk/number.js | 8 +
source/lib/dojo/cldr/nls/zh-tw/currency.js | 8 +
source/lib/dojo/cldr/nls/zh-tw/gregorian.js | 8 +
source/lib/dojo/cldr/nls/zh-tw/number.js | 8 +
source/lib/dojo/cldr/nls/zh/buddhist.js | 8 +
source/lib/dojo/cldr/nls/zh/currency.js | 8 +
source/lib/dojo/cldr/nls/zh/gregorian.js | 8 +
source/lib/dojo/cldr/nls/zh/hebrew.js | 8 +
source/lib/dojo/cldr/nls/zh/islamic.js | 8 +
source/lib/dojo/cldr/nls/zh/number.js | 8 +
source/lib/dojo/cldr/supplemental.js | 8 +
source/lib/dojo/colors.js | 8 +
source/lib/dojo/cookie.js | 8 +
source/lib/dojo/currency.js | 8 +
source/lib/dojo/data/ItemFileReadStore.js | 8 +
source/lib/dojo/data/ItemFileWriteStore.js | 8 +
source/lib/dojo/data/ObjectStore.js | 8 +
source/lib/dojo/data/api/Identity.js | 8 +
source/lib/dojo/data/api/Item.js | 8 +
source/lib/dojo/data/api/Notification.js | 8 +
source/lib/dojo/data/api/Read.js | 8 +
source/lib/dojo/data/api/Request.js | 8 +
source/lib/dojo/data/api/Write.js | 8 +
source/lib/dojo/data/util/filter.js | 8 +
source/lib/dojo/data/util/simpleFetch.js | 8 +
source/lib/dojo/data/util/sorter.js | 8 +
source/lib/dojo/date.js | 8 +
source/lib/dojo/date/locale.js | 8 +
source/lib/dojo/date/stamp.js | 8 +
source/lib/dojo/dnd/AutoSource.js | 8 +
source/lib/dojo/dnd/Avatar.js | 8 +
source/lib/dojo/dnd/Container.js | 8 +
source/lib/dojo/dnd/Manager.js | 8 +
source/lib/dojo/dnd/Moveable.js | 8 +
source/lib/dojo/dnd/Mover.js | 8 +
source/lib/dojo/dnd/Selector.js | 8 +
source/lib/dojo/dnd/Source.js | 8 +
source/lib/dojo/dnd/Target.js | 8 +
source/lib/dojo/dnd/TimedMoveable.js | 8 +
source/lib/dojo/dnd/autoscroll.js | 8 +
source/lib/dojo/dnd/common.js | 8 +
source/lib/dojo/dnd/move.js | 8 +
source/lib/dojo/dojo.js | 15 +
source/lib/dojo/dojo.profile.js | 40 +
source/lib/dojo/dom-attr.js | 8 +
source/lib/dojo/dom-class.js | 8 +
source/lib/dojo/dom-construct.js | 8 +
source/lib/dojo/dom-form.js | 8 +
source/lib/dojo/dom-geometry.js | 8 +
source/lib/dojo/dom-prop.js | 8 +
source/lib/dojo/dom-style.js | 8 +
source/lib/dojo/dom.js | 8 +
source/lib/dojo/domReady.js | 8 +
source/lib/dojo/errors/CancelError.js | 8 +
source/lib/dojo/errors/RequestError.js | 8 +
source/lib/dojo/errors/RequestTimeoutError.js | 8 +
source/lib/dojo/errors/create.js | 8 +
source/lib/dojo/fx.js | 8 +
source/lib/dojo/fx/Toggler.js | 8 +
source/lib/dojo/fx/easing.js | 8 +
source/lib/dojo/gears.js | 8 +
source/lib/dojo/has.js | 8 +
source/lib/dojo/hash.js | 8 +
source/lib/dojo/hccss.js | 8 +
source/lib/dojo/html.js | 8 +
source/lib/dojo/i18n.js | 8 +
source/lib/dojo/io-query.js | 8 +
source/lib/dojo/io/iframe.js | 8 +
source/lib/dojo/io/script.js | 8 +
source/lib/dojo/jaxer.js | 8 +
source/lib/dojo/json.js | 8 +
source/lib/dojo/keys.js | 8 +
source/lib/dojo/loadInit.js | 8 +
source/lib/dojo/main.js | 8 +
source/lib/dojo/mouse.js | 8 +
source/lib/dojo/nls/ar/colors.js | 8 +
source/lib/dojo/nls/az/colors.js | 8 +
source/lib/dojo/nls/ca/colors.js | 8 +
source/lib/dojo/nls/colors.js | 8 +
source/lib/dojo/nls/cs/colors.js | 8 +
source/lib/dojo/nls/da/colors.js | 8 +
source/lib/dojo/nls/de/colors.js | 8 +
source/lib/dojo/nls/el/colors.js | 8 +
source/lib/dojo/nls/es/colors.js | 8 +
source/lib/dojo/nls/fi/colors.js | 8 +
source/lib/dojo/nls/fr/colors.js | 8 +
source/lib/dojo/nls/he/colors.js | 8 +
source/lib/dojo/nls/hr/colors.js | 8 +
source/lib/dojo/nls/hu/colors.js | 8 +
source/lib/dojo/nls/it/colors.js | 8 +
source/lib/dojo/nls/ja/colors.js | 8 +
source/lib/dojo/nls/kk/colors.js | 8 +
source/lib/dojo/nls/ko/colors.js | 8 +
source/lib/dojo/nls/nb/colors.js | 8 +
source/lib/dojo/nls/nl/colors.js | 8 +
source/lib/dojo/nls/pl/colors.js | 8 +
source/lib/dojo/nls/pt-pt/colors.js | 8 +
source/lib/dojo/nls/pt/colors.js | 8 +
source/lib/dojo/nls/ro/colors.js | 8 +
source/lib/dojo/nls/ru/colors.js | 8 +
source/lib/dojo/nls/sk/colors.js | 8 +
source/lib/dojo/nls/sl/colors.js | 8 +
source/lib/dojo/nls/sv/colors.js | 8 +
source/lib/dojo/nls/th/colors.js | 8 +
source/lib/dojo/nls/tr/colors.js | 8 +
source/lib/dojo/nls/tt-rss-layer_ROOT.js | 8 +
source/lib/dojo/nls/tt-rss-layer_ar.js | 8 +
source/lib/dojo/nls/tt-rss-layer_ca.js | 8 +
source/lib/dojo/nls/tt-rss-layer_cs.js | 8 +
source/lib/dojo/nls/tt-rss-layer_da.js | 8 +
source/lib/dojo/nls/tt-rss-layer_de.js | 8 +
source/lib/dojo/nls/tt-rss-layer_el.js | 8 +
source/lib/dojo/nls/tt-rss-layer_en-gb.js | 8 +
source/lib/dojo/nls/tt-rss-layer_en-us.js | 8 +
source/lib/dojo/nls/tt-rss-layer_es-es.js | 8 +
source/lib/dojo/nls/tt-rss-layer_fi-fi.js | 8 +
source/lib/dojo/nls/tt-rss-layer_fr-fr.js | 8 +
source/lib/dojo/nls/tt-rss-layer_he-il.js | 8 +
source/lib/dojo/nls/tt-rss-layer_hu.js | 8 +
source/lib/dojo/nls/tt-rss-layer_it-it.js | 8 +
source/lib/dojo/nls/tt-rss-layer_ja-jp.js | 8 +
source/lib/dojo/nls/tt-rss-layer_ko-kr.js | 8 +
source/lib/dojo/nls/tt-rss-layer_nb.js | 8 +
source/lib/dojo/nls/tt-rss-layer_nl-nl.js | 8 +
source/lib/dojo/nls/tt-rss-layer_pl.js | 8 +
source/lib/dojo/nls/tt-rss-layer_pt-br.js | 8 +
source/lib/dojo/nls/tt-rss-layer_pt-pt.js | 8 +
source/lib/dojo/nls/tt-rss-layer_ru.js | 8 +
source/lib/dojo/nls/tt-rss-layer_sk.js | 8 +
source/lib/dojo/nls/tt-rss-layer_sl.js | 8 +
source/lib/dojo/nls/tt-rss-layer_sv.js | 8 +
source/lib/dojo/nls/tt-rss-layer_th.js | 8 +
source/lib/dojo/nls/tt-rss-layer_tr.js | 8 +
source/lib/dojo/nls/tt-rss-layer_zh-cn.js | 8 +
source/lib/dojo/nls/tt-rss-layer_zh-tw.js | 8 +
source/lib/dojo/nls/zh-tw/colors.js | 8 +
source/lib/dojo/nls/zh/colors.js | 8 +
source/lib/dojo/node.js | 8 +
source/lib/dojo/number.js | 8 +
source/lib/dojo/on.js | 8 +
source/lib/dojo/package.json | 23 +
source/lib/dojo/parser.js | 8 +
source/lib/dojo/promise/Promise.js | 8 +
source/lib/dojo/promise/all.js | 8 +
source/lib/dojo/promise/first.js | 8 +
source/lib/dojo/promise/instrumentation.js | 8 +
source/lib/dojo/promise/tracer.js | 8 +
source/lib/dojo/query.js | 8 +
source/lib/dojo/ready.js | 8 +
source/lib/dojo/regexp.js | 8 +
source/lib/dojo/request.js | 8 +
source/lib/dojo/request/default.js | 8 +
source/lib/dojo/request/handlers.js | 8 +
source/lib/dojo/request/iframe.js | 8 +
source/lib/dojo/request/node.js | 8 +
source/lib/dojo/request/notify.js | 8 +
source/lib/dojo/request/registry.js | 8 +
source/lib/dojo/request/script.js | 8 +
source/lib/dojo/request/util.js | 8 +
source/lib/dojo/request/watch.js | 8 +
source/lib/dojo/request/xhr.js | 8 +
source/lib/dojo/require.js | 8 +
source/lib/dojo/resources/LICENSE | 30 +
source/lib/dojo/resources/blank.gif | Bin 0 -> 43 bytes
source/lib/dojo/resources/blank.html | 1 +
source/lib/dojo/resources/dnd.css | 1 +
source/lib/dojo/resources/dojo.css | 1 +
source/lib/dojo/resources/iframe_history.html | 44 +
source/lib/dojo/resources/images/dndCopy.png | Bin 0 -> 814 bytes
source/lib/dojo/resources/images/dndMove.png | Bin 0 -> 785 bytes
.../lib/dojo/resources/images/dndNoCopy.png | Bin 0 -> 1332 bytes
.../lib/dojo/resources/images/dndNoMove.png | Bin 0 -> 991 bytes
source/lib/dojo/router.js | 8 +
source/lib/dojo/router/RouterBase.js | 8 +
source/lib/dojo/rpc/JsonService.js | 8 +
source/lib/dojo/rpc/JsonpService.js | 8 +
source/lib/dojo/rpc/RpcService.js | 8 +
source/lib/dojo/selector/_loader.js | 8 +
source/lib/dojo/selector/acme.js | 8 +
source/lib/dojo/selector/lite.js | 8 +
source/lib/dojo/sniff.js | 8 +
source/lib/dojo/store/Cache.js | 8 +
source/lib/dojo/store/DataStore.js | 8 +
source/lib/dojo/store/JsonRest.js | 8 +
source/lib/dojo/store/Memory.js | 8 +
source/lib/dojo/store/Observable.js | 8 +
source/lib/dojo/store/README | 6 +
source/lib/dojo/store/api/Store.js | 8 +
source/lib/dojo/store/util/QueryResults.js | 8 +
.../lib/dojo/store/util/SimpleQueryEngine.js | 8 +
source/lib/dojo/string.js | 8 +
source/lib/dojo/text.js | 8 +
source/lib/dojo/topic.js | 8 +
source/lib/dojo/touch.js | 8 +
source/lib/dojo/tt-rss-layer.js | 15 +
source/lib/dojo/uacss.js | 8 +
source/lib/dojo/when.js | 8 +
source/lib/dojo/window.js | 8 +
source/lib/floIcon.php | 20 +
source/lib/gettext/README | 161 +
source/lib/gettext/gettext.inc | 536 ++
source/lib/gettext/gettext.php | 432 ++
source/lib/gettext/streams.php | 167 +
source/lib/index.html | 0
source/lib/jimIcon.php | 270 +
source/lib/jshrink/LICENSE | 24 +
source/lib/jshrink/Minifier.php | 470 ++
source/lib/jshrink/README.md | 21 +
source/lib/languagedetect/LanguageDetect.php | 1708 +++++
.../Text/LanguageDetect/Exception.php | 57 +
.../Text/LanguageDetect/ISO639.php | 341 +
.../Text/LanguageDetect/Parser.php | 349 +
source/lib/languagedetect/data/lang.dat | 1 +
.../languagedetect/data/unicode_blocks.dat | 1 +
source/lib/otphp/LICENCE | 20 +
source/lib/otphp/lib/hotp.php | 74 +
source/lib/otphp/lib/otp.php | 120 +
source/lib/otphp/lib/otphp.php | 27 +
source/lib/otphp/lib/totp.php | 106 +
source/lib/otphp/vendor/base32.php | 83 +
source/lib/otphp/vendor/libs.php | 26 +
source/lib/phpmailer/class.phpmailer.php | 2826 ++++++++
source/lib/phpmailer/class.smtp.php | 1003 +++
.../phpmailer/language/phpmailer.lang-ar.php | 27 +
.../phpmailer/language/phpmailer.lang-br.php | 26 +
.../phpmailer/language/phpmailer.lang-ca.php | 26 +
.../phpmailer/language/phpmailer.lang-ch.php | 26 +
.../phpmailer/language/phpmailer.lang-cz.php | 25 +
.../phpmailer/language/phpmailer.lang-de.php | 25 +
.../phpmailer/language/phpmailer.lang-dk.php | 26 +
.../phpmailer/language/phpmailer.lang-es.php | 26 +
.../phpmailer/language/phpmailer.lang-et.php | 26 +
.../phpmailer/language/phpmailer.lang-fi.php | 27 +
.../phpmailer/language/phpmailer.lang-fo.php | 27 +
.../phpmailer/language/phpmailer.lang-fr.php | 25 +
.../phpmailer/language/phpmailer.lang-hu.php | 25 +
.../phpmailer/language/phpmailer.lang-it.php | 27 +
.../phpmailer/language/phpmailer.lang-ja.php | 26 +
.../phpmailer/language/phpmailer.lang-nl.php | 25 +
.../phpmailer/language/phpmailer.lang-no.php | 25 +
.../phpmailer/language/phpmailer.lang-pl.php | 25 +
.../phpmailer/language/phpmailer.lang-ro.php | 27 +
.../phpmailer/language/phpmailer.lang-ru.php | 26 +
.../phpmailer/language/phpmailer.lang-se.php | 26 +
.../phpmailer/language/phpmailer.lang-sk.php | 26 +
.../phpmailer/language/phpmailer.lang-tr.php | 27 +
.../phpmailer/language/phpmailer.lang-zh.php | 26 +
.../language/phpmailer.lang-zh_cn.php | 26 +
source/lib/phpqrcode/CHANGELOG | 38 +
source/lib/phpqrcode/INSTALL | 67 +
source/lib/phpqrcode/LICENSE | 165 +
source/lib/phpqrcode/README | 45 +
source/lib/phpqrcode/VERSION | 2 +
.../lib/phpqrcode/bindings/tcpdf/qrcode.php | 2875 ++++++++
source/lib/phpqrcode/cache/frame_1.dat | 2 +
source/lib/phpqrcode/cache/frame_1.png | Bin 0 -> 126 bytes
source/lib/phpqrcode/cache/frame_10.dat | Bin 0 -> 204 bytes
source/lib/phpqrcode/cache/frame_10.png | Bin 0 -> 202 bytes
source/lib/phpqrcode/cache/frame_11.dat | Bin 0 -> 210 bytes
source/lib/phpqrcode/cache/frame_11.png | Bin 0 -> 205 bytes
source/lib/phpqrcode/cache/frame_12.dat | Bin 0 -> 222 bytes
source/lib/phpqrcode/cache/frame_12.png | Bin 0 -> 216 bytes
source/lib/phpqrcode/cache/frame_13.dat | Bin 0 -> 223 bytes
source/lib/phpqrcode/cache/frame_13.png | Bin 0 -> 210 bytes
source/lib/phpqrcode/cache/frame_14.dat | Bin 0 -> 227 bytes
source/lib/phpqrcode/cache/frame_14.png | Bin 0 -> 213 bytes
source/lib/phpqrcode/cache/frame_15.dat | Bin 0 -> 242 bytes
source/lib/phpqrcode/cache/frame_15.png | Bin 0 -> 219 bytes
source/lib/phpqrcode/cache/frame_16.dat | 1 +
source/lib/phpqrcode/cache/frame_16.png | Bin 0 -> 211 bytes
source/lib/phpqrcode/cache/frame_17.dat | Bin 0 -> 237 bytes
source/lib/phpqrcode/cache/frame_17.png | Bin 0 -> 211 bytes
source/lib/phpqrcode/cache/frame_18.dat | 2 +
source/lib/phpqrcode/cache/frame_18.png | Bin 0 -> 228 bytes
source/lib/phpqrcode/cache/frame_19.dat | 3 +
source/lib/phpqrcode/cache/frame_19.png | Bin 0 -> 225 bytes
source/lib/phpqrcode/cache/frame_2.dat | 1 +
source/lib/phpqrcode/cache/frame_2.png | Bin 0 -> 144 bytes
source/lib/phpqrcode/cache/frame_20.dat | Bin 0 -> 250 bytes
source/lib/phpqrcode/cache/frame_20.png | Bin 0 -> 225 bytes
source/lib/phpqrcode/cache/frame_21.dat | 1 +
source/lib/phpqrcode/cache/frame_21.png | Bin 0 -> 235 bytes
source/lib/phpqrcode/cache/frame_22.dat | 3 +
source/lib/phpqrcode/cache/frame_22.png | Bin 0 -> 226 bytes
source/lib/phpqrcode/cache/frame_23.dat | 3 +
source/lib/phpqrcode/cache/frame_23.png | Bin 0 -> 220 bytes
source/lib/phpqrcode/cache/frame_24.dat | 1 +
source/lib/phpqrcode/cache/frame_24.png | Bin 0 -> 242 bytes
source/lib/phpqrcode/cache/frame_25.dat | 3 +
source/lib/phpqrcode/cache/frame_25.png | Bin 0 -> 242 bytes
source/lib/phpqrcode/cache/frame_26.dat | 2 +
source/lib/phpqrcode/cache/frame_26.png | Bin 0 -> 244 bytes
source/lib/phpqrcode/cache/frame_27.dat | Bin 0 -> 284 bytes
source/lib/phpqrcode/cache/frame_27.png | Bin 0 -> 237 bytes
source/lib/phpqrcode/cache/frame_28.dat | Bin 0 -> 318 bytes
source/lib/phpqrcode/cache/frame_28.png | Bin 0 -> 234 bytes
source/lib/phpqrcode/cache/frame_29.dat | 2 +
source/lib/phpqrcode/cache/frame_29.png | Bin 0 -> 232 bytes
source/lib/phpqrcode/cache/frame_3.dat | 1 +
source/lib/phpqrcode/cache/frame_3.png | Bin 0 -> 147 bytes
source/lib/phpqrcode/cache/frame_30.dat | Bin 0 -> 324 bytes
source/lib/phpqrcode/cache/frame_30.png | Bin 0 -> 255 bytes
source/lib/phpqrcode/cache/frame_31.dat | 1 +
source/lib/phpqrcode/cache/frame_31.png | Bin 0 -> 260 bytes
source/lib/phpqrcode/cache/frame_32.dat | 2 +
source/lib/phpqrcode/cache/frame_32.png | Bin 0 -> 262 bytes
source/lib/phpqrcode/cache/frame_33.dat | 14 +
source/lib/phpqrcode/cache/frame_33.png | Bin 0 -> 253 bytes
source/lib/phpqrcode/cache/frame_34.dat | Bin 0 -> 331 bytes
source/lib/phpqrcode/cache/frame_34.png | Bin 0 -> 256 bytes
source/lib/phpqrcode/cache/frame_35.dat | Bin 0 -> 342 bytes
source/lib/phpqrcode/cache/frame_35.png | Bin 0 -> 243 bytes
source/lib/phpqrcode/cache/frame_36.dat | Bin 0 -> 370 bytes
source/lib/phpqrcode/cache/frame_36.png | Bin 0 -> 272 bytes
source/lib/phpqrcode/cache/frame_37.dat | Bin 0 -> 376 bytes
source/lib/phpqrcode/cache/frame_37.png | Bin 0 -> 279 bytes
source/lib/phpqrcode/cache/frame_38.dat | 1 +
source/lib/phpqrcode/cache/frame_38.png | Bin 0 -> 279 bytes
source/lib/phpqrcode/cache/frame_39.dat | Bin 0 -> 404 bytes
source/lib/phpqrcode/cache/frame_39.png | Bin 0 -> 264 bytes
source/lib/phpqrcode/cache/frame_4.dat | 1 +
source/lib/phpqrcode/cache/frame_4.png | Bin 0 -> 149 bytes
source/lib/phpqrcode/cache/frame_40.dat | 2 +
source/lib/phpqrcode/cache/frame_40.png | Bin 0 -> 267 bytes
source/lib/phpqrcode/cache/frame_5.dat | 1 +
source/lib/phpqrcode/cache/frame_5.png | Bin 0 -> 150 bytes
source/lib/phpqrcode/cache/frame_6.dat | Bin 0 -> 132 bytes
source/lib/phpqrcode/cache/frame_6.png | Bin 0 -> 151 bytes
source/lib/phpqrcode/cache/frame_7.dat | Bin 0 -> 196 bytes
source/lib/phpqrcode/cache/frame_7.png | Bin 0 -> 189 bytes
source/lib/phpqrcode/cache/frame_8.dat | Bin 0 -> 201 bytes
source/lib/phpqrcode/cache/frame_8.png | Bin 0 -> 204 bytes
source/lib/phpqrcode/cache/frame_9.dat | Bin 0 -> 206 bytes
source/lib/phpqrcode/cache/frame_9.png | Bin 0 -> 199 bytes
.../lib/phpqrcode/cache/mask_0/mask_101_0.dat | Bin 0 -> 157 bytes
.../lib/phpqrcode/cache/mask_0/mask_105_0.dat | Bin 0 -> 162 bytes
.../lib/phpqrcode/cache/mask_0/mask_109_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_113_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_117_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_121_0.dat | 1 +
.../lib/phpqrcode/cache/mask_0/mask_125_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_129_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_133_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_137_0.dat | 1 +
.../lib/phpqrcode/cache/mask_0/mask_141_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_145_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_149_0.dat | 3 +
.../lib/phpqrcode/cache/mask_0/mask_153_0.dat | 1 +
.../lib/phpqrcode/cache/mask_0/mask_157_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_161_0.dat | Bin 0 -> 241 bytes
.../lib/phpqrcode/cache/mask_0/mask_165_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_169_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_173_0.dat | 1 +
.../lib/phpqrcode/cache/mask_0/mask_177_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_21_0.dat | Bin 0 -> 48 bytes
.../lib/phpqrcode/cache/mask_0/mask_25_0.dat | Bin 0 -> 57 bytes
.../lib/phpqrcode/cache/mask_0/mask_29_0.dat | Bin 0 -> 59 bytes
.../lib/phpqrcode/cache/mask_0/mask_33_0.dat | Bin 0 -> 62 bytes
.../lib/phpqrcode/cache/mask_0/mask_37_0.dat | Bin 0 -> 65 bytes
.../lib/phpqrcode/cache/mask_0/mask_41_0.dat | Bin 0 -> 68 bytes
.../lib/phpqrcode/cache/mask_0/mask_45_0.dat | Bin 0 -> 106 bytes
.../lib/phpqrcode/cache/mask_0/mask_49_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_53_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_57_0.dat | 4 +
.../lib/phpqrcode/cache/mask_0/mask_61_0.dat | Bin 0 -> 119 bytes
.../lib/phpqrcode/cache/mask_0/mask_65_0.dat | Bin 0 -> 123 bytes
.../lib/phpqrcode/cache/mask_0/mask_69_0.dat | 1 +
.../lib/phpqrcode/cache/mask_0/mask_73_0.dat | 1 +
.../lib/phpqrcode/cache/mask_0/mask_77_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_81_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_85_0.dat | 2 +
.../lib/phpqrcode/cache/mask_0/mask_89_0.dat | 1 +
.../lib/phpqrcode/cache/mask_0/mask_93_0.dat | 3 +
.../lib/phpqrcode/cache/mask_0/mask_97_0.dat | Bin 0 -> 150 bytes
.../lib/phpqrcode/cache/mask_1/mask_101_1.dat | 2 +
.../lib/phpqrcode/cache/mask_1/mask_105_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_109_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_113_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_117_1.dat | 2 +
.../lib/phpqrcode/cache/mask_1/mask_121_1.dat | 2 +
.../lib/phpqrcode/cache/mask_1/mask_125_1.dat | 2 +
.../lib/phpqrcode/cache/mask_1/mask_129_1.dat | Bin 0 -> 164 bytes
.../lib/phpqrcode/cache/mask_1/mask_133_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_137_1.dat | 3 +
.../lib/phpqrcode/cache/mask_1/mask_141_1.dat | 2 +
.../lib/phpqrcode/cache/mask_1/mask_145_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_149_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_153_1.dat | 2 +
.../lib/phpqrcode/cache/mask_1/mask_157_1.dat | 2 +
.../lib/phpqrcode/cache/mask_1/mask_161_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_165_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_169_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_173_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_177_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_21_1.dat | Bin 0 -> 42 bytes
.../lib/phpqrcode/cache/mask_1/mask_25_1.dat | Bin 0 -> 48 bytes
.../lib/phpqrcode/cache/mask_1/mask_29_1.dat | Bin 0 -> 50 bytes
.../lib/phpqrcode/cache/mask_1/mask_33_1.dat | Bin 0 -> 53 bytes
.../lib/phpqrcode/cache/mask_1/mask_37_1.dat | Bin 0 -> 56 bytes
.../lib/phpqrcode/cache/mask_1/mask_41_1.dat | Bin 0 -> 58 bytes
.../lib/phpqrcode/cache/mask_1/mask_45_1.dat | Bin 0 -> 82 bytes
.../lib/phpqrcode/cache/mask_1/mask_49_1.dat | Bin 0 -> 84 bytes
.../lib/phpqrcode/cache/mask_1/mask_53_1.dat | Bin 0 -> 87 bytes
.../lib/phpqrcode/cache/mask_1/mask_57_1.dat | Bin 0 -> 92 bytes
.../lib/phpqrcode/cache/mask_1/mask_61_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_65_1.dat | Bin 0 -> 99 bytes
.../lib/phpqrcode/cache/mask_1/mask_69_1.dat | Bin 0 -> 102 bytes
.../lib/phpqrcode/cache/mask_1/mask_73_1.dat | Bin 0 -> 104 bytes
.../lib/phpqrcode/cache/mask_1/mask_77_1.dat | Bin 0 -> 110 bytes
.../lib/phpqrcode/cache/mask_1/mask_81_1.dat | Bin 0 -> 114 bytes
.../lib/phpqrcode/cache/mask_1/mask_85_1.dat | 2 +
.../lib/phpqrcode/cache/mask_1/mask_89_1.dat | 1 +
.../lib/phpqrcode/cache/mask_1/mask_93_1.dat | 2 +
.../lib/phpqrcode/cache/mask_1/mask_97_1.dat | 2 +
.../lib/phpqrcode/cache/mask_2/mask_101_2.dat | 3 +
.../lib/phpqrcode/cache/mask_2/mask_105_2.dat | 1 +
.../lib/phpqrcode/cache/mask_2/mask_109_2.dat | 2 +
.../lib/phpqrcode/cache/mask_2/mask_113_2.dat | 1 +
.../lib/phpqrcode/cache/mask_2/mask_117_2.dat | 2 +
.../lib/phpqrcode/cache/mask_2/mask_121_2.dat | Bin 0 -> 127 bytes
.../lib/phpqrcode/cache/mask_2/mask_125_2.dat | 1 +
.../lib/phpqrcode/cache/mask_2/mask_129_2.dat | 2 +
.../lib/phpqrcode/cache/mask_2/mask_133_2.dat | 10 +
.../lib/phpqrcode/cache/mask_2/mask_137_2.dat | 2 +
.../lib/phpqrcode/cache/mask_2/mask_141_2.dat | 2 +
.../lib/phpqrcode/cache/mask_2/mask_145_2.dat | 4 +
.../lib/phpqrcode/cache/mask_2/mask_149_2.dat | 1 +
.../lib/phpqrcode/cache/mask_2/mask_153_2.dat | 2 +
.../lib/phpqrcode/cache/mask_2/mask_157_2.dat | 3 +
.../lib/phpqrcode/cache/mask_2/mask_161_2.dat | Bin 0 -> 190 bytes
.../lib/phpqrcode/cache/mask_2/mask_165_2.dat | 2 +
.../lib/phpqrcode/cache/mask_2/mask_169_2.dat | Bin 0 -> 196 bytes
.../lib/phpqrcode/cache/mask_2/mask_173_2.dat | 1 +
.../lib/phpqrcode/cache/mask_2/mask_177_2.dat | 2 +
.../lib/phpqrcode/cache/mask_2/mask_21_2.dat | Bin 0 -> 35 bytes
.../lib/phpqrcode/cache/mask_2/mask_25_2.dat | Bin 0 -> 41 bytes
.../lib/phpqrcode/cache/mask_2/mask_29_2.dat | Bin 0 -> 45 bytes
.../lib/phpqrcode/cache/mask_2/mask_33_2.dat | Bin 0 -> 47 bytes
.../lib/phpqrcode/cache/mask_2/mask_37_2.dat | Bin 0 -> 47 bytes
.../lib/phpqrcode/cache/mask_2/mask_41_2.dat | 1 +
.../lib/phpqrcode/cache/mask_2/mask_45_2.dat | Bin 0 -> 68 bytes
.../lib/phpqrcode/cache/mask_2/mask_49_2.dat | Bin 0 -> 70 bytes
.../lib/phpqrcode/cache/mask_2/mask_53_2.dat | Bin 0 -> 73 bytes
.../lib/phpqrcode/cache/mask_2/mask_57_2.dat | Bin 0 -> 76 bytes
.../lib/phpqrcode/cache/mask_2/mask_61_2.dat | Bin 0 -> 78 bytes
.../lib/phpqrcode/cache/mask_2/mask_65_2.dat | Bin 0 -> 89 bytes
.../lib/phpqrcode/cache/mask_2/mask_69_2.dat | Bin 0 -> 88 bytes
.../lib/phpqrcode/cache/mask_2/mask_73_2.dat | Bin 0 -> 94 bytes
.../lib/phpqrcode/cache/mask_2/mask_77_2.dat | 1 +
.../lib/phpqrcode/cache/mask_2/mask_81_2.dat | 2 +
.../lib/phpqrcode/cache/mask_2/mask_85_2.dat | 2 +
.../lib/phpqrcode/cache/mask_2/mask_89_2.dat | 1 +
.../lib/phpqrcode/cache/mask_2/mask_93_2.dat | Bin 0 -> 103 bytes
.../lib/phpqrcode/cache/mask_2/mask_97_2.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_101_3.dat | 1 +
.../lib/phpqrcode/cache/mask_3/mask_105_3.dat | 1 +
.../lib/phpqrcode/cache/mask_3/mask_109_3.dat | 1 +
.../lib/phpqrcode/cache/mask_3/mask_113_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_117_3.dat | 4 +
.../lib/phpqrcode/cache/mask_3/mask_121_3.dat | Bin 0 -> 212 bytes
.../lib/phpqrcode/cache/mask_3/mask_125_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_129_3.dat | 8 +
.../lib/phpqrcode/cache/mask_3/mask_133_3.dat | Bin 0 -> 216 bytes
.../lib/phpqrcode/cache/mask_3/mask_137_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_141_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_145_3.dat | 3 +
.../lib/phpqrcode/cache/mask_3/mask_149_3.dat | 1 +
.../lib/phpqrcode/cache/mask_3/mask_153_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_157_3.dat | Bin 0 -> 248 bytes
.../lib/phpqrcode/cache/mask_3/mask_161_3.dat | 3 +
.../lib/phpqrcode/cache/mask_3/mask_165_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_169_3.dat | 1 +
.../lib/phpqrcode/cache/mask_3/mask_173_3.dat | 1 +
.../lib/phpqrcode/cache/mask_3/mask_177_3.dat | Bin 0 -> 312 bytes
.../lib/phpqrcode/cache/mask_3/mask_21_3.dat | Bin 0 -> 60 bytes
.../lib/phpqrcode/cache/mask_3/mask_25_3.dat | Bin 0 -> 75 bytes
.../lib/phpqrcode/cache/mask_3/mask_29_3.dat | Bin 0 -> 75 bytes
.../lib/phpqrcode/cache/mask_3/mask_33_3.dat | Bin 0 -> 79 bytes
.../lib/phpqrcode/cache/mask_3/mask_37_3.dat | Bin 0 -> 83 bytes
.../lib/phpqrcode/cache/mask_3/mask_41_3.dat | Bin 0 -> 85 bytes
.../lib/phpqrcode/cache/mask_3/mask_45_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_49_3.dat | Bin 0 -> 127 bytes
.../lib/phpqrcode/cache/mask_3/mask_53_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_57_3.dat | Bin 0 -> 126 bytes
.../lib/phpqrcode/cache/mask_3/mask_61_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_65_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_69_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_73_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_77_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_81_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_85_3.dat | Bin 0 -> 160 bytes
.../lib/phpqrcode/cache/mask_3/mask_89_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_93_3.dat | 2 +
.../lib/phpqrcode/cache/mask_3/mask_97_3.dat | Bin 0 -> 175 bytes
.../lib/phpqrcode/cache/mask_4/mask_101_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_105_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_109_4.dat | Bin 0 -> 182 bytes
.../lib/phpqrcode/cache/mask_4/mask_113_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_117_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_121_4.dat | Bin 0 -> 208 bytes
.../lib/phpqrcode/cache/mask_4/mask_125_4.dat | Bin 0 -> 213 bytes
.../lib/phpqrcode/cache/mask_4/mask_129_4.dat | Bin 0 -> 220 bytes
.../lib/phpqrcode/cache/mask_4/mask_133_4.dat | 3 +
.../lib/phpqrcode/cache/mask_4/mask_137_4.dat | Bin 0 -> 248 bytes
.../lib/phpqrcode/cache/mask_4/mask_141_4.dat | Bin 0 -> 254 bytes
.../lib/phpqrcode/cache/mask_4/mask_145_4.dat | Bin 0 -> 255 bytes
.../lib/phpqrcode/cache/mask_4/mask_149_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_153_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_157_4.dat | 1 +
.../lib/phpqrcode/cache/mask_4/mask_161_4.dat | 1 +
.../lib/phpqrcode/cache/mask_4/mask_165_4.dat | 3 +
.../lib/phpqrcode/cache/mask_4/mask_169_4.dat | Bin 0 -> 297 bytes
.../lib/phpqrcode/cache/mask_4/mask_173_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_177_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_21_4.dat | Bin 0 -> 57 bytes
.../lib/phpqrcode/cache/mask_4/mask_25_4.dat | Bin 0 -> 76 bytes
.../lib/phpqrcode/cache/mask_4/mask_29_4.dat | Bin 0 -> 78 bytes
.../lib/phpqrcode/cache/mask_4/mask_33_4.dat | Bin 0 -> 89 bytes
.../lib/phpqrcode/cache/mask_4/mask_37_4.dat | Bin 0 -> 86 bytes
.../lib/phpqrcode/cache/mask_4/mask_41_4.dat | Bin 0 -> 89 bytes
.../lib/phpqrcode/cache/mask_4/mask_45_4.dat | Bin 0 -> 120 bytes
.../lib/phpqrcode/cache/mask_4/mask_49_4.dat | Bin 0 -> 124 bytes
.../lib/phpqrcode/cache/mask_4/mask_53_4.dat | Bin 0 -> 128 bytes
.../lib/phpqrcode/cache/mask_4/mask_57_4.dat | Bin 0 -> 130 bytes
.../lib/phpqrcode/cache/mask_4/mask_61_4.dat | Bin 0 -> 132 bytes
.../lib/phpqrcode/cache/mask_4/mask_65_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_69_4.dat | 1 +
.../lib/phpqrcode/cache/mask_4/mask_73_4.dat | 3 +
.../lib/phpqrcode/cache/mask_4/mask_77_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_81_4.dat | 3 +
.../lib/phpqrcode/cache/mask_4/mask_85_4.dat | Bin 0 -> 154 bytes
.../lib/phpqrcode/cache/mask_4/mask_89_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_93_4.dat | 2 +
.../lib/phpqrcode/cache/mask_4/mask_97_4.dat | Bin 0 -> 176 bytes
.../lib/phpqrcode/cache/mask_5/mask_101_5.dat | 2 +
.../lib/phpqrcode/cache/mask_5/mask_105_5.dat | Bin 0 -> 224 bytes
.../lib/phpqrcode/cache/mask_5/mask_109_5.dat | Bin 0 -> 211 bytes
.../lib/phpqrcode/cache/mask_5/mask_113_5.dat | 9 +
.../lib/phpqrcode/cache/mask_5/mask_117_5.dat | 1 +
.../lib/phpqrcode/cache/mask_5/mask_121_5.dat | Bin 0 -> 256 bytes
.../lib/phpqrcode/cache/mask_5/mask_125_5.dat | 2 +
.../lib/phpqrcode/cache/mask_5/mask_129_5.dat | Bin 0 -> 259 bytes
.../lib/phpqrcode/cache/mask_5/mask_133_5.dat | 2 +
.../lib/phpqrcode/cache/mask_5/mask_137_5.dat | 3 +
.../lib/phpqrcode/cache/mask_5/mask_141_5.dat | Bin 0 -> 297 bytes
.../lib/phpqrcode/cache/mask_5/mask_145_5.dat | Bin 0 -> 300 bytes
.../lib/phpqrcode/cache/mask_5/mask_149_5.dat | 3 +
.../lib/phpqrcode/cache/mask_5/mask_153_5.dat | 2 +
.../lib/phpqrcode/cache/mask_5/mask_157_5.dat | 1 +
.../lib/phpqrcode/cache/mask_5/mask_161_5.dat | 2 +
.../lib/phpqrcode/cache/mask_5/mask_165_5.dat | Bin 0 -> 332 bytes
.../lib/phpqrcode/cache/mask_5/mask_169_5.dat | 1 +
.../lib/phpqrcode/cache/mask_5/mask_173_5.dat | 4 +
.../lib/phpqrcode/cache/mask_5/mask_177_5.dat | 11 +
.../lib/phpqrcode/cache/mask_5/mask_21_5.dat | Bin 0 -> 74 bytes
.../lib/phpqrcode/cache/mask_5/mask_25_5.dat | 2 +
.../lib/phpqrcode/cache/mask_5/mask_29_5.dat | 2 +
.../lib/phpqrcode/cache/mask_5/mask_33_5.dat | Bin 0 -> 106 bytes
.../lib/phpqrcode/cache/mask_5/mask_37_5.dat | Bin 0 -> 103 bytes
.../lib/phpqrcode/cache/mask_5/mask_41_5.dat | 2 +
.../lib/phpqrcode/cache/mask_5/mask_45_5.dat | 1 +
.../lib/phpqrcode/cache/mask_5/mask_49_5.dat | Bin 0 -> 146 bytes
.../lib/phpqrcode/cache/mask_5/mask_53_5.dat | 1 +
.../lib/phpqrcode/cache/mask_5/mask_57_5.dat | 2 +
.../lib/phpqrcode/cache/mask_5/mask_61_5.dat | 1 +
.../lib/phpqrcode/cache/mask_5/mask_65_5.dat | Bin 0 -> 163 bytes
.../lib/phpqrcode/cache/mask_5/mask_69_5.dat | Bin 0 -> 167 bytes
.../lib/phpqrcode/cache/mask_5/mask_73_5.dat | Bin 0 -> 184 bytes
.../lib/phpqrcode/cache/mask_5/mask_77_5.dat | 1 +
.../lib/phpqrcode/cache/mask_5/mask_81_5.dat | 3 +
.../lib/phpqrcode/cache/mask_5/mask_85_5.dat | Bin 0 -> 186 bytes
.../lib/phpqrcode/cache/mask_5/mask_89_5.dat | 2 +
.../lib/phpqrcode/cache/mask_5/mask_93_5.dat | 2 +
.../lib/phpqrcode/cache/mask_5/mask_97_5.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_101_6.dat | 2 +
.../lib/phpqrcode/cache/mask_6/mask_105_6.dat | 3 +
.../lib/phpqrcode/cache/mask_6/mask_109_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_113_6.dat | 3 +
.../lib/phpqrcode/cache/mask_6/mask_117_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_121_6.dat | Bin 0 -> 309 bytes
.../lib/phpqrcode/cache/mask_6/mask_125_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_129_6.dat | Bin 0 -> 310 bytes
.../lib/phpqrcode/cache/mask_6/mask_133_6.dat | Bin 0 -> 296 bytes
.../lib/phpqrcode/cache/mask_6/mask_137_6.dat | 2 +
.../lib/phpqrcode/cache/mask_6/mask_141_6.dat | 10 +
.../lib/phpqrcode/cache/mask_6/mask_145_6.dat | Bin 0 -> 357 bytes
.../lib/phpqrcode/cache/mask_6/mask_149_6.dat | 2 +
.../lib/phpqrcode/cache/mask_6/mask_153_6.dat | Bin 0 -> 367 bytes
.../lib/phpqrcode/cache/mask_6/mask_157_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_161_6.dat | Bin 0 -> 399 bytes
.../lib/phpqrcode/cache/mask_6/mask_165_6.dat | Bin 0 -> 400 bytes
.../lib/phpqrcode/cache/mask_6/mask_169_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_173_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_177_6.dat | 14 +
.../lib/phpqrcode/cache/mask_6/mask_21_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_25_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_29_6.dat | 3 +
.../lib/phpqrcode/cache/mask_6/mask_33_6.dat | Bin 0 -> 124 bytes
.../lib/phpqrcode/cache/mask_6/mask_37_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_41_6.dat | Bin 0 -> 132 bytes
.../lib/phpqrcode/cache/mask_6/mask_45_6.dat | Bin 0 -> 189 bytes
.../lib/phpqrcode/cache/mask_6/mask_49_6.dat | 2 +
.../lib/phpqrcode/cache/mask_6/mask_53_6.dat | Bin 0 -> 195 bytes
.../lib/phpqrcode/cache/mask_6/mask_57_6.dat | 2 +
.../lib/phpqrcode/cache/mask_6/mask_61_6.dat | 2 +
.../lib/phpqrcode/cache/mask_6/mask_65_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_69_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_73_6.dat | Bin 0 -> 230 bytes
.../lib/phpqrcode/cache/mask_6/mask_77_6.dat | 1 +
.../lib/phpqrcode/cache/mask_6/mask_81_6.dat | 3 +
.../lib/phpqrcode/cache/mask_6/mask_85_6.dat | Bin 0 -> 229 bytes
.../lib/phpqrcode/cache/mask_6/mask_89_6.dat | Bin 0 -> 263 bytes
.../lib/phpqrcode/cache/mask_6/mask_93_6.dat | Bin 0 -> 276 bytes
.../lib/phpqrcode/cache/mask_6/mask_97_6.dat | 2 +
.../lib/phpqrcode/cache/mask_7/mask_101_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_105_7.dat | 2 +
.../lib/phpqrcode/cache/mask_7/mask_109_7.dat | 2 +
.../lib/phpqrcode/cache/mask_7/mask_113_7.dat | 11 +
.../lib/phpqrcode/cache/mask_7/mask_117_7.dat | 2 +
.../lib/phpqrcode/cache/mask_7/mask_121_7.dat | 2 +
.../lib/phpqrcode/cache/mask_7/mask_125_7.dat | Bin 0 -> 288 bytes
.../lib/phpqrcode/cache/mask_7/mask_129_7.dat | Bin 0 -> 282 bytes
.../lib/phpqrcode/cache/mask_7/mask_133_7.dat | Bin 0 -> 281 bytes
.../lib/phpqrcode/cache/mask_7/mask_137_7.dat | 5 +
.../lib/phpqrcode/cache/mask_7/mask_141_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_145_7.dat | 2 +
.../lib/phpqrcode/cache/mask_7/mask_149_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_153_7.dat | 2 +
.../lib/phpqrcode/cache/mask_7/mask_157_7.dat | 2 +
.../lib/phpqrcode/cache/mask_7/mask_161_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_165_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_169_7.dat | Bin 0 -> 383 bytes
.../lib/phpqrcode/cache/mask_7/mask_173_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_177_7.dat | Bin 0 -> 407 bytes
.../lib/phpqrcode/cache/mask_7/mask_21_7.dat | 4 +
.../lib/phpqrcode/cache/mask_7/mask_25_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_29_7.dat | 2 +
.../lib/phpqrcode/cache/mask_7/mask_33_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_37_7.dat | Bin 0 -> 122 bytes
.../lib/phpqrcode/cache/mask_7/mask_41_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_45_7.dat | Bin 0 -> 173 bytes
.../lib/phpqrcode/cache/mask_7/mask_49_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_53_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_57_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_61_7.dat | 2 +
.../lib/phpqrcode/cache/mask_7/mask_65_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_69_7.dat | Bin 0 -> 202 bytes
.../lib/phpqrcode/cache/mask_7/mask_73_7.dat | Bin 0 -> 221 bytes
.../lib/phpqrcode/cache/mask_7/mask_77_7.dat | Bin 0 -> 226 bytes
.../lib/phpqrcode/cache/mask_7/mask_81_7.dat | 1 +
.../lib/phpqrcode/cache/mask_7/mask_85_7.dat | Bin 0 -> 213 bytes
.../lib/phpqrcode/cache/mask_7/mask_89_7.dat | Bin 0 -> 244 bytes
.../lib/phpqrcode/cache/mask_7/mask_93_7.dat | Bin 0 -> 248 bytes
.../lib/phpqrcode/cache/mask_7/mask_97_7.dat | 2 +
source/lib/phpqrcode/index.php | 94 +
source/lib/phpqrcode/phpqrcode.php | 3312 +++++++++
source/lib/phpqrcode/qrbitstream.php | 180 +
source/lib/phpqrcode/qrconfig.php | 17 +
source/lib/phpqrcode/qrconst.php | 54 +
source/lib/phpqrcode/qrencode.php | 502 ++
source/lib/phpqrcode/qrimage.php | 95 +
source/lib/phpqrcode/qrinput.php | 729 ++
source/lib/phpqrcode/qrlib.php | 43 +
source/lib/phpqrcode/qrmask.php | 328 +
source/lib/phpqrcode/qrrscode.php | 210 +
source/lib/phpqrcode/qrspec.php | 592 ++
source/lib/phpqrcode/qrsplit.php | 311 +
source/lib/phpqrcode/qrtools.php | 172 +
source/lib/phpqrcode/tools/merge.bat | 2 +
source/lib/phpqrcode/tools/merge.php | 70 +
source/lib/phpqrcode/tools/merge.sh | 2 +
source/lib/phpqrcode/tools/merged_config.php | 17 +
source/lib/phpqrcode/tools/merged_header.php | 36 +
source/lib/prototype.js | 6084 +++++++++++++++++
source/lib/pubsubhubbub/README.txt | 21 +
source/lib/pubsubhubbub/publisher.php | 86 +
source/lib/pubsubhubbub/subscriber.php | 120 +
source/lib/scriptaculous/controls.js | 965 +++
source/lib/scriptaculous/dragdrop.js | 974 +++
source/lib/scriptaculous/effects.js | 1123 +++
source/lib/scriptaculous/scriptaculous.js | 68 +
source/lib/sphinxapi.php | 1691 +++++
source/lib/timezones.txt | 568 ++
source/lib/xsl_mop-up.js | 86 +
source/locale/.htaccess | 2 +
source/locale/ca_CA/LC_MESSAGES/messages.mo | Bin 0 -> 23604 bytes
source/locale/ca_CA/LC_MESSAGES/messages.po | 5059 ++++++++++++++
source/locale/cs_CZ/LC_MESSAGES/messages.mo | Bin 0 -> 61444 bytes
source/locale/cs_CZ/LC_MESSAGES/messages.po | 3783 ++++++++++
source/locale/de_DE/LC_MESSAGES/messages.mo | Bin 0 -> 65134 bytes
source/locale/de_DE/LC_MESSAGES/messages.po | 4046 +++++++++++
source/locale/es_ES/LC_MESSAGES/messages.mo | Bin 0 -> 67373 bytes
source/locale/es_ES/LC_MESSAGES/messages.po | 4619 +++++++++++++
source/locale/fi_FI/LC_MESSAGES/messages.mo | Bin 0 -> 40850 bytes
source/locale/fi_FI/LC_MESSAGES/messages.po | 3687 ++++++++++
source/locale/fr_FR/LC_MESSAGES/messages.mo | Bin 0 -> 66939 bytes
source/locale/fr_FR/LC_MESSAGES/messages.po | 3995 +++++++++++
source/locale/hu_HU/LC_MESSAGES/messages.mo | Bin 0 -> 65959 bytes
source/locale/hu_HU/LC_MESSAGES/messages.po | 3560 ++++++++++
source/locale/it_IT/LC_MESSAGES/messages.mo | Bin 0 -> 34568 bytes
source/locale/it_IT/LC_MESSAGES/messages.po | 4150 +++++++++++
source/locale/ja_JP/LC_MESSAGES/messages.mo | Bin 0 -> 71901 bytes
source/locale/ja_JP/LC_MESSAGES/messages.po | 3518 ++++++++++
source/locale/ko_KR/LC_MESSAGES/messages.mo | Bin 0 -> 45785 bytes
source/locale/ko_KR/LC_MESSAGES/messages.po | 4688 +++++++++++++
source/locale/lv_LV/LC_MESSAGES/messages.mo | Bin 0 -> 42784 bytes
source/locale/lv_LV/LC_MESSAGES/messages.po | 4044 +++++++++++
source/locale/nb_NO/LC_MESSAGES/messages.mo | Bin 0 -> 22368 bytes
source/locale/nb_NO/LC_MESSAGES/messages.po | 5107 ++++++++++++++
source/locale/nl_NL/LC_MESSAGES/messages.mo | Bin 0 -> 62280 bytes
source/locale/nl_NL/LC_MESSAGES/messages.po | 3842 +++++++++++
source/locale/pl_PL/LC_MESSAGES/messages.mo | Bin 0 -> 66808 bytes
source/locale/pl_PL/LC_MESSAGES/messages.po | 4062 +++++++++++
source/locale/pt_BR/LC_MESSAGES/messages.mo | Bin 0 -> 60350 bytes
source/locale/pt_BR/LC_MESSAGES/messages.po | 4199 ++++++++++++
source/locale/ru_RU/LC_MESSAGES/messages.mo | Bin 0 -> 38704 bytes
source/locale/ru_RU/LC_MESSAGES/messages.po | 5192 ++++++++++++++
source/locale/sv_SE/LC_MESSAGES/messages.mo | Bin 0 -> 60532 bytes
source/locale/sv_SE/LC_MESSAGES/messages.po | 4055 +++++++++++
source/locale/zh_CN/LC_MESSAGES/messages.mo | Bin 0 -> 32451 bytes
source/locale/zh_CN/LC_MESSAGES/messages.po | 4135 +++++++++++
source/messages.pot | 3339 +++++++++
source/opml.php | 35 +
source/plugins/af_buni/init.php | 62 +
source/plugins/af_buttersafe/init.php | 62 +
source/plugins/af_dilbert/init.php | 64 +
source/plugins/af_explosm/init.php | 61 +
source/plugins/af_gocomics/init.php | 74 +
source/plugins/af_natgeo/init.php | 57 +
source/plugins/af_pennyarcade/init.php | 92 +
source/plugins/af_redditimgur/init.php | 142 +
source/plugins/af_sciam/init.php | 51 +
source/plugins/af_unburn/init.php | 134 +
source/plugins/af_whomp/init.php | 61 +
source/plugins/auth_internal/init.php | 196 +
source/plugins/auth_remote/init.php | 87 +
source/plugins/bookmarklets/init.php | 54 +
source/plugins/cache_starred_images/init.php | 193 +
source/plugins/close_button/button.png | Bin 0 -> 655 bytes
source/plugins/close_button/init.php | 33 +
source/plugins/embed_original/button.png | Bin 0 -> 1298 bytes
source/plugins/embed_original/init.css | 13 +
source/plugins/embed_original/init.js | 68 +
source/plugins/embed_original/init.php | 58 +
source/plugins/googlereaderimport/init.js | 53 +
source/plugins/googlereaderimport/init.php | 384 ++
source/plugins/googlereaderkeys/init.php | 41 +
source/plugins/import_export/import_export.js | 123 +
source/plugins/import_export/init.php | 463 ++
source/plugins/index.html | 0
source/plugins/instances/init.php | 452 ++
source/plugins/instances/instances.js | 169 +
source/plugins/mail/init.php | 184 +
source/plugins/mail/mail.js | 62 +
source/plugins/mail/mail.png | Bin 0 -> 641 bytes
source/plugins/mailto/init.js | 32 +
source/plugins/mailto/init.php | 94 +
source/plugins/mailto/mail.png | Bin 0 -> 821 bytes
source/plugins/mark_button/init.php | 43 +
source/plugins/no_iframes/init.php | 29 +
source/plugins/no_title_counters/init.js | 5 +
source/plugins/no_title_counters/init.php | 25 +
source/plugins/note/init.php | 76 +
source/plugins/note/note.js | 51 +
source/plugins/note/note.png | Bin 0 -> 500 bytes
source/plugins/nsfw/init.js | 12 +
source/plugins/nsfw/init.php | 108 +
source/plugins/share/init.php | 133 +
source/plugins/share/notshared.png | Bin 0 -> 657 bytes
source/plugins/share/share.js | 88 +
source/plugins/share/share.png | Bin 0 -> 343 bytes
source/plugins/share/share_prefs.js | 21 +
source/plugins/shorten_expanded/init.css | 9 +
source/plugins/shorten_expanded/init.js | 45 +
source/plugins/shorten_expanded/init.php | 29 +
source/plugins/swap_jk/init.php | 31 +
source/plugins/updater/init.php | 394 ++
source/plugins/updater/updater.js | 69 +
source/plugins/vf_shared/init.php | 60 +
source/plugins/vf_shared/share.png | Bin 0 -> 343 bytes
source/prefs.php | 154 +
source/public.php | 61 +
source/register.php | 367 +
source/schema/.htaccess | 2 +
source/schema/ttrss_schema_mysql.sql | 496 ++
source/schema/ttrss_schema_pgsql.sql | 438 ++
source/schema/versions/mysql/10.sql | 12 +
source/schema/versions/mysql/100.sql | 7 +
source/schema/versions/mysql/101.sql | 12 +
source/schema/versions/mysql/102.sql | 7 +
source/schema/versions/mysql/103.sql | 7 +
source/schema/versions/mysql/104.sql | 7 +
source/schema/versions/mysql/105.sql | 11 +
source/schema/versions/mysql/106.sql | 12 +
source/schema/versions/mysql/107.sql | 15 +
source/schema/versions/mysql/108.sql | 7 +
source/schema/versions/mysql/109.sql | 7 +
source/schema/versions/mysql/11.sql | 18 +
source/schema/versions/mysql/110.sql | 7 +
source/schema/versions/mysql/111.sql | 7 +
source/schema/versions/mysql/112.sql | 15 +
source/schema/versions/mysql/113.sql | 8 +
source/schema/versions/mysql/114.sql | 15 +
source/schema/versions/mysql/115.sql | 9 +
source/schema/versions/mysql/116.sql | 7 +
source/schema/versions/mysql/117.sql | 8 +
source/schema/versions/mysql/118.sql | 16 +
source/schema/versions/mysql/119.sql | 7 +
source/schema/versions/mysql/12.sql | 12 +
source/schema/versions/mysql/120.sql | 7 +
source/schema/versions/mysql/121.sql | 7 +
source/schema/versions/mysql/122.sql | 7 +
source/schema/versions/mysql/123.sql | 9 +
source/schema/versions/mysql/13.sql | 6 +
source/schema/versions/mysql/14.sql | 4 +
source/schema/versions/mysql/15.sql | 5 +
source/schema/versions/mysql/16.sql | 6 +
source/schema/versions/mysql/17.sql | 13 +
source/schema/versions/mysql/18.sql | 3 +
source/schema/versions/mysql/19.sql | 11 +
source/schema/versions/mysql/20.sql | 3 +
source/schema/versions/mysql/21.sql | 3 +
source/schema/versions/mysql/22.sql | 8 +
source/schema/versions/mysql/23.sql | 3 +
source/schema/versions/mysql/24.sql | 3 +
source/schema/versions/mysql/25.sql | 3 +
source/schema/versions/mysql/26.sql | 15 +
source/schema/versions/mysql/27.sql | 4 +
source/schema/versions/mysql/28.sql | 3 +
source/schema/versions/mysql/29.sql | 3 +
source/schema/versions/mysql/3.sql | 43 +
source/schema/versions/mysql/30.sql | 4 +
source/schema/versions/mysql/31.sql | 6 +
source/schema/versions/mysql/32.sql | 6 +
source/schema/versions/mysql/33.sql | 3 +
source/schema/versions/mysql/34.sql | 3 +
source/schema/versions/mysql/35.sql | 1 +
source/schema/versions/mysql/36.sql | 9 +
source/schema/versions/mysql/37.sql | 4 +
source/schema/versions/mysql/38.sql | 3 +
source/schema/versions/mysql/39.sql | 5 +
source/schema/versions/mysql/4.sql | 17 +
source/schema/versions/mysql/40.sql | 3 +
source/schema/versions/mysql/41.sql | 6 +
source/schema/versions/mysql/42.sql | 3 +
source/schema/versions/mysql/43.sql | 3 +
source/schema/versions/mysql/44.sql | 9 +
source/schema/versions/mysql/45.sql | 3 +
source/schema/versions/mysql/46.sql | 4 +
source/schema/versions/mysql/47.sql | 9 +
source/schema/versions/mysql/48.sql | 6 +
source/schema/versions/mysql/49.sql | 5 +
source/schema/versions/mysql/5.sql | 12 +
source/schema/versions/mysql/50.sql | 19 +
source/schema/versions/mysql/51.sql | 16 +
source/schema/versions/mysql/52.sql | 5 +
source/schema/versions/mysql/53.sql | 11 +
source/schema/versions/mysql/54.sql | 7 +
source/schema/versions/mysql/55.sql | 7 +
source/schema/versions/mysql/56.sql | 16 +
source/schema/versions/mysql/57.sql | 6 +
source/schema/versions/mysql/58.sql | 7 +
source/schema/versions/mysql/59.sql | 13 +
source/schema/versions/mysql/6.sql | 20 +
source/schema/versions/mysql/60.sql | 20 +
source/schema/versions/mysql/61.sql | 9 +
source/schema/versions/mysql/62.sql | 13 +
source/schema/versions/mysql/63.sql | 18 +
source/schema/versions/mysql/64.sql | 7 +
source/schema/versions/mysql/65.sql | 7 +
source/schema/versions/mysql/66.sql | 7 +
source/schema/versions/mysql/67.sql | 5 +
source/schema/versions/mysql/68.sql | 7 +
source/schema/versions/mysql/69.sql | 12 +
source/schema/versions/mysql/7.sql | 19 +
source/schema/versions/mysql/70.sql | 6 +
source/schema/versions/mysql/71.sql | 7 +
source/schema/versions/mysql/72.sql | 9 +
source/schema/versions/mysql/73.sql | 8 +
source/schema/versions/mysql/74.sql | 9 +
source/schema/versions/mysql/75.sql | 10 +
source/schema/versions/mysql/76.sql | 8 +
source/schema/versions/mysql/77.sql | 7 +
source/schema/versions/mysql/78.sql | 15 +
source/schema/versions/mysql/79.sql | 7 +
source/schema/versions/mysql/8.sql | 14 +
source/schema/versions/mysql/80.sql | 9 +
source/schema/versions/mysql/81.sql | 7 +
source/schema/versions/mysql/82.sql | 7 +
source/schema/versions/mysql/83.sql | 34 +
source/schema/versions/mysql/84.sql | 23 +
source/schema/versions/mysql/85.sql | 13 +
source/schema/versions/mysql/86.sql | 9 +
source/schema/versions/mysql/87.sql | 14 +
source/schema/versions/mysql/88.sql | 10 +
source/schema/versions/mysql/89.sql | 7 +
source/schema/versions/mysql/9.sql | 29 +
source/schema/versions/mysql/90.sql | 7 +
source/schema/versions/mysql/91.sql | 7 +
source/schema/versions/mysql/92.sql | 8 +
source/schema/versions/mysql/93.sql | 10 +
source/schema/versions/mysql/94.sql | 7 +
source/schema/versions/mysql/95.sql | 39 +
source/schema/versions/mysql/96.sql | 38 +
source/schema/versions/mysql/97.sql | 10 +
source/schema/versions/mysql/98.sql | 7 +
source/schema/versions/mysql/99.sql | 12 +
source/schema/versions/pgsql/10.sql | 12 +
source/schema/versions/pgsql/100.sql | 7 +
source/schema/versions/pgsql/101.sql | 11 +
source/schema/versions/pgsql/102.sql | 7 +
source/schema/versions/pgsql/103.sql | 7 +
source/schema/versions/pgsql/104.sql | 7 +
source/schema/versions/pgsql/105.sql | 11 +
source/schema/versions/pgsql/106.sql | 12 +
source/schema/versions/pgsql/107.sql | 15 +
source/schema/versions/pgsql/108.sql | 7 +
source/schema/versions/pgsql/109.sql | 7 +
source/schema/versions/pgsql/11.sql | 18 +
source/schema/versions/pgsql/110.sql | 7 +
source/schema/versions/pgsql/111.sql | 7 +
source/schema/versions/pgsql/112.sql | 15 +
source/schema/versions/pgsql/113.sql | 8 +
source/schema/versions/pgsql/114.sql | 15 +
source/schema/versions/pgsql/115.sql | 9 +
source/schema/versions/pgsql/116.sql | 7 +
source/schema/versions/pgsql/117.sql | 8 +
source/schema/versions/pgsql/118.sql | 15 +
source/schema/versions/pgsql/119.sql | 7 +
source/schema/versions/pgsql/12.sql | 15 +
source/schema/versions/pgsql/120.sql | 7 +
source/schema/versions/pgsql/121.sql | 7 +
source/schema/versions/pgsql/122.sql | 7 +
source/schema/versions/pgsql/123.sql | 5 +
source/schema/versions/pgsql/13.sql | 10 +
source/schema/versions/pgsql/14.sql | 4 +
source/schema/versions/pgsql/15.sql | 5 +
source/schema/versions/pgsql/16.sql | 6 +
source/schema/versions/pgsql/17.sql | 13 +
source/schema/versions/pgsql/18.sql | 3 +
source/schema/versions/pgsql/19.sql | 11 +
source/schema/versions/pgsql/20.sql | 3 +
source/schema/versions/pgsql/21.sql | 3 +
source/schema/versions/pgsql/22.sql | 8 +
source/schema/versions/pgsql/23.sql | 3 +
source/schema/versions/pgsql/24.sql | 3 +
source/schema/versions/pgsql/25.sql | 3 +
source/schema/versions/pgsql/26.sql | 13 +
source/schema/versions/pgsql/27.sql | 4 +
source/schema/versions/pgsql/28.sql | 3 +
source/schema/versions/pgsql/29.sql | 3 +
source/schema/versions/pgsql/3.sql | 43 +
source/schema/versions/pgsql/30.sql | 4 +
source/schema/versions/pgsql/31.sql | 6 +
source/schema/versions/pgsql/32.sql | 6 +
source/schema/versions/pgsql/33.sql | 3 +
source/schema/versions/pgsql/34.sql | 7 +
source/schema/versions/pgsql/35.sql | 3 +
source/schema/versions/pgsql/36.sql | 9 +
source/schema/versions/pgsql/37.sql | 4 +
source/schema/versions/pgsql/38.sql | 3 +
source/schema/versions/pgsql/39.sql | 5 +
source/schema/versions/pgsql/4.sql | 17 +
source/schema/versions/pgsql/40.sql | 3 +
source/schema/versions/pgsql/41.sql | 6 +
source/schema/versions/pgsql/42.sql | 3 +
source/schema/versions/pgsql/43.sql | 7 +
source/schema/versions/pgsql/44.sql | 6 +
source/schema/versions/pgsql/45.sql | 3 +
source/schema/versions/pgsql/46.sql | 5 +
source/schema/versions/pgsql/47.sql | 12 +
source/schema/versions/pgsql/48.sql | 9 +
source/schema/versions/pgsql/49.sql | 9 +
source/schema/versions/pgsql/5.sql | 10 +
source/schema/versions/pgsql/50.sql | 19 +
source/schema/versions/pgsql/51.sql | 18 +
source/schema/versions/pgsql/52.sql | 9 +
source/schema/versions/pgsql/53.sql | 15 +
source/schema/versions/pgsql/54.sql | 7 +
source/schema/versions/pgsql/55.sql | 7 +
source/schema/versions/pgsql/56.sql | 5 +
source/schema/versions/pgsql/57.sql | 6 +
source/schema/versions/pgsql/58.sql | 7 +
source/schema/versions/pgsql/59.sql | 13 +
source/schema/versions/pgsql/6.sql | 24 +
source/schema/versions/pgsql/60.sql | 18 +
source/schema/versions/pgsql/61.sql | 9 +
source/schema/versions/pgsql/62.sql | 13 +
source/schema/versions/pgsql/63.sql | 16 +
source/schema/versions/pgsql/64.sql | 7 +
source/schema/versions/pgsql/65.sql | 7 +
source/schema/versions/pgsql/66.sql | 7 +
source/schema/versions/pgsql/67.sql | 9 +
source/schema/versions/pgsql/68.sql | 7 +
source/schema/versions/pgsql/69.sql | 11 +
source/schema/versions/pgsql/7.sql | 22 +
source/schema/versions/pgsql/70.sql | 6 +
source/schema/versions/pgsql/71.sql | 7 +
source/schema/versions/pgsql/72.sql | 9 +
source/schema/versions/pgsql/73.sql | 8 +
source/schema/versions/pgsql/74.sql | 9 +
source/schema/versions/pgsql/75.sql | 10 +
source/schema/versions/pgsql/76.sql | 8 +
source/schema/versions/pgsql/77.sql | 7 +
source/schema/versions/pgsql/78.sql | 15 +
source/schema/versions/pgsql/79.sql | 7 +
source/schema/versions/pgsql/8.sql | 17 +
source/schema/versions/pgsql/80.sql | 9 +
source/schema/versions/pgsql/81.sql | 7 +
source/schema/versions/pgsql/82.sql | 7 +
source/schema/versions/pgsql/83.sql | 32 +
source/schema/versions/pgsql/84.sql | 22 +
source/schema/versions/pgsql/85.sql | 13 +
source/schema/versions/pgsql/86.sql | 9 +
source/schema/versions/pgsql/87.sql | 14 +
source/schema/versions/pgsql/88.sql | 10 +
source/schema/versions/pgsql/89.sql | 7 +
source/schema/versions/pgsql/9.sql | 33 +
source/schema/versions/pgsql/90.sql | 7 +
source/schema/versions/pgsql/91.sql | 7 +
source/schema/versions/pgsql/92.sql | 8 +
source/schema/versions/pgsql/93.sql | 10 +
source/schema/versions/pgsql/94.sql | 7 +
source/schema/versions/pgsql/95.sql | 39 +
source/schema/versions/pgsql/96.sql | 23 +
source/schema/versions/pgsql/97.sql | 10 +
source/schema/versions/pgsql/98.sql | 7 +
source/schema/versions/pgsql/99.sql | 12 +
source/templates/.htaccess | 2 +
source/templates/digest_template.txt | 14 +
source/templates/digest_template_html.txt | 17 +
source/templates/email_article_template.txt | 16 +
source/templates/generated_feed.txt | 40 +
source/templates/resetpass_template.txt | 9 +
source/themes/.empty | 0
source/themes/default.css | 3 +
source/update.php | 352 +
source/update_daemon2.php | 238 +
source/utils/.htaccess | 2 +
source/utils/extract-i18n-js.pl | 15 +
source/utils/localized_schema.txt | 17 +
source/utils/regen_config_checks.sh | 17 +
source/utils/update-translations.sh | 25 +
2353 files changed, 164290 insertions(+)
create mode 100644 source/LICENSE
create mode 100644 source/README.md
create mode 100644 source/api/index.php
create mode 100644 source/atom-to-html.xsl
create mode 100644 source/backend.php
create mode 100755 source/cache/.htaccess
create mode 100644 source/classes/.htaccess
create mode 100644 source/classes/api.php
create mode 100644 source/classes/article.php
create mode 100644 source/classes/auth/base.php
create mode 100644 source/classes/backend.php
create mode 100644 source/classes/db.php
create mode 100644 source/classes/db/mysql.php
create mode 100644 source/classes/db/mysqli.php
create mode 100644 source/classes/db/pdo.php
create mode 100644 source/classes/db/pgsql.php
create mode 100644 source/classes/db/prefs.php
create mode 100644 source/classes/db/stmt.php
create mode 100644 source/classes/dbupdater.php
create mode 100644 source/classes/dlg.php
create mode 100644 source/classes/feedenclosure.php
create mode 100644 source/classes/feeditem.php
create mode 100644 source/classes/feeditem/atom.php
create mode 100644 source/classes/feeditem/common.php
create mode 100644 source/classes/feeditem/rss.php
create mode 100644 source/classes/feedparser.php
create mode 100644 source/classes/feeds.php
create mode 100644 source/classes/handler.php
create mode 100644 source/classes/handler/protected.php
create mode 100644 source/classes/handler/public.php
create mode 100644 source/classes/iauthmodule.php
create mode 100644 source/classes/idb.php
create mode 100644 source/classes/ihandler.php
create mode 100644 source/classes/logger.php
create mode 100644 source/classes/logger/sql.php
create mode 100644 source/classes/logger/syslog.php
create mode 100644 source/classes/opml.php
create mode 100644 source/classes/plugin.php
create mode 100644 source/classes/pluginhandler.php
create mode 100644 source/classes/pluginhost.php
create mode 100644 source/classes/pref/feeds.php
create mode 100644 source/classes/pref/filters.php
create mode 100644 source/classes/pref/labels.php
create mode 100644 source/classes/pref/prefs.php
create mode 100644 source/classes/pref/system.php
create mode 100644 source/classes/pref/users.php
create mode 100644 source/classes/rpc.php
create mode 100644 source/classes/ttrssmailer.php
create mode 100644 source/config.php-dist
create mode 100644 source/css/cdm.css
create mode 100644 source/css/layout.css
create mode 100644 source/css/prefs.css
create mode 100644 source/css/tt-rss.css
create mode 100644 source/css/utility.css
create mode 100644 source/errors.php
create mode 100644 source/image.php
create mode 100644 source/images/alert.png
create mode 100644 source/images/archive.png
create mode 100644 source/images/blank_icon.gif
create mode 100644 source/images/collapse.png
create mode 100644 source/images/cross.png
create mode 100644 source/images/error.png
create mode 100644 source/images/favicon-72px.png
create mode 100644 source/images/favicon.png
create mode 100644 source/images/feed.png
create mode 100644 source/images/filter.png
create mode 100644 source/images/folder.png
create mode 100644 source/images/fresh.png
create mode 100644 source/images/indicator_tiny.gif
create mode 100644 source/images/indicator_white.gif
create mode 100644 source/images/information.png
create mode 100644 source/images/label.png
create mode 100644 source/images/logo_small.png
create mode 100644 source/images/logo_wide.png
create mode 100644 source/images/mark_set.png
create mode 100644 source/images/mark_unset.png
create mode 100644 source/images/new_version.png
create mode 100644 source/images/page_white_go.png
create mode 100644 source/images/plugin.png
create mode 100644 source/images/plugin_disabled.png
create mode 100644 source/images/pub_set.png
create mode 100644 source/images/pub_unset.png
create mode 100644 source/images/score_half_high.png
create mode 100644 source/images/score_half_low.png
create mode 100644 source/images/score_high.png
create mode 100644 source/images/score_low.png
create mode 100644 source/images/score_neutral.png
create mode 100644 source/images/star.png
create mode 100644 source/images/tag.png
create mode 100644 source/images/time.png
create mode 100644 source/images/toolbar.png
create mode 100644 source/images/user.png
create mode 100644 source/include/autoload.php
create mode 100644 source/include/ccache.php
create mode 100644 source/include/colors.php
create mode 100644 source/include/crypt.php
create mode 100644 source/include/db-prefs.php
create mode 100644 source/include/db.php
create mode 100644 source/include/digest.php
create mode 100644 source/include/errorhandler.php
create mode 100644 source/include/feedbrowser.php
create mode 100644 source/include/functions.php
create mode 100644 source/include/labels.php
create mode 100644 source/include/login_form.php
create mode 100644 source/include/rssfuncs.php
create mode 100644 source/include/sanity_check.php
create mode 100644 source/include/sanity_config.php
create mode 100644 source/include/sessions.php
create mode 100644 source/include/version.php
create mode 100644 source/index.php
create mode 100644 source/install/index.php
create mode 100644 source/js/FeedTree.js
create mode 100644 source/js/PluginHost.js
create mode 100644 source/js/PrefFeedTree.js
create mode 100644 source/js/PrefFilterTree.js
create mode 100644 source/js/PrefLabelTree.js
create mode 100644 source/js/deprecated.js
create mode 100644 source/js/feedlist.js
create mode 100644 source/js/functions.js
create mode 100644 source/js/index.html
create mode 100644 source/js/prefs.js
create mode 100644 source/js/tt-rss.js
create mode 100644 source/js/viewfeed.js
create mode 100644 source/lib/CheckBoxTree.js
create mode 100644 source/lib/MiniTemplator.class.php
create mode 100644 source/lib/Mobile_Detect.php
create mode 100644 source/lib/accept-to-gettext.php
create mode 100644 source/lib/button/license.txt
create mode 100644 source/lib/button/musicplayer.swf
create mode 100644 source/lib/button/musicplayer_f6.swf
create mode 100644 source/lib/dijit/BackgroundIframe.js
create mode 100644 source/lib/dijit/Calendar.js
create mode 100644 source/lib/dijit/CalendarLite.js
create mode 100644 source/lib/dijit/CheckedMenuItem.js
create mode 100644 source/lib/dijit/ColorPalette.js
create mode 100644 source/lib/dijit/Declaration.js
create mode 100644 source/lib/dijit/Destroyable.js
create mode 100644 source/lib/dijit/Dialog.js
create mode 100644 source/lib/dijit/DialogUnderlay.js
create mode 100644 source/lib/dijit/DropDownMenu.js
create mode 100644 source/lib/dijit/Editor.js
create mode 100644 source/lib/dijit/InlineEditBox.js
create mode 100644 source/lib/dijit/LICENSE
create mode 100644 source/lib/dijit/Menu.js
create mode 100644 source/lib/dijit/MenuBar.js
create mode 100644 source/lib/dijit/MenuBarItem.js
create mode 100644 source/lib/dijit/MenuItem.js
create mode 100644 source/lib/dijit/MenuSeparator.js
create mode 100644 source/lib/dijit/PopupMenuBarItem.js
create mode 100644 source/lib/dijit/PopupMenuItem.js
create mode 100644 source/lib/dijit/ProgressBar.js
create mode 100644 source/lib/dijit/TitlePane.js
create mode 100644 source/lib/dijit/Toolbar.js
create mode 100644 source/lib/dijit/ToolbarSeparator.js
create mode 100644 source/lib/dijit/Tooltip.js
create mode 100644 source/lib/dijit/TooltipDialog.js
create mode 100644 source/lib/dijit/Tree.js
create mode 100644 source/lib/dijit/Viewport.js
create mode 100644 source/lib/dijit/WidgetSet.js
create mode 100644 source/lib/dijit/_BidiSupport.js
create mode 100644 source/lib/dijit/_Calendar.js
create mode 100644 source/lib/dijit/_Contained.js
create mode 100644 source/lib/dijit/_Container.js
create mode 100644 source/lib/dijit/_CssStateMixin.js
create mode 100644 source/lib/dijit/_DialogMixin.js
create mode 100644 source/lib/dijit/_FocusMixin.js
create mode 100644 source/lib/dijit/_HasDropDown.js
create mode 100644 source/lib/dijit/_KeyNavContainer.js
create mode 100644 source/lib/dijit/_MenuBase.js
create mode 100644 source/lib/dijit/_OnDijitClickMixin.js
create mode 100644 source/lib/dijit/_PaletteMixin.js
create mode 100644 source/lib/dijit/_Templated.js
create mode 100644 source/lib/dijit/_TemplatedMixin.js
create mode 100644 source/lib/dijit/_TimePicker.js
create mode 100644 source/lib/dijit/_Widget.js
create mode 100644 source/lib/dijit/_WidgetBase.js
create mode 100644 source/lib/dijit/_WidgetsInTemplateMixin.js
create mode 100644 source/lib/dijit/_base.js
create mode 100644 source/lib/dijit/_base/focus.js
create mode 100644 source/lib/dijit/_base/manager.js
create mode 100644 source/lib/dijit/_base/place.js
create mode 100644 source/lib/dijit/_base/popup.js
create mode 100644 source/lib/dijit/_base/scroll.js
create mode 100644 source/lib/dijit/_base/sniff.js
create mode 100644 source/lib/dijit/_base/typematic.js
create mode 100644 source/lib/dijit/_base/wai.js
create mode 100644 source/lib/dijit/_base/window.js
create mode 100644 source/lib/dijit/_editor/RichText.js
create mode 100644 source/lib/dijit/_editor/_Plugin.js
create mode 100644 source/lib/dijit/_editor/html.js
create mode 100644 source/lib/dijit/_editor/nls/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/ar/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/ar/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/ar/commands.js
create mode 100644 source/lib/dijit/_editor/nls/az/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/az/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/az/commands.js
create mode 100644 source/lib/dijit/_editor/nls/ca/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/ca/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/ca/commands.js
create mode 100644 source/lib/dijit/_editor/nls/commands.js
create mode 100644 source/lib/dijit/_editor/nls/cs/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/cs/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/cs/commands.js
create mode 100644 source/lib/dijit/_editor/nls/da/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/da/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/da/commands.js
create mode 100644 source/lib/dijit/_editor/nls/de/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/de/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/de/commands.js
create mode 100644 source/lib/dijit/_editor/nls/el/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/el/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/el/commands.js
create mode 100644 source/lib/dijit/_editor/nls/es/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/es/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/es/commands.js
create mode 100644 source/lib/dijit/_editor/nls/fi/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/fi/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/fi/commands.js
create mode 100644 source/lib/dijit/_editor/nls/fr/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/fr/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/fr/commands.js
create mode 100644 source/lib/dijit/_editor/nls/he/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/he/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/he/commands.js
create mode 100644 source/lib/dijit/_editor/nls/hr/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/hr/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/hr/commands.js
create mode 100644 source/lib/dijit/_editor/nls/hu/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/hu/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/hu/commands.js
create mode 100644 source/lib/dijit/_editor/nls/it/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/it/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/it/commands.js
create mode 100644 source/lib/dijit/_editor/nls/ja/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/ja/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/ja/commands.js
create mode 100644 source/lib/dijit/_editor/nls/kk/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/kk/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/kk/commands.js
create mode 100644 source/lib/dijit/_editor/nls/ko/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/ko/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/ko/commands.js
create mode 100644 source/lib/dijit/_editor/nls/nb/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/nb/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/nb/commands.js
create mode 100644 source/lib/dijit/_editor/nls/nl/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/nl/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/nl/commands.js
create mode 100644 source/lib/dijit/_editor/nls/pl/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/pl/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/pl/commands.js
create mode 100644 source/lib/dijit/_editor/nls/pt-pt/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/pt-pt/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/pt-pt/commands.js
create mode 100644 source/lib/dijit/_editor/nls/pt/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/pt/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/pt/commands.js
create mode 100644 source/lib/dijit/_editor/nls/ro/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/ro/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/ro/commands.js
create mode 100644 source/lib/dijit/_editor/nls/ru/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/ru/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/ru/commands.js
create mode 100644 source/lib/dijit/_editor/nls/sk/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/sk/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/sk/commands.js
create mode 100644 source/lib/dijit/_editor/nls/sl/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/sl/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/sl/commands.js
create mode 100644 source/lib/dijit/_editor/nls/sv/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/sv/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/sv/commands.js
create mode 100644 source/lib/dijit/_editor/nls/th/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/th/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/th/commands.js
create mode 100644 source/lib/dijit/_editor/nls/tr/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/tr/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/tr/commands.js
create mode 100644 source/lib/dijit/_editor/nls/zh-tw/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/zh-tw/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/zh-tw/commands.js
create mode 100644 source/lib/dijit/_editor/nls/zh/FontChoice.js
create mode 100644 source/lib/dijit/_editor/nls/zh/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/nls/zh/commands.js
create mode 100644 source/lib/dijit/_editor/plugins/AlwaysShowToolbar.js
create mode 100644 source/lib/dijit/_editor/plugins/EnterKeyHandling.js
create mode 100644 source/lib/dijit/_editor/plugins/FontChoice.js
create mode 100644 source/lib/dijit/_editor/plugins/FullScreen.js
create mode 100644 source/lib/dijit/_editor/plugins/LinkDialog.js
create mode 100644 source/lib/dijit/_editor/plugins/NewPage.js
create mode 100644 source/lib/dijit/_editor/plugins/Print.js
create mode 100644 source/lib/dijit/_editor/plugins/TabIndent.js
create mode 100644 source/lib/dijit/_editor/plugins/TextColor.js
create mode 100644 source/lib/dijit/_editor/plugins/ToggleDir.js
create mode 100644 source/lib/dijit/_editor/plugins/ViewSource.js
create mode 100644 source/lib/dijit/_editor/range.js
create mode 100644 source/lib/dijit/_editor/selection.js
create mode 100644 source/lib/dijit/_tree/dndSource.js
create mode 100644 source/lib/dijit/a11y.js
create mode 100644 source/lib/dijit/a11yclick.js
create mode 100644 source/lib/dijit/dijit-all.js
create mode 100644 source/lib/dijit/dijit.js
create mode 100644 source/lib/dijit/dijit.profile.js
create mode 100644 source/lib/dijit/focus.js
create mode 100644 source/lib/dijit/form/Button.js
create mode 100644 source/lib/dijit/form/CheckBox.js
create mode 100644 source/lib/dijit/form/ComboBox.js
create mode 100644 source/lib/dijit/form/ComboBoxMixin.js
create mode 100644 source/lib/dijit/form/ComboButton.js
create mode 100644 source/lib/dijit/form/CurrencyTextBox.js
create mode 100644 source/lib/dijit/form/DataList.js
create mode 100644 source/lib/dijit/form/DateTextBox.js
create mode 100644 source/lib/dijit/form/DropDownButton.js
create mode 100644 source/lib/dijit/form/FilteringSelect.js
create mode 100644 source/lib/dijit/form/Form.js
create mode 100644 source/lib/dijit/form/HorizontalRule.js
create mode 100644 source/lib/dijit/form/HorizontalRuleLabels.js
create mode 100644 source/lib/dijit/form/HorizontalSlider.js
create mode 100644 source/lib/dijit/form/MappedTextBox.js
create mode 100644 source/lib/dijit/form/MultiSelect.js
create mode 100644 source/lib/dijit/form/NumberSpinner.js
create mode 100644 source/lib/dijit/form/NumberTextBox.js
create mode 100644 source/lib/dijit/form/RadioButton.js
create mode 100644 source/lib/dijit/form/RangeBoundTextBox.js
create mode 100644 source/lib/dijit/form/Select.js
create mode 100644 source/lib/dijit/form/SimpleTextarea.js
create mode 100644 source/lib/dijit/form/Slider.js
create mode 100644 source/lib/dijit/form/TextBox.js
create mode 100644 source/lib/dijit/form/Textarea.js
create mode 100644 source/lib/dijit/form/TimeTextBox.js
create mode 100644 source/lib/dijit/form/ToggleButton.js
create mode 100644 source/lib/dijit/form/ValidationTextBox.js
create mode 100644 source/lib/dijit/form/VerticalRule.js
create mode 100644 source/lib/dijit/form/VerticalRuleLabels.js
create mode 100644 source/lib/dijit/form/VerticalSlider.js
create mode 100644 source/lib/dijit/form/_AutoCompleterMixin.js
create mode 100644 source/lib/dijit/form/_ButtonMixin.js
create mode 100644 source/lib/dijit/form/_CheckBoxMixin.js
create mode 100644 source/lib/dijit/form/_ComboBoxMenu.js
create mode 100644 source/lib/dijit/form/_ComboBoxMenuMixin.js
create mode 100644 source/lib/dijit/form/_DateTimeTextBox.js
create mode 100644 source/lib/dijit/form/_ExpandingTextAreaMixin.js
create mode 100644 source/lib/dijit/form/_FormMixin.js
create mode 100644 source/lib/dijit/form/_FormSelectWidget.js
create mode 100644 source/lib/dijit/form/_FormValueMixin.js
create mode 100644 source/lib/dijit/form/_FormValueWidget.js
create mode 100644 source/lib/dijit/form/_FormWidget.js
create mode 100644 source/lib/dijit/form/_FormWidgetMixin.js
create mode 100644 source/lib/dijit/form/_ListBase.js
create mode 100644 source/lib/dijit/form/_ListMouseMixin.js
create mode 100644 source/lib/dijit/form/_RadioButtonMixin.js
create mode 100644 source/lib/dijit/form/_SearchMixin.js
create mode 100644 source/lib/dijit/form/_Spinner.js
create mode 100644 source/lib/dijit/form/_TextBoxMixin.js
create mode 100644 source/lib/dijit/form/_ToggleButtonMixin.js
create mode 100644 source/lib/dijit/form/nls/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/Textarea.js
create mode 100644 source/lib/dijit/form/nls/ar/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/ar/Textarea.js
create mode 100644 source/lib/dijit/form/nls/ar/validate.js
create mode 100644 source/lib/dijit/form/nls/az/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/az/Textarea.js
create mode 100644 source/lib/dijit/form/nls/az/validate.js
create mode 100644 source/lib/dijit/form/nls/ca/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/ca/Textarea.js
create mode 100644 source/lib/dijit/form/nls/ca/validate.js
create mode 100644 source/lib/dijit/form/nls/cs/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/cs/Textarea.js
create mode 100644 source/lib/dijit/form/nls/cs/validate.js
create mode 100644 source/lib/dijit/form/nls/da/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/da/Textarea.js
create mode 100644 source/lib/dijit/form/nls/da/validate.js
create mode 100644 source/lib/dijit/form/nls/de/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/de/Textarea.js
create mode 100644 source/lib/dijit/form/nls/de/validate.js
create mode 100644 source/lib/dijit/form/nls/el/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/el/Textarea.js
create mode 100644 source/lib/dijit/form/nls/el/validate.js
create mode 100644 source/lib/dijit/form/nls/es/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/es/Textarea.js
create mode 100644 source/lib/dijit/form/nls/es/validate.js
create mode 100644 source/lib/dijit/form/nls/fi/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/fi/Textarea.js
create mode 100644 source/lib/dijit/form/nls/fi/validate.js
create mode 100644 source/lib/dijit/form/nls/fr/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/fr/Textarea.js
create mode 100644 source/lib/dijit/form/nls/fr/validate.js
create mode 100644 source/lib/dijit/form/nls/he/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/he/Textarea.js
create mode 100644 source/lib/dijit/form/nls/he/validate.js
create mode 100644 source/lib/dijit/form/nls/hr/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/hr/Textarea.js
create mode 100644 source/lib/dijit/form/nls/hr/validate.js
create mode 100644 source/lib/dijit/form/nls/hu/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/hu/Textarea.js
create mode 100644 source/lib/dijit/form/nls/hu/validate.js
create mode 100644 source/lib/dijit/form/nls/it/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/it/Textarea.js
create mode 100644 source/lib/dijit/form/nls/it/validate.js
create mode 100644 source/lib/dijit/form/nls/ja/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/ja/Textarea.js
create mode 100644 source/lib/dijit/form/nls/ja/validate.js
create mode 100644 source/lib/dijit/form/nls/kk/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/kk/Textarea.js
create mode 100644 source/lib/dijit/form/nls/kk/validate.js
create mode 100644 source/lib/dijit/form/nls/ko/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/ko/Textarea.js
create mode 100644 source/lib/dijit/form/nls/ko/validate.js
create mode 100644 source/lib/dijit/form/nls/nb/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/nb/Textarea.js
create mode 100644 source/lib/dijit/form/nls/nb/validate.js
create mode 100644 source/lib/dijit/form/nls/nl/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/nl/Textarea.js
create mode 100644 source/lib/dijit/form/nls/nl/validate.js
create mode 100644 source/lib/dijit/form/nls/pl/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/pl/Textarea.js
create mode 100644 source/lib/dijit/form/nls/pl/validate.js
create mode 100644 source/lib/dijit/form/nls/pt-pt/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/pt-pt/Textarea.js
create mode 100644 source/lib/dijit/form/nls/pt-pt/validate.js
create mode 100644 source/lib/dijit/form/nls/pt/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/pt/Textarea.js
create mode 100644 source/lib/dijit/form/nls/pt/validate.js
create mode 100644 source/lib/dijit/form/nls/ro/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/ro/Textarea.js
create mode 100644 source/lib/dijit/form/nls/ro/validate.js
create mode 100644 source/lib/dijit/form/nls/ru/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/ru/Textarea.js
create mode 100644 source/lib/dijit/form/nls/ru/validate.js
create mode 100644 source/lib/dijit/form/nls/sk/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/sk/Textarea.js
create mode 100644 source/lib/dijit/form/nls/sk/validate.js
create mode 100644 source/lib/dijit/form/nls/sl/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/sl/Textarea.js
create mode 100644 source/lib/dijit/form/nls/sl/validate.js
create mode 100644 source/lib/dijit/form/nls/sv/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/sv/Textarea.js
create mode 100644 source/lib/dijit/form/nls/sv/validate.js
create mode 100644 source/lib/dijit/form/nls/th/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/th/Textarea.js
create mode 100644 source/lib/dijit/form/nls/th/validate.js
create mode 100644 source/lib/dijit/form/nls/tr/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/tr/Textarea.js
create mode 100644 source/lib/dijit/form/nls/tr/validate.js
create mode 100644 source/lib/dijit/form/nls/validate.js
create mode 100644 source/lib/dijit/form/nls/zh-tw/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/zh-tw/Textarea.js
create mode 100644 source/lib/dijit/form/nls/zh-tw/validate.js
create mode 100644 source/lib/dijit/form/nls/zh/ComboBox.js
create mode 100644 source/lib/dijit/form/nls/zh/Textarea.js
create mode 100644 source/lib/dijit/form/nls/zh/validate.js
create mode 100644 source/lib/dijit/form/templates/Button.html
create mode 100644 source/lib/dijit/form/templates/CheckBox.html
create mode 100644 source/lib/dijit/form/templates/ComboButton.html
create mode 100644 source/lib/dijit/form/templates/DropDownBox.html
create mode 100644 source/lib/dijit/form/templates/DropDownButton.html
create mode 100644 source/lib/dijit/form/templates/HorizontalSlider.html
create mode 100644 source/lib/dijit/form/templates/Select.html
create mode 100644 source/lib/dijit/form/templates/Spinner.html
create mode 100644 source/lib/dijit/form/templates/TextBox.html
create mode 100644 source/lib/dijit/form/templates/ValidationTextBox.html
create mode 100644 source/lib/dijit/form/templates/VerticalSlider.html
create mode 100644 source/lib/dijit/hccss.js
create mode 100644 source/lib/dijit/icons/commonIcons.css
create mode 100644 source/lib/dijit/icons/commonIcons_rtl.css
create mode 100644 source/lib/dijit/icons/editorIcons.css
create mode 100644 source/lib/dijit/icons/editorIcons_rtl.css
create mode 100644 source/lib/dijit/icons/images/commonIconsObjActDisabled.png
create mode 100644 source/lib/dijit/icons/images/commonIconsObjActDisabled_rtl.png
create mode 100644 source/lib/dijit/icons/images/commonIconsObjActEnabled.png
create mode 100644 source/lib/dijit/icons/images/commonIconsObjActEnabled8bit.png
create mode 100644 source/lib/dijit/icons/images/commonIconsObjActEnabled8bit_rtl.png
create mode 100644 source/lib/dijit/icons/images/commonIconsObjActEnabled_rtl.png
create mode 100644 source/lib/dijit/icons/images/editorIconsDisabled.png
create mode 100644 source/lib/dijit/icons/images/editorIconsDisabled_rtl.png
create mode 100644 source/lib/dijit/icons/images/editorIconsEnabled.png
create mode 100644 source/lib/dijit/icons/images/editorIconsEnabled_rtl.png
create mode 100644 source/lib/dijit/icons/images/loadingAnimation_rtl.gif
create mode 100644 source/lib/dijit/layout/AccordionContainer.js
create mode 100644 source/lib/dijit/layout/AccordionPane.js
create mode 100644 source/lib/dijit/layout/BorderContainer.js
create mode 100644 source/lib/dijit/layout/ContentPane.js
create mode 100644 source/lib/dijit/layout/LayoutContainer.js
create mode 100644 source/lib/dijit/layout/LinkPane.js
create mode 100644 source/lib/dijit/layout/ScrollingTabController.js
create mode 100644 source/lib/dijit/layout/SplitContainer.js
create mode 100644 source/lib/dijit/layout/StackContainer.js
create mode 100644 source/lib/dijit/layout/StackController.js
create mode 100644 source/lib/dijit/layout/TabContainer.js
create mode 100644 source/lib/dijit/layout/TabController.js
create mode 100644 source/lib/dijit/layout/_ContentPaneResizeMixin.js
create mode 100644 source/lib/dijit/layout/_LayoutWidget.js
create mode 100644 source/lib/dijit/layout/_TabContainerBase.js
create mode 100644 source/lib/dijit/layout/templates/AccordionButton.html
create mode 100644 source/lib/dijit/layout/templates/ScrollingTabController.html
create mode 100644 source/lib/dijit/layout/templates/TabContainer.html
create mode 100644 source/lib/dijit/layout/templates/_ScrollingTabControllerButton.html
create mode 100644 source/lib/dijit/layout/templates/_TabButton.html
create mode 100644 source/lib/dijit/layout/utils.js
create mode 100644 source/lib/dijit/main.js
create mode 100644 source/lib/dijit/nls/ar/common.js
create mode 100644 source/lib/dijit/nls/ar/loading.js
create mode 100644 source/lib/dijit/nls/az/common.js
create mode 100644 source/lib/dijit/nls/az/loading.js
create mode 100644 source/lib/dijit/nls/ca/common.js
create mode 100644 source/lib/dijit/nls/ca/loading.js
create mode 100644 source/lib/dijit/nls/common.js
create mode 100644 source/lib/dijit/nls/cs/common.js
create mode 100644 source/lib/dijit/nls/cs/loading.js
create mode 100644 source/lib/dijit/nls/da/common.js
create mode 100644 source/lib/dijit/nls/da/loading.js
create mode 100644 source/lib/dijit/nls/de/common.js
create mode 100644 source/lib/dijit/nls/de/loading.js
create mode 100644 source/lib/dijit/nls/el/common.js
create mode 100644 source/lib/dijit/nls/el/loading.js
create mode 100644 source/lib/dijit/nls/es/common.js
create mode 100644 source/lib/dijit/nls/es/loading.js
create mode 100644 source/lib/dijit/nls/fi/common.js
create mode 100644 source/lib/dijit/nls/fi/loading.js
create mode 100644 source/lib/dijit/nls/fr/common.js
create mode 100644 source/lib/dijit/nls/fr/loading.js
create mode 100644 source/lib/dijit/nls/he/common.js
create mode 100644 source/lib/dijit/nls/he/loading.js
create mode 100644 source/lib/dijit/nls/hr/common.js
create mode 100644 source/lib/dijit/nls/hr/loading.js
create mode 100644 source/lib/dijit/nls/hu/common.js
create mode 100644 source/lib/dijit/nls/hu/loading.js
create mode 100644 source/lib/dijit/nls/it/common.js
create mode 100644 source/lib/dijit/nls/it/loading.js
create mode 100644 source/lib/dijit/nls/ja/common.js
create mode 100644 source/lib/dijit/nls/ja/loading.js
create mode 100644 source/lib/dijit/nls/kk/common.js
create mode 100644 source/lib/dijit/nls/kk/loading.js
create mode 100644 source/lib/dijit/nls/ko/common.js
create mode 100644 source/lib/dijit/nls/ko/loading.js
create mode 100644 source/lib/dijit/nls/loading.js
create mode 100644 source/lib/dijit/nls/nb/common.js
create mode 100644 source/lib/dijit/nls/nb/loading.js
create mode 100644 source/lib/dijit/nls/nl/common.js
create mode 100644 source/lib/dijit/nls/nl/loading.js
create mode 100644 source/lib/dijit/nls/pl/common.js
create mode 100644 source/lib/dijit/nls/pl/loading.js
create mode 100644 source/lib/dijit/nls/pt-pt/common.js
create mode 100644 source/lib/dijit/nls/pt-pt/loading.js
create mode 100644 source/lib/dijit/nls/pt/common.js
create mode 100644 source/lib/dijit/nls/pt/loading.js
create mode 100644 source/lib/dijit/nls/ro/common.js
create mode 100644 source/lib/dijit/nls/ro/loading.js
create mode 100644 source/lib/dijit/nls/ru/common.js
create mode 100644 source/lib/dijit/nls/ru/loading.js
create mode 100644 source/lib/dijit/nls/sk/common.js
create mode 100644 source/lib/dijit/nls/sk/loading.js
create mode 100644 source/lib/dijit/nls/sl/common.js
create mode 100644 source/lib/dijit/nls/sl/loading.js
create mode 100644 source/lib/dijit/nls/sv/common.js
create mode 100644 source/lib/dijit/nls/sv/loading.js
create mode 100644 source/lib/dijit/nls/th/common.js
create mode 100644 source/lib/dijit/nls/th/loading.js
create mode 100644 source/lib/dijit/nls/tr/common.js
create mode 100644 source/lib/dijit/nls/tr/loading.js
create mode 100644 source/lib/dijit/nls/zh-tw/common.js
create mode 100644 source/lib/dijit/nls/zh-tw/loading.js
create mode 100644 source/lib/dijit/nls/zh/common.js
create mode 100644 source/lib/dijit/nls/zh/loading.js
create mode 100644 source/lib/dijit/package.json
create mode 100644 source/lib/dijit/place.js
create mode 100644 source/lib/dijit/popup.js
create mode 100644 source/lib/dijit/registry.js
create mode 100644 source/lib/dijit/templates/Calendar.html
create mode 100644 source/lib/dijit/templates/CheckedMenuItem.html
create mode 100644 source/lib/dijit/templates/ColorPalette.html
create mode 100644 source/lib/dijit/templates/Dialog.html
create mode 100644 source/lib/dijit/templates/InlineEditBox.html
create mode 100644 source/lib/dijit/templates/Menu.html
create mode 100644 source/lib/dijit/templates/MenuBar.html
create mode 100644 source/lib/dijit/templates/MenuBarItem.html
create mode 100644 source/lib/dijit/templates/MenuItem.html
create mode 100644 source/lib/dijit/templates/MenuSeparator.html
create mode 100644 source/lib/dijit/templates/ProgressBar.html
create mode 100644 source/lib/dijit/templates/TimePicker.html
create mode 100644 source/lib/dijit/templates/TitlePane.html
create mode 100644 source/lib/dijit/templates/Tooltip.html
create mode 100644 source/lib/dijit/templates/TooltipDialog.html
create mode 100644 source/lib/dijit/templates/Tree.html
create mode 100644 source/lib/dijit/templates/TreeNode.html
create mode 100644 source/lib/dijit/themes/a11y/README.txt
create mode 100644 source/lib/dijit/themes/a11y/colors3x4.png
create mode 100644 source/lib/dijit/themes/a11y/colors7x10.png
create mode 100644 source/lib/dijit/themes/a11y/indeterminate_progress.gif
create mode 100644 source/lib/dijit/themes/claro/Calendar.css
create mode 100644 source/lib/dijit/themes/claro/Calendar.less
create mode 100644 source/lib/dijit/themes/claro/Calendar_rtl.css
create mode 100644 source/lib/dijit/themes/claro/Calendar_rtl.less
create mode 100644 source/lib/dijit/themes/claro/ColorPalette.css
create mode 100644 source/lib/dijit/themes/claro/ColorPalette.less
create mode 100644 source/lib/dijit/themes/claro/Common.css
create mode 100644 source/lib/dijit/themes/claro/Common.less
create mode 100644 source/lib/dijit/themes/claro/Dialog.css
create mode 100644 source/lib/dijit/themes/claro/Dialog.less
create mode 100644 source/lib/dijit/themes/claro/Dialog_rtl.css
create mode 100644 source/lib/dijit/themes/claro/Dialog_rtl.less
create mode 100644 source/lib/dijit/themes/claro/Editor.css
create mode 100644 source/lib/dijit/themes/claro/Editor.less
create mode 100644 source/lib/dijit/themes/claro/Editor_rtl.css
create mode 100644 source/lib/dijit/themes/claro/Editor_rtl.less
create mode 100644 source/lib/dijit/themes/claro/InlineEditBox.css
create mode 100644 source/lib/dijit/themes/claro/InlineEditBox.less
create mode 100644 source/lib/dijit/themes/claro/Menu.css
create mode 100644 source/lib/dijit/themes/claro/Menu.less
create mode 100644 source/lib/dijit/themes/claro/Menu_rtl.css
create mode 100644 source/lib/dijit/themes/claro/Menu_rtl.less
create mode 100644 source/lib/dijit/themes/claro/ProgressBar.css
create mode 100644 source/lib/dijit/themes/claro/ProgressBar.less
create mode 100644 source/lib/dijit/themes/claro/README
create mode 100644 source/lib/dijit/themes/claro/TimePicker.css
create mode 100644 source/lib/dijit/themes/claro/TimePicker.less
create mode 100644 source/lib/dijit/themes/claro/TimePicker_rtl.css
create mode 100644 source/lib/dijit/themes/claro/TimePicker_rtl.less
create mode 100644 source/lib/dijit/themes/claro/TitlePane.css
create mode 100644 source/lib/dijit/themes/claro/TitlePane.less
create mode 100644 source/lib/dijit/themes/claro/TitlePane_rtl.css
create mode 100644 source/lib/dijit/themes/claro/TitlePane_rtl.less
create mode 100644 source/lib/dijit/themes/claro/Toolbar.css
create mode 100644 source/lib/dijit/themes/claro/Toolbar.less
create mode 100644 source/lib/dijit/themes/claro/Toolbar_rtl.css
create mode 100644 source/lib/dijit/themes/claro/Toolbar_rtl.less
create mode 100644 source/lib/dijit/themes/claro/Tree.css
create mode 100644 source/lib/dijit/themes/claro/Tree.less
create mode 100644 source/lib/dijit/themes/claro/claro.css
create mode 100644 source/lib/dijit/themes/claro/claro_rtl.css
create mode 100644 source/lib/dijit/themes/claro/compile.js
create mode 100644 source/lib/dijit/themes/claro/document.css
create mode 100644 source/lib/dijit/themes/claro/document.less
create mode 100644 source/lib/dijit/themes/claro/form/Button.css
create mode 100644 source/lib/dijit/themes/claro/form/Button.less
create mode 100644 source/lib/dijit/themes/claro/form/Button_rtl.css
create mode 100644 source/lib/dijit/themes/claro/form/Button_rtl.less
create mode 100644 source/lib/dijit/themes/claro/form/Checkbox.css
create mode 100644 source/lib/dijit/themes/claro/form/Checkbox.less
create mode 100644 source/lib/dijit/themes/claro/form/Common.css
create mode 100644 source/lib/dijit/themes/claro/form/Common.less
create mode 100644 source/lib/dijit/themes/claro/form/Common_rtl.css
create mode 100644 source/lib/dijit/themes/claro/form/Common_rtl.less
create mode 100644 source/lib/dijit/themes/claro/form/NumberSpinner.css
create mode 100644 source/lib/dijit/themes/claro/form/NumberSpinner.less
create mode 100644 source/lib/dijit/themes/claro/form/RadioButton.css
create mode 100644 source/lib/dijit/themes/claro/form/RadioButton.less
create mode 100644 source/lib/dijit/themes/claro/form/Select.css
create mode 100644 source/lib/dijit/themes/claro/form/Select.less
create mode 100644 source/lib/dijit/themes/claro/form/Slider.css
create mode 100644 source/lib/dijit/themes/claro/form/Slider.less
create mode 100644 source/lib/dijit/themes/claro/form/Slider_rtl.css
create mode 100644 source/lib/dijit/themes/claro/form/Slider_rtl.less
create mode 100644 source/lib/dijit/themes/claro/form/images/buttonArrows.png
create mode 100644 source/lib/dijit/themes/claro/form/images/buttonDisabled.png
create mode 100644 source/lib/dijit/themes/claro/form/images/buttonDisabled.svg
create mode 100644 source/lib/dijit/themes/claro/form/images/buttonEnabled.png
create mode 100644 source/lib/dijit/themes/claro/form/images/buttonEnabled.svg
create mode 100644 source/lib/dijit/themes/claro/form/images/checkboxAndRadioButtons_IE6.png
create mode 100644 source/lib/dijit/themes/claro/form/images/checkboxRadioButtonStates.png
create mode 100644 source/lib/dijit/themes/claro/form/images/commonFormArrows.png
create mode 100644 source/lib/dijit/themes/claro/form/images/error.png
create mode 100644 source/lib/dijit/themes/claro/form/images/sliderThumbs.png
create mode 100644 source/lib/dijit/themes/claro/images/activeGradient.png
create mode 100644 source/lib/dijit/themes/claro/images/activeGradient.svg
create mode 100644 source/lib/dijit/themes/claro/images/calendar.png
create mode 100644 source/lib/dijit/themes/claro/images/calendarArrows.png
create mode 100644 source/lib/dijit/themes/claro/images/calendarArrows8bit.png
create mode 100644 source/lib/dijit/themes/claro/images/checkmarkNoBorder.gif
create mode 100644 source/lib/dijit/themes/claro/images/checkmarkNoBorder.png
create mode 100644 source/lib/dijit/themes/claro/images/dialogCloseIcon.png
create mode 100644 source/lib/dijit/themes/claro/images/dialogCloseIcon8bit.png
create mode 100644 source/lib/dijit/themes/claro/images/dnd.png
create mode 100644 source/lib/dijit/themes/claro/images/loadingAnimation.gif
create mode 100644 source/lib/dijit/themes/claro/images/progressBarAnim.gif
create mode 100644 source/lib/dijit/themes/claro/images/progressBarFull.png
create mode 100644 source/lib/dijit/themes/claro/images/spriteArrows.png
create mode 100644 source/lib/dijit/themes/claro/images/standardGradient.png
create mode 100644 source/lib/dijit/themes/claro/images/standardGradient.svg
create mode 100644 source/lib/dijit/themes/claro/images/tooltip.png
create mode 100644 source/lib/dijit/themes/claro/images/tooltip8bit.png
create mode 100644 source/lib/dijit/themes/claro/images/treeExpandImages.png
create mode 100644 source/lib/dijit/themes/claro/images/treeExpandImages8bit.png
create mode 100644 source/lib/dijit/themes/claro/layout/AccordionContainer.css
create mode 100644 source/lib/dijit/themes/claro/layout/AccordionContainer.less
create mode 100644 source/lib/dijit/themes/claro/layout/BorderContainer.css
create mode 100644 source/lib/dijit/themes/claro/layout/BorderContainer.less
create mode 100644 source/lib/dijit/themes/claro/layout/ContentPane.css
create mode 100644 source/lib/dijit/themes/claro/layout/ContentPane.less
create mode 100644 source/lib/dijit/themes/claro/layout/TabContainer.css
create mode 100644 source/lib/dijit/themes/claro/layout/TabContainer.less
create mode 100644 source/lib/dijit/themes/claro/layout/TabContainer_rtl.css
create mode 100644 source/lib/dijit/themes/claro/layout/TabContainer_rtl.less
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabBottomSelected.png
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabBottomSelected.svg
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabBottomUnselected.png
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabBottomUnselected.svg
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabClose.png
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabLeftSelected.png
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabLeftSelected.svg
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabLeftUnselected.png
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabLeftUnselected.svg
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabNested.png
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabRightSelected.png
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabRightSelected.svg
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabRightUnselected.png
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabRightUnselected.svg
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabTopSelected.png
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabTopSelected.svg
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabTopUnselected.png
create mode 100644 source/lib/dijit/themes/claro/layout/images/tabTopUnselected.svg
create mode 100644 source/lib/dijit/themes/claro/variables.less
create mode 100644 source/lib/dijit/themes/dijit.css
create mode 100644 source/lib/dijit/themes/dijit_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/Calendar.css
create mode 100644 source/lib/dijit/themes/nihilo/Calendar_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/ColorPalette.css
create mode 100644 source/lib/dijit/themes/nihilo/Common.css
create mode 100644 source/lib/dijit/themes/nihilo/Dialog.css
create mode 100644 source/lib/dijit/themes/nihilo/Dialog_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/Editor.css
create mode 100644 source/lib/dijit/themes/nihilo/Editor_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/Menu.css
create mode 100644 source/lib/dijit/themes/nihilo/Menu_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/ProgressBar.css
create mode 100644 source/lib/dijit/themes/nihilo/TimePicker.css
create mode 100644 source/lib/dijit/themes/nihilo/TimePicker_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/TitlePane.css
create mode 100644 source/lib/dijit/themes/nihilo/TitlePane_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/Toolbar.css
create mode 100644 source/lib/dijit/themes/nihilo/Tree.css
create mode 100644 source/lib/dijit/themes/nihilo/Tree_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/form/Button.css
create mode 100644 source/lib/dijit/themes/nihilo/form/Button_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/form/Checkbox.css
create mode 100644 source/lib/dijit/themes/nihilo/form/Common.css
create mode 100644 source/lib/dijit/themes/nihilo/form/RadioButton.css
create mode 100644 source/lib/dijit/themes/nihilo/form/Select.css
create mode 100644 source/lib/dijit/themes/nihilo/form/Slider.css
create mode 100644 source/lib/dijit/themes/nihilo/form/Slider_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/form/TimeTextBox.css
create mode 100644 source/lib/dijit/themes/nihilo/images/accordionItemActive.png
create mode 100644 source/lib/dijit/themes/nihilo/images/buttonActive.png
create mode 100644 source/lib/dijit/themes/nihilo/images/buttonDisabled.png
create mode 100644 source/lib/dijit/themes/nihilo/images/buttonEnabled.png
create mode 100644 source/lib/dijit/themes/nihilo/images/buttonHover.png
create mode 100644 source/lib/dijit/themes/nihilo/images/dndCopy.png
create mode 100644 source/lib/dijit/themes/nihilo/images/dndMove.png
create mode 100644 source/lib/dijit/themes/nihilo/images/dndNoCopy.png
create mode 100644 source/lib/dijit/themes/nihilo/images/dndNoMove.png
create mode 100644 source/lib/dijit/themes/nihilo/images/no.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/preciseSliderThumb.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/preciseSliderThumb.png
create mode 100644 source/lib/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/preciseSliderThumbFocus.png
create mode 100644 source/lib/dijit/themes/nihilo/images/progressBarAnim.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/progressBarEmpty.png
create mode 100644 source/lib/dijit/themes/nihilo/images/progressBarFull.png
create mode 100644 source/lib/dijit/themes/nihilo/images/sliderEmpty.png
create mode 100644 source/lib/dijit/themes/nihilo/images/sliderEmptyVertical.png
create mode 100644 source/lib/dijit/themes/nihilo/images/sliderFull.png
create mode 100644 source/lib/dijit/themes/nihilo/images/sliderFullFocus.png
create mode 100644 source/lib/dijit/themes/nihilo/images/sliderFullVertical.png
create mode 100644 source/lib/dijit/themes/nihilo/images/sliderFullVerticalFocus.png
create mode 100644 source/lib/dijit/themes/nihilo/images/sliderThumb.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/sliderThumb.png
create mode 100644 source/lib/dijit/themes/nihilo/images/sliderThumbFocus.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/sliderThumbFocus.png
create mode 100644 source/lib/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png
create mode 100644 source/lib/dijit/themes/nihilo/images/splitContainerSizerH.png
create mode 100644 source/lib/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png
create mode 100644 source/lib/dijit/themes/nihilo/images/splitContainerSizerV.png
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteArrows.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteArrows.png
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteCheckbox.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteCheckbox.png
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteDivIcons.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteDivIcons.png
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteRadio.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteRadio.png
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteTree.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteTree.png
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteTree_rtl.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/spriteTree_rtl.png
create mode 100644 source/lib/dijit/themes/nihilo/images/tabBottomActiveC.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/tabBottomEnabledC.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/tabBottomHoverC.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/tabContainerSprite.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/titleBar.png
create mode 100644 source/lib/dijit/themes/nihilo/images/titleBarActive.png
create mode 100644 source/lib/dijit/themes/nihilo/images/tooltipConnectorDown.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/tooltipConnectorDown.png
create mode 100644 source/lib/dijit/themes/nihilo/images/tooltipConnectorLeft.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/tooltipConnectorLeft.png
create mode 100644 source/lib/dijit/themes/nihilo/images/tooltipConnectorRight.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/tooltipConnectorRight.png
create mode 100644 source/lib/dijit/themes/nihilo/images/tooltipConnectorUp.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/tooltipConnectorUp.png
create mode 100644 source/lib/dijit/themes/nihilo/images/treeExpand_loading.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/treeHover.png
create mode 100644 source/lib/dijit/themes/nihilo/images/treeI.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/treeI_half.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/treeI_half_rtl.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/treeI_rtl.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/validationInputBg.gif
create mode 100644 source/lib/dijit/themes/nihilo/images/validationInputBg.png
create mode 100644 source/lib/dijit/themes/nihilo/images/warning.png
create mode 100644 source/lib/dijit/themes/nihilo/layout/AccordionContainer.css
create mode 100644 source/lib/dijit/themes/nihilo/layout/AccordionContainer_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/layout/BorderContainer.css
create mode 100644 source/lib/dijit/themes/nihilo/layout/ContentPane.css
create mode 100644 source/lib/dijit/themes/nihilo/layout/SplitContainer.css
create mode 100644 source/lib/dijit/themes/nihilo/layout/TabContainer.css
create mode 100644 source/lib/dijit/themes/nihilo/layout/TabContainer_rtl.css
create mode 100644 source/lib/dijit/themes/nihilo/nihilo.css
create mode 100644 source/lib/dijit/themes/nihilo/nihilo_rtl.css
create mode 100644 source/lib/dijit/themes/soria/Calendar.css
create mode 100644 source/lib/dijit/themes/soria/Calendar_rtl.css
create mode 100644 source/lib/dijit/themes/soria/ColorPalette.css
create mode 100644 source/lib/dijit/themes/soria/Common.css
create mode 100644 source/lib/dijit/themes/soria/Dialog.css
create mode 100644 source/lib/dijit/themes/soria/Dialog_rtl.css
create mode 100644 source/lib/dijit/themes/soria/Editor.css
create mode 100644 source/lib/dijit/themes/soria/Editor_rtl.css
create mode 100644 source/lib/dijit/themes/soria/Menu.css
create mode 100644 source/lib/dijit/themes/soria/Menu_rtl.css
create mode 100644 source/lib/dijit/themes/soria/ProgressBar.css
create mode 100644 source/lib/dijit/themes/soria/TimePicker.css
create mode 100644 source/lib/dijit/themes/soria/TimePicker_rtl.css
create mode 100644 source/lib/dijit/themes/soria/TitlePane.css
create mode 100644 source/lib/dijit/themes/soria/TitlePane_rtl.css
create mode 100644 source/lib/dijit/themes/soria/Toolbar.css
create mode 100644 source/lib/dijit/themes/soria/Tree.css
create mode 100644 source/lib/dijit/themes/soria/Tree_rtl.css
create mode 100644 source/lib/dijit/themes/soria/form/Button.css
create mode 100644 source/lib/dijit/themes/soria/form/Button_rtl.css
create mode 100644 source/lib/dijit/themes/soria/form/Checkbox.css
create mode 100644 source/lib/dijit/themes/soria/form/Common.css
create mode 100644 source/lib/dijit/themes/soria/form/RadioButton.css
create mode 100644 source/lib/dijit/themes/soria/form/Select.css
create mode 100644 source/lib/dijit/themes/soria/form/Slider.css
create mode 100644 source/lib/dijit/themes/soria/form/Slider_rtl.css
create mode 100644 source/lib/dijit/themes/soria/form/TimeTextBox.css
create mode 100644 source/lib/dijit/themes/soria/images/accordionItemActive.gif
create mode 100644 source/lib/dijit/themes/soria/images/accordionItemActive.png
create mode 100644 source/lib/dijit/themes/soria/images/buttonActive.png
create mode 100644 source/lib/dijit/themes/soria/images/buttonDisabled.png
create mode 100644 source/lib/dijit/themes/soria/images/buttonEnabled.png
create mode 100644 source/lib/dijit/themes/soria/images/buttonHover.png
create mode 100644 source/lib/dijit/themes/soria/images/dndCopy.png
create mode 100644 source/lib/dijit/themes/soria/images/dndMove.png
create mode 100644 source/lib/dijit/themes/soria/images/dndNoCopy.png
create mode 100644 source/lib/dijit/themes/soria/images/dndNoMove.png
create mode 100644 source/lib/dijit/themes/soria/images/preciseSliderThumb.gif
create mode 100644 source/lib/dijit/themes/soria/images/preciseSliderThumb.png
create mode 100644 source/lib/dijit/themes/soria/images/preciseSliderThumbFocus.gif
create mode 100644 source/lib/dijit/themes/soria/images/preciseSliderThumbFocus.png
create mode 100644 source/lib/dijit/themes/soria/images/progressBarAnim.gif
create mode 100644 source/lib/dijit/themes/soria/images/progressBarEmpty.png
create mode 100644 source/lib/dijit/themes/soria/images/progressBarFull.png
create mode 100644 source/lib/dijit/themes/soria/images/sliderEmpty.png
create mode 100644 source/lib/dijit/themes/soria/images/sliderEmptyVertical.png
create mode 100644 source/lib/dijit/themes/soria/images/sliderFull.png
create mode 100644 source/lib/dijit/themes/soria/images/sliderFullFocus.png
create mode 100644 source/lib/dijit/themes/soria/images/sliderFullVertical.png
create mode 100644 source/lib/dijit/themes/soria/images/sliderFullVerticalFocus.png
create mode 100644 source/lib/dijit/themes/soria/images/sliderThumb.gif
create mode 100644 source/lib/dijit/themes/soria/images/sliderThumb.png
create mode 100644 source/lib/dijit/themes/soria/images/sliderThumbFocus.gif
create mode 100644 source/lib/dijit/themes/soria/images/sliderThumbFocus.png
create mode 100644 source/lib/dijit/themes/soria/images/splitContainerSizerH-thumb.png
create mode 100644 source/lib/dijit/themes/soria/images/splitContainerSizerH.png
create mode 100644 source/lib/dijit/themes/soria/images/splitContainerSizerV-thumb.png
create mode 100644 source/lib/dijit/themes/soria/images/splitContainerSizerV.png
create mode 100644 source/lib/dijit/themes/soria/images/spriteArrows.gif
create mode 100644 source/lib/dijit/themes/soria/images/spriteArrows.png
create mode 100644 source/lib/dijit/themes/soria/images/spriteCheckbox.gif
create mode 100644 source/lib/dijit/themes/soria/images/spriteCheckbox.png
create mode 100644 source/lib/dijit/themes/soria/images/spriteDivIcons.gif
create mode 100644 source/lib/dijit/themes/soria/images/spriteDivIcons.png
create mode 100644 source/lib/dijit/themes/soria/images/spriteRadio.gif
create mode 100644 source/lib/dijit/themes/soria/images/spriteRadio.png
create mode 100644 source/lib/dijit/themes/soria/images/spriteRoundedIconsSmall.gif
create mode 100644 source/lib/dijit/themes/soria/images/spriteRoundedIconsSmall.png
create mode 100644 source/lib/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif
create mode 100644 source/lib/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png
create mode 100644 source/lib/dijit/themes/soria/images/spriteTree.gif
create mode 100644 source/lib/dijit/themes/soria/images/spriteTree.png
create mode 100644 source/lib/dijit/themes/soria/images/spriteTree_rtl.gif
create mode 100644 source/lib/dijit/themes/soria/images/spriteTree_rtl.png
create mode 100644 source/lib/dijit/themes/soria/images/tabBottomActiveC.gif
create mode 100644 source/lib/dijit/themes/soria/images/tabBottomEnabledC.gif
create mode 100644 source/lib/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif
create mode 100644 source/lib/dijit/themes/soria/images/tabBottomHoverC.gif
create mode 100644 source/lib/dijit/themes/soria/images/tabContainerSprite.gif
create mode 100644 source/lib/dijit/themes/soria/images/tabLeftChecked.gif
create mode 100644 source/lib/dijit/themes/soria/images/tabRightChecked.gif
create mode 100644 source/lib/dijit/themes/soria/images/titleBar.png
create mode 100644 source/lib/dijit/themes/soria/images/titleBarActive.png
create mode 100644 source/lib/dijit/themes/soria/images/tooltipConnectorDown.gif
create mode 100644 source/lib/dijit/themes/soria/images/tooltipConnectorDown.png
create mode 100644 source/lib/dijit/themes/soria/images/tooltipConnectorLeft.gif
create mode 100644 source/lib/dijit/themes/soria/images/tooltipConnectorLeft.png
create mode 100644 source/lib/dijit/themes/soria/images/tooltipConnectorRight.gif
create mode 100644 source/lib/dijit/themes/soria/images/tooltipConnectorRight.png
create mode 100644 source/lib/dijit/themes/soria/images/tooltipConnectorUp.gif
create mode 100644 source/lib/dijit/themes/soria/images/tooltipConnectorUp.png
create mode 100644 source/lib/dijit/themes/soria/images/treeExpand_loading.gif
create mode 100644 source/lib/dijit/themes/soria/images/treeHover.png
create mode 100644 source/lib/dijit/themes/soria/images/treeI.gif
create mode 100644 source/lib/dijit/themes/soria/images/treeI_half.gif
create mode 100644 source/lib/dijit/themes/soria/images/treeI_half_rtl.gif
create mode 100644 source/lib/dijit/themes/soria/images/treeI_rtl.gif
create mode 100644 source/lib/dijit/themes/soria/images/validationInputBg.gif
create mode 100644 source/lib/dijit/themes/soria/images/validationInputBg.png
create mode 100644 source/lib/dijit/themes/soria/images/warning.png
create mode 100644 source/lib/dijit/themes/soria/layout/AccordionContainer.css
create mode 100644 source/lib/dijit/themes/soria/layout/AccordionContainer_rtl.css
create mode 100644 source/lib/dijit/themes/soria/layout/BorderContainer.css
create mode 100644 source/lib/dijit/themes/soria/layout/ContentPane.css
create mode 100644 source/lib/dijit/themes/soria/layout/SplitContainer.css
create mode 100644 source/lib/dijit/themes/soria/layout/TabContainer.css
create mode 100644 source/lib/dijit/themes/soria/layout/TabContainer_rtl.css
create mode 100644 source/lib/dijit/themes/soria/soria.css
create mode 100644 source/lib/dijit/themes/soria/soria_rtl.css
create mode 100644 source/lib/dijit/themes/tundra/Calendar.css
create mode 100644 source/lib/dijit/themes/tundra/Calendar_rtl.css
create mode 100644 source/lib/dijit/themes/tundra/ColorPalette.css
create mode 100644 source/lib/dijit/themes/tundra/Common.css
create mode 100644 source/lib/dijit/themes/tundra/Dialog.css
create mode 100644 source/lib/dijit/themes/tundra/Dialog_rtl.css
create mode 100644 source/lib/dijit/themes/tundra/Editor.css
create mode 100644 source/lib/dijit/themes/tundra/Editor_rtl.css
create mode 100644 source/lib/dijit/themes/tundra/Menu.css
create mode 100644 source/lib/dijit/themes/tundra/Menu_rtl.css
create mode 100644 source/lib/dijit/themes/tundra/ProgressBar.css
create mode 100644 source/lib/dijit/themes/tundra/TimePicker.css
create mode 100644 source/lib/dijit/themes/tundra/TimePicker_rtl.css
create mode 100644 source/lib/dijit/themes/tundra/TitlePane.css
create mode 100644 source/lib/dijit/themes/tundra/TitlePane_rtl.css
create mode 100644 source/lib/dijit/themes/tundra/Toolbar.css
create mode 100644 source/lib/dijit/themes/tundra/Tree.css
create mode 100644 source/lib/dijit/themes/tundra/Tree_rtl.css
create mode 100644 source/lib/dijit/themes/tundra/form/Button.css
create mode 100644 source/lib/dijit/themes/tundra/form/Checkbox.css
create mode 100644 source/lib/dijit/themes/tundra/form/Common.css
create mode 100644 source/lib/dijit/themes/tundra/form/RadioButton.css
create mode 100644 source/lib/dijit/themes/tundra/form/Select.css
create mode 100644 source/lib/dijit/themes/tundra/form/Slider.css
create mode 100644 source/lib/dijit/themes/tundra/form/Slider_rtl.css
create mode 100644 source/lib/dijit/themes/tundra/images/accordionItemActive.gif
create mode 100644 source/lib/dijit/themes/tundra/images/accordionItemHover.gif
create mode 100644 source/lib/dijit/themes/tundra/images/buttonActive.png
create mode 100644 source/lib/dijit/themes/tundra/images/buttonDisabled.png
create mode 100644 source/lib/dijit/themes/tundra/images/buttonEnabled.png
create mode 100644 source/lib/dijit/themes/tundra/images/buttonHover.png
create mode 100644 source/lib/dijit/themes/tundra/images/calendarDayLabel.png
create mode 100644 source/lib/dijit/themes/tundra/images/calendarMonthLabel.png
create mode 100644 source/lib/dijit/themes/tundra/images/calendarYearLabel.png
create mode 100755 source/lib/dijit/themes/tundra/images/checkmark.gif
create mode 100644 source/lib/dijit/themes/tundra/images/checkmark.png
create mode 100755 source/lib/dijit/themes/tundra/images/checkmarkNoBorder.gif
create mode 100755 source/lib/dijit/themes/tundra/images/checkmarkNoBorder.png
create mode 100755 source/lib/dijit/themes/tundra/images/circleIcon.gif
create mode 100755 source/lib/dijit/themes/tundra/images/circleIcon.png
create mode 100644 source/lib/dijit/themes/tundra/images/comboArrowDown.gif
create mode 100644 source/lib/dijit/themes/tundra/images/dijitProgressBarAnim.gif
create mode 100644 source/lib/dijit/themes/tundra/images/dijitProgressBarAnim.psd
create mode 100644 source/lib/dijit/themes/tundra/images/dndCopy.png
create mode 100644 source/lib/dijit/themes/tundra/images/dndMove.png
create mode 100644 source/lib/dijit/themes/tundra/images/dndNoCopy.png
create mode 100644 source/lib/dijit/themes/tundra/images/dndNoMove.png
create mode 100755 source/lib/dijit/themes/tundra/images/dojoTundraGradientBg.gif
create mode 100644 source/lib/dijit/themes/tundra/images/dojoTundraGradientBg.png
create mode 100644 source/lib/dijit/themes/tundra/images/doubleArrowDown.png
create mode 100644 source/lib/dijit/themes/tundra/images/doubleArrowUp.png
create mode 100644 source/lib/dijit/themes/tundra/images/folderClosed.gif
create mode 100644 source/lib/dijit/themes/tundra/images/folderOpened.gif
create mode 100755 source/lib/dijit/themes/tundra/images/i.gif
create mode 100755 source/lib/dijit/themes/tundra/images/i_half.gif
create mode 100644 source/lib/dijit/themes/tundra/images/i_half_rtl.gif
create mode 100644 source/lib/dijit/themes/tundra/images/i_rtl.gif
create mode 100644 source/lib/dijit/themes/tundra/images/leaf.gif
create mode 100755 source/lib/dijit/themes/tundra/images/loading.gif
create mode 100644 source/lib/dijit/themes/tundra/images/menu.png
create mode 100644 source/lib/dijit/themes/tundra/images/minusButton.gif
create mode 100644 source/lib/dijit/themes/tundra/images/no.gif
create mode 100755 source/lib/dijit/themes/tundra/images/noX.gif
create mode 100644 source/lib/dijit/themes/tundra/images/plusButton.gif
create mode 100644 source/lib/dijit/themes/tundra/images/popupMenuBg.gif
create mode 100755 source/lib/dijit/themes/tundra/images/preciseSliderThumb.gif
create mode 100644 source/lib/dijit/themes/tundra/images/preciseSliderThumb.png
create mode 100644 source/lib/dijit/themes/tundra/images/preciseSliderThumbFocus.gif
create mode 100644 source/lib/dijit/themes/tundra/images/preciseSliderThumbFocus.png
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarAnim-1.png
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarAnim-2.png
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarAnim-3.png
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarAnim-4.png
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarAnim-5.png
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarAnim-6.png
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarAnim-7.png
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarAnim-8.png
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarAnim-9.png
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarAnim.gif
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarAnim.psd
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarEmpty.png
create mode 100644 source/lib/dijit/themes/tundra/images/progressBarFull.png
create mode 100644 source/lib/dijit/themes/tundra/images/radioButtonActive.png
create mode 100644 source/lib/dijit/themes/tundra/images/radioButtonActiveDisabled.png
create mode 100644 source/lib/dijit/themes/tundra/images/radioButtonActiveHover.png
create mode 100644 source/lib/dijit/themes/tundra/images/radioButtonDisabled.png
create mode 100644 source/lib/dijit/themes/tundra/images/radioButtonEnabled.png
create mode 100644 source/lib/dijit/themes/tundra/images/radioButtonHover.png
create mode 100644 source/lib/dijit/themes/tundra/images/sliderEmpty.png
create mode 100644 source/lib/dijit/themes/tundra/images/sliderEmptyVertical.png
create mode 100644 source/lib/dijit/themes/tundra/images/sliderFull.png
create mode 100755 source/lib/dijit/themes/tundra/images/sliderFullFocus.png
create mode 100644 source/lib/dijit/themes/tundra/images/sliderFullVertical.png
create mode 100755 source/lib/dijit/themes/tundra/images/sliderFullVerticalFocus.png
create mode 100644 source/lib/dijit/themes/tundra/images/sliderThumb.png
create mode 100644 source/lib/dijit/themes/tundra/images/sliderThumbFocus.gif
create mode 100644 source/lib/dijit/themes/tundra/images/sliderThumbFocus.png
create mode 100644 source/lib/dijit/themes/tundra/images/smallArrowDown.png
create mode 100644 source/lib/dijit/themes/tundra/images/smallArrowUp.png
create mode 100644 source/lib/dijit/themes/tundra/images/splitContainerSizerH-thumb.png
create mode 100644 source/lib/dijit/themes/tundra/images/splitContainerSizerH.png
create mode 100644 source/lib/dijit/themes/tundra/images/splitContainerSizerV-thumb.png
create mode 100644 source/lib/dijit/themes/tundra/images/splitContainerSizerV.png
create mode 100644 source/lib/dijit/themes/tundra/images/spriteArrows.gif
create mode 100644 source/lib/dijit/themes/tundra/images/spriteArrows.png
create mode 100644 source/lib/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif
create mode 100644 source/lib/dijit/themes/tundra/images/spriteRoundedIconsSmall.png
create mode 100644 source/lib/dijit/themes/tundra/images/tabActive.png
create mode 100755 source/lib/dijit/themes/tundra/images/tabClose.gif
create mode 100644 source/lib/dijit/themes/tundra/images/tabClose.png
create mode 100755 source/lib/dijit/themes/tundra/images/tabCloseHover.gif
create mode 100644 source/lib/dijit/themes/tundra/images/tabCloseHover.png
create mode 100644 source/lib/dijit/themes/tundra/images/tabDisabled.png
create mode 100644 source/lib/dijit/themes/tundra/images/tabEnabled.png
create mode 100755 source/lib/dijit/themes/tundra/images/tabHover.gif
create mode 100644 source/lib/dijit/themes/tundra/images/tabHover.png
create mode 100644 source/lib/dijit/themes/tundra/images/titleBar.png
create mode 100644 source/lib/dijit/themes/tundra/images/titleBarBg.gif
create mode 100644 source/lib/dijit/themes/tundra/images/tooltipConnectorDown.gif
create mode 100644 source/lib/dijit/themes/tundra/images/tooltipConnectorDown.png
create mode 100644 source/lib/dijit/themes/tundra/images/tooltipConnectorLeft.gif
create mode 100644 source/lib/dijit/themes/tundra/images/tooltipConnectorLeft.png
create mode 100644 source/lib/dijit/themes/tundra/images/tooltipConnectorRight.gif
create mode 100644 source/lib/dijit/themes/tundra/images/tooltipConnectorRight.png
create mode 100644 source/lib/dijit/themes/tundra/images/tooltipConnectorUp.gif
create mode 100644 source/lib/dijit/themes/tundra/images/tooltipConnectorUp.png
create mode 100644 source/lib/dijit/themes/tundra/images/treeExpand_leaf.gif
create mode 100644 source/lib/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif
create mode 100644 source/lib/dijit/themes/tundra/images/treeExpand_loading.gif
create mode 100755 source/lib/dijit/themes/tundra/images/treeExpand_minus.gif
create mode 100644 source/lib/dijit/themes/tundra/images/treeExpand_minus_rtl.gif
create mode 100644 source/lib/dijit/themes/tundra/images/treeExpand_mius.gif
create mode 100755 source/lib/dijit/themes/tundra/images/treeExpand_plus.gif
create mode 100644 source/lib/dijit/themes/tundra/images/treeExpand_plus_rtl.gif
create mode 100644 source/lib/dijit/themes/tundra/images/treeHover.png
create mode 100755 source/lib/dijit/themes/tundra/images/validationInputBg.gif
create mode 100644 source/lib/dijit/themes/tundra/images/validationInputBg.png
create mode 100644 source/lib/dijit/themes/tundra/images/warning.png
create mode 100644 source/lib/dijit/themes/tundra/layout/AccordionContainer.css
create mode 100644 source/lib/dijit/themes/tundra/layout/BorderContainer.css
create mode 100644 source/lib/dijit/themes/tundra/layout/ContentPane.css
create mode 100644 source/lib/dijit/themes/tundra/layout/SplitContainer.css
create mode 100644 source/lib/dijit/themes/tundra/layout/TabContainer.css
create mode 100644 source/lib/dijit/themes/tundra/layout/TabContainer_rtl.css
create mode 100644 source/lib/dijit/themes/tundra/tundra.css
create mode 100644 source/lib/dijit/themes/tundra/tundra_rtl.css
create mode 100644 source/lib/dijit/tree/ForestStoreModel.js
create mode 100644 source/lib/dijit/tree/ObjectStoreModel.js
create mode 100644 source/lib/dijit/tree/TreeStoreModel.js
create mode 100644 source/lib/dijit/tree/_dndContainer.js
create mode 100644 source/lib/dijit/tree/_dndSelector.js
create mode 100644 source/lib/dijit/tree/dndSource.js
create mode 100644 source/lib/dijit/tree/model.js
create mode 100644 source/lib/dijit/typematic.js
create mode 100644 source/lib/dojo-src/.gitignore
create mode 100755 source/lib/dojo-src/rebuild-dojo.sh
create mode 100644 source/lib/dojo-src/tt-rss.profile.js
create mode 100644 source/lib/dojo/AdapterRegistry.js
create mode 100644 source/lib/dojo/Deferred.js
create mode 100644 source/lib/dojo/DeferredList.js
create mode 100644 source/lib/dojo/Evented.js
create mode 100644 source/lib/dojo/LICENSE
create mode 100644 source/lib/dojo/NodeList-data.js
create mode 100644 source/lib/dojo/NodeList-dom.js
create mode 100644 source/lib/dojo/NodeList-fx.js
create mode 100644 source/lib/dojo/NodeList-html.js
create mode 100644 source/lib/dojo/NodeList-manipulate.js
create mode 100644 source/lib/dojo/NodeList-traverse.js
create mode 100644 source/lib/dojo/NodeList.js
create mode 100644 source/lib/dojo/OpenAjax.js
create mode 100644 source/lib/dojo/Stateful.js
create mode 100644 source/lib/dojo/_base/Color.js
create mode 100644 source/lib/dojo/_base/Deferred.js
create mode 100644 source/lib/dojo/_base/NodeList.js
create mode 100644 source/lib/dojo/_base/array.js
create mode 100644 source/lib/dojo/_base/browser.js
create mode 100644 source/lib/dojo/_base/config.js
create mode 100644 source/lib/dojo/_base/configFirefoxExtension.js
create mode 100644 source/lib/dojo/_base/configNode.js
create mode 100644 source/lib/dojo/_base/configRhino.js
create mode 100644 source/lib/dojo/_base/configSpidermonkey.js
create mode 100644 source/lib/dojo/_base/connect.js
create mode 100644 source/lib/dojo/_base/declare.js
create mode 100644 source/lib/dojo/_base/event.js
create mode 100644 source/lib/dojo/_base/fx.js
create mode 100644 source/lib/dojo/_base/html.js
create mode 100644 source/lib/dojo/_base/json.js
create mode 100644 source/lib/dojo/_base/kernel.js
create mode 100644 source/lib/dojo/_base/lang.js
create mode 100644 source/lib/dojo/_base/loader.js
create mode 100644 source/lib/dojo/_base/query.js
create mode 100644 source/lib/dojo/_base/sniff.js
create mode 100644 source/lib/dojo/_base/unload.js
create mode 100644 source/lib/dojo/_base/url.js
create mode 100644 source/lib/dojo/_base/window.js
create mode 100644 source/lib/dojo/_base/xhr.js
create mode 100644 source/lib/dojo/_firebug/LICENSE
create mode 100644 source/lib/dojo/_firebug/errorIcon.png
create mode 100644 source/lib/dojo/_firebug/firebug.css
create mode 100644 source/lib/dojo/_firebug/firebug.js
create mode 100644 source/lib/dojo/_firebug/infoIcon.png
create mode 100644 source/lib/dojo/_firebug/tab_lft_norm.png
create mode 100644 source/lib/dojo/_firebug/tab_lft_over.png
create mode 100644 source/lib/dojo/_firebug/tab_rgt_norm.png
create mode 100644 source/lib/dojo/_firebug/tab_rgt_over.png
create mode 100644 source/lib/dojo/_firebug/warningIcon.png
create mode 100644 source/lib/dojo/aspect.js
create mode 100644 source/lib/dojo/back.js
create mode 100644 source/lib/dojo/behavior.js
create mode 100644 source/lib/dojo/cache.js
create mode 100644 source/lib/dojo/cldr/LICENSE
create mode 100644 source/lib/dojo/cldr/README
create mode 100644 source/lib/dojo/cldr/monetary.js
create mode 100644 source/lib/dojo/cldr/nls/ar/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/ar/currency.js
create mode 100644 source/lib/dojo/cldr/nls/ar/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/ar/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/ar/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/ar/number.js
create mode 100644 source/lib/dojo/cldr/nls/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/ca/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/ca/currency.js
create mode 100644 source/lib/dojo/cldr/nls/ca/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/ca/number.js
create mode 100644 source/lib/dojo/cldr/nls/cs/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/cs/currency.js
create mode 100644 source/lib/dojo/cldr/nls/cs/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/cs/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/cs/number.js
create mode 100644 source/lib/dojo/cldr/nls/currency.js
create mode 100644 source/lib/dojo/cldr/nls/da/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/da/currency.js
create mode 100644 source/lib/dojo/cldr/nls/da/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/da/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/da/number.js
create mode 100644 source/lib/dojo/cldr/nls/de/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/de/currency.js
create mode 100644 source/lib/dojo/cldr/nls/de/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/de/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/de/number.js
create mode 100644 source/lib/dojo/cldr/nls/el/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/el/currency.js
create mode 100644 source/lib/dojo/cldr/nls/el/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/el/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/el/number.js
create mode 100644 source/lib/dojo/cldr/nls/en-au/currency.js
create mode 100644 source/lib/dojo/cldr/nls/en-au/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/en-au/number.js
create mode 100644 source/lib/dojo/cldr/nls/en-ca/currency.js
create mode 100644 source/lib/dojo/cldr/nls/en-ca/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/en-gb/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/en-gb/currency.js
create mode 100644 source/lib/dojo/cldr/nls/en-gb/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/en-gb/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/en-gb/number.js
create mode 100644 source/lib/dojo/cldr/nls/en/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/en/currency.js
create mode 100644 source/lib/dojo/cldr/nls/en/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/en/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/en/number.js
create mode 100644 source/lib/dojo/cldr/nls/es/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/es/currency.js
create mode 100644 source/lib/dojo/cldr/nls/es/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/es/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/es/number.js
create mode 100644 source/lib/dojo/cldr/nls/fi/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/fi/currency.js
create mode 100644 source/lib/dojo/cldr/nls/fi/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/fi/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/fi/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/fi/number.js
create mode 100644 source/lib/dojo/cldr/nls/fr-ch/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/fr-ch/number.js
create mode 100644 source/lib/dojo/cldr/nls/fr/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/fr/currency.js
create mode 100644 source/lib/dojo/cldr/nls/fr/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/fr/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/fr/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/fr/number.js
create mode 100644 source/lib/dojo/cldr/nls/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/he/currency.js
create mode 100644 source/lib/dojo/cldr/nls/he/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/he/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/he/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/he/number.js
create mode 100644 source/lib/dojo/cldr/nls/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/hu/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/hu/currency.js
create mode 100644 source/lib/dojo/cldr/nls/hu/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/hu/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/hu/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/hu/number.js
create mode 100644 source/lib/dojo/cldr/nls/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/it/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/it/currency.js
create mode 100644 source/lib/dojo/cldr/nls/it/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/it/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/it/number.js
create mode 100644 source/lib/dojo/cldr/nls/ja/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/ja/currency.js
create mode 100644 source/lib/dojo/cldr/nls/ja/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/ja/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/ja/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/ja/number.js
create mode 100644 source/lib/dojo/cldr/nls/ko/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/ko/currency.js
create mode 100644 source/lib/dojo/cldr/nls/ko/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/ko/number.js
create mode 100644 source/lib/dojo/cldr/nls/nb/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/nb/currency.js
create mode 100644 source/lib/dojo/cldr/nls/nb/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/nb/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/nb/number.js
create mode 100644 source/lib/dojo/cldr/nls/nl/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/nl/currency.js
create mode 100644 source/lib/dojo/cldr/nls/nl/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/nl/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/nl/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/nl/number.js
create mode 100644 source/lib/dojo/cldr/nls/number.js
create mode 100644 source/lib/dojo/cldr/nls/pl/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/pl/currency.js
create mode 100644 source/lib/dojo/cldr/nls/pl/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/pl/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/pl/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/pl/number.js
create mode 100644 source/lib/dojo/cldr/nls/pt-pt/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/pt-pt/currency.js
create mode 100644 source/lib/dojo/cldr/nls/pt-pt/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/pt-pt/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/pt-pt/number.js
create mode 100644 source/lib/dojo/cldr/nls/pt/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/pt/currency.js
create mode 100644 source/lib/dojo/cldr/nls/pt/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/pt/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/pt/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/pt/number.js
create mode 100644 source/lib/dojo/cldr/nls/ro/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/ro/currency.js
create mode 100644 source/lib/dojo/cldr/nls/ro/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/ro/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/ro/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/ro/number.js
create mode 100644 source/lib/dojo/cldr/nls/ru/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/ru/currency.js
create mode 100644 source/lib/dojo/cldr/nls/ru/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/ru/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/ru/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/ru/number.js
create mode 100644 source/lib/dojo/cldr/nls/sk/currency.js
create mode 100644 source/lib/dojo/cldr/nls/sk/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/sk/number.js
create mode 100644 source/lib/dojo/cldr/nls/sl/currency.js
create mode 100644 source/lib/dojo/cldr/nls/sl/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/sl/number.js
create mode 100644 source/lib/dojo/cldr/nls/sv/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/sv/currency.js
create mode 100644 source/lib/dojo/cldr/nls/sv/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/sv/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/sv/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/sv/number.js
create mode 100644 source/lib/dojo/cldr/nls/th/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/th/currency.js
create mode 100644 source/lib/dojo/cldr/nls/th/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/th/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/th/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/th/number.js
create mode 100644 source/lib/dojo/cldr/nls/tr/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/tr/currency.js
create mode 100644 source/lib/dojo/cldr/nls/tr/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/tr/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/tr/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/tr/number.js
create mode 100644 source/lib/dojo/cldr/nls/zh-hant/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/zh-hant/currency.js
create mode 100644 source/lib/dojo/cldr/nls/zh-hant/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/zh-hant/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/zh-hant/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/zh-hant/number.js
create mode 100644 source/lib/dojo/cldr/nls/zh-hk/currency.js
create mode 100644 source/lib/dojo/cldr/nls/zh-hk/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/zh-hk/number.js
create mode 100644 source/lib/dojo/cldr/nls/zh-tw/currency.js
create mode 100644 source/lib/dojo/cldr/nls/zh-tw/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/zh-tw/number.js
create mode 100644 source/lib/dojo/cldr/nls/zh/buddhist.js
create mode 100644 source/lib/dojo/cldr/nls/zh/currency.js
create mode 100644 source/lib/dojo/cldr/nls/zh/gregorian.js
create mode 100644 source/lib/dojo/cldr/nls/zh/hebrew.js
create mode 100644 source/lib/dojo/cldr/nls/zh/islamic.js
create mode 100644 source/lib/dojo/cldr/nls/zh/number.js
create mode 100644 source/lib/dojo/cldr/supplemental.js
create mode 100644 source/lib/dojo/colors.js
create mode 100644 source/lib/dojo/cookie.js
create mode 100644 source/lib/dojo/currency.js
create mode 100644 source/lib/dojo/data/ItemFileReadStore.js
create mode 100644 source/lib/dojo/data/ItemFileWriteStore.js
create mode 100644 source/lib/dojo/data/ObjectStore.js
create mode 100644 source/lib/dojo/data/api/Identity.js
create mode 100644 source/lib/dojo/data/api/Item.js
create mode 100644 source/lib/dojo/data/api/Notification.js
create mode 100644 source/lib/dojo/data/api/Read.js
create mode 100644 source/lib/dojo/data/api/Request.js
create mode 100644 source/lib/dojo/data/api/Write.js
create mode 100644 source/lib/dojo/data/util/filter.js
create mode 100644 source/lib/dojo/data/util/simpleFetch.js
create mode 100644 source/lib/dojo/data/util/sorter.js
create mode 100644 source/lib/dojo/date.js
create mode 100644 source/lib/dojo/date/locale.js
create mode 100644 source/lib/dojo/date/stamp.js
create mode 100644 source/lib/dojo/dnd/AutoSource.js
create mode 100644 source/lib/dojo/dnd/Avatar.js
create mode 100644 source/lib/dojo/dnd/Container.js
create mode 100644 source/lib/dojo/dnd/Manager.js
create mode 100644 source/lib/dojo/dnd/Moveable.js
create mode 100644 source/lib/dojo/dnd/Mover.js
create mode 100644 source/lib/dojo/dnd/Selector.js
create mode 100644 source/lib/dojo/dnd/Source.js
create mode 100644 source/lib/dojo/dnd/Target.js
create mode 100644 source/lib/dojo/dnd/TimedMoveable.js
create mode 100644 source/lib/dojo/dnd/autoscroll.js
create mode 100644 source/lib/dojo/dnd/common.js
create mode 100644 source/lib/dojo/dnd/move.js
create mode 100644 source/lib/dojo/dojo.js
create mode 100644 source/lib/dojo/dojo.profile.js
create mode 100644 source/lib/dojo/dom-attr.js
create mode 100644 source/lib/dojo/dom-class.js
create mode 100644 source/lib/dojo/dom-construct.js
create mode 100644 source/lib/dojo/dom-form.js
create mode 100644 source/lib/dojo/dom-geometry.js
create mode 100644 source/lib/dojo/dom-prop.js
create mode 100644 source/lib/dojo/dom-style.js
create mode 100644 source/lib/dojo/dom.js
create mode 100644 source/lib/dojo/domReady.js
create mode 100644 source/lib/dojo/errors/CancelError.js
create mode 100644 source/lib/dojo/errors/RequestError.js
create mode 100644 source/lib/dojo/errors/RequestTimeoutError.js
create mode 100644 source/lib/dojo/errors/create.js
create mode 100644 source/lib/dojo/fx.js
create mode 100644 source/lib/dojo/fx/Toggler.js
create mode 100644 source/lib/dojo/fx/easing.js
create mode 100644 source/lib/dojo/gears.js
create mode 100644 source/lib/dojo/has.js
create mode 100644 source/lib/dojo/hash.js
create mode 100644 source/lib/dojo/hccss.js
create mode 100644 source/lib/dojo/html.js
create mode 100644 source/lib/dojo/i18n.js
create mode 100644 source/lib/dojo/io-query.js
create mode 100644 source/lib/dojo/io/iframe.js
create mode 100644 source/lib/dojo/io/script.js
create mode 100644 source/lib/dojo/jaxer.js
create mode 100644 source/lib/dojo/json.js
create mode 100644 source/lib/dojo/keys.js
create mode 100644 source/lib/dojo/loadInit.js
create mode 100644 source/lib/dojo/main.js
create mode 100644 source/lib/dojo/mouse.js
create mode 100644 source/lib/dojo/nls/ar/colors.js
create mode 100644 source/lib/dojo/nls/az/colors.js
create mode 100644 source/lib/dojo/nls/ca/colors.js
create mode 100644 source/lib/dojo/nls/colors.js
create mode 100644 source/lib/dojo/nls/cs/colors.js
create mode 100644 source/lib/dojo/nls/da/colors.js
create mode 100644 source/lib/dojo/nls/de/colors.js
create mode 100644 source/lib/dojo/nls/el/colors.js
create mode 100644 source/lib/dojo/nls/es/colors.js
create mode 100644 source/lib/dojo/nls/fi/colors.js
create mode 100644 source/lib/dojo/nls/fr/colors.js
create mode 100644 source/lib/dojo/nls/he/colors.js
create mode 100644 source/lib/dojo/nls/hr/colors.js
create mode 100644 source/lib/dojo/nls/hu/colors.js
create mode 100644 source/lib/dojo/nls/it/colors.js
create mode 100644 source/lib/dojo/nls/ja/colors.js
create mode 100644 source/lib/dojo/nls/kk/colors.js
create mode 100644 source/lib/dojo/nls/ko/colors.js
create mode 100644 source/lib/dojo/nls/nb/colors.js
create mode 100644 source/lib/dojo/nls/nl/colors.js
create mode 100644 source/lib/dojo/nls/pl/colors.js
create mode 100644 source/lib/dojo/nls/pt-pt/colors.js
create mode 100644 source/lib/dojo/nls/pt/colors.js
create mode 100644 source/lib/dojo/nls/ro/colors.js
create mode 100644 source/lib/dojo/nls/ru/colors.js
create mode 100644 source/lib/dojo/nls/sk/colors.js
create mode 100644 source/lib/dojo/nls/sl/colors.js
create mode 100644 source/lib/dojo/nls/sv/colors.js
create mode 100644 source/lib/dojo/nls/th/colors.js
create mode 100644 source/lib/dojo/nls/tr/colors.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_ROOT.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_ar.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_ca.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_cs.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_da.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_de.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_el.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_en-gb.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_en-us.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_es-es.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_fi-fi.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_fr-fr.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_he-il.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_hu.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_it-it.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_ja-jp.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_ko-kr.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_nb.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_nl-nl.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_pl.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_pt-br.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_pt-pt.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_ru.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_sk.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_sl.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_sv.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_th.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_tr.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_zh-cn.js
create mode 100644 source/lib/dojo/nls/tt-rss-layer_zh-tw.js
create mode 100644 source/lib/dojo/nls/zh-tw/colors.js
create mode 100644 source/lib/dojo/nls/zh/colors.js
create mode 100644 source/lib/dojo/node.js
create mode 100644 source/lib/dojo/number.js
create mode 100644 source/lib/dojo/on.js
create mode 100644 source/lib/dojo/package.json
create mode 100644 source/lib/dojo/parser.js
create mode 100644 source/lib/dojo/promise/Promise.js
create mode 100644 source/lib/dojo/promise/all.js
create mode 100644 source/lib/dojo/promise/first.js
create mode 100644 source/lib/dojo/promise/instrumentation.js
create mode 100644 source/lib/dojo/promise/tracer.js
create mode 100644 source/lib/dojo/query.js
create mode 100644 source/lib/dojo/ready.js
create mode 100644 source/lib/dojo/regexp.js
create mode 100644 source/lib/dojo/request.js
create mode 100644 source/lib/dojo/request/default.js
create mode 100644 source/lib/dojo/request/handlers.js
create mode 100644 source/lib/dojo/request/iframe.js
create mode 100644 source/lib/dojo/request/node.js
create mode 100644 source/lib/dojo/request/notify.js
create mode 100644 source/lib/dojo/request/registry.js
create mode 100644 source/lib/dojo/request/script.js
create mode 100644 source/lib/dojo/request/util.js
create mode 100644 source/lib/dojo/request/watch.js
create mode 100644 source/lib/dojo/request/xhr.js
create mode 100644 source/lib/dojo/require.js
create mode 100644 source/lib/dojo/resources/LICENSE
create mode 100644 source/lib/dojo/resources/blank.gif
create mode 100644 source/lib/dojo/resources/blank.html
create mode 100644 source/lib/dojo/resources/dnd.css
create mode 100644 source/lib/dojo/resources/dojo.css
create mode 100644 source/lib/dojo/resources/iframe_history.html
create mode 100644 source/lib/dojo/resources/images/dndCopy.png
create mode 100644 source/lib/dojo/resources/images/dndMove.png
create mode 100644 source/lib/dojo/resources/images/dndNoCopy.png
create mode 100644 source/lib/dojo/resources/images/dndNoMove.png
create mode 100644 source/lib/dojo/router.js
create mode 100644 source/lib/dojo/router/RouterBase.js
create mode 100644 source/lib/dojo/rpc/JsonService.js
create mode 100644 source/lib/dojo/rpc/JsonpService.js
create mode 100644 source/lib/dojo/rpc/RpcService.js
create mode 100644 source/lib/dojo/selector/_loader.js
create mode 100644 source/lib/dojo/selector/acme.js
create mode 100644 source/lib/dojo/selector/lite.js
create mode 100644 source/lib/dojo/sniff.js
create mode 100644 source/lib/dojo/store/Cache.js
create mode 100644 source/lib/dojo/store/DataStore.js
create mode 100644 source/lib/dojo/store/JsonRest.js
create mode 100644 source/lib/dojo/store/Memory.js
create mode 100644 source/lib/dojo/store/Observable.js
create mode 100644 source/lib/dojo/store/README
create mode 100644 source/lib/dojo/store/api/Store.js
create mode 100644 source/lib/dojo/store/util/QueryResults.js
create mode 100644 source/lib/dojo/store/util/SimpleQueryEngine.js
create mode 100644 source/lib/dojo/string.js
create mode 100644 source/lib/dojo/text.js
create mode 100644 source/lib/dojo/topic.js
create mode 100644 source/lib/dojo/touch.js
create mode 100644 source/lib/dojo/tt-rss-layer.js
create mode 100644 source/lib/dojo/uacss.js
create mode 100644 source/lib/dojo/when.js
create mode 100644 source/lib/dojo/window.js
create mode 100644 source/lib/floIcon.php
create mode 100644 source/lib/gettext/README
create mode 100644 source/lib/gettext/gettext.inc
create mode 100755 source/lib/gettext/gettext.php
create mode 100644 source/lib/gettext/streams.php
create mode 100644 source/lib/index.html
create mode 100644 source/lib/jimIcon.php
create mode 100644 source/lib/jshrink/LICENSE
create mode 100644 source/lib/jshrink/Minifier.php
create mode 100644 source/lib/jshrink/README.md
create mode 100644 source/lib/languagedetect/LanguageDetect.php
create mode 100644 source/lib/languagedetect/Text/LanguageDetect/Exception.php
create mode 100644 source/lib/languagedetect/Text/LanguageDetect/ISO639.php
create mode 100644 source/lib/languagedetect/Text/LanguageDetect/Parser.php
create mode 100644 source/lib/languagedetect/data/lang.dat
create mode 100644 source/lib/languagedetect/data/unicode_blocks.dat
create mode 100644 source/lib/otphp/LICENCE
create mode 100644 source/lib/otphp/lib/hotp.php
create mode 100644 source/lib/otphp/lib/otp.php
create mode 100644 source/lib/otphp/lib/otphp.php
create mode 100644 source/lib/otphp/lib/totp.php
create mode 100644 source/lib/otphp/vendor/base32.php
create mode 100644 source/lib/otphp/vendor/libs.php
create mode 100644 source/lib/phpmailer/class.phpmailer.php
create mode 100644 source/lib/phpmailer/class.smtp.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-ar.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-br.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-ca.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-ch.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-cz.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-de.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-dk.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-es.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-et.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-fi.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-fo.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-fr.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-hu.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-it.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-ja.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-nl.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-no.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-pl.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-ro.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-ru.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-se.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-sk.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-tr.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-zh.php
create mode 100644 source/lib/phpmailer/language/phpmailer.lang-zh_cn.php
create mode 100644 source/lib/phpqrcode/CHANGELOG
create mode 100644 source/lib/phpqrcode/INSTALL
create mode 100644 source/lib/phpqrcode/LICENSE
create mode 100644 source/lib/phpqrcode/README
create mode 100644 source/lib/phpqrcode/VERSION
create mode 100644 source/lib/phpqrcode/bindings/tcpdf/qrcode.php
create mode 100644 source/lib/phpqrcode/cache/frame_1.dat
create mode 100644 source/lib/phpqrcode/cache/frame_1.png
create mode 100644 source/lib/phpqrcode/cache/frame_10.dat
create mode 100644 source/lib/phpqrcode/cache/frame_10.png
create mode 100644 source/lib/phpqrcode/cache/frame_11.dat
create mode 100644 source/lib/phpqrcode/cache/frame_11.png
create mode 100644 source/lib/phpqrcode/cache/frame_12.dat
create mode 100644 source/lib/phpqrcode/cache/frame_12.png
create mode 100644 source/lib/phpqrcode/cache/frame_13.dat
create mode 100644 source/lib/phpqrcode/cache/frame_13.png
create mode 100644 source/lib/phpqrcode/cache/frame_14.dat
create mode 100644 source/lib/phpqrcode/cache/frame_14.png
create mode 100644 source/lib/phpqrcode/cache/frame_15.dat
create mode 100644 source/lib/phpqrcode/cache/frame_15.png
create mode 100644 source/lib/phpqrcode/cache/frame_16.dat
create mode 100644 source/lib/phpqrcode/cache/frame_16.png
create mode 100644 source/lib/phpqrcode/cache/frame_17.dat
create mode 100644 source/lib/phpqrcode/cache/frame_17.png
create mode 100644 source/lib/phpqrcode/cache/frame_18.dat
create mode 100644 source/lib/phpqrcode/cache/frame_18.png
create mode 100644 source/lib/phpqrcode/cache/frame_19.dat
create mode 100644 source/lib/phpqrcode/cache/frame_19.png
create mode 100644 source/lib/phpqrcode/cache/frame_2.dat
create mode 100644 source/lib/phpqrcode/cache/frame_2.png
create mode 100644 source/lib/phpqrcode/cache/frame_20.dat
create mode 100644 source/lib/phpqrcode/cache/frame_20.png
create mode 100644 source/lib/phpqrcode/cache/frame_21.dat
create mode 100644 source/lib/phpqrcode/cache/frame_21.png
create mode 100644 source/lib/phpqrcode/cache/frame_22.dat
create mode 100644 source/lib/phpqrcode/cache/frame_22.png
create mode 100644 source/lib/phpqrcode/cache/frame_23.dat
create mode 100644 source/lib/phpqrcode/cache/frame_23.png
create mode 100644 source/lib/phpqrcode/cache/frame_24.dat
create mode 100644 source/lib/phpqrcode/cache/frame_24.png
create mode 100644 source/lib/phpqrcode/cache/frame_25.dat
create mode 100644 source/lib/phpqrcode/cache/frame_25.png
create mode 100644 source/lib/phpqrcode/cache/frame_26.dat
create mode 100644 source/lib/phpqrcode/cache/frame_26.png
create mode 100644 source/lib/phpqrcode/cache/frame_27.dat
create mode 100644 source/lib/phpqrcode/cache/frame_27.png
create mode 100644 source/lib/phpqrcode/cache/frame_28.dat
create mode 100644 source/lib/phpqrcode/cache/frame_28.png
create mode 100644 source/lib/phpqrcode/cache/frame_29.dat
create mode 100644 source/lib/phpqrcode/cache/frame_29.png
create mode 100644 source/lib/phpqrcode/cache/frame_3.dat
create mode 100644 source/lib/phpqrcode/cache/frame_3.png
create mode 100644 source/lib/phpqrcode/cache/frame_30.dat
create mode 100644 source/lib/phpqrcode/cache/frame_30.png
create mode 100644 source/lib/phpqrcode/cache/frame_31.dat
create mode 100644 source/lib/phpqrcode/cache/frame_31.png
create mode 100644 source/lib/phpqrcode/cache/frame_32.dat
create mode 100644 source/lib/phpqrcode/cache/frame_32.png
create mode 100644 source/lib/phpqrcode/cache/frame_33.dat
create mode 100644 source/lib/phpqrcode/cache/frame_33.png
create mode 100644 source/lib/phpqrcode/cache/frame_34.dat
create mode 100644 source/lib/phpqrcode/cache/frame_34.png
create mode 100644 source/lib/phpqrcode/cache/frame_35.dat
create mode 100644 source/lib/phpqrcode/cache/frame_35.png
create mode 100644 source/lib/phpqrcode/cache/frame_36.dat
create mode 100644 source/lib/phpqrcode/cache/frame_36.png
create mode 100644 source/lib/phpqrcode/cache/frame_37.dat
create mode 100644 source/lib/phpqrcode/cache/frame_37.png
create mode 100644 source/lib/phpqrcode/cache/frame_38.dat
create mode 100644 source/lib/phpqrcode/cache/frame_38.png
create mode 100644 source/lib/phpqrcode/cache/frame_39.dat
create mode 100644 source/lib/phpqrcode/cache/frame_39.png
create mode 100644 source/lib/phpqrcode/cache/frame_4.dat
create mode 100644 source/lib/phpqrcode/cache/frame_4.png
create mode 100644 source/lib/phpqrcode/cache/frame_40.dat
create mode 100644 source/lib/phpqrcode/cache/frame_40.png
create mode 100644 source/lib/phpqrcode/cache/frame_5.dat
create mode 100644 source/lib/phpqrcode/cache/frame_5.png
create mode 100644 source/lib/phpqrcode/cache/frame_6.dat
create mode 100644 source/lib/phpqrcode/cache/frame_6.png
create mode 100644 source/lib/phpqrcode/cache/frame_7.dat
create mode 100644 source/lib/phpqrcode/cache/frame_7.png
create mode 100644 source/lib/phpqrcode/cache/frame_8.dat
create mode 100644 source/lib/phpqrcode/cache/frame_8.png
create mode 100644 source/lib/phpqrcode/cache/frame_9.dat
create mode 100644 source/lib/phpqrcode/cache/frame_9.png
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_101_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_105_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_109_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_113_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_117_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_121_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_125_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_129_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_133_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_137_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_141_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_145_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_149_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_153_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_157_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_161_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_165_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_169_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_173_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_177_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_21_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_25_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_29_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_33_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_37_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_41_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_45_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_49_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_53_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_57_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_61_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_65_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_69_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_73_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_77_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_81_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_85_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_89_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_93_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_0/mask_97_0.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_101_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_105_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_109_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_113_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_117_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_121_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_125_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_129_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_133_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_137_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_141_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_145_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_149_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_153_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_157_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_161_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_165_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_169_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_173_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_177_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_21_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_25_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_29_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_33_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_37_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_41_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_45_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_49_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_53_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_57_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_61_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_65_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_69_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_73_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_77_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_81_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_85_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_89_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_93_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_1/mask_97_1.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_101_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_105_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_109_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_113_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_117_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_121_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_125_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_129_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_133_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_137_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_141_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_145_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_149_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_153_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_157_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_161_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_165_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_169_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_173_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_177_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_21_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_25_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_29_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_33_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_37_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_41_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_45_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_49_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_53_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_57_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_61_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_65_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_69_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_73_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_77_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_81_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_85_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_89_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_93_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_2/mask_97_2.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_101_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_105_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_109_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_113_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_117_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_121_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_125_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_129_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_133_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_137_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_141_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_145_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_149_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_153_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_157_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_161_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_165_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_169_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_173_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_177_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_21_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_25_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_29_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_33_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_37_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_41_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_45_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_49_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_53_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_57_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_61_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_65_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_69_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_73_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_77_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_81_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_85_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_89_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_93_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_3/mask_97_3.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_101_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_105_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_109_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_113_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_117_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_121_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_125_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_129_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_133_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_137_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_141_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_145_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_149_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_153_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_157_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_161_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_165_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_169_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_173_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_177_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_21_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_25_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_29_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_33_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_37_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_41_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_45_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_49_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_53_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_57_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_61_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_65_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_69_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_73_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_77_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_81_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_85_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_89_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_93_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_4/mask_97_4.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_101_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_105_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_109_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_113_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_117_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_121_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_125_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_129_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_133_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_137_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_141_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_145_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_149_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_153_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_157_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_161_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_165_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_169_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_173_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_177_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_21_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_25_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_29_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_33_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_37_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_41_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_45_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_49_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_53_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_57_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_61_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_65_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_69_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_73_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_77_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_81_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_85_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_89_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_93_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_5/mask_97_5.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_101_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_105_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_109_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_113_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_117_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_121_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_125_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_129_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_133_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_137_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_141_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_145_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_149_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_153_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_157_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_161_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_165_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_169_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_173_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_177_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_21_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_25_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_29_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_33_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_37_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_41_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_45_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_49_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_53_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_57_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_61_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_65_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_69_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_73_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_77_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_81_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_85_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_89_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_93_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_6/mask_97_6.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_101_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_105_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_109_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_113_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_117_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_121_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_125_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_129_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_133_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_137_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_141_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_145_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_149_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_153_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_157_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_161_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_165_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_169_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_173_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_177_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_21_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_25_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_29_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_33_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_37_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_41_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_45_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_49_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_53_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_57_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_61_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_65_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_69_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_73_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_77_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_81_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_85_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_89_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_93_7.dat
create mode 100644 source/lib/phpqrcode/cache/mask_7/mask_97_7.dat
create mode 100644 source/lib/phpqrcode/index.php
create mode 100644 source/lib/phpqrcode/phpqrcode.php
create mode 100644 source/lib/phpqrcode/qrbitstream.php
create mode 100644 source/lib/phpqrcode/qrconfig.php
create mode 100644 source/lib/phpqrcode/qrconst.php
create mode 100644 source/lib/phpqrcode/qrencode.php
create mode 100644 source/lib/phpqrcode/qrimage.php
create mode 100644 source/lib/phpqrcode/qrinput.php
create mode 100644 source/lib/phpqrcode/qrlib.php
create mode 100644 source/lib/phpqrcode/qrmask.php
create mode 100644 source/lib/phpqrcode/qrrscode.php
create mode 100644 source/lib/phpqrcode/qrspec.php
create mode 100644 source/lib/phpqrcode/qrsplit.php
create mode 100644 source/lib/phpqrcode/qrtools.php
create mode 100644 source/lib/phpqrcode/tools/merge.bat
create mode 100644 source/lib/phpqrcode/tools/merge.php
create mode 100644 source/lib/phpqrcode/tools/merge.sh
create mode 100644 source/lib/phpqrcode/tools/merged_config.php
create mode 100644 source/lib/phpqrcode/tools/merged_header.php
create mode 100644 source/lib/prototype.js
create mode 100644 source/lib/pubsubhubbub/README.txt
create mode 100644 source/lib/pubsubhubbub/publisher.php
create mode 100644 source/lib/pubsubhubbub/subscriber.php
create mode 100644 source/lib/scriptaculous/controls.js
create mode 100644 source/lib/scriptaculous/dragdrop.js
create mode 100644 source/lib/scriptaculous/effects.js
create mode 100644 source/lib/scriptaculous/scriptaculous.js
create mode 100644 source/lib/sphinxapi.php
create mode 100644 source/lib/timezones.txt
create mode 100644 source/lib/xsl_mop-up.js
create mode 100644 source/locale/.htaccess
create mode 100644 source/locale/ca_CA/LC_MESSAGES/messages.mo
create mode 100644 source/locale/ca_CA/LC_MESSAGES/messages.po
create mode 100644 source/locale/cs_CZ/LC_MESSAGES/messages.mo
create mode 100644 source/locale/cs_CZ/LC_MESSAGES/messages.po
create mode 100755 source/locale/de_DE/LC_MESSAGES/messages.mo
create mode 100755 source/locale/de_DE/LC_MESSAGES/messages.po
create mode 100644 source/locale/es_ES/LC_MESSAGES/messages.mo
create mode 100644 source/locale/es_ES/LC_MESSAGES/messages.po
create mode 100644 source/locale/fi_FI/LC_MESSAGES/messages.mo
create mode 100644 source/locale/fi_FI/LC_MESSAGES/messages.po
create mode 100644 source/locale/fr_FR/LC_MESSAGES/messages.mo
create mode 100644 source/locale/fr_FR/LC_MESSAGES/messages.po
create mode 100644 source/locale/hu_HU/LC_MESSAGES/messages.mo
create mode 100644 source/locale/hu_HU/LC_MESSAGES/messages.po
create mode 100644 source/locale/it_IT/LC_MESSAGES/messages.mo
create mode 100644 source/locale/it_IT/LC_MESSAGES/messages.po
create mode 100644 source/locale/ja_JP/LC_MESSAGES/messages.mo
create mode 100644 source/locale/ja_JP/LC_MESSAGES/messages.po
create mode 100644 source/locale/ko_KR/LC_MESSAGES/messages.mo
create mode 100644 source/locale/ko_KR/LC_MESSAGES/messages.po
create mode 100644 source/locale/lv_LV/LC_MESSAGES/messages.mo
create mode 100644 source/locale/lv_LV/LC_MESSAGES/messages.po
create mode 100644 source/locale/nb_NO/LC_MESSAGES/messages.mo
create mode 100644 source/locale/nb_NO/LC_MESSAGES/messages.po
create mode 100644 source/locale/nl_NL/LC_MESSAGES/messages.mo
create mode 100644 source/locale/nl_NL/LC_MESSAGES/messages.po
create mode 100644 source/locale/pl_PL/LC_MESSAGES/messages.mo
create mode 100644 source/locale/pl_PL/LC_MESSAGES/messages.po
create mode 100755 source/locale/pt_BR/LC_MESSAGES/messages.mo
create mode 100644 source/locale/pt_BR/LC_MESSAGES/messages.po
create mode 100644 source/locale/ru_RU/LC_MESSAGES/messages.mo
create mode 100644 source/locale/ru_RU/LC_MESSAGES/messages.po
create mode 100644 source/locale/sv_SE/LC_MESSAGES/messages.mo
create mode 100644 source/locale/sv_SE/LC_MESSAGES/messages.po
create mode 100644 source/locale/zh_CN/LC_MESSAGES/messages.mo
create mode 100644 source/locale/zh_CN/LC_MESSAGES/messages.po
create mode 100644 source/messages.pot
create mode 100644 source/opml.php
create mode 100644 source/plugins/af_buni/init.php
create mode 100644 source/plugins/af_buttersafe/init.php
create mode 100644 source/plugins/af_dilbert/init.php
create mode 100644 source/plugins/af_explosm/init.php
create mode 100644 source/plugins/af_gocomics/init.php
create mode 100644 source/plugins/af_natgeo/init.php
create mode 100644 source/plugins/af_pennyarcade/init.php
create mode 100644 source/plugins/af_redditimgur/init.php
create mode 100644 source/plugins/af_sciam/init.php
create mode 100644 source/plugins/af_unburn/init.php
create mode 100644 source/plugins/af_whomp/init.php
create mode 100644 source/plugins/auth_internal/init.php
create mode 100644 source/plugins/auth_remote/init.php
create mode 100644 source/plugins/bookmarklets/init.php
create mode 100644 source/plugins/cache_starred_images/init.php
create mode 100644 source/plugins/close_button/button.png
create mode 100644 source/plugins/close_button/init.php
create mode 100644 source/plugins/embed_original/button.png
create mode 100644 source/plugins/embed_original/init.css
create mode 100644 source/plugins/embed_original/init.js
create mode 100644 source/plugins/embed_original/init.php
create mode 100644 source/plugins/googlereaderimport/init.js
create mode 100644 source/plugins/googlereaderimport/init.php
create mode 100644 source/plugins/googlereaderkeys/init.php
create mode 100644 source/plugins/import_export/import_export.js
create mode 100644 source/plugins/import_export/init.php
create mode 100644 source/plugins/index.html
create mode 100644 source/plugins/instances/init.php
create mode 100644 source/plugins/instances/instances.js
create mode 100644 source/plugins/mail/init.php
create mode 100644 source/plugins/mail/mail.js
create mode 100644 source/plugins/mail/mail.png
create mode 100644 source/plugins/mailto/init.js
create mode 100644 source/plugins/mailto/init.php
create mode 100644 source/plugins/mailto/mail.png
create mode 100644 source/plugins/mark_button/init.php
create mode 100644 source/plugins/no_iframes/init.php
create mode 100644 source/plugins/no_title_counters/init.js
create mode 100644 source/plugins/no_title_counters/init.php
create mode 100644 source/plugins/note/init.php
create mode 100644 source/plugins/note/note.js
create mode 100644 source/plugins/note/note.png
create mode 100644 source/plugins/nsfw/init.js
create mode 100644 source/plugins/nsfw/init.php
create mode 100644 source/plugins/share/init.php
create mode 100644 source/plugins/share/notshared.png
create mode 100644 source/plugins/share/share.js
create mode 100644 source/plugins/share/share.png
create mode 100644 source/plugins/share/share_prefs.js
create mode 100644 source/plugins/shorten_expanded/init.css
create mode 100644 source/plugins/shorten_expanded/init.js
create mode 100644 source/plugins/shorten_expanded/init.php
create mode 100644 source/plugins/swap_jk/init.php
create mode 100644 source/plugins/updater/init.php
create mode 100644 source/plugins/updater/updater.js
create mode 100644 source/plugins/vf_shared/init.php
create mode 100644 source/plugins/vf_shared/share.png
create mode 100644 source/prefs.php
create mode 100644 source/public.php
create mode 100644 source/register.php
create mode 100644 source/schema/.htaccess
create mode 100644 source/schema/ttrss_schema_mysql.sql
create mode 100644 source/schema/ttrss_schema_pgsql.sql
create mode 100644 source/schema/versions/mysql/10.sql
create mode 100644 source/schema/versions/mysql/100.sql
create mode 100644 source/schema/versions/mysql/101.sql
create mode 100644 source/schema/versions/mysql/102.sql
create mode 100644 source/schema/versions/mysql/103.sql
create mode 100644 source/schema/versions/mysql/104.sql
create mode 100644 source/schema/versions/mysql/105.sql
create mode 100644 source/schema/versions/mysql/106.sql
create mode 100644 source/schema/versions/mysql/107.sql
create mode 100644 source/schema/versions/mysql/108.sql
create mode 100644 source/schema/versions/mysql/109.sql
create mode 100644 source/schema/versions/mysql/11.sql
create mode 100644 source/schema/versions/mysql/110.sql
create mode 100644 source/schema/versions/mysql/111.sql
create mode 100644 source/schema/versions/mysql/112.sql
create mode 100644 source/schema/versions/mysql/113.sql
create mode 100644 source/schema/versions/mysql/114.sql
create mode 100644 source/schema/versions/mysql/115.sql
create mode 100644 source/schema/versions/mysql/116.sql
create mode 100644 source/schema/versions/mysql/117.sql
create mode 100644 source/schema/versions/mysql/118.sql
create mode 100644 source/schema/versions/mysql/119.sql
create mode 100644 source/schema/versions/mysql/12.sql
create mode 100644 source/schema/versions/mysql/120.sql
create mode 100644 source/schema/versions/mysql/121.sql
create mode 100644 source/schema/versions/mysql/122.sql
create mode 100644 source/schema/versions/mysql/123.sql
create mode 100644 source/schema/versions/mysql/13.sql
create mode 100644 source/schema/versions/mysql/14.sql
create mode 100644 source/schema/versions/mysql/15.sql
create mode 100644 source/schema/versions/mysql/16.sql
create mode 100644 source/schema/versions/mysql/17.sql
create mode 100644 source/schema/versions/mysql/18.sql
create mode 100644 source/schema/versions/mysql/19.sql
create mode 100644 source/schema/versions/mysql/20.sql
create mode 100644 source/schema/versions/mysql/21.sql
create mode 100644 source/schema/versions/mysql/22.sql
create mode 100644 source/schema/versions/mysql/23.sql
create mode 100644 source/schema/versions/mysql/24.sql
create mode 100644 source/schema/versions/mysql/25.sql
create mode 100644 source/schema/versions/mysql/26.sql
create mode 100644 source/schema/versions/mysql/27.sql
create mode 100644 source/schema/versions/mysql/28.sql
create mode 100644 source/schema/versions/mysql/29.sql
create mode 100644 source/schema/versions/mysql/3.sql
create mode 100644 source/schema/versions/mysql/30.sql
create mode 100644 source/schema/versions/mysql/31.sql
create mode 100644 source/schema/versions/mysql/32.sql
create mode 100644 source/schema/versions/mysql/33.sql
create mode 100644 source/schema/versions/mysql/34.sql
create mode 100644 source/schema/versions/mysql/35.sql
create mode 100644 source/schema/versions/mysql/36.sql
create mode 100644 source/schema/versions/mysql/37.sql
create mode 100644 source/schema/versions/mysql/38.sql
create mode 100644 source/schema/versions/mysql/39.sql
create mode 100644 source/schema/versions/mysql/4.sql
create mode 100644 source/schema/versions/mysql/40.sql
create mode 100644 source/schema/versions/mysql/41.sql
create mode 100644 source/schema/versions/mysql/42.sql
create mode 100644 source/schema/versions/mysql/43.sql
create mode 100644 source/schema/versions/mysql/44.sql
create mode 100644 source/schema/versions/mysql/45.sql
create mode 100644 source/schema/versions/mysql/46.sql
create mode 100644 source/schema/versions/mysql/47.sql
create mode 100644 source/schema/versions/mysql/48.sql
create mode 100644 source/schema/versions/mysql/49.sql
create mode 100644 source/schema/versions/mysql/5.sql
create mode 100644 source/schema/versions/mysql/50.sql
create mode 100644 source/schema/versions/mysql/51.sql
create mode 100644 source/schema/versions/mysql/52.sql
create mode 100644 source/schema/versions/mysql/53.sql
create mode 100644 source/schema/versions/mysql/54.sql
create mode 100644 source/schema/versions/mysql/55.sql
create mode 100644 source/schema/versions/mysql/56.sql
create mode 100644 source/schema/versions/mysql/57.sql
create mode 100644 source/schema/versions/mysql/58.sql
create mode 100644 source/schema/versions/mysql/59.sql
create mode 100644 source/schema/versions/mysql/6.sql
create mode 100644 source/schema/versions/mysql/60.sql
create mode 100644 source/schema/versions/mysql/61.sql
create mode 100644 source/schema/versions/mysql/62.sql
create mode 100644 source/schema/versions/mysql/63.sql
create mode 100644 source/schema/versions/mysql/64.sql
create mode 100644 source/schema/versions/mysql/65.sql
create mode 100644 source/schema/versions/mysql/66.sql
create mode 100644 source/schema/versions/mysql/67.sql
create mode 100644 source/schema/versions/mysql/68.sql
create mode 100644 source/schema/versions/mysql/69.sql
create mode 100644 source/schema/versions/mysql/7.sql
create mode 100644 source/schema/versions/mysql/70.sql
create mode 100644 source/schema/versions/mysql/71.sql
create mode 100644 source/schema/versions/mysql/72.sql
create mode 100644 source/schema/versions/mysql/73.sql
create mode 100644 source/schema/versions/mysql/74.sql
create mode 100644 source/schema/versions/mysql/75.sql
create mode 100644 source/schema/versions/mysql/76.sql
create mode 100644 source/schema/versions/mysql/77.sql
create mode 100644 source/schema/versions/mysql/78.sql
create mode 100644 source/schema/versions/mysql/79.sql
create mode 100644 source/schema/versions/mysql/8.sql
create mode 100644 source/schema/versions/mysql/80.sql
create mode 100644 source/schema/versions/mysql/81.sql
create mode 100644 source/schema/versions/mysql/82.sql
create mode 100644 source/schema/versions/mysql/83.sql
create mode 100644 source/schema/versions/mysql/84.sql
create mode 100644 source/schema/versions/mysql/85.sql
create mode 100644 source/schema/versions/mysql/86.sql
create mode 100644 source/schema/versions/mysql/87.sql
create mode 100644 source/schema/versions/mysql/88.sql
create mode 100644 source/schema/versions/mysql/89.sql
create mode 100644 source/schema/versions/mysql/9.sql
create mode 100644 source/schema/versions/mysql/90.sql
create mode 100644 source/schema/versions/mysql/91.sql
create mode 100644 source/schema/versions/mysql/92.sql
create mode 100644 source/schema/versions/mysql/93.sql
create mode 100644 source/schema/versions/mysql/94.sql
create mode 100644 source/schema/versions/mysql/95.sql
create mode 100644 source/schema/versions/mysql/96.sql
create mode 100644 source/schema/versions/mysql/97.sql
create mode 100644 source/schema/versions/mysql/98.sql
create mode 100644 source/schema/versions/mysql/99.sql
create mode 100644 source/schema/versions/pgsql/10.sql
create mode 100644 source/schema/versions/pgsql/100.sql
create mode 100644 source/schema/versions/pgsql/101.sql
create mode 100644 source/schema/versions/pgsql/102.sql
create mode 100644 source/schema/versions/pgsql/103.sql
create mode 100644 source/schema/versions/pgsql/104.sql
create mode 100644 source/schema/versions/pgsql/105.sql
create mode 100644 source/schema/versions/pgsql/106.sql
create mode 100644 source/schema/versions/pgsql/107.sql
create mode 100644 source/schema/versions/pgsql/108.sql
create mode 100644 source/schema/versions/pgsql/109.sql
create mode 100644 source/schema/versions/pgsql/11.sql
create mode 100644 source/schema/versions/pgsql/110.sql
create mode 100644 source/schema/versions/pgsql/111.sql
create mode 100644 source/schema/versions/pgsql/112.sql
create mode 100644 source/schema/versions/pgsql/113.sql
create mode 100644 source/schema/versions/pgsql/114.sql
create mode 100644 source/schema/versions/pgsql/115.sql
create mode 100644 source/schema/versions/pgsql/116.sql
create mode 100644 source/schema/versions/pgsql/117.sql
create mode 100644 source/schema/versions/pgsql/118.sql
create mode 100644 source/schema/versions/pgsql/119.sql
create mode 100644 source/schema/versions/pgsql/12.sql
create mode 100644 source/schema/versions/pgsql/120.sql
create mode 100644 source/schema/versions/pgsql/121.sql
create mode 100644 source/schema/versions/pgsql/122.sql
create mode 100644 source/schema/versions/pgsql/123.sql
create mode 100644 source/schema/versions/pgsql/13.sql
create mode 100644 source/schema/versions/pgsql/14.sql
create mode 100644 source/schema/versions/pgsql/15.sql
create mode 100644 source/schema/versions/pgsql/16.sql
create mode 100644 source/schema/versions/pgsql/17.sql
create mode 100644 source/schema/versions/pgsql/18.sql
create mode 100644 source/schema/versions/pgsql/19.sql
create mode 100644 source/schema/versions/pgsql/20.sql
create mode 100644 source/schema/versions/pgsql/21.sql
create mode 100644 source/schema/versions/pgsql/22.sql
create mode 100644 source/schema/versions/pgsql/23.sql
create mode 100644 source/schema/versions/pgsql/24.sql
create mode 100644 source/schema/versions/pgsql/25.sql
create mode 100644 source/schema/versions/pgsql/26.sql
create mode 100644 source/schema/versions/pgsql/27.sql
create mode 100644 source/schema/versions/pgsql/28.sql
create mode 100644 source/schema/versions/pgsql/29.sql
create mode 100644 source/schema/versions/pgsql/3.sql
create mode 100644 source/schema/versions/pgsql/30.sql
create mode 100644 source/schema/versions/pgsql/31.sql
create mode 100644 source/schema/versions/pgsql/32.sql
create mode 100644 source/schema/versions/pgsql/33.sql
create mode 100644 source/schema/versions/pgsql/34.sql
create mode 100644 source/schema/versions/pgsql/35.sql
create mode 100644 source/schema/versions/pgsql/36.sql
create mode 100644 source/schema/versions/pgsql/37.sql
create mode 100644 source/schema/versions/pgsql/38.sql
create mode 100644 source/schema/versions/pgsql/39.sql
create mode 100644 source/schema/versions/pgsql/4.sql
create mode 100644 source/schema/versions/pgsql/40.sql
create mode 100644 source/schema/versions/pgsql/41.sql
create mode 100644 source/schema/versions/pgsql/42.sql
create mode 100644 source/schema/versions/pgsql/43.sql
create mode 100644 source/schema/versions/pgsql/44.sql
create mode 100644 source/schema/versions/pgsql/45.sql
create mode 100644 source/schema/versions/pgsql/46.sql
create mode 100644 source/schema/versions/pgsql/47.sql
create mode 100644 source/schema/versions/pgsql/48.sql
create mode 100644 source/schema/versions/pgsql/49.sql
create mode 100644 source/schema/versions/pgsql/5.sql
create mode 100644 source/schema/versions/pgsql/50.sql
create mode 100644 source/schema/versions/pgsql/51.sql
create mode 100644 source/schema/versions/pgsql/52.sql
create mode 100644 source/schema/versions/pgsql/53.sql
create mode 100644 source/schema/versions/pgsql/54.sql
create mode 100644 source/schema/versions/pgsql/55.sql
create mode 100644 source/schema/versions/pgsql/56.sql
create mode 100644 source/schema/versions/pgsql/57.sql
create mode 100644 source/schema/versions/pgsql/58.sql
create mode 100644 source/schema/versions/pgsql/59.sql
create mode 100644 source/schema/versions/pgsql/6.sql
create mode 100644 source/schema/versions/pgsql/60.sql
create mode 100644 source/schema/versions/pgsql/61.sql
create mode 100644 source/schema/versions/pgsql/62.sql
create mode 100644 source/schema/versions/pgsql/63.sql
create mode 100644 source/schema/versions/pgsql/64.sql
create mode 100644 source/schema/versions/pgsql/65.sql
create mode 100644 source/schema/versions/pgsql/66.sql
create mode 100644 source/schema/versions/pgsql/67.sql
create mode 100644 source/schema/versions/pgsql/68.sql
create mode 100644 source/schema/versions/pgsql/69.sql
create mode 100644 source/schema/versions/pgsql/7.sql
create mode 100644 source/schema/versions/pgsql/70.sql
create mode 100644 source/schema/versions/pgsql/71.sql
create mode 100644 source/schema/versions/pgsql/72.sql
create mode 100644 source/schema/versions/pgsql/73.sql
create mode 100644 source/schema/versions/pgsql/74.sql
create mode 100644 source/schema/versions/pgsql/75.sql
create mode 100644 source/schema/versions/pgsql/76.sql
create mode 100644 source/schema/versions/pgsql/77.sql
create mode 100644 source/schema/versions/pgsql/78.sql
create mode 100644 source/schema/versions/pgsql/79.sql
create mode 100644 source/schema/versions/pgsql/8.sql
create mode 100644 source/schema/versions/pgsql/80.sql
create mode 100644 source/schema/versions/pgsql/81.sql
create mode 100644 source/schema/versions/pgsql/82.sql
create mode 100644 source/schema/versions/pgsql/83.sql
create mode 100644 source/schema/versions/pgsql/84.sql
create mode 100644 source/schema/versions/pgsql/85.sql
create mode 100644 source/schema/versions/pgsql/86.sql
create mode 100644 source/schema/versions/pgsql/87.sql
create mode 100644 source/schema/versions/pgsql/88.sql
create mode 100644 source/schema/versions/pgsql/89.sql
create mode 100644 source/schema/versions/pgsql/9.sql
create mode 100644 source/schema/versions/pgsql/90.sql
create mode 100644 source/schema/versions/pgsql/91.sql
create mode 100644 source/schema/versions/pgsql/92.sql
create mode 100644 source/schema/versions/pgsql/93.sql
create mode 100644 source/schema/versions/pgsql/94.sql
create mode 100644 source/schema/versions/pgsql/95.sql
create mode 100644 source/schema/versions/pgsql/96.sql
create mode 100644 source/schema/versions/pgsql/97.sql
create mode 100644 source/schema/versions/pgsql/98.sql
create mode 100644 source/schema/versions/pgsql/99.sql
create mode 100644 source/templates/.htaccess
create mode 100644 source/templates/digest_template.txt
create mode 100644 source/templates/digest_template_html.txt
create mode 100644 source/templates/email_article_template.txt
create mode 100644 source/templates/generated_feed.txt
create mode 100644 source/templates/resetpass_template.txt
create mode 100644 source/themes/.empty
create mode 100644 source/themes/default.css
create mode 100755 source/update.php
create mode 100755 source/update_daemon2.php
create mode 100644 source/utils/.htaccess
create mode 100755 source/utils/extract-i18n-js.pl
create mode 100644 source/utils/localized_schema.txt
create mode 100755 source/utils/regen_config_checks.sh
create mode 100755 source/utils/update-translations.sh
diff --git a/source/LICENSE b/source/LICENSE
new file mode 100644
index 0000000..d511905
--- /dev/null
+++ b/source/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/source/README.md b/source/README.md
new file mode 100644
index 0000000..97218cd
--- /dev/null
+++ b/source/README.md
@@ -0,0 +1,41 @@
+Tiny Tiny RSS
+=============
+
+Web-based news feed aggregator, designed to allow you to read news from
+any location, while feeling as close to a real desktop application as possible.
+
+http://tt-rss.org
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+
+Copyright (c) 2005 Andrew Dolgov (unless explicitly stated otherwise).
+
+Uses Silk icons by Mark James: http://www.famfamfam.com/lab/icons/silk/
+
+## Requirements
+
+* Compatible web browser (http://tt-rss.org/wiki/CompatibleBrowsers)
+* Web server, for example Apache
+* PHP (with support for mbstring functions)
+* PostgreSQL (tested on 8.3) or MySQL (InnoDB and version 4.1+ required)
+
+## Installation Notes
+
+http://tt-rss.org/wiki/InstallationNotes
+
+## See also
+
+* FAQ: http://tt-rss.org/wiki/FrequentlyAskedQuestions
+* Forum: http://tt-rss.org/forum
+* Wiki: http://tt-rss.org/wiki/WikiStart
diff --git a/source/api/index.php b/source/api/index.php
new file mode 100644
index 0000000..facdf82
--- /dev/null
+++ b/source/api/index.php
@@ -0,0 +1,74 @@
+before($method)) {
+ if ($method && method_exists($handler, $method)) {
+ $handler->$method();
+ } else if (method_exists($handler, 'index')) {
+ $handler->index($method);
+ }
+ $handler->after();
+ }
+
+ header("Api-Content-Length: " . ob_get_length());
+
+ ob_end_flush();
+?>
diff --git a/source/atom-to-html.xsl b/source/atom-to-html.xsl
new file mode 100644
index 0000000..1b827bb
--- /dev/null
+++ b/source/atom-to-html.xsl
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ &
+
+
+
+
+
+
+
+
+
+
diff --git a/source/backend.php b/source/backend.php
new file mode 100644
index 0000000..84abc97
--- /dev/null
+++ b/source/backend.php
@@ -0,0 +1,154 @@
+ array("code" => 6)));
+ return;
+ }
+ load_user_plugins( $_SESSION["uid"]);
+ }
+
+ $purge_intervals = array(
+ 0 => __("Use default"),
+ -1 => __("Never purge"),
+ 5 => __("1 week old"),
+ 14 => __("2 weeks old"),
+ 31 => __("1 month old"),
+ 60 => __("2 months old"),
+ 90 => __("3 months old"));
+
+ $update_intervals = array(
+ 0 => __("Default interval"),
+ -1 => __("Disable updates"),
+ 15 => __("Each 15 minutes"),
+ 30 => __("Each 30 minutes"),
+ 60 => __("Hourly"),
+ 240 => __("Each 4 hours"),
+ 720 => __("Each 12 hours"),
+ 1440 => __("Daily"),
+ 10080 => __("Weekly"));
+
+ $update_intervals_nodefault = array(
+ -1 => __("Disable updates"),
+ 15 => __("Each 15 minutes"),
+ 30 => __("Each 30 minutes"),
+ 60 => __("Hourly"),
+ 240 => __("Each 4 hours"),
+ 720 => __("Each 12 hours"),
+ 1440 => __("Daily"),
+ 10080 => __("Weekly"));
+
+ $access_level_names = array(
+ 0 => __("User"),
+ 5 => __("Power User"),
+ 10 => __("Administrator"));
+
+ #$error = sanity_check();
+
+ #if ($error['code'] != 0 && $op != "logout") {
+ # print json_encode(array("error" => $error));
+ # return;
+ #}
+
+ $op = str_replace("-", "_", $op);
+
+ $override = PluginHost::getInstance()->lookup_handler($op, $method);
+
+ if (class_exists($op) || $override) {
+
+ if ($override) {
+ $handler = $override;
+ } else {
+ $handler = new $op($_REQUEST);
+ }
+
+ if ($handler && implements_interface($handler, 'IHandler')) {
+ if (validate_csrf($csrf_token) || $handler->csrf_ignore($method)) {
+ if ($handler->before($method)) {
+ if ($method && method_exists($handler, $method)) {
+ $handler->$method();
+ } else {
+ if (method_exists($handler, "catchall")) {
+ $handler->catchall($method);
+ }
+ }
+ $handler->after();
+ return;
+ } else {
+ header("Content-Type: text/json");
+ print json_encode(array("error" => array("code" => 6)));
+ return;
+ }
+ } else {
+ header("Content-Type: text/json");
+ print json_encode(array("error" => array("code" => 6)));
+ return;
+ }
+ }
+ }
+
+ header("Content-Type: text/json");
+ print json_encode(array("error" => array("code" => 7)));
+
+?>
diff --git a/source/cache/.htaccess b/source/cache/.htaccess
new file mode 100755
index 0000000..93169e4
--- /dev/null
+++ b/source/cache/.htaccess
@@ -0,0 +1,2 @@
+Order deny,allow
+Deny from all
diff --git a/source/classes/.htaccess b/source/classes/.htaccess
new file mode 100644
index 0000000..93169e4
--- /dev/null
+++ b/source/classes/.htaccess
@@ -0,0 +1,2 @@
+Order deny,allow
+Deny from all
diff --git a/source/classes/api.php b/source/classes/api.php
new file mode 100644
index 0000000..bbbcbb5
--- /dev/null
+++ b/source/classes/api.php
@@ -0,0 +1,784 @@
+wrap(self::STATUS_ERR, array("error" => 'NOT_LOGGED_IN'));
+ return false;
+ }
+
+ if ($_SESSION["uid"] && $method != "logout" && !get_pref('ENABLE_API_ACCESS')) {
+ $this->wrap(self::STATUS_ERR, array("error" => 'API_DISABLED'));
+ return false;
+ }
+
+ $this->seq = (int) $_REQUEST['seq'];
+
+ return true;
+ }
+ return false;
+ }
+
+ function wrap($status, $reply) {
+ print json_encode(array("seq" => $this->seq,
+ "status" => $status,
+ "content" => $reply));
+ }
+
+ function getVersion() {
+ $rv = array("version" => VERSION);
+ $this->wrap(self::STATUS_OK, $rv);
+ }
+
+ function getApiLevel() {
+ $rv = array("level" => self::API_LEVEL);
+ $this->wrap(self::STATUS_OK, $rv);
+ }
+
+ function login() {
+ @session_destroy();
+ @session_start();
+
+ $login = $this->dbh->escape_string($_REQUEST["user"]);
+ $password = $_REQUEST["password"];
+ $password_base64 = base64_decode($_REQUEST["password"]);
+
+ if (SINGLE_USER_MODE) $login = "admin";
+
+ $result = $this->dbh->query("SELECT id FROM ttrss_users WHERE login = '$login'");
+
+ if ($this->dbh->num_rows($result) != 0) {
+ $uid = $this->dbh->fetch_result($result, 0, "id");
+ } else {
+ $uid = 0;
+ }
+
+ if (!$uid) {
+ $this->wrap(self::STATUS_ERR, array("error" => "LOGIN_ERROR"));
+ return;
+ }
+
+ if (get_pref("ENABLE_API_ACCESS", $uid)) {
+ if (authenticate_user($login, $password)) { // try login with normal password
+ $this->wrap(self::STATUS_OK, array("session_id" => session_id(),
+ "api_level" => self::API_LEVEL));
+ } else if (authenticate_user($login, $password_base64)) { // else try with base64_decoded password
+ $this->wrap(self::STATUS_OK, array("session_id" => session_id(),
+ "api_level" => self::API_LEVEL));
+ } else { // else we are not logged in
+ $this->wrap(self::STATUS_ERR, array("error" => "LOGIN_ERROR"));
+ }
+ } else {
+ $this->wrap(self::STATUS_ERR, array("error" => "API_DISABLED"));
+ }
+
+ }
+
+ function logout() {
+ logout_user();
+ $this->wrap(self::STATUS_OK, array("status" => "OK"));
+ }
+
+ function isLoggedIn() {
+ $this->wrap(self::STATUS_OK, array("status" => $_SESSION["uid"] != ''));
+ }
+
+ function getUnread() {
+ $feed_id = $this->dbh->escape_string($_REQUEST["feed_id"]);
+ $is_cat = $this->dbh->escape_string($_REQUEST["is_cat"]);
+
+ if ($feed_id) {
+ $this->wrap(self::STATUS_OK, array("unread" => getFeedUnread($feed_id, $is_cat)));
+ } else {
+ $this->wrap(self::STATUS_OK, array("unread" => getGlobalUnread()));
+ }
+ }
+
+ /* Method added for ttrss-reader for Android */
+ function getCounters() {
+ $this->wrap(self::STATUS_OK, getAllCounters());
+ }
+
+ function getFeeds() {
+ $cat_id = $this->dbh->escape_string($_REQUEST["cat_id"]);
+ $unread_only = sql_bool_to_bool($_REQUEST["unread_only"]);
+ $limit = (int) $this->dbh->escape_string($_REQUEST["limit"]);
+ $offset = (int) $this->dbh->escape_string($_REQUEST["offset"]);
+ $include_nested = sql_bool_to_bool($_REQUEST["include_nested"]);
+
+ $feeds = $this->api_get_feeds($cat_id, $unread_only, $limit, $offset, $include_nested);
+
+ $this->wrap(self::STATUS_OK, $feeds);
+ }
+
+ function getCategories() {
+ $unread_only = sql_bool_to_bool($_REQUEST["unread_only"]);
+ $enable_nested = sql_bool_to_bool($_REQUEST["enable_nested"]);
+ $include_empty = sql_bool_to_bool($_REQUEST['include_empty']);
+
+ // TODO do not return empty categories, return Uncategorized and standard virtual cats
+
+ if ($enable_nested)
+ $nested_qpart = "parent_cat IS NULL";
+ else
+ $nested_qpart = "true";
+
+ $result = $this->dbh->query("SELECT
+ id, title, order_id, (SELECT COUNT(id) FROM
+ ttrss_feeds WHERE
+ ttrss_feed_categories.id IS NOT NULL AND cat_id = ttrss_feed_categories.id) AS num_feeds,
+ (SELECT COUNT(id) FROM
+ ttrss_feed_categories AS c2 WHERE
+ c2.parent_cat = ttrss_feed_categories.id) AS num_cats
+ FROM ttrss_feed_categories
+ WHERE $nested_qpart AND owner_uid = " .
+ $_SESSION["uid"]);
+
+ $cats = array();
+
+ while ($line = $this->dbh->fetch_assoc($result)) {
+ if ($include_empty || $line["num_feeds"] > 0 || $line["num_cats"] > 0) {
+ $unread = getFeedUnread($line["id"], true);
+
+ if ($enable_nested)
+ $unread += getCategoryChildrenUnread($line["id"]);
+
+ if ($unread || !$unread_only) {
+ array_push($cats, array("id" => $line["id"],
+ "title" => $line["title"],
+ "unread" => $unread,
+ "order_id" => (int) $line["order_id"],
+ ));
+ }
+ }
+ }
+
+ foreach (array(-2,-1,0) as $cat_id) {
+ if ($include_empty || !$this->isCategoryEmpty($cat_id)) {
+ $unread = getFeedUnread($cat_id, true);
+
+ if ($unread || !$unread_only) {
+ array_push($cats, array("id" => $cat_id,
+ "title" => getCategoryTitle($cat_id),
+ "unread" => $unread));
+ }
+ }
+ }
+
+ $this->wrap(self::STATUS_OK, $cats);
+ }
+
+ function getHeadlines() {
+ $feed_id = $this->dbh->escape_string($_REQUEST["feed_id"]);
+ if ($feed_id != "") {
+
+ $limit = (int)$this->dbh->escape_string($_REQUEST["limit"]);
+
+ if (!$limit || $limit >= 200) $limit = 200;
+
+ $offset = (int)$this->dbh->escape_string($_REQUEST["skip"]);
+ $filter = $this->dbh->escape_string($_REQUEST["filter"]);
+ $is_cat = sql_bool_to_bool($_REQUEST["is_cat"]);
+ $show_excerpt = sql_bool_to_bool($_REQUEST["show_excerpt"]);
+ $show_content = sql_bool_to_bool($_REQUEST["show_content"]);
+ /* all_articles, unread, adaptive, marked, updated */
+ $view_mode = $this->dbh->escape_string($_REQUEST["view_mode"]);
+ $include_attachments = sql_bool_to_bool($_REQUEST["include_attachments"]);
+ $since_id = (int)$this->dbh->escape_string($_REQUEST["since_id"]);
+ $include_nested = sql_bool_to_bool($_REQUEST["include_nested"]);
+ $sanitize_content = !isset($_REQUEST["sanitize"]) ||
+ sql_bool_to_bool($_REQUEST["sanitize"]);
+
+ $override_order = false;
+ switch ($_REQUEST["order_by"]) {
+ case "date_reverse":
+ $override_order = "score DESC, date_entered, updated";
+ break;
+ case "feed_dates":
+ $override_order = "updated DESC";
+ break;
+ }
+
+ /* do not rely on params below */
+
+ $search = $this->dbh->escape_string($_REQUEST["search"]);
+ $search_mode = $this->dbh->escape_string($_REQUEST["search_mode"]);
+
+ $headlines = $this->api_get_headlines($feed_id, $limit, $offset,
+ $filter, $is_cat, $show_excerpt, $show_content, $view_mode, $override_order,
+ $include_attachments, $since_id, $search, $search_mode,
+ $include_nested, $sanitize_content);
+
+ $this->wrap(self::STATUS_OK, $headlines);
+ } else {
+ $this->wrap(self::STATUS_ERR, array("error" => 'INCORRECT_USAGE'));
+ }
+ }
+
+ function updateArticle() {
+ $article_ids = array_filter(explode(",", $this->dbh->escape_string($_REQUEST["article_ids"])), is_numeric);
+ $mode = (int) $this->dbh->escape_string($_REQUEST["mode"]);
+ $data = $this->dbh->escape_string($_REQUEST["data"]);
+ $field_raw = (int)$this->dbh->escape_string($_REQUEST["field"]);
+
+ $field = "";
+ $set_to = "";
+
+ switch ($field_raw) {
+ case 0:
+ $field = "marked";
+ $additional_fields = ",last_marked = NOW()";
+ break;
+ case 1:
+ $field = "published";
+ $additional_fields = ",last_published = NOW()";
+ break;
+ case 2:
+ $field = "unread";
+ $additional_fields = ",last_read = NOW()";
+ break;
+ case 3:
+ $field = "note";
+ };
+
+ switch ($mode) {
+ case 1:
+ $set_to = "true";
+ break;
+ case 0:
+ $set_to = "false";
+ break;
+ case 2:
+ $set_to = "NOT $field";
+ break;
+ }
+
+ if ($field == "note") $set_to = "'$data'";
+
+ if ($field && $set_to && count($article_ids) > 0) {
+
+ $article_ids = join(", ", $article_ids);
+
+ $result = $this->dbh->query("UPDATE ttrss_user_entries SET $field = $set_to $additional_fields WHERE ref_id IN ($article_ids) AND owner_uid = " . $_SESSION["uid"]);
+
+ $num_updated = $this->dbh->affected_rows($result);
+
+ if ($num_updated > 0 && $field == "unread") {
+ $result = $this->dbh->query("SELECT DISTINCT feed_id FROM ttrss_user_entries
+ WHERE ref_id IN ($article_ids)");
+
+ while ($line = $this->dbh->fetch_assoc($result)) {
+ ccache_update($line["feed_id"], $_SESSION["uid"]);
+ }
+ }
+
+ if ($num_updated > 0 && $field == "published") {
+ if (PUBSUBHUBBUB_HUB) {
+ $rss_link = get_self_url_prefix() .
+ "/public.php?op=rss&id=-2&key=" .
+ get_feed_access_key(-2, false);
+
+ $p = new Publisher(PUBSUBHUBBUB_HUB);
+ $pubsub_result = $p->publish_update($rss_link);
+ }
+ }
+
+ $this->wrap(self::STATUS_OK, array("status" => "OK",
+ "updated" => $num_updated));
+
+ } else {
+ $this->wrap(self::STATUS_ERR, array("error" => 'INCORRECT_USAGE'));
+ }
+
+ }
+
+ function getArticle() {
+
+ $article_id = join(",", array_filter(explode(",", $this->dbh->escape_string($_REQUEST["article_id"])), is_numeric));
+
+ if ($article_id) {
+
+ $query = "SELECT id,title,link,content,feed_id,comments,int_id,
+ marked,unread,published,score,
+ ".SUBSTRING_FOR_DATE."(updated,1,16) as updated,
+ author,(SELECT title FROM ttrss_feeds WHERE id = feed_id) AS feed_title
+ FROM ttrss_entries,ttrss_user_entries
+ WHERE id IN ($article_id) AND ref_id = id AND owner_uid = " .
+ $_SESSION["uid"] ;
+
+ $result = $this->dbh->query($query);
+
+ $articles = array();
+
+ if ($this->dbh->num_rows($result) != 0) {
+
+ while ($line = $this->dbh->fetch_assoc($result)) {
+
+ $attachments = get_article_enclosures($line['id']);
+
+ $article = array(
+ "id" => $line["id"],
+ "title" => $line["title"],
+ "link" => $line["link"],
+ "labels" => get_article_labels($line['id']),
+ "unread" => sql_bool_to_bool($line["unread"]),
+ "marked" => sql_bool_to_bool($line["marked"]),
+ "published" => sql_bool_to_bool($line["published"]),
+ "comments" => $line["comments"],
+ "author" => $line["author"],
+ "updated" => (int) strtotime($line["updated"]),
+ "content" => $line["content"],
+ "feed_id" => $line["feed_id"],
+ "attachments" => $attachments,
+ "score" => (int)$line["score"],
+ "feed_title" => $line["feed_title"]
+ );
+
+ foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_API) as $p) {
+ $article = $p->hook_render_article_api(array("article" => $article));
+ }
+
+
+ array_push($articles, $article);
+
+ }
+ }
+
+ $this->wrap(self::STATUS_OK, $articles);
+ } else {
+ $this->wrap(self::STATUS_ERR, array("error" => 'INCORRECT_USAGE'));
+ }
+ }
+
+ function getConfig() {
+ $config = array(
+ "icons_dir" => ICONS_DIR,
+ "icons_url" => ICONS_URL);
+
+ $config["daemon_is_running"] = file_is_locked("update_daemon.lock");
+
+ $result = $this->dbh->query("SELECT COUNT(*) AS cf FROM
+ ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"]);
+
+ $num_feeds = $this->dbh->fetch_result($result, 0, "cf");
+
+ $config["num_feeds"] = (int)$num_feeds;
+
+ $this->wrap(self::STATUS_OK, $config);
+ }
+
+ function updateFeed() {
+ require_once "include/rssfuncs.php";
+
+ $feed_id = (int) $this->dbh->escape_string($_REQUEST["feed_id"]);
+
+ update_rss_feed($feed_id, true);
+
+ $this->wrap(self::STATUS_OK, array("status" => "OK"));
+ }
+
+ function catchupFeed() {
+ $feed_id = $this->dbh->escape_string($_REQUEST["feed_id"]);
+ $is_cat = $this->dbh->escape_string($_REQUEST["is_cat"]);
+
+ catchup_feed($feed_id, $is_cat);
+
+ $this->wrap(self::STATUS_OK, array("status" => "OK"));
+ }
+
+ function getPref() {
+ $pref_name = $this->dbh->escape_string($_REQUEST["pref_name"]);
+
+ $this->wrap(self::STATUS_OK, array("value" => get_pref($pref_name)));
+ }
+
+ function getLabels() {
+ //$article_ids = array_filter(explode(",", $this->dbh->escape_string($_REQUEST["article_ids"])), is_numeric);
+
+ $article_id = (int)$_REQUEST['article_id'];
+
+ $rv = array();
+
+ $result = $this->dbh->query("SELECT id, caption, fg_color, bg_color
+ FROM ttrss_labels2
+ WHERE owner_uid = '".$_SESSION['uid']."' ORDER BY caption");
+
+ if ($article_id)
+ $article_labels = get_article_labels($article_id);
+ else
+ $article_labels = array();
+
+ while ($line = $this->dbh->fetch_assoc($result)) {
+
+ $checked = false;
+ foreach ($article_labels as $al) {
+ if ($al[0] == $line['id']) {
+ $checked = true;
+ break;
+ }
+ }
+
+ array_push($rv, array(
+ "id" => (int)label_to_feed_id($line['id']),
+ "caption" => $line['caption'],
+ "fg_color" => $line['fg_color'],
+ "bg_color" => $line['bg_color'],
+ "checked" => $checked));
+ }
+
+ $this->wrap(self::STATUS_OK, $rv);
+ }
+
+ function setArticleLabel() {
+
+ $article_ids = array_filter(explode(",", $this->dbh->escape_string($_REQUEST["article_ids"])), is_numeric);
+ $label_id = (int) $this->dbh->escape_string($_REQUEST['label_id']);
+ $assign = (bool) $this->dbh->escape_string($_REQUEST['assign']) == "true";
+
+ $label = $this->dbh->escape_string(label_find_caption(
+ $label_id, $_SESSION["uid"]));
+
+ $num_updated = 0;
+
+ if ($label) {
+
+ foreach ($article_ids as $id) {
+
+ if ($assign)
+ label_add_article($id, $label, $_SESSION["uid"]);
+ else
+ label_remove_article($id, $label, $_SESSION["uid"]);
+
+ ++$num_updated;
+
+ }
+ }
+
+ $this->wrap(self::STATUS_OK, array("status" => "OK",
+ "updated" => $num_updated));
+
+ }
+
+ function index($method) {
+ $plugin = PluginHost::getInstance()->get_api_method(strtolower($method));
+
+ if ($plugin && method_exists($plugin, $method)) {
+ $reply = $plugin->$method();
+
+ $this->wrap($reply[0], $reply[1]);
+
+ } else {
+ $this->wrap(self::STATUS_ERR, array("error" => 'UNKNOWN_METHOD', "method" => $method));
+ }
+ }
+
+ function shareToPublished() {
+ $title = $this->dbh->escape_string(strip_tags($_REQUEST["title"]));
+ $url = $this->dbh->escape_string(strip_tags($_REQUEST["url"]));
+ $content = $this->dbh->escape_string(strip_tags($_REQUEST["content"]));
+
+ if (Article::create_published_article($title, $url, $content, "", $_SESSION["uid"])) {
+ $this->wrap(self::STATUS_OK, array("status" => 'OK'));
+ } else {
+ $this->wrap(self::STATUS_ERR, array("error" => 'Publishing failed'));
+ }
+ }
+
+ static function api_get_feeds($cat_id, $unread_only, $limit, $offset, $include_nested = false) {
+
+ $feeds = array();
+
+ /* Labels */
+
+ if ($cat_id == -4 || $cat_id == -2) {
+ $counters = getLabelCounters(true);
+
+ foreach (array_values($counters) as $cv) {
+
+ $unread = $cv["counter"];
+
+ if ($unread || !$unread_only) {
+
+ $row = array(
+ "id" => $cv["id"],
+ "title" => $cv["description"],
+ "unread" => $cv["counter"],
+ "cat_id" => -2,
+ );
+
+ array_push($feeds, $row);
+ }
+ }
+ }
+
+ /* Virtual feeds */
+
+ if ($cat_id == -4 || $cat_id == -1) {
+ foreach (array(-1, -2, -3, -4, -6, 0) as $i) {
+ $unread = getFeedUnread($i);
+
+ if ($unread || !$unread_only) {
+ $title = getFeedTitle($i);
+
+ $row = array(
+ "id" => $i,
+ "title" => $title,
+ "unread" => $unread,
+ "cat_id" => -1,
+ );
+ array_push($feeds, $row);
+ }
+
+ }
+ }
+
+ /* Child cats */
+
+ if ($include_nested && $cat_id) {
+ $result = db_query("SELECT
+ id, title FROM ttrss_feed_categories
+ WHERE parent_cat = '$cat_id' AND owner_uid = " . $_SESSION["uid"] .
+ " ORDER BY id, title");
+
+ while ($line = db_fetch_assoc($result)) {
+ $unread = getFeedUnread($line["id"], true) +
+ getCategoryChildrenUnread($line["id"]);
+
+ if ($unread || !$unread_only) {
+ $row = array(
+ "id" => $line["id"],
+ "title" => $line["title"],
+ "unread" => $unread,
+ "is_cat" => true,
+ );
+ array_push($feeds, $row);
+ }
+ }
+ }
+
+ /* Real feeds */
+
+ if ($limit) {
+ $limit_qpart = "LIMIT $limit OFFSET $offset";
+ } else {
+ $limit_qpart = "";
+ }
+
+ if ($cat_id == -4 || $cat_id == -3) {
+ $result = db_query("SELECT
+ id, feed_url, cat_id, title, order_id, ".
+ SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
+ FROM ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"] .
+ " ORDER BY cat_id, title " . $limit_qpart);
+ } else {
+
+ if ($cat_id)
+ $cat_qpart = "cat_id = '$cat_id'";
+ else
+ $cat_qpart = "cat_id IS NULL";
+
+ $result = db_query("SELECT
+ id, feed_url, cat_id, title, order_id, ".
+ SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
+ FROM ttrss_feeds WHERE
+ $cat_qpart AND owner_uid = " . $_SESSION["uid"] .
+ " ORDER BY cat_id, title " . $limit_qpart);
+ }
+
+ while ($line = db_fetch_assoc($result)) {
+
+ $unread = getFeedUnread($line["id"]);
+
+ $has_icon = feed_has_icon($line['id']);
+
+ if ($unread || !$unread_only) {
+
+ $row = array(
+ "feed_url" => $line["feed_url"],
+ "title" => $line["title"],
+ "id" => (int)$line["id"],
+ "unread" => (int)$unread,
+ "has_icon" => $has_icon,
+ "cat_id" => (int)$line["cat_id"],
+ "last_updated" => (int) strtotime($line["last_updated"]),
+ "order_id" => (int) $line["order_id"],
+ );
+
+ array_push($feeds, $row);
+ }
+ }
+
+ return $feeds;
+ }
+
+ static function api_get_headlines($feed_id, $limit, $offset,
+ $filter, $is_cat, $show_excerpt, $show_content, $view_mode, $order,
+ $include_attachments, $since_id,
+ $search = "", $search_mode = "",
+ $include_nested = false, $sanitize_content = true) {
+
+ $qfh_ret = queryFeedHeadlines($feed_id, $limit,
+ $view_mode, $is_cat, $search, $search_mode,
+ $order, $offset, 0, false, $since_id, $include_nested);
+
+ $result = $qfh_ret[0];
+ $feed_title = $qfh_ret[1];
+
+ $headlines = array();
+
+ while ($line = db_fetch_assoc($result)) {
+ $line["content_preview"] = truncate_string(strip_tags($line["content_preview"]), 100);
+ foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) {
+ $line = $p->hook_query_headlines($line, 100, true);
+ }
+
+ $is_updated = ($line["last_read"] == "" &&
+ ($line["unread"] != "t" && $line["unread"] != "1"));
+
+ $tags = explode(",", $line["tag_cache"]);
+ $labels = json_decode($line["label_cache"], true);
+
+ //if (!$tags) $tags = get_article_tags($line["id"]);
+ //if (!$labels) $labels = get_article_labels($line["id"]);
+
+ $headline_row = array(
+ "id" => (int)$line["id"],
+ "unread" => sql_bool_to_bool($line["unread"]),
+ "marked" => sql_bool_to_bool($line["marked"]),
+ "published" => sql_bool_to_bool($line["published"]),
+ "updated" => (int) strtotime($line["updated"]),
+ "is_updated" => $is_updated,
+ "title" => $line["title"],
+ "link" => $line["link"],
+ "feed_id" => $line["feed_id"],
+ "tags" => $tags,
+ );
+
+ if ($include_attachments)
+ $headline_row['attachments'] = get_article_enclosures(
+ $line['id']);
+
+ if ($show_excerpt)
+ $headline_row["excerpt"] = $line["content_preview"];
+
+ if ($show_content) {
+
+ if ($sanitize_content) {
+ $headline_row["content"] = sanitize(
+ $line["content"],
+ sql_bool_to_bool($line['hide_images']),
+ false, $line["site_url"], false, $line["id"]);
+ } else {
+ $headline_row["content"] = $line["content"];
+ }
+ }
+
+ // unify label output to ease parsing
+ if ($labels["no-labels"] == 1) $labels = array();
+
+ $headline_row["labels"] = $labels;
+
+ $headline_row["feed_title"] = $line["feed_title"] ? $line["feed_title"] :
+ $feed_title;
+
+ $headline_row["comments_count"] = (int)$line["num_comments"];
+ $headline_row["comments_link"] = $line["comments"];
+
+ $headline_row["always_display_attachments"] = sql_bool_to_bool($line["always_display_enclosures"]);
+
+ $headline_row["author"] = $line["author"];
+
+ $headline_row["score"] = (int)$line["score"];
+
+ foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_API) as $p) {
+ $headline_row = $p->hook_render_article_api(array("headline" => $headline_row));
+ }
+
+ array_push($headlines, $headline_row);
+ }
+
+ return $headlines;
+ }
+
+ function unsubscribeFeed() {
+ $feed_id = (int) $this->dbh->escape_string($_REQUEST["feed_id"]);
+
+ $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE
+ id = '$feed_id' AND owner_uid = ".$_SESSION["uid"]);
+
+ if ($this->dbh->num_rows($result) != 0) {
+ Pref_Feeds::remove_feed($feed_id, $_SESSION["uid"]);
+ $this->wrap(self::STATUS_OK, array("status" => "OK"));
+ } else {
+ $this->wrap(self::STATUS_ERR, array("error" => "FEED_NOT_FOUND"));
+ }
+ }
+
+ function subscribeToFeed() {
+ $feed_url = $this->dbh->escape_string($_REQUEST["feed_url"]);
+ $category_id = (int) $this->dbh->escape_string($_REQUEST["category_id"]);
+ $login = $this->dbh->escape_string($_REQUEST["login"]);
+ $password = $this->dbh->escape_string($_REQUEST["password"]);
+
+ if ($feed_url) {
+ $rc = subscribe_to_feed($feed_url, $category_id, $login, $password);
+
+ $this->wrap(self::STATUS_OK, array("status" => $rc));
+ } else {
+ $this->wrap(self::STATUS_ERR, array("error" => 'INCORRECT_USAGE'));
+ }
+ }
+
+ function getFeedTree() {
+ $include_empty = sql_bool_to_bool($_REQUEST['include_empty']);
+
+ $pf = new Pref_Feeds($_REQUEST);
+
+ $_REQUEST['mode'] = 2;
+ $_REQUEST['force_show_empty'] = $include_empty;
+
+ if ($pf){
+ $data = $pf->makefeedtree();
+ $this->wrap(self::STATUS_OK, array("categories" => $data));
+ } else {
+ $this->wrap(self::STATUS_ERR, array("error" =>
+ 'UNABLE_TO_INSTANTIATE_OBJECT'));
+ }
+
+ }
+
+ // only works for labels or uncategorized for the time being
+ private function isCategoryEmpty($id) {
+
+ if ($id == -2) {
+ $result = $this->dbh->query("SELECT COUNT(*) AS count FROM ttrss_labels2
+ WHERE owner_uid = " . $_SESSION["uid"]);
+
+ return $this->dbh->fetch_result($result, 0, "count") == 0;
+
+ } else if ($id == 0) {
+ $result = $this->dbh->query("SELECT COUNT(*) AS count FROM ttrss_feeds
+ WHERE cat_id IS NULL AND owner_uid = " . $_SESSION["uid"]);
+
+ return $this->dbh->fetch_result($result, 0, "count") == 0;
+
+ }
+
+ return false;
+ }
+
+
+}
+
+?>
diff --git a/source/classes/article.php b/source/classes/article.php
new file mode 100644
index 0000000..398132d
--- /dev/null
+++ b/source/classes/article.php
@@ -0,0 +1,346 @@
+dbh->escape_string($_REQUEST['id']);
+
+ $result = $this->dbh->query("SELECT link FROM ttrss_entries, ttrss_user_entries
+ WHERE id = '$id' AND id = ref_id AND owner_uid = '".$_SESSION['uid']."'
+ LIMIT 1");
+
+ if ($this->dbh->num_rows($result) == 1) {
+ $article_url = $this->dbh->fetch_result($result, 0, 'link');
+ $article_url = str_replace("\n", "", $article_url);
+
+ header("Location: $article_url");
+ return;
+
+ } else {
+ print_error(__("Article not found."));
+ }
+ }
+
+ function view() {
+ $id = $this->dbh->escape_string($_REQUEST["id"]);
+ $cids = explode(",", $this->dbh->escape_string($_REQUEST["cids"]));
+ $mode = $this->dbh->escape_string($_REQUEST["mode"]);
+ $omode = $this->dbh->escape_string($_REQUEST["omode"]);
+
+ // in prefetch mode we only output requested cids, main article
+ // just gets marked as read (it already exists in client cache)
+
+ $articles = array();
+
+ if ($mode == "") {
+ array_push($articles, format_article($id, false));
+ } else if ($mode == "zoom") {
+ array_push($articles, format_article($id, true, true));
+ } else if ($mode == "raw") {
+ if ($_REQUEST['html']) {
+ header("Content-Type: text/html");
+ print ' ';
+ }
+
+ $article = format_article($id, false);
+ print $article['content'];
+ return;
+ }
+
+ $this->catchupArticleById($id, 0);
+
+ if (!$_SESSION["bw_limit"]) {
+ foreach ($cids as $cid) {
+ if ($cid) {
+ array_push($articles, format_article($cid, false, false));
+ }
+ }
+ }
+
+ print json_encode($articles);
+ }
+
+ private function catchupArticleById($id, $cmode) {
+
+ if ($cmode == 0) {
+ $this->dbh->query("UPDATE ttrss_user_entries SET
+ unread = false,last_read = NOW()
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ } else if ($cmode == 1) {
+ $this->dbh->query("UPDATE ttrss_user_entries SET
+ unread = true
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ } else {
+ $this->dbh->query("UPDATE ttrss_user_entries SET
+ unread = NOT unread,last_read = NOW()
+ WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
+ }
+
+ $feed_id = getArticleFeed($id);
+ ccache_update($feed_id, $_SESSION["uid"]);
+ }
+
+ static function create_published_article($title, $url, $content, $labels_str,
+ $owner_uid) {
+
+ $guid = 'SHA1:' . sha1("ttshared:" . $url . $owner_uid); // include owner_uid to prevent global GUID clash
+ $content_hash = sha1($content);
+
+ if ($labels_str != "") {
+ $labels = explode(",", $labels_str);
+ } else {
+ $labels = array();
+ }
+
+ $rc = false;
+
+ if (!$title) $title = $url;
+ if (!$title && !$url) return false;
+
+ if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) return false;
+
+ db_query("BEGIN");
+
+ // only check for our user data here, others might have shared this with different content etc
+ $result = db_query("SELECT id FROM ttrss_entries, ttrss_user_entries WHERE
+ link = '$url' AND ref_id = id AND owner_uid = '$owner_uid' LIMIT 1");
+
+ if (db_num_rows($result) != 0) {
+ $ref_id = db_fetch_result($result, 0, "id");
+
+ $result = db_query("SELECT int_id FROM ttrss_user_entries WHERE
+ ref_id = '$ref_id' AND owner_uid = '$owner_uid' LIMIT 1");
+
+ if (db_num_rows($result) != 0) {
+ $int_id = db_fetch_result($result, 0, "int_id");
+
+ db_query("UPDATE ttrss_entries SET
+ content = '$content', content_hash = '$content_hash' WHERE id = '$ref_id'");
+
+ db_query("UPDATE ttrss_user_entries SET published = true,
+ last_published = NOW() WHERE
+ int_id = '$int_id' AND owner_uid = '$owner_uid'");
+ } else {
+
+ db_query("INSERT INTO ttrss_user_entries
+ (ref_id, uuid, feed_id, orig_feed_id, owner_uid, published, tag_cache, label_cache,
+ last_read, note, unread, last_published)
+ VALUES
+ ('$ref_id', '', NULL, NULL, $owner_uid, true, '', '', NOW(), '', false, NOW())");
+ }
+
+ if (count($labels) != 0) {
+ foreach ($labels as $label) {
+ label_add_article($ref_id, trim($label), $owner_uid);
+ }
+ }
+
+ $rc = true;
+
+ } else {
+ $result = db_query("INSERT INTO ttrss_entries
+ (title, guid, link, updated, content, content_hash, date_entered, date_updated)
+ VALUES
+ ('$title', '$guid', '$url', NOW(), '$content', '$content_hash', NOW(), NOW())");
+
+ $result = db_query("SELECT id FROM ttrss_entries WHERE guid = '$guid'");
+
+ if (db_num_rows($result) != 0) {
+ $ref_id = db_fetch_result($result, 0, "id");
+
+ db_query("INSERT INTO ttrss_user_entries
+ (ref_id, uuid, feed_id, orig_feed_id, owner_uid, published, tag_cache, label_cache,
+ last_read, note, unread, last_published)
+ VALUES
+ ('$ref_id', '', NULL, NULL, $owner_uid, true, '', '', NOW(), '', false, NOW())");
+
+ if (count($labels) != 0) {
+ foreach ($labels as $label) {
+ label_add_article($ref_id, trim($label), $owner_uid);
+ }
+ }
+
+ $rc = true;
+ }
+ }
+
+ db_query("COMMIT");
+
+ return $rc;
+ }
+
+ function editArticleTags() {
+
+ print __("Tags for this article (separated by commas):")." ";
+
+ $param = $this->dbh->escape_string($_REQUEST['param']);
+
+ $tags = get_article_tags($this->dbh->escape_string($param));
+
+ $tags_str = join(", ", $tags);
+
+ print " ";
+ print " ";
+ print " ";
+
+ print "";
+
+ print "
+
";
+
+ print "
";
+
+ print "";
+
+ print "".__('Save')." ";
+ print "".__('Cancel')." ";
+ print "
";
+
+ }
+
+ function setScore() {
+ $ids = $this->dbh->escape_string($_REQUEST['id']);
+ $score = (int)$this->dbh->escape_string($_REQUEST['score']);
+
+ $this->dbh->query("UPDATE ttrss_user_entries SET
+ score = '$score' WHERE ref_id IN ($ids) AND owner_uid = " . $_SESSION["uid"]);
+
+ print json_encode(array("id" => $ids,
+ "score_pic" => get_score_pic($score)));
+ }
+
+
+ function setArticleTags() {
+
+ $id = $this->dbh->escape_string($_REQUEST["id"]);
+
+ $tags_str = $this->dbh->escape_string($_REQUEST["tags_str"]);
+ $tags = array_unique(trim_array(explode(",", $tags_str)));
+
+ $this->dbh->query("BEGIN");
+
+ $result = $this->dbh->query("SELECT int_id FROM ttrss_user_entries WHERE
+ ref_id = '$id' AND owner_uid = '".$_SESSION["uid"]."' LIMIT 1");
+
+ if ($this->dbh->num_rows($result) == 1) {
+
+ $tags_to_cache = array();
+
+ $int_id = $this->dbh->fetch_result($result, 0, "int_id");
+
+ $this->dbh->query("DELETE FROM ttrss_tags WHERE
+ post_int_id = $int_id AND owner_uid = '".$_SESSION["uid"]."'");
+
+ foreach ($tags as $tag) {
+ $tag = sanitize_tag($tag);
+
+ if (!tag_is_valid($tag)) {
+ continue;
+ }
+
+ if (preg_match("/^[0-9]*$/", $tag)) {
+ continue;
+ }
+
+ // print "";
+
+ if ($tag != '') {
+ $this->dbh->query("INSERT INTO ttrss_tags
+ (post_int_id, owner_uid, tag_name) VALUES ('$int_id', '".$_SESSION["uid"]."', '$tag')");
+ }
+
+ array_push($tags_to_cache, $tag);
+ }
+
+ /* update tag cache */
+
+ sort($tags_to_cache);
+ $tags_str = join(",", $tags_to_cache);
+
+ $this->dbh->query("UPDATE ttrss_user_entries
+ SET tag_cache = '$tags_str' WHERE ref_id = '$id'
+ AND owner_uid = " . $_SESSION["uid"]);
+ }
+
+ $this->dbh->query("COMMIT");
+
+ $tags = get_article_tags($id);
+ $tags_str = format_tags_string($tags, $id);
+ $tags_str_full = join(", ", $tags);
+
+ if (!$tags_str_full) $tags_str_full = __("no tags");
+
+ print json_encode(array("id" => (int)$id,
+ "content" => $tags_str, "content_full" => $tags_str_full));
+ }
+
+
+ function completeTags() {
+ $search = $this->dbh->escape_string($_REQUEST["search"]);
+
+ $result = $this->dbh->query("SELECT DISTINCT tag_name FROM ttrss_tags
+ WHERE owner_uid = '".$_SESSION["uid"]."' AND
+ tag_name LIKE '$search%' ORDER BY tag_name
+ LIMIT 10");
+
+ print "";
+ while ($line = $this->dbh->fetch_assoc($result)) {
+ print "" . $line["tag_name"] . " ";
+ }
+ print " ";
+ }
+
+ function assigntolabel() {
+ return $this->labelops(true);
+ }
+
+ function removefromlabel() {
+ return $this->labelops(false);
+ }
+
+ private function labelops($assign) {
+ $reply = array();
+
+ $ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"]));
+ $label_id = $this->dbh->escape_string($_REQUEST["lid"]);
+
+ $label = $this->dbh->escape_string(label_find_caption($label_id,
+ $_SESSION["uid"]));
+
+ $reply["info-for-headlines"] = array();
+
+ if ($label) {
+
+ foreach ($ids as $id) {
+
+ if ($assign)
+ label_add_article($id, $label, $_SESSION["uid"]);
+ else
+ label_remove_article($id, $label, $_SESSION["uid"]);
+
+ $labels = get_article_labels($id, $_SESSION["uid"]);
+
+ array_push($reply["info-for-headlines"],
+ array("id" => $id, "labels" => format_article_labels($labels, $id)));
+
+ }
+ }
+
+ $reply["message"] = "UPDATE_COUNTERS";
+
+ print json_encode($reply);
+ }
+
+
+
+}
diff --git a/source/classes/auth/base.php b/source/classes/auth/base.php
new file mode 100644
index 0000000..69acd09
--- /dev/null
+++ b/source/classes/auth/base.php
@@ -0,0 +1,61 @@
+dbh = Db::get();
+ }
+
+ function check_password($owner_uid, $password) {
+ return false;
+ }
+
+ function authenticate($login, $password) {
+ return false;
+ }
+
+ // Auto-creates specified user if allowed by system configuration
+ // Can be used instead of find_user_by_login() by external auth modules
+ function auto_create_user($login, $password = false) {
+ if ($login && defined('AUTH_AUTO_CREATE') && AUTH_AUTO_CREATE) {
+ $user_id = $this->find_user_by_login($login);
+
+ if (!$password) $password = make_password();
+
+ if (!$user_id) {
+ $login = $this->dbh->escape_string($login);
+ $salt = substr(bin2hex(get_random_bytes(125)), 0, 250);
+ $pwd_hash = encrypt_password($password, $salt, true);
+
+ $query = "INSERT INTO ttrss_users
+ (login,access_level,last_login,created,pwd_hash,salt)
+ VALUES ('$login', 0, null, NOW(), '$pwd_hash','$salt')";
+
+ $this->dbh->query($query);
+
+ return $this->find_user_by_login($login);
+
+ } else {
+ return $user_id;
+ }
+ }
+
+ return $this->find_user_by_login($login);
+ }
+
+ function find_user_by_login($login) {
+ $login = $this->dbh->escape_string($login);
+
+ $result = $this->dbh->query("SELECT id FROM ttrss_users WHERE
+ login = '$login'");
+
+ if ($this->dbh->num_rows($result) > 0) {
+ return $this->dbh->fetch_result($result, 0, "id");
+ } else {
+ return false;
+ }
+
+ }
+}
+
+?>
diff --git a/source/classes/backend.php b/source/classes/backend.php
new file mode 100644
index 0000000..7737df0
--- /dev/null
+++ b/source/classes/backend.php
@@ -0,0 +1,119 @@
+";
+ }
+
+ function digestTest() {
+ header("Content-type: text/html");
+
+ require_once "digest.php";
+
+ $rv = prepare_headlines_digest($_SESSION['uid'], 1, 1000);
+
+ $rv[3] = "" . $rv[3] . " ";
+
+ print_r($rv);
+ }
+
+ private function display_main_help() {
+ $info = get_hotkeys_info();
+ $imap = get_hotkeys_map();
+ $omap = array();
+
+ foreach ($imap[1] as $sequence => $action) {
+ if (!isset($omap[$action])) $omap[$action] = array();
+
+ array_push($omap[$action], $sequence);
+ }
+
+ print_notice("".
+ __("Other interface tips are available in the Tiny Tiny RSS wiki.") .
+ " ");
+
+ print "";
+
+ print "" . __("Keyboard Shortcuts") . " ";
+
+ foreach ($info as $section => $hotkeys) {
+
+ print "" . $section . " ";
+
+ foreach ($hotkeys as $action => $description) {
+
+ if (is_array($omap[$action])) {
+ foreach ($omap[$action] as $sequence) {
+ if (strpos($sequence, "|") !== FALSE) {
+ $sequence = substr($sequence,
+ strpos($sequence, "|")+1,
+ strlen($sequence));
+ } else {
+ $keys = explode(" ", $sequence);
+
+ for ($i = 0; $i < count($keys); $i++) {
+ if (strlen($keys[$i]) > 1) {
+ $tmp = '';
+ foreach (str_split($keys[$i]) as $c) {
+ switch ($c) {
+ case '*':
+ $tmp .= __('Shift') . '+';
+ break;
+ case '^':
+ $tmp .= __('Ctrl') . '+';
+ break;
+ default:
+ $tmp .= $c;
+ }
+ }
+ $keys[$i] = $tmp;
+ }
+ }
+ $sequence = join(" ", $keys);
+ }
+
+ print "";
+ print "$sequence ";
+ print $description;
+ print " ";
+ }
+ }
+ }
+ }
+
+ print " ";
+ }
+
+ function help() {
+ $topic = basename($_REQUEST["topic"]);
+
+ switch ($topic) {
+ case "main":
+ $this->display_main_help();
+ break;
+ case "prefs":
+ //$this->display_prefs_help();
+ break;
+ default:
+ print "".__("Help topic not found.")."
";
+ }
+
+ print "";
+ print "".
+ __('Close this window')." ";
+ print "
";
+
+ /* if (file_exists("help/$topic.php")) {
+ include("help/$topic.php");
+ } else {
+ print "".__("Help topic not found.")."
";
+ } */
+ /* print "
+ ".
+ __('Close this window')."
"; */
+
+ }
+}
+?>
diff --git a/source/classes/db.php b/source/classes/db.php
new file mode 100644
index 0000000..695ca6e
--- /dev/null
+++ b/source/classes/db.php
@@ -0,0 +1,98 @@
+adapter = new Db_PDO();
+ } else {
+ switch (DB_TYPE) {
+ case "mysql":
+ if (function_exists("mysqli_connect")) {
+ $this->adapter = new Db_Mysqli();
+ } else {
+ $this->adapter = new Db_Mysql();
+ }
+ break;
+ case "pgsql":
+ $this->adapter = new Db_Pgsql();
+ break;
+ default:
+ die("Unknown DB_TYPE: " . DB_TYPE);
+ }
+ }
+
+ if (!$this->adapter) die("Error initializing database adapter for " . DB_TYPE);
+
+ $this->link = $this->adapter->connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, defined('DB_PORT') ? DB_PORT : "");
+
+ if (!$this->link) {
+ die("Error connecting through adapter: " . $this->adapter->last_error());
+ }
+
+ error_reporting($er);
+ }
+
+ private function __clone() {
+ //
+ }
+
+ public static function get() {
+ if (self::$instance == null)
+ self::$instance = new self();
+
+ return self::$instance;
+ }
+
+ static function quote($str){
+ return("'$str'");
+ }
+
+ function reconnect() {
+ $this->link = $this->adapter->connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, defined('DB_PORT') ? DB_PORT : "");
+ }
+
+ function connect($host, $user, $pass, $db, $port) {
+ //return $this->adapter->connect($host, $user, $pass, $db, $port);
+ return ;
+ }
+
+ function escape_string($s, $strip_tags = true) {
+ return $this->adapter->escape_string($s, $strip_tags);
+ }
+
+ function query($query, $die_on_error = true) {
+ return $this->adapter->query($query, $die_on_error);
+ }
+
+ function fetch_assoc($result) {
+ return $this->adapter->fetch_assoc($result);
+ }
+
+ function num_rows($result) {
+ return $this->adapter->num_rows($result);
+ }
+
+ function fetch_result($result, $row, $param) {
+ return $this->adapter->fetch_result($result, $row, $param);
+ }
+
+ function close() {
+ return $this->adapter->close();
+ }
+
+ function affected_rows($result) {
+ return $this->adapter->affected_rows($result);
+ }
+
+ function last_error() {
+ return $this->adapter->last_error();
+ }
+
+}
+?>
diff --git a/source/classes/db/mysql.php b/source/classes/db/mysql.php
new file mode 100644
index 0000000..d4b45b9
--- /dev/null
+++ b/source/classes/db/mysql.php
@@ -0,0 +1,76 @@
+link = mysql_connect($host, $user, $pass);
+
+ if ($this->link) {
+ $result = mysql_select_db($db, $this->link);
+ if (!$result) {
+ die("Can't select DB: " . mysql_error($this->link));
+ }
+
+ $this->init();
+
+ return $this->link;
+ } else {
+ die("Unable to connect to database (as $user to $host, database $db): " . mysql_error());
+ }
+ }
+
+ function escape_string($s, $strip_tags = true) {
+ if ($strip_tags) $s = strip_tags($s);
+
+ return mysql_real_escape_string($s, $this->link);
+ }
+
+ function query($query, $die_on_error = true) {
+ $result = @mysql_query($query, $this->link);
+ if (!$result) {
+ $error = @mysql_error($this->link);
+
+ @mysql_query("ROLLBACK", $this->link);
+ user_error("Query $query failed: " . ($this->link ? $error : "No connection"),
+ $die_on_error ? E_USER_ERROR : E_USER_WARNING);
+ }
+ return $result;
+ }
+
+ function fetch_assoc($result) {
+ return mysql_fetch_assoc($result);
+ }
+
+
+ function num_rows($result) {
+ return mysql_num_rows($result);
+ }
+
+ function fetch_result($result, $row, $param) {
+ return mysql_result($result, $row, $param);
+ }
+
+ function close() {
+ return mysql_close($this->link);
+ }
+
+ function affected_rows($result) {
+ return mysql_affected_rows($this->link);
+ }
+
+ function last_error() {
+ return mysql_error();
+ }
+
+ function init() {
+ $this->query("SET time_zone = '+0:0'");
+
+ if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) {
+ $this->query("SET NAMES " . MYSQL_CHARSET);
+ }
+
+ return true;
+ }
+
+}
+?>
diff --git a/source/classes/db/mysqli.php b/source/classes/db/mysqli.php
new file mode 100644
index 0000000..c685b75
--- /dev/null
+++ b/source/classes/db/mysqli.php
@@ -0,0 +1,80 @@
+link = mysqli_connect($host, $user, $pass, $db, $port);
+ else
+ $this->link = mysqli_connect($host, $user, $pass, $db);
+
+ if ($this->link) {
+ $this->init();
+
+ return $this->link;
+ } else {
+ die("Unable to connect to database (as $user to $host, database $db): " . mysqli_connect_error());
+ }
+ }
+
+ function escape_string($s, $strip_tags = true) {
+ if ($strip_tags) $s = strip_tags($s);
+
+ return mysqli_real_escape_string($this->link, $s);
+ }
+
+ function query($query, $die_on_error = true) {
+ $result = @mysqli_query($this->link, $query);
+ if (!$result) {
+ $error = @mysqli_error($this->link);
+
+ @mysqli_query($this->link, "ROLLBACK");
+ user_error("Query $query failed: " . ($this->link ? $error : "No connection"),
+ $die_on_error ? E_USER_ERROR : E_USER_WARNING);
+ }
+
+ return $result;
+ }
+
+ function fetch_assoc($result) {
+ return mysqli_fetch_assoc($result);
+ }
+
+
+ function num_rows($result) {
+ return mysqli_num_rows($result);
+ }
+
+ function fetch_result($result, $row, $param) {
+ if (mysqli_data_seek($result, $row)) {
+ $line = mysqli_fetch_assoc($result);
+ return $line[$param];
+ } else {
+ return false;
+ }
+ }
+
+ function close() {
+ return mysqli_close($this->link);
+ }
+
+ function affected_rows($result) {
+ return mysqli_affected_rows($this->link);
+ }
+
+ function last_error() {
+ return mysqli_error();
+ }
+
+ function init() {
+ $this->query("SET time_zone = '+0:0'");
+
+ if (defined('MYSQL_CHARSET') && MYSQL_CHARSET) {
+ $this->query("SET NAMES " . MYSQL_CHARSET);
+ }
+
+ return true;
+ }
+
+}
+?>
diff --git a/source/classes/db/pdo.php b/source/classes/db/pdo.php
new file mode 100644
index 0000000..126f515
--- /dev/null
+++ b/source/classes/db/pdo.php
@@ -0,0 +1,100 @@
+pdo = new PDO($connstr, $user, $pass);
+ $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+ $this->init();
+ } catch (PDOException $e) {
+ die($e->getMessage());
+ }
+
+ return $this->pdo;
+ }
+
+ function escape_string($s, $strip_tags = true) {
+ if ($strip_tags) $s = strip_tags($s);
+
+ $qs = $this->pdo->quote($s);
+
+ return mb_substr($qs, 1, mb_strlen($qs)-2);
+ }
+
+ function query($query, $die_on_error = true) {
+ try {
+ return new Db_Stmt($this->pdo->query($query));
+ } catch (PDOException $e) {
+ user_error($e->getMessage(), $die_on_error ? E_USER_ERROR : E_USER_WARNING);
+ }
+ }
+
+ function fetch_assoc($result) {
+ try {
+ if ($result) {
+ return $result->fetch();
+ } else {
+ return null;
+ }
+ } catch (PDOException $e) {
+ user_error($e->getMessage(), E_USER_WARNING);
+ }
+ }
+
+ function num_rows($result) {
+ try {
+ if ($result) {
+ return $result->rowCount();
+ } else {
+ return false;
+ }
+ } catch (PDOException $e) {
+ user_error($e->getMessage(), E_USER_WARNING);
+ }
+ }
+
+ function fetch_result($result, $row, $param) {
+ return $result->fetch_result($row, $param);
+ }
+
+ function close() {
+ $this->pdo = null;
+ }
+
+ function affected_rows($result) {
+ try {
+ if ($result) {
+ return $result->rowCount();
+ } else {
+ return null;
+ }
+ } catch (PDOException $e) {
+ user_error($e->getMessage(), E_USER_WARNING);
+ }
+ }
+
+ function last_error() {
+ return join(" ", $this->pdo->errorInfo());
+ }
+
+ function init() {
+ switch (DB_TYPE) {
+ case "pgsql":
+ $this->query("set client_encoding = 'UTF-8'");
+ $this->query("set datestyle = 'ISO, european'");
+ $this->query("set TIME ZONE 0");
+ case "mysql":
+ $this->query("SET time_zone = '+0:0'");
+ return;
+ }
+
+ return true;
+ }
+
+}
+?>
diff --git a/source/classes/db/pgsql.php b/source/classes/db/pgsql.php
new file mode 100644
index 0000000..ba37f83
--- /dev/null
+++ b/source/classes/db/pgsql.php
@@ -0,0 +1,85 @@
+ 0) {
+ $string = "$string port=" . $port;
+ }
+
+ $this->link = pg_connect($string);
+
+ if (!$this->link) {
+ die("Unable to connect to database (as $user to $host, database $db):" . pg_last_error());
+ }
+
+ $this->init();
+
+ return $this->link;
+ }
+
+ function escape_string($s, $strip_tags = true) {
+ if ($strip_tags) $s = strip_tags($s);
+
+ return pg_escape_string($s);
+ }
+
+ function query($query, $die_on_error = true) {
+ $result = @pg_query($this->link, $query);
+
+ if (!$result) {
+ $error = @pg_last_error($this->link);
+
+ @pg_query($this->link, "ROLLBACK");
+ $query = htmlspecialchars($query); // just in case
+ user_error("Query $query failed: " . ($this->link ? $error : "No connection"),
+ $die_on_error ? E_USER_ERROR : E_USER_WARNING);
+ }
+ return $result;
+ }
+
+ function fetch_assoc($result) {
+ return pg_fetch_assoc($result);
+ }
+
+
+ function num_rows($result) {
+ return pg_num_rows($result);
+ }
+
+ function fetch_result($result, $row, $param) {
+ return pg_fetch_result($result, $row, $param);
+ }
+
+ function close() {
+ return pg_close($this->link);
+ }
+
+ function affected_rows($result) {
+ return pg_affected_rows($result);
+ }
+
+ function last_error() {
+ return pg_last_error($this->link);
+ }
+
+ function init() {
+ $this->query("set client_encoding = 'UTF-8'");
+ pg_set_client_encoding("UNICODE");
+ $this->query("set datestyle = 'ISO, european'");
+ $this->query("set TIME ZONE 0");
+
+ return true;
+ }
+}
+?>
diff --git a/source/classes/db/prefs.php b/source/classes/db/prefs.php
new file mode 100644
index 0000000..3e92bb8
--- /dev/null
+++ b/source/classes/db/prefs.php
@@ -0,0 +1,190 @@
+dbh = Db::get();
+ $this->cache = array();
+
+ if ($_SESSION["uid"]) $this->cache();
+ }
+
+ private function __clone() {
+ //
+ }
+
+ public static function get() {
+ if (self::$instance == null)
+ self::$instance = new self();
+
+ return self::$instance;
+ }
+
+ function cache() {
+ $profile = false;
+
+ $user_id = $_SESSION["uid"];
+ @$profile = $_SESSION["profile"];
+
+ if ($profile) {
+ $profile_qpart = "profile = '$profile' AND";
+ } else {
+ $profile_qpart = "profile IS NULL AND";
+ }
+
+ if (get_schema_version() < 63) $profile_qpart = "";
+
+ $result = db_query("SELECT
+ value,ttrss_prefs_types.type_name as type_name,ttrss_prefs.pref_name AS pref_name
+ FROM
+ ttrss_user_prefs,ttrss_prefs,ttrss_prefs_types
+ WHERE
+ $profile_qpart
+ ttrss_prefs.pref_name NOT LIKE '_MOBILE%' AND
+ ttrss_prefs_types.id = type_id AND
+ owner_uid = '$user_id' AND
+ ttrss_user_prefs.pref_name = ttrss_prefs.pref_name");
+
+ while ($line = db_fetch_assoc($result)) {
+ if ($user_id == $_SESSION["uid"]) {
+ $pref_name = $line["pref_name"];
+
+ $this->cache[$pref_name]["type"] = $line["type_name"];
+ $this->cache[$pref_name]["value"] = $line["value"];
+ }
+ }
+ }
+
+ function read($pref_name, $user_id = false, $die_on_error = false) {
+
+ $pref_name = db_escape_string($pref_name);
+ $profile = false;
+
+ if (!$user_id) {
+ $user_id = $_SESSION["uid"];
+ @$profile = $_SESSION["profile"];
+ } else {
+ $user_id = sprintf("%d", $user_id);
+ }
+
+ if (isset($this->cache[$pref_name])) {
+ $tuple = $this->cache[$pref_name];
+ return $this->convert($tuple["value"], $tuple["type"]);
+ }
+
+ if ($profile) {
+ $profile_qpart = "profile = '$profile' AND";
+ } else {
+ $profile_qpart = "profile IS NULL AND";
+ }
+
+ if (get_schema_version() < 63) $profile_qpart = "";
+
+ $result = db_query("SELECT
+ value,ttrss_prefs_types.type_name as type_name
+ FROM
+ ttrss_user_prefs,ttrss_prefs,ttrss_prefs_types
+ WHERE
+ $profile_qpart
+ ttrss_user_prefs.pref_name = '$pref_name' AND
+ ttrss_prefs_types.id = type_id AND
+ owner_uid = '$user_id' AND
+ ttrss_user_prefs.pref_name = ttrss_prefs.pref_name");
+
+ if (db_num_rows($result) > 0) {
+ $value = db_fetch_result($result, 0, "value");
+ $type_name = db_fetch_result($result, 0, "type_name");
+
+ if ($user_id == $_SESSION["uid"]) {
+ $this->cache[$pref_name]["type"] = $type_name;
+ $this->cache[$pref_name]["value"] = $value;
+ }
+
+ return $this->convert($value, $type_name);
+
+ } else {
+ user_error("Fatal error, unknown preferences key: $pref_name (owner: $user_id)", $die_on_error ? E_USER_ERROR : E_USER_WARNING);
+ return null;
+ }
+ }
+
+ function convert($value, $type_name) {
+ if ($type_name == "bool") {
+ return $value == "true";
+ } else if ($type_name == "integer") {
+ return (int)$value;
+ } else {
+ return $value;
+ }
+ }
+
+ function write($pref_name, $value, $user_id = false, $strip_tags = true) {
+ $pref_name = db_escape_string($pref_name);
+ $value = db_escape_string($value, $strip_tags);
+
+ if (!$user_id) {
+ $user_id = $_SESSION["uid"];
+ @$profile = $_SESSION["profile"];
+ } else {
+ $user_id = sprintf("%d", $user_id);
+ $prefs_cache = false;
+ }
+
+ if ($profile) {
+ $profile_qpart = "AND profile = '$profile'";
+ } else {
+ $profile_qpart = "AND profile IS NULL";
+ }
+
+ if (get_schema_version() < 63) $profile_qpart = "";
+
+ $type_name = "";
+ $current_value = "";
+
+ if (isset($this->cache[$pref_name])) {
+ $type_name = $this->cache[$pref_name]["type"];
+ $current_value = $this->cache[$pref_name]["value"];
+ }
+
+ if (!$type_name) {
+ $result = db_query("SELECT type_name
+ FROM ttrss_prefs,ttrss_prefs_types
+ WHERE pref_name = '$pref_name' AND type_id = ttrss_prefs_types.id");
+
+ if (db_num_rows($result) > 0)
+ $type_name = db_fetch_result($result, 0, "type_name");
+ } else if ($current_value == $value) {
+ return;
+ }
+
+ if ($type_name) {
+ if ($type_name == "bool") {
+ if ($value == "1" || $value == "true") {
+ $value = "true";
+ } else {
+ $value = "false";
+ }
+ } else if ($type_name == "integer") {
+ $value = sprintf("%d", $value);
+ }
+
+ if ($pref_name == 'USER_TIMEZONE' && $value == '') {
+ $value = 'UTC';
+ }
+
+ db_query("UPDATE ttrss_user_prefs SET
+ value = '$value' WHERE pref_name = '$pref_name'
+ $profile_qpart
+ AND owner_uid = " . $_SESSION["uid"]);
+
+ if ($user_id == $_SESSION["uid"]) {
+ $this->cache[$pref_name]["type"] = $type_name;
+ $this->cache[$pref_name]["value"] = $value;
+ }
+ }
+ }
+
+}
+?>
diff --git a/source/classes/db/stmt.php b/source/classes/db/stmt.php
new file mode 100644
index 0000000..4d3596e
--- /dev/null
+++ b/source/classes/db/stmt.php
@@ -0,0 +1,32 @@
+stmt = $stmt;
+ $this->cache = false;
+ }
+
+ function fetch_result($row, $param) {
+ if (!$this->cache) {
+ $this->cache = $this->stmt->fetchAll();
+ }
+
+ if (isset($this->cache[$row])) {
+ return $this->cache[$row][$param];
+ } else {
+ user_error("Unable to jump to row $row", E_USER_WARNING);
+ return false;
+ }
+ }
+
+ function rowCount() {
+ return $this->stmt->rowCount();
+ }
+
+ function fetch() {
+ return $this->stmt->fetch();
+ }
+}
+?>
diff --git a/source/classes/dbupdater.php b/source/classes/dbupdater.php
new file mode 100644
index 0000000..a319da0
--- /dev/null
+++ b/source/classes/dbupdater.php
@@ -0,0 +1,65 @@
+dbh = $dbh;
+ $this->db_type = $db_type;
+ $this->need_version = (int) $need_version;
+ }
+
+ function getSchemaVersion() {
+ $result = db_query("SELECT schema_version FROM ttrss_version");
+ return (int) db_fetch_result($result, 0, "schema_version");
+ }
+
+ function isUpdateRequired() {
+ return $this->getSchemaVersion() < $this->need_version;
+ }
+
+ function getSchemaLines($version) {
+ $filename = "schema/versions/".$this->db_type."/$version.sql";
+
+ if (file_exists($filename)) {
+ return explode(";", preg_replace("/[\r\n]/", "", file_get_contents($filename)));
+ } else {
+ return false;
+ }
+ }
+
+ function performUpdateTo($version) {
+ if ($this->getSchemaVersion() == $version - 1) {
+
+ $lines = $this->getSchemaLines($version);
+
+ if (is_array($lines)) {
+
+ db_query("BEGIN");
+
+ foreach ($lines as $line) {
+ if (strpos($line, "--") !== 0 && $line) {
+ db_query($line);
+ }
+ }
+
+ $db_version = $this->getSchemaVersion();
+
+ if ($db_version == $version) {
+ db_query("COMMIT");
+ return true;
+ } else {
+ db_query("ROLLBACK");
+ return false;
+ }
+ } else {
+ return true;
+ }
+ } else {
+ return false;
+ }
+ }
+
+} ?>
diff --git a/source/classes/dlg.php b/source/classes/dlg.php
new file mode 100644
index 0000000..cfa960d
--- /dev/null
+++ b/source/classes/dlg.php
@@ -0,0 +1,272 @@
+param = $this->dbh->escape_string($_REQUEST["param"]);
+ return true;
+ }
+ return false;
+ }
+
+ function importOpml() {
+ print __("If you have imported labels and/or filters, you might need to reload preferences to see your new data.") . "
";
+
+ print "";
+ $owner_uid = $_SESSION["uid"];
+
+ $this->dbh->query("BEGIN");
+
+ print "
";
+
+ $opml = new Opml($_REQUEST);
+
+ $opml->opml_import($_SESSION["uid"]);
+
+ $this->dbh->query("COMMIT");
+
+ print " ";
+ print "
";
+
+ print "";
+ print "".
+ __('Close this window')." ";
+ print "
";
+
+ print "";
+
+ //return;
+ }
+
+ function pubOPMLUrl() {
+ $url_path = Opml::opml_publish_url();
+
+ print __("Your Public OPML URL is:");
+
+ print "";
+
+ print "";
+
+ print "".
+ __('Generate new URL')." ";
+
+ print "".
+ __('Close this window')." ";
+
+ print "
";
+
+ //return;
+ }
+
+ function explainError() {
+ print "";
+
+ if ($this->param == 1) {
+ print __("Update daemon is enabled in configuration, but daemon process is not running, which prevents all feeds from updating. Please start the daemon process or contact instance owner.");
+
+ $stamp = (int) file_get_contents(LOCK_DIRECTORY . "/update_daemon.stamp");
+
+ print "
" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp);
+
+ }
+
+ if ($this->param == 3) {
+ print __("Update daemon is taking too long to perform a feed update. This could indicate a problem like crash or a hang. Please check the daemon process or contact instance owner.");
+
+ $stamp = (int) file_get_contents(LOCK_DIRECTORY . "/update_daemon.stamp");
+
+ print "
" . __("Last update:") . " " . date("Y.m.d, G:i", $stamp);
+
+ }
+
+ print "
";
+
+ print "";
+
+ print "".
+ __('Close this window')." ";
+
+ print "
";
+
+ //return;
+ }
+
+ function printTagCloud() {
+ print "";
+
+ // from here: http://www.roscripts.com/Create_tag_cloud-71.html
+
+ $query = "SELECT tag_name, COUNT(post_int_id) AS count
+ FROM ttrss_tags WHERE owner_uid = ".$_SESSION["uid"]."
+ GROUP BY tag_name ORDER BY count DESC LIMIT 50";
+
+ $result = $this->dbh->query($query);
+
+ $tags = array();
+
+ while ($line = $this->dbh->fetch_assoc($result)) {
+ $tags[$line["tag_name"]] = $line["count"];
+ }
+
+ if(count($tags) == 0 ){ return; }
+
+ ksort($tags);
+
+ $max_size = 32; // max font size in pixels
+ $min_size = 11; // min font size in pixels
+
+ // largest and smallest array values
+ $max_qty = max(array_values($tags));
+ $min_qty = min(array_values($tags));
+
+ // find the range of values
+ $spread = $max_qty - $min_qty;
+ if ($spread == 0) { // we don't want to divide by zero
+ $spread = 1;
+ }
+
+ // set the font-size increment
+ $step = ($max_size - $min_size) / ($spread);
+
+ // loop through the tag array
+ foreach ($tags as $key => $value) {
+ // calculate font-size
+ // find the $value in excess of $min_qty
+ // multiply by the font-size increment ($size)
+ // and add the $min_size set above
+ $size = round($min_size + (($value - $min_qty) * $step));
+
+ $key_escaped = str_replace("'", "\\'", $key);
+
+ echo "
' . $key . ' ';
+ }
+
+
+
+ print "
";
+
+ print "";
+ print "".
+ __('Close this window')." ";
+ print "
";
+
+ }
+
+ function printTagSelect() {
+
+ print __("Match:"). " " .
+ " ";
+ print "".__("Any")." ";
+ print " ";
+ print " ";
+ print "".__("All tags.")."";
+
+ print "";
+ $result = $this->dbh->query("SELECT DISTINCT tag_name FROM ttrss_tags WHERE owner_uid = ".$_SESSION['uid']."
+ AND LENGTH(tag_name) <= 30 ORDER BY tag_name ASC");
+
+ while ($row = $this->dbh->fetch_assoc($result)) {
+ $tmp = htmlspecialchars($row["tag_name"]);
+ print "$tmp ";
+ }
+
+ print " ";
+
+ print "";
+ print "" . __('Display entries') . " ";
+ print " ";
+ print "" .
+ __('Close this window') . " ";
+ print "
";
+
+ }
+
+ function generatedFeed() {
+
+ $this->params = explode(":", $this->param, 3);
+ $feed_id = $this->dbh->escape_string($this->params[0]);
+ $is_cat = (bool) $this->params[1];
+
+ $key = get_feed_access_key($feed_id, $is_cat);
+
+ $url_path = htmlspecialchars($this->params[2]) . "&key=" . $key;
+
+ print "".__("You can view this feed as RSS using the following URL:")." ";
+
+ print "";
+
+ print "";
+
+ print "".
+ __('Generate new URL')." ";
+
+ print "".
+ __('Close this window')." ";
+
+ print "
";
+
+ //return;
+ }
+
+ function newVersion() {
+
+ $version_data = check_for_update();
+ $version = $version_data['version'];
+ $id = $version_data['version_id'];
+
+ if ($version && $id) {
+ print "";
+
+ print T_sprintf("New version of Tiny Tiny RSS is available (%s).",
+ "$version ");
+
+ print "
";
+
+ $details = "http://tt-rss.org/redmine/versions/$id";
+ $download = "http://tt-rss.org/#Download";
+
+ print "".__("You can update using built-in updater in the Preferences or by using update.php")."
";
+
+ print "";
+ print "
".__("See the release notes")." ";
+ print "
".__("Download")." ";
+ print "
".
+ __('Close this window')." ";
+
+ } else {
+ print "
";
+
+ print "
".__("Error receiving version information or no new version available.")."
";
+
+ print "
";
+
+ print "
";
+ print "".
+ __('Close this window')." ";
+ print "
";
+
+ }
+ print "
";
+
+ }
+
+
+}
+?>
diff --git a/source/classes/feedenclosure.php b/source/classes/feedenclosure.php
new file mode 100644
index 0000000..b57100b
--- /dev/null
+++ b/source/classes/feedenclosure.php
@@ -0,0 +1,8 @@
+
diff --git a/source/classes/feeditem.php b/source/classes/feeditem.php
new file mode 100644
index 0000000..e64a13f
--- /dev/null
+++ b/source/classes/feeditem.php
@@ -0,0 +1,15 @@
+
diff --git a/source/classes/feeditem/atom.php b/source/classes/feeditem/atom.php
new file mode 100644
index 0000000..b7a228a
--- /dev/null
+++ b/source/classes/feeditem/atom.php
@@ -0,0 +1,159 @@
+elem->getElementsByTagName("id")->item(0);
+
+ if ($id) {
+ return $id->nodeValue;
+ } else {
+ return $this->get_link();
+ }
+ }
+
+ function get_date() {
+ $updated = $this->elem->getElementsByTagName("updated")->item(0);
+
+ if ($updated) {
+ return strtotime($updated->nodeValue);
+ }
+
+ $published = $this->elem->getElementsByTagName("published")->item(0);
+
+ if ($published) {
+ return strtotime($published->nodeValue);
+ }
+
+ $date = $this->xpath->query("dc:date", $this->elem)->item(0);
+
+ if ($date) {
+ return strtotime($date->nodeValue);
+ }
+ }
+
+
+ function get_link() {
+ $links = $this->elem->getElementsByTagName("link");
+
+ foreach ($links as $link) {
+ if ($link && $link->hasAttribute("href") &&
+ (!$link->hasAttribute("rel")
+ || $link->getAttribute("rel") == "alternate"
+ || $link->getAttribute("rel") == "standout")) {
+ $base = $this->xpath->evaluate("string(ancestor-or-self::*[@xml:base][1]/@xml:base)", $link);
+
+ if ($base)
+ return rewrite_relative_url($base, $link->getAttribute("href"));
+ else
+ return $link->getAttribute("href");
+
+ }
+ }
+ }
+
+ function get_title() {
+ $title = $this->elem->getElementsByTagName("title")->item(0);
+
+ if ($title) {
+ return $title->nodeValue;
+ }
+ }
+
+ function get_content() {
+ $content = $this->elem->getElementsByTagName("content")->item(0);
+
+ if ($content) {
+ if ($content->hasAttribute('type')) {
+ if ($content->getAttribute('type') == 'xhtml') {
+ for ($i = 0; $i < $content->childNodes->length; $i++) {
+ $child = $content->childNodes->item($i);
+
+ if ($child->hasChildNodes()) {
+ return $this->doc->saveXML($child);
+ }
+ }
+ }
+ }
+
+ return $content->nodeValue;
+ }
+ }
+
+ function get_description() {
+ $content = $this->elem->getElementsByTagName("summary")->item(0);
+
+ if ($content) {
+ if ($content->hasAttribute('type')) {
+ if ($content->getAttribute('type') == 'xhtml') {
+ for ($i = 0; $i < $content->childNodes->length; $i++) {
+ $child = $content->childNodes->item($i);
+
+ if ($child->hasChildNodes()) {
+ return $this->doc->saveXML($child);
+ }
+ }
+ }
+ }
+
+ return $content->nodeValue;
+ }
+
+ }
+
+ function get_categories() {
+ $categories = $this->elem->getElementsByTagName("category");
+ $cats = array();
+
+ foreach ($categories as $cat) {
+ if ($cat->hasAttribute("term"))
+ array_push($cats, $cat->getAttribute("term"));
+ }
+
+ $categories = $this->xpath->query("dc:subject", $this->elem);
+
+ foreach ($categories as $cat) {
+ array_push($cats, $cat->nodeValue);
+ }
+
+ return $cats;
+ }
+
+ function get_enclosures() {
+ $links = $this->elem->getElementsByTagName("link");
+
+ $encs = array();
+
+ foreach ($links as $link) {
+ if ($link && $link->hasAttribute("href") && $link->hasAttribute("rel")) {
+ if ($link->getAttribute("rel") == "enclosure") {
+ $enc = new FeedEnclosure();
+
+ $enc->type = $link->getAttribute("type");
+ $enc->link = $link->getAttribute("href");
+ $enc->length = $link->getAttribute("length");
+
+ array_push($encs, $enc);
+ }
+ }
+ }
+
+ $enclosures = $this->xpath->query("media:content | media:group/media:content", $this->elem);
+
+ foreach ($enclosures as $enclosure) {
+ $enc = new FeedEnclosure();
+
+ $enc->type = $enclosure->getAttribute("type");
+ $enc->link = $enclosure->getAttribute("url");
+ $enc->length = $enclosure->getAttribute("length");
+
+ $desc = $this->xpath->query("media:description", $enclosure)->item(0);
+ if ($desc) $enc->title = strip_tags($desc->nodeValue);
+
+ array_push($encs, $enc);
+ }
+
+ return $encs;
+ }
+
+}
+?>
diff --git a/source/classes/feeditem/common.php b/source/classes/feeditem/common.php
new file mode 100644
index 0000000..58065b1
--- /dev/null
+++ b/source/classes/feeditem/common.php
@@ -0,0 +1,62 @@
+elem = $elem;
+ $this->xpath = $xpath;
+ $this->doc = $doc;
+
+ try {
+
+ $source = $elem->getElementsByTagName("source")->item(0);
+
+ // we don't need element
+ if ($source)
+ $elem->removeChild($source);
+ } catch (DOMException $e) {
+ //
+ }
+ }
+
+ function get_author() {
+ $author = $this->elem->getElementsByTagName("author")->item(0);
+
+ if ($author) {
+ $name = $author->getElementsByTagName("name")->item(0);
+
+ if ($name) return $name->nodeValue;
+
+ $email = $author->getElementsByTagName("email")->item(0);
+
+ if ($email) return $email->nodeValue;
+
+ if ($author->nodeValue)
+ return $author->nodeValue;
+ }
+
+ $author = $this->xpath->query("dc:creator", $this->elem)->item(0);
+
+ if ($author) {
+ return $author->nodeValue;
+ }
+ }
+
+ // todo
+ function get_comments_url() {
+
+ }
+
+ function get_comments_count() {
+ $comments = $this->xpath->query("slash:comments", $this->elem)->item(0);
+
+ if ($comments) {
+ return $comments->nodeValue;
+ }
+ }
+
+
+}
+?>
diff --git a/source/classes/feeditem/rss.php b/source/classes/feeditem/rss.php
new file mode 100644
index 0000000..1f59f06
--- /dev/null
+++ b/source/classes/feeditem/rss.php
@@ -0,0 +1,134 @@
+elem->getElementsByTagName("guid")->item(0);
+
+ if ($id) {
+ return $id->nodeValue;
+ } else {
+ return $this->get_link();
+ }
+ }
+
+ function get_date() {
+ $pubDate = $this->elem->getElementsByTagName("pubDate")->item(0);
+
+ if ($pubDate) {
+ return strtotime($pubDate->nodeValue);
+ }
+
+ $date = $this->xpath->query("dc:date", $this->elem)->item(0);
+
+ if ($date) {
+ return strtotime($date->nodeValue);
+ }
+ }
+
+ function get_link() {
+ $links = $this->xpath->query("atom:link", $this->elem);
+
+ foreach ($links as $link) {
+ if ($link && $link->hasAttribute("href") &&
+ (!$link->hasAttribute("rel")
+ || $link->getAttribute("rel") == "alternate"
+ || $link->getAttribute("rel") == "standout")) {
+
+ return $link->getAttribute("href");
+ }
+ }
+
+ $link = $this->elem->getElementsByTagName("guid")->item(0);
+
+ if ($link && $link->hasAttributes() && $link->getAttribute("isPermaLink") == "true") {
+ return $link->nodeValue;
+ }
+
+ $link = $this->elem->getElementsByTagName("link")->item(0);
+
+ if ($link) {
+ return $link->nodeValue;
+ }
+ }
+
+ function get_title() {
+ $title = $this->elem->getElementsByTagName("title")->item(0);
+
+ if ($title) {
+ return $title->nodeValue;
+ }
+ }
+
+ function get_content() {
+ $content = $this->xpath->query("content:encoded", $this->elem)->item(0);
+
+ if ($content) {
+ return $content->nodeValue;
+ }
+
+ $content = $this->elem->getElementsByTagName("description")->item(0);
+
+ if ($content) {
+ return $content->nodeValue;
+ }
+ }
+
+ function get_description() {
+ $summary = $this->elem->getElementsByTagName("description")->item(0);
+
+ if ($summary) {
+ return $summary->nodeValue;
+ }
+ }
+
+ function get_categories() {
+ $categories = $this->elem->getElementsByTagName("category");
+ $cats = array();
+
+ foreach ($categories as $cat) {
+ array_push($cats, $cat->nodeValue);
+ }
+
+ $categories = $this->xpath->query("dc:subject", $this->elem);
+
+ foreach ($categories as $cat) {
+ array_push($cats, $cat->nodeValue);
+ }
+
+ return $cats;
+ }
+
+ function get_enclosures() {
+ $enclosures = $this->elem->getElementsByTagName("enclosure");
+
+ $encs = array();
+
+ foreach ($enclosures as $enclosure) {
+ $enc = new FeedEnclosure();
+
+ $enc->type = $enclosure->getAttribute("type");
+ $enc->link = $enclosure->getAttribute("url");
+ $enc->length = $enclosure->getAttribute("length");
+
+ array_push($encs, $enc);
+ }
+
+ $enclosures = $this->xpath->query("media:content | media:group/media:content", $this->elem);
+
+ foreach ($enclosures as $enclosure) {
+ $enc = new FeedEnclosure();
+
+ $enc->type = $enclosure->getAttribute("type");
+ $enc->link = $enclosure->getAttribute("url");
+ $enc->length = $enclosure->getAttribute("length");
+
+ $desc = $this->xpath->query("media:description", $enclosure)->item(0);
+ if ($desc) $enc->title = strip_tags($desc->nodeValue);
+
+ array_push($encs, $enc);
+ }
+
+ return $encs;
+ }
+
+}
+?>
diff --git a/source/classes/feedparser.php b/source/classes/feedparser.php
new file mode 100644
index 0000000..4a2c6c2
--- /dev/null
+++ b/source/classes/feedparser.php
@@ -0,0 +1,246 @@
+doc = new DOMDocument();
+ $this->doc->loadXML($data);
+
+ mb_substitute_character("none");
+
+ $error = libxml_get_last_error();
+
+ // libxml compiled without iconv?
+ if ($error && ($error->code == 32 || $error->code == 9)) {
+ if (preg_match('/^(<\?xml[\t\n\r ].*?encoding=["\'])(.+?)(["\'].*?\?>)/s', $data, $matches) === 1) {
+ $enc = $matches[2];
+
+ $data = mb_convert_encoding($data, 'UTF-8', $enc);
+
+ $data = preg_replace('/^<\?xml[\t\n\r ].*?\?>/s', $matches[1] . "UTF-8" . $matches[3] , $data);
+
+
+ // apparently not all UTF-8 characters are valid for XML
+ $data = preg_replace('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $data);
+
+ if ($data) {
+ libxml_clear_errors();
+
+ $this->doc = new DOMDocument();
+ $this->doc->loadXML($data);
+
+ $error = libxml_get_last_error();
+ }
+ }
+ }
+
+ // some terrible invalid unicode entity?
+ if ($error && $error->code == 9) {
+ $data = mb_convert_encoding($data, 'UTF-8', 'UTF-8');
+
+ if ($data) {
+ libxml_clear_errors();
+
+ $this->doc = new DOMDocument();
+ $this->doc->loadXML($data);
+
+ $error = libxml_get_last_error();
+ }
+ }
+
+ $this->error = $this->format_error($error);
+ libxml_clear_errors();
+
+ $this->items = array();
+ }
+
+ function init() {
+ $root = $this->doc->firstChild;
+ $xpath = new DOMXPath($this->doc);
+ $xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom');
+ $xpath->registerNamespace('atom03', 'http://purl.org/atom/ns#');
+ $xpath->registerNamespace('media', 'http://search.yahoo.com/mrss/');
+ $xpath->registerNamespace('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+ $xpath->registerNamespace('slash', 'http://purl.org/rss/1.0/modules/slash/');
+ $xpath->registerNamespace('dc', 'http://purl.org/dc/elements/1.1/');
+ $xpath->registerNamespace('content', 'http://purl.org/rss/1.0/modules/content/');
+
+ $this->xpath = $xpath;
+
+ $root = $xpath->query("(//atom03:feed|//atom:feed|//channel|//rdf:rdf|//rdf:RDF)");
+
+ if ($root) {
+ $root = $root->item(0);
+
+ if ($root) {
+ switch (mb_strtolower($root->tagName)) {
+ case "rdf:rdf":
+ $this->type = $this::FEED_RDF;
+ break;
+ case "channel":
+ $this->type = $this::FEED_RSS;
+ break;
+ case "feed":
+ $this->type = $this::FEED_ATOM;
+ break;
+ default:
+ if( !isset($this->error) ){
+ $this->error = "Unknown/unsupported feed type";
+ }
+ return;
+ }
+ }
+
+ switch ($this->type) {
+ case $this::FEED_ATOM:
+
+ $title = $xpath->query("//atom:feed/atom:title")->item(0);
+
+ if (!$title)
+ $title = $xpath->query("//atom03:feed/atom03:title")->item(0);
+
+
+ if ($title) {
+ $this->title = $title->nodeValue;
+ }
+
+ $link = $xpath->query("//atom:feed/atom:link[not(@rel)]")->item(0);
+
+ if (!$link)
+ $link = $xpath->query("//atom03:feed/atom03:link[not(@rel)]")->item(0);
+
+
+ if ($link && $link->hasAttributes()) {
+ $this->link = $link->getAttribute("href");
+ }
+
+ $articles = $xpath->query("//atom:entry");
+
+ if (!$articles || $articles->length == 0)
+ $articles = $xpath->query("//atom03:entry");
+
+ foreach ($articles as $article) {
+ array_push($this->items, new FeedItem_Atom($article, $this->doc, $this->xpath));
+ }
+
+ break;
+ case $this::FEED_RSS:
+ $title = $xpath->query("//channel/title")->item(0);
+
+ if ($title) {
+ $this->title = $title->nodeValue;
+ }
+
+ $link = $xpath->query("//channel/link")->item(0);
+
+ if ($link) {
+ if ($link->getAttribute("href"))
+ $this->link = $link->getAttribute("href");
+ else if ($link->nodeValue)
+ $this->link = $link->nodeValue;
+ }
+
+ $articles = $xpath->query("//channel/item");
+
+ foreach ($articles as $article) {
+ array_push($this->items, new FeedItem_RSS($article, $this->doc, $this->xpath));
+ }
+
+ break;
+ case $this::FEED_RDF:
+ $xpath->registerNamespace('rssfake', 'http://purl.org/rss/1.0/');
+
+ $title = $xpath->query("//rssfake:channel/rssfake:title")->item(0);
+
+ if ($title) {
+ $this->title = $title->nodeValue;
+ }
+
+ $link = $xpath->query("//rssfake:channel/rssfake:link")->item(0);
+
+ if ($link) {
+ $this->link = $link->nodeValue;
+ }
+
+ $articles = $xpath->query("//rssfake:item");
+
+ foreach ($articles as $article) {
+ array_push($this->items, new FeedItem_RSS($article, $this->doc, $this->xpath));
+ }
+
+ break;
+
+ }
+ } else {
+ if( !isset($this->error) ){
+ $this->error = "Unknown/unsupported feed type";
+ }
+ return;
+ }
+ }
+
+ function format_error($error) {
+ if ($error) {
+ return sprintf("LibXML error %s at line %d (column %d): %s",
+ $error->code, $error->line, $error->column,
+ $error->message);
+ } else {
+ return "";
+ }
+ }
+
+ function error() {
+ return $this->error;
+ }
+
+ function get_link() {
+ return $this->link;
+ }
+
+ function get_title() {
+ return $this->title;
+ }
+
+ function get_items() {
+ return $this->items;
+ }
+
+ function get_links($rel) {
+ $rv = array();
+
+ switch ($this->type) {
+ case $this::FEED_ATOM:
+ $links = $this->xpath->query("//atom:feed/atom:link");
+
+ foreach ($links as $link) {
+ if (!$rel || $link->hasAttribute('rel') && $link->getAttribute('rel') == $rel) {
+ array_push($rv, $link->getAttribute('href'));
+ }
+ }
+ break;
+ case $this::FEED_RSS:
+ $links = $this->xpath->query("//atom:link");
+
+ foreach ($links as $link) {
+ if (!$rel || $link->hasAttribute('rel') && $link->getAttribute('rel') == $rel) {
+ array_push($rv, $link->getAttribute('href'));
+ }
+ }
+ break;
+ }
+
+ return $rv;
+ }
+} ?>
diff --git a/source/classes/feeds.php b/source/classes/feeds.php
new file mode 100644
index 0000000..5ee125f
--- /dev/null
+++ b/source/classes/feeds.php
@@ -0,0 +1,1161 @@
+";
+ $reply .= " ";
+ $reply .= "";
+
+ if ($feed_site_url) {
+ $last_updated = T_sprintf("Last updated: %s",
+ $feed_last_updated);
+
+ $target = "target=\"_blank\"";
+ $reply .= "".
+ truncate_string($feed_title,30)." ";
+
+ if ($error) {
+ $error = htmlspecialchars($error);
+ $reply .= " ";
+ }
+
+ } else {
+ $reply .= $feed_title;
+ }
+
+ $reply .= " ";
+
+ $reply .= "
+
+ ";
+
+ $reply .= "";
+
+ // left part
+
+ $reply .= __('Select:')."
+ ".__('All')." ,
+ ".__('Unread')." ,
+ ".__('Invert')." ,
+ ".__('None')." ";
+
+ $reply .= " ";
+
+ $reply .= "";
+ $reply .= "".__('More...')." ";
+
+ $reply .= "".__('Selection toggle:')." ";
+
+ $reply .= "".__('Unread')."
+ ".__('Starred')."
+ ".__('Published')." ";
+
+ $reply .= "".__('Selection:')." ";
+
+ $reply .= "".__('Mark as read')." ";
+ $reply .= "".__('Set score')." ";
+
+ if ($feed_id != "0") {
+ $reply .= "".__('Archive')." ";
+ } else {
+ $reply .= "".__('Move back')." ";
+ $reply .= "".__('Delete')." ";
+
+ }
+
+ if (PluginHost::getInstance()->get_plugin("mail")) {
+ $reply .= "".__('Forward by email').
+ " ";
+ }
+
+ if (PluginHost::getInstance()->get_plugin("mailto")) {
+ $reply .= "".__('Forward by email').
+ " ";
+ }
+
+ $reply .= "".__('Feed:')." ";
+
+ //$reply .= "".__('Mark as read')." ";
+
+ $reply .= "".__('View as RSS')." ";
+
+ $reply .= " ";
+
+ //$reply .= "";
+
+ //$reply .= "get_hooks(PluginHost::HOOK_HEADLINE_TOOLBAR_BUTTON) as $p) {
+ echo $p->hook_headline_toolbar_button($feed_id, $is_cat);
+ }
+
+ return $reply;
+ }
+
+ private function format_headlines_list($feed, $method, $view_mode, $limit, $cat_view,
+ $next_unread_feed, $offset, $vgr_last_feed = false,
+ $override_order = false, $include_children = false) {
+
+ if (isset($_REQUEST["DevForceUpdate"]))
+ header("Content-Type: text/plain");
+
+ $disable_cache = false;
+
+ $reply = array();
+
+ $rgba_cache = array();
+
+ $timing_info = microtime(true);
+
+ $topmost_article_ids = array();
+
+ if (!$offset) $offset = 0;
+ if ($method == "undefined") $method = "";
+
+ $method_split = explode(":", $method);
+
+ if ($method == "ForceUpdate" && $feed > 0 && is_numeric($feed)) {
+ // Update the feed if required with some basic flood control
+
+ $result = $this->dbh->query(
+ "SELECT cache_images,".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
+ FROM ttrss_feeds WHERE id = '$feed'");
+
+ if ($this->dbh->num_rows($result) != 0) {
+ $last_updated = strtotime($this->dbh->fetch_result($result, 0, "last_updated"));
+ $cache_images = sql_bool_to_bool($this->dbh->fetch_result($result, 0, "cache_images"));
+
+ if (!$cache_images && time() - $last_updated > 120 || isset($_REQUEST['DevForceUpdate'])) {
+ include "rssfuncs.php";
+ update_rss_feed($feed, true, true);
+ } else {
+ $this->dbh->query("UPDATE ttrss_feeds SET last_updated = '1970-01-01', last_update_started = '1970-01-01'
+ WHERE id = '$feed'");
+ }
+ }
+ }
+
+ if ($method_split[0] == "MarkAllReadGR") {
+ catchup_feed($method_split[1], false);
+ }
+
+ // FIXME: might break tag display?
+
+ if (is_numeric($feed) && $feed > 0 && !$cat_view) {
+ $result = $this->dbh->query(
+ "SELECT id FROM ttrss_feeds WHERE id = '$feed' LIMIT 1");
+
+ if ($this->dbh->num_rows($result) == 0) {
+ $reply['content'] = "".__('Feed not found.')."
";
+ }
+ }
+
+ @$search = $this->dbh->escape_string($_REQUEST["query"]);
+
+ if ($search) {
+ $disable_cache = true;
+ }
+
+ @$search_mode = $this->dbh->escape_string($_REQUEST["search_mode"]);
+
+ if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H0", $timing_info);
+
+// error_log("format_headlines_list: [" . $feed . "] method [" . $method . "]");
+ if($search_mode == '' && $method != '' ){
+ $search_mode = $method;
+ }
+// error_log("search_mode: " . $search_mode);
+
+ if (!$cat_view && is_numeric($feed) && $feed < PLUGIN_FEED_BASE_INDEX && $feed > LABEL_BASE_INDEX) {
+ $handler = PluginHost::getInstance()->get_feed_handler(
+ PluginHost::feed_to_pfeed_id($feed));
+
+ // function queryFeedHeadlines($feed, $limit, $view_mode, $cat_view, $search, $search_mode, $override_order = false, $offset = 0, $owner_uid = 0, $filter = false, $since_id = 0, $include_children = false, $ignore_vfeed_group = false) {
+
+ if ($handler) {
+ $options = array(
+ "limit" => $limit,
+ "view_mode" => $view_mode,
+ "cat_view" => $cat_view,
+ "search" => $search,
+ "search_mode" => $search_mode,
+ "override_order" => $override_order,
+ "offset" => $offset,
+ "owner_uid" => $_SESSION["uid"],
+ "filter" => false,
+ "since_id" => 0,
+ "include_children" => $include_children);
+
+ $qfh_ret = $handler->get_headlines(PluginHost::feed_to_pfeed_id($feed),
+ $options);
+ }
+
+ } else {
+ $qfh_ret = queryFeedHeadlines($feed, $limit, $view_mode, $cat_view,
+ $search, $search_mode, $override_order, $offset, 0,
+ false, 0, $include_children);
+ }
+
+ if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H1", $timing_info);
+
+ $result = $qfh_ret[0];
+ $feed_title = $qfh_ret[1];
+ $feed_site_url = $qfh_ret[2];
+ $last_error = $qfh_ret[3];
+ $last_updated = strpos($qfh_ret[4], '1970-') === FALSE ?
+ make_local_datetime($qfh_ret[4], false) : __("Never");
+ $highlight_words = $qfh_ret[5];
+
+ $vgroup_last_feed = $vgr_last_feed;
+
+ $reply['toolbar'] = $this->format_headline_subtoolbar($feed_site_url,
+ $feed_title,
+ $feed, $cat_view, $search, $search_mode, $view_mode,
+ $last_error, $last_updated);
+
+ $headlines_count = $this->dbh->num_rows($result);
+
+ /* if (get_pref('COMBINED_DISPLAY_MODE')) {
+ $button_plugins = array();
+ foreach (explode(",", ARTICLE_BUTTON_PLUGINS) as $p) {
+ $pclass = "button_" . trim($p);
+
+ if (class_exists($pclass)) {
+ $plugin = new $pclass();
+ array_push($button_plugins, $plugin);
+ }
+ }
+ } */
+
+ if ($this->dbh->num_rows($result) > 0) {
+
+ $lnum = $offset;
+
+ $num_unread = 0;
+ $cur_feed_title = '';
+
+ $fresh_intl = get_pref("FRESH_ARTICLE_MAX_AGE") * 60 * 60;
+
+ if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PS", $timing_info);
+
+ $expand_cdm = get_pref('CDM_EXPANDED');
+
+ while ($line = $this->dbh->fetch_assoc($result)) {
+ $line["content_preview"] = "— " . truncate_string(strip_tags($line["content_preview"]), 250);
+
+ foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) {
+ $line = $p->hook_query_headlines($line, 250, false);
+ }
+
+ if (get_pref('SHOW_CONTENT_PREVIEW')) {
+ $content_preview = $line["content_preview"];
+ }
+
+ $id = $line["id"];
+ $feed_id = $line["feed_id"];
+ $label_cache = $line["label_cache"];
+ $labels = false;
+
+ if ($label_cache) {
+ $label_cache = json_decode($label_cache, true);
+
+ if ($label_cache) {
+ if ($label_cache["no-labels"] == 1)
+ $labels = array();
+ else
+ $labels = $label_cache;
+ }
+ }
+
+ if (!is_array($labels)) $labels = get_article_labels($id);
+
+ $labels_str = "";
+ $labels_str .= format_article_labels($labels, $id);
+ $labels_str .= " ";
+
+ if (count($topmost_article_ids) < 3) {
+ array_push($topmost_article_ids, $id);
+ }
+
+ $class = "";
+
+ if (sql_bool_to_bool($line["unread"])) {
+ $class .= " Unread";
+ ++$num_unread;
+ }
+
+ if (sql_bool_to_bool($line["marked"])) {
+ $marked_pic = " ";
+ $class .= " marked";
+ } else {
+ $marked_pic = " ";
+ }
+
+ if (sql_bool_to_bool($line["published"])) {
+ $published_pic = " ";
+ $class .= " published";
+ } else {
+ $published_pic = " ";
+ }
+
+# $content_link = "" .
+# $line["title"] . " ";
+
+# $content_link = "" .
+# $line["title"] . " ";
+
+# $content_link = "" .
+# $line["title"] . " ";
+
+ $updated_fmt = make_local_datetime($line["updated"], false);
+ $date_entered_fmt = T_sprintf("Imported at %s",
+ make_local_datetime($line["date_entered"], false));
+
+ $score = $line["score"];
+
+ $score_pic = "images/" . get_score_pic($score);
+
+/* $score_title = __("(Click to change)");
+ $score_pic = " "; */
+
+ $score_pic = " ";
+
+ if ($score > 500) {
+ $hlc_suffix = "high";
+ } else if ($score < -100) {
+ $hlc_suffix = "low";
+ } else {
+ $hlc_suffix = "";
+ }
+
+ $entry_author = $line["author"];
+
+ if ($entry_author) {
+ $entry_author = " — $entry_author";
+ }
+
+ $has_feed_icon = feed_has_icon($feed_id);
+
+ if ($has_feed_icon) {
+ $feed_icon_img = " ";
+ } else {
+ $feed_icon_img = " ";
+ }
+
+ $entry_site_url = $line["site_url"];
+
+ //setting feed headline background color, needs to change text color based on dark/light
+ $fav_color = $line['favicon_avg_color'];
+
+ require_once "colors.php";
+
+ if ($fav_color && $fav_color != 'fail') {
+ if (!isset($rgba_cache[$feed_id])) {
+ $rgba_cache[$feed_id] = join(",", _color_unpack($fav_color));
+ }
+ }
+
+ if (!get_pref('COMBINED_DISPLAY_MODE')) {
+
+ if (get_pref('VFEED_GROUP_BY_FEED')) {
+ if ($feed_id != $vgroup_last_feed && $line["feed_title"]) {
+
+ $cur_feed_title = $line["feed_title"];
+ $vgroup_last_feed = $feed_id;
+
+ $cur_feed_title = htmlspecialchars($cur_feed_title);
+
+ $vf_catchup_link = "(".__('Mark as read')." )";
+
+ $reply['content'] .= "";
+
+ }
+ }
+
+ $mouseover_attrs = "onmouseover='postMouseIn(event, $id)'
+ onmouseout='postMouseOut($id)'";
+
+ $reply['content'] .= "";
+
+ $reply['content'] .= "
";
+
+ $reply['content'] .= " ";
+
+ $reply['content'] .= "$marked_pic";
+ $reply['content'] .= "$published_pic";
+
+ $reply['content'] .= "
";
+
+ $reply['content'] .= "
";
+
+ $reply['content'] .= "
";
+
+ if (!get_pref('VFEED_GROUP_BY_FEED')) {
+ if (@$line["feed_title"]) {
+ $rgba = @$rgba_cache[$feed_id];
+
+ $reply['content'] .= "".
+ truncate_string($line["feed_title"],30)." ";
+ }
+ }
+
+ $reply['content'] .= "$updated_fmt
+ ";
+
+ $reply['content'] .= "
";
+
+ $reply['content'] .= $score_pic;
+
+ if ($line["feed_title"] && !get_pref('VFEED_GROUP_BY_FEED')) {
+
+ $reply['content'] .= "
+ $feed_icon_img";
+ }
+
+ $reply['content'] .= "
";
+ $reply['content'] .= "
";
+
+ } else {
+
+ if ($line["tag_cache"])
+ $tags = explode(",", $line["tag_cache"]);
+ else
+ $tags = false;
+
+ $line["content"] = sanitize($line["content"],
+ sql_bool_to_bool($line['hide_images']), false, $entry_site_url, $highlight_words, $line["id"]);
+
+ foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_RENDER_ARTICLE_CDM) as $p) {
+ $line = $p->hook_render_article_cdm($line);
+ }
+
+ if (get_pref('VFEED_GROUP_BY_FEED') && $line["feed_title"]) {
+ if ($feed_id != $vgroup_last_feed) {
+
+ $cur_feed_title = $line["feed_title"];
+ $vgroup_last_feed = $feed_id;
+
+ $cur_feed_title = htmlspecialchars($cur_feed_title);
+
+ $vf_catchup_link = "(".__('mark as read')." )";
+
+ $has_feed_icon = feed_has_icon($feed_id);
+
+ if ($has_feed_icon) {
+ $feed_icon_img = " ";
+ } else {
+ //$feed_icon_img = " ";
+ }
+
+ $reply['content'] .= "";
+ }
+ }
+
+ $mouseover_attrs = "onmouseover='postMouseIn(event, $id)'
+ onmouseout='postMouseOut($id)'";
+
+ $expanded_class = $expand_cdm ? "expanded" : "expandable";
+
+ $reply['content'] .= "";
+
+ $reply['content'] .= "";
+
+ $reply['content'] .= "
";
+
+ $reply['content'] .= "
";
+ if ($line['note']) {
+ $reply['content'] .= format_article_note($id, $line['note']);
+ }
+ $reply['content'] .= "
";
+
+ if (!$line['lang']) $line['lang'] = 'en';
+
+ $reply['content'] .= "
";
+
+ if ($line["orig_feed_id"]) {
+
+ $tmp_result = $this->dbh->query("SELECT * FROM ttrss_archived_feeds
+ WHERE id = ".$line["orig_feed_id"]);
+
+ if ($this->dbh->num_rows($tmp_result) != 0) {
+
+ $reply['content'] .= "
";
+ $reply['content'] .= __("Originally from:");
+
+ $reply['content'] .= " ";
+
+ $tmp_line = $this->dbh->fetch_assoc($tmp_result);
+
+ $reply['content'] .= "
" .
+ $tmp_line['title'] . " ";
+
+ $reply['content'] .= " ";
+
+ $reply['content'] .= "
";
+ $reply['content'] .= " ";
+
+ $reply['content'] .= "
";
+ }
+ }
+
+ $reply['content'] .= "
";
+
+// if (!$expand_cdm) {
+ $reply['content'] .= "";
+ $reply['content'] .= htmlspecialchars($line["content"]);
+ $reply['content'] .= "";
+
+ $always_display_enclosures = sql_bool_to_bool($line["always_display_enclosures"]);
+
+ $reply['content'] .= format_article_enclosures($id, $always_display_enclosures, $line["content"], sql_bool_to_bool($line["hide_images"]));
+
+ $reply['content'] .= " ";
+
+ $reply['content'] .= "";
+
+ $reply['content'] .= "
";
+
+ $reply['content'] .= "
";
+
+ }
+
+ ++$lnum;
+ }
+
+ if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PE", $timing_info);
+
+ } else {
+ $message = "";
+
+ switch ($view_mode) {
+ case "unread":
+ $message = __("No unread articles found to display.");
+ break;
+ case "updated":
+ $message = __("No updated articles found to display.");
+ break;
+ case "marked":
+ $message = __("No starred articles found to display.");
+ break;
+ default:
+ if ($feed < LABEL_BASE_INDEX) {
+ $message = __("No articles found to display. You can assign articles to labels manually from article header context menu (applies to all selected articles) or use a filter.");
+ } else {
+ $message = __("No articles found to display.");
+ }
+ }
+
+ if (!$offset && $message) {
+ $reply['content'] .= "$message";
+
+ $reply['content'] .= "
";
+
+ $result = $this->dbh->query("SELECT ".SUBSTRING_FOR_DATE."(MAX(last_updated), 1, 19) AS last_updated FROM ttrss_feeds
+ WHERE owner_uid = " . $_SESSION['uid']);
+
+ $last_updated = $this->dbh->fetch_result($result, 0, "last_updated");
+ $last_updated = make_local_datetime($last_updated, false);
+
+ $reply['content'] .= sprintf(__("Feeds last updated at %s"), $last_updated);
+
+ $result = $this->dbh->query("SELECT COUNT(id) AS num_errors
+ FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]);
+
+ $num_errors = $this->dbh->fetch_result($result, 0, "num_errors");
+
+ if ($num_errors > 0) {
+ $reply['content'] .= " ";
+ $reply['content'] .= "".
+ __('Some feeds have update errors (click for details)')." ";
+ }
+ $reply['content'] .= "
";
+ }
+ }
+
+ if ($_REQUEST["debug"]) $timing_info = print_checkpoint("H2", $timing_info);
+
+ return array($topmost_article_ids, $headlines_count, $feed, $disable_cache,
+ $vgroup_last_feed, $reply);
+ }
+
+ function catchupAll() {
+ $this->dbh->query("UPDATE ttrss_user_entries SET
+ last_read = NOW(), unread = false WHERE unread = true AND owner_uid = " . $_SESSION["uid"]);
+ ccache_zero_all($_SESSION["uid"]);
+ }
+
+ function view() {
+ $timing_info = microtime(true);
+
+ $reply = array();
+
+ if ($_REQUEST["debug"]) $timing_info = print_checkpoint("0", $timing_info);
+
+ $omode = $this->dbh->escape_string($_REQUEST["omode"]);
+
+ $feed = $this->dbh->escape_string($_REQUEST["feed"]);
+ $method = $this->dbh->escape_string($_REQUEST["m"]);
+ $view_mode = $this->dbh->escape_string($_REQUEST["view_mode"]);
+ $limit = 30;
+ @$cat_view = $_REQUEST["cat"] == "true";
+ @$next_unread_feed = $this->dbh->escape_string($_REQUEST["nuf"]);
+ @$offset = $this->dbh->escape_string($_REQUEST["skip"]);
+ @$vgroup_last_feed = $this->dbh->escape_string($_REQUEST["vgrlf"]);
+ $order_by = $this->dbh->escape_string($_REQUEST["order_by"]);
+
+ if (is_numeric($feed)) $feed = (int) $feed;
+
+ /* Feed -5 is a special case: it is used to display auxiliary information
+ * when there's nothing to load - e.g. no stuff in fresh feed */
+
+ if ($feed == -5) {
+ print json_encode($this->generate_dashboard_feed());
+ return;
+ }
+
+ $result = false;
+
+ if ($feed < LABEL_BASE_INDEX) {
+ $label_feed = feed_to_label_id($feed);
+ $result = $this->dbh->query("SELECT id FROM ttrss_labels2 WHERE
+ id = '$label_feed' AND owner_uid = " . $_SESSION['uid']);
+ } else if (!$cat_view && is_numeric($feed) && $feed > 0) {
+ $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE
+ id = '$feed' AND owner_uid = " . $_SESSION['uid']);
+ } else if ($cat_view && is_numeric($feed) && $feed > 0) {
+ $result = $this->dbh->query("SELECT id FROM ttrss_feed_categories WHERE
+ id = '$feed' AND owner_uid = " . $_SESSION['uid']);
+ }
+
+ if ($result && $this->dbh->num_rows($result) == 0) {
+ print json_encode($this->generate_error_feed(__("Feed not found.")));
+ return;
+ }
+
+ /* Updating a label ccache means recalculating all of the caches
+ * so for performance reasons we don't do that here */
+
+ if ($feed >= 0) {
+ ccache_update($feed, $_SESSION["uid"], $cat_view);
+ }
+
+ set_pref("_DEFAULT_VIEW_MODE", $view_mode);
+ set_pref("_DEFAULT_VIEW_ORDER_BY", $order_by);
+
+ /* bump login timestamp if needed */
+ if (time() - $_SESSION["last_login_update"] > 3600) {
+ $this->dbh->query("UPDATE ttrss_users SET last_login = NOW() WHERE id = " .
+ $_SESSION["uid"]);
+ $_SESSION["last_login_update"] = time();
+ }
+
+ if (!$cat_view && is_numeric($feed) && $feed > 0) {
+ $this->dbh->query("UPDATE ttrss_feeds SET last_viewed = NOW()
+ WHERE id = '$feed' AND owner_uid = ".$_SESSION["uid"]);
+ }
+
+ $reply['headlines'] = array();
+
+ if (!$next_unread_feed)
+ $reply['headlines']['id'] = $feed;
+ else
+ $reply['headlines']['id'] = $next_unread_feed;
+
+ $reply['headlines']['is_cat'] = (bool) $cat_view;
+
+ $override_order = false;
+
+ switch ($order_by) {
+ case "title":
+ $override_order = "ttrss_entries.title";
+ break;
+ case "date_reverse":
+ $override_order = "score DESC, date_entered, updated";
+ break;
+ case "feed_dates":
+ $override_order = "updated DESC";
+ break;
+ }
+
+ if ($_REQUEST["debug"]) $timing_info = print_checkpoint("04", $timing_info);
+
+ $ret = $this->format_headlines_list($feed, $method,
+ $view_mode, $limit, $cat_view, $next_unread_feed, $offset,
+ $vgroup_last_feed, $override_order, true);
+
+ //$topmost_article_ids = $ret[0];
+ $headlines_count = $ret[1];
+ $returned_feed = $ret[2];
+ $disable_cache = $ret[3];
+ $vgroup_last_feed = $ret[4];
+
+ $reply['headlines']['content'] =& $ret[5]['content'];
+ $reply['headlines']['toolbar'] =& $ret[5]['toolbar'];
+
+ if ($_REQUEST["debug"]) $timing_info = print_checkpoint("05", $timing_info);
+
+ $reply['headlines-info'] = array("count" => (int) $headlines_count,
+ "vgroup_last_feed" => $vgroup_last_feed,
+ "disable_cache" => (bool) $disable_cache);
+
+ if ($_REQUEST["debug"]) $timing_info = print_checkpoint("30", $timing_info);
+
+ $reply['runtime-info'] = make_runtime_info();
+
+ print json_encode($reply);
+
+ }
+
+ private function generate_dashboard_feed() {
+ $reply = array();
+
+ $reply['headlines']['id'] = -5;
+ $reply['headlines']['is_cat'] = false;
+
+ $reply['headlines']['toolbar'] = '';
+ $reply['headlines']['content'] = "".__('No feed selected.');
+
+ $reply['headlines']['content'] .= "
";
+
+ $result = $this->dbh->query("SELECT ".SUBSTRING_FOR_DATE."(MAX(last_updated), 1, 19) AS last_updated FROM ttrss_feeds
+ WHERE owner_uid = " . $_SESSION['uid']);
+
+ $last_updated = $this->dbh->fetch_result($result, 0, "last_updated");
+ $last_updated = make_local_datetime($last_updated, false);
+
+ $reply['headlines']['content'] .= sprintf(__("Feeds last updated at %s"), $last_updated);
+
+ $result = $this->dbh->query("SELECT COUNT(id) AS num_errors
+ FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]);
+
+ $num_errors = $this->dbh->fetch_result($result, 0, "num_errors");
+
+ if ($num_errors > 0) {
+ $reply['headlines']['content'] .= " ";
+ $reply['headlines']['content'] .= "".
+ __('Some feeds have update errors (click for details)')." ";
+ }
+ $reply['headlines']['content'] .= "
";
+
+ $reply['headlines-info'] = array("count" => 0,
+ "vgroup_last_feed" => '',
+ "unread" => 0,
+ "disable_cache" => true);
+
+ return $reply;
+ }
+
+ private function generate_error_feed($error) {
+ $reply = array();
+
+ $reply['headlines']['id'] = -6;
+ $reply['headlines']['is_cat'] = false;
+
+ $reply['headlines']['toolbar'] = '';
+ $reply['headlines']['content'] = "
". $error . "
";
+
+ $reply['headlines-info'] = array("count" => 0,
+ "vgroup_last_feed" => '',
+ "unread" => 0,
+ "disable_cache" => true);
+
+ return $reply;
+ }
+
+ function quickAddFeed() {
+ print "
";
+ print "
";
+
+ print "
".__("Feed or site URL")."
";
+ print "
";
+
+ print "
+
";
+
+ print "
";
+
+ print "
";
+
+ if (get_pref('ENABLE_FEED_CATS')) {
+ print __('Place in category:') . " ";
+ print_feed_cat_select("cat", false, 'dojoType="dijit.form.Select"');
+ }
+
+ print "
";
+
+ print '
+
+
' . __('Available feeds') . '
+
'.
+ '
+
+ '.
+ '
';
+
+ print "
";
+
+
+ print "
+
+ ".
+ __('This feed requires authentication.')."
";
+
+ print "";
+
+ print "
+ ".__('Subscribe')." ";
+
+ if (!(defined('_DISABLE_FEED_BROWSER') && _DISABLE_FEED_BROWSER)) {
+ print "".__('More feeds')." ";
+ }
+
+ print "".__('Cancel')."
+
";
+
+ //return;
+ }
+
+ function feedBrowser() {
+ if (defined('_DISABLE_FEED_BROWSER') && _DISABLE_FEED_BROWSER) return;
+
+ $browser_search = $this->dbh->escape_string($_REQUEST["search"]);
+
+ print "
";
+ print "
";
+
+ print "
+
+
+
+
".__('Search')."
+
";
+
+ print "
+ " . __('Popular feeds') . "
+ " . __('Feed archive') . "
+ ";
+
+ print __("limit:");
+
+ print "
";
+
+ foreach (array(25, 50, 100, 200) as $l) {
+ $issel = ($l == $limit) ? "selected=\"1\"" : "";
+ print "$l ";
+ }
+
+ print " ";
+
+ print "
";
+
+ $owner_uid = $_SESSION["uid"];
+
+ require_once "feedbrowser.php";
+
+ print "
";
+ print make_feed_browser($search, 25);
+ print " ";
+
+ print "
+ ".__('Subscribe')."
+ ".__('Remove')."
+ ".__('Cancel')."
";
+
+ }
+
+ function search() {
+ $this->params = explode(":", $this->dbh->escape_string($_REQUEST["param"]), 2);
+
+ $active_feed_id = sprintf("%d", $this->params[0]);
+ $is_cat = $this->params[1] != "false";
+
+ print "
".__('Look for')."
";
+
+ print "
";
+
+ print " ";
+
+ print "
".__('Limit search to:')." ";
+
+ print "
+ ".__('All feeds')." ";
+
+ $feed_title = getFeedTitle($active_feed_id);
+
+ if (!$is_cat) {
+ $feed_cat_title = getFeedCatTitle($active_feed_id);
+ } else {
+ $feed_cat_title = getCategoryTitle($active_feed_id);
+ }
+
+ if ($active_feed_id && !$is_cat) {
+ print "$feed_title ";
+ } else {
+ print "".__('This feed')." ";
+ }
+
+ if ($is_cat) {
+ $cat_preselected = "selected=\"1\"";
+ }
+
+ if (get_pref('ENABLE_FEED_CATS') && ($active_feed_id > 0 || $is_cat)) {
+ print "$feed_cat_title ";
+ } else {
+ //print "".__('This category')." ";
+ }
+
+ print " ";
+
+ print "";
+
+ print "
";
+ }
+
+
+}
+?>
diff --git a/source/classes/handler.php b/source/classes/handler.php
new file mode 100644
index 0000000..b209320
--- /dev/null
+++ b/source/classes/handler.php
@@ -0,0 +1,24 @@
+dbh = Db::get();
+ $this->args = $args;
+ }
+
+ function csrf_ignore($method) {
+ return true;
+ }
+
+ function before($method) {
+ return true;
+ }
+
+ function after() {
+ return true;
+ }
+
+}
+?>
diff --git a/source/classes/handler/protected.php b/source/classes/handler/protected.php
new file mode 100644
index 0000000..4ce8653
--- /dev/null
+++ b/source/classes/handler/protected.php
@@ -0,0 +1,8 @@
+
diff --git a/source/classes/handler/public.php b/source/classes/handler/public.php
new file mode 100644
index 0000000..0bdc2de
--- /dev/null
+++ b/source/classes/handler/public.php
@@ -0,0 +1,976 @@
+dbh->num_rows($result) != 0) {
+ $ts = strtotime($this->dbh->fetch_result($result, 0, "date_entered"));
+
+ if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) &&
+ strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $ts) {
+ header('HTTP/1.0 304 Not Modified');
+ return;
+ }
+
+ $last_modified = gmdate("D, d M Y H:i:s", $ts) . " GMT";
+ header("Last-Modified: $last_modified", true);
+ }
+
+ $qfh_ret = queryFeedHeadlines($feed,
+ $limit, $view_mode, $is_cat, $search, $search_mode,
+ $date_sort_field, $offset, $owner_uid,
+ false, 0, false, true);
+
+
+ $result = $qfh_ret[0];
+ $feed_title = htmlspecialchars($qfh_ret[1]);
+ $feed_site_url = $qfh_ret[2];
+ $last_error = $qfh_ret[3];
+
+ $feed_self_url = get_self_url_prefix() .
+ "/public.php?op=rss&id=$feed&key=" .
+ get_feed_access_key($feed, false, $owner_uid);
+
+ if (!$feed_site_url) $feed_site_url = get_self_url_prefix();
+
+ if ($format == 'atom') {
+ $tpl = new MiniTemplator;
+
+ $tpl->readTemplateFromFile("templates/generated_feed.txt");
+
+ $tpl->setVariable('FEED_TITLE', $feed_title, true);
+ $tpl->setVariable('VERSION', VERSION, true);
+ $tpl->setVariable('FEED_URL', htmlspecialchars($feed_self_url), true);
+
+ if (PUBSUBHUBBUB_HUB && $feed == -2) {
+ $tpl->setVariable('HUB_URL', htmlspecialchars(PUBSUBHUBBUB_HUB), true);
+ $tpl->addBlock('feed_hub');
+ }
+
+ $tpl->setVariable('SELF_URL', htmlspecialchars(get_self_url_prefix()), true);
+ while ($line = $this->dbh->fetch_assoc($result)) {
+ $line["content_preview"] = truncate_string(strip_tags($line["content_preview"]), 100, '...');
+
+ foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) {
+ $line = $p->hook_query_headlines($line);
+ }
+
+ $tpl->setVariable('ARTICLE_ID',
+ htmlspecialchars($orig_guid ? $line['link'] :
+ get_self_url_prefix() .
+ "/public.php?url=" . urlencode($line['link'])), true);
+ $tpl->setVariable('ARTICLE_LINK', htmlspecialchars($line['link']), true);
+ $tpl->setVariable('ARTICLE_TITLE', htmlspecialchars($line['title']), true);
+ $tpl->setVariable('ARTICLE_EXCERPT', $line["content_preview"], true);
+
+ $content = sanitize($line["content"], false, $owner_uid);
+
+ if ($line['note']) {
+ $content = "
Article note: " . $line['note'] . "
" .
+ $content;
+ $tpl->setVariable('ARTICLE_NOTE', htmlspecialchars($line['note']), true);
+ }
+
+ $tpl->setVariable('ARTICLE_CONTENT', $content, true);
+
+ $tpl->setVariable('ARTICLE_UPDATED_ATOM',
+ date('c', strtotime($line["updated"])), true);
+ $tpl->setVariable('ARTICLE_UPDATED_RFC822',
+ date(DATE_RFC822, strtotime($line["updated"])), true);
+
+ $tpl->setVariable('ARTICLE_AUTHOR', htmlspecialchars($line['author']), true);
+
+ $tpl->setVariable('ARTICLE_SOURCE_LINK', htmlspecialchars($line['site_url']), true);
+ $tpl->setVariable('ARTICLE_SOURCE_TITLE', htmlspecialchars($line['feed_title']), true);
+
+ $tags = get_article_tags($line["id"], $owner_uid);
+
+ foreach ($tags as $tag) {
+ $tpl->setVariable('ARTICLE_CATEGORY', htmlspecialchars($tag), true);
+ $tpl->addBlock('category');
+ }
+
+ $enclosures = get_article_enclosures($line["id"]);
+
+ foreach ($enclosures as $e) {
+ $type = htmlspecialchars($e['content_type']);
+ $url = htmlspecialchars($e['content_url']);
+ $length = $e['duration'];
+
+ $tpl->setVariable('ARTICLE_ENCLOSURE_URL', $url, true);
+ $tpl->setVariable('ARTICLE_ENCLOSURE_TYPE', $type, true);
+ $tpl->setVariable('ARTICLE_ENCLOSURE_LENGTH', $length, true);
+
+ $tpl->addBlock('enclosure');
+ }
+
+ $tpl->addBlock('entry');
+ }
+
+ $tmp = "";
+
+ $tpl->addBlock('feed');
+ $tpl->generateOutputToString($tmp);
+
+ if (@!$_REQUEST["noxml"]) {
+ header("Content-Type: text/xml; charset=utf-8");
+ } else {
+ header("Content-Type: text/plain; charset=utf-8");
+ }
+
+ print $tmp;
+ } else if ($format == 'json') {
+
+ $feed = array();
+
+ $feed['title'] = $feed_title;
+ $feed['version'] = VERSION;
+ $feed['feed_url'] = $feed_self_url;
+
+ if (PUBSUBHUBBUB_HUB && $feed == -2) {
+ $feed['hub_url'] = PUBSUBHUBBUB_HUB;
+ }
+
+ $feed['self_url'] = get_self_url_prefix();
+
+ $feed['articles'] = array();
+
+ while ($line = $this->dbh->fetch_assoc($result)) {
+ $line["content_preview"] = truncate_string(strip_tags($line["content_preview"]), 100, '...');
+ foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_QUERY_HEADLINES) as $p) {
+ $line = $p->hook_query_headlines($line, 100);
+ }
+ $article = array();
+
+ $article['id'] = $line['link'];
+ $article['link'] = $line['link'];
+ $article['title'] = $line['title'];
+ $article['excerpt'] = $line["content_preview"];
+ $article['content'] = sanitize($line["content"], false, $owner_uid);
+ $article['updated'] = date('c', strtotime($line["updated"]));
+
+ if ($line['note']) $article['note'] = $line['note'];
+ if ($article['author']) $article['author'] = $line['author'];
+
+ $tags = get_article_tags($line["id"], $owner_uid);
+
+ if (count($tags) > 0) {
+ $article['tags'] = array();
+
+ foreach ($tags as $tag) {
+ array_push($article['tags'], $tag);
+ }
+ }
+
+ $enclosures = get_article_enclosures($line["id"]);
+
+ if (count($enclosures) > 0) {
+ $article['enclosures'] = array();
+
+ foreach ($enclosures as $e) {
+ $type = $e['content_type'];
+ $url = $e['content_url'];
+ $length = $e['duration'];
+
+ array_push($article['enclosures'], array("url" => $url, "type" => $type, "length" => $length));
+ }
+ }
+
+ array_push($feed['articles'], $article);
+ }
+
+ header("Content-Type: text/json; charset=utf-8");
+ print json_encode($feed);
+
+ } else {
+ header("Content-Type: text/plain; charset=utf-8");
+ print json_encode(array("error" => array("message" => "Unknown format")));
+ }
+ }
+
+ function getUnread() {
+ $login = $this->dbh->escape_string($_REQUEST["login"]);
+ $fresh = $_REQUEST["fresh"] == "1";
+
+ $result = $this->dbh->query("SELECT id FROM ttrss_users WHERE login = '$login'");
+
+ if ($this->dbh->num_rows($result) == 1) {
+ $uid = $this->dbh->fetch_result($result, 0, "id");
+
+ print getGlobalUnread($uid);
+
+ if ($fresh) {
+ print ";";
+ print getFeedArticles(-3, false, true, $uid);
+ }
+
+ } else {
+ print "-1;User not found";
+ }
+
+ }
+
+ function getProfiles() {
+ $login = $this->dbh->escape_string($_REQUEST["login"]);
+
+ $result = $this->dbh->query("SELECT ttrss_settings_profiles.* FROM ttrss_settings_profiles,ttrss_users
+ WHERE ttrss_users.id = ttrss_settings_profiles.owner_uid AND login = '$login' ORDER BY title");
+
+ print "
";
+
+ print "" . __("Default profile") . " ";
+
+ while ($line = $this->dbh->fetch_assoc($result)) {
+ $id = $line["id"];
+ $title = $line["title"];
+
+ print "$title ";
+ }
+
+ print " ";
+ }
+
+ function pubsub() {
+ $mode = $this->dbh->escape_string($_REQUEST['hub_mode']);
+ $feed_id = (int) $this->dbh->escape_string($_REQUEST['id']);
+ $feed_url = $this->dbh->escape_string($_REQUEST['hub_topic']);
+
+ if (!PUBSUBHUBBUB_ENABLED) {
+ header('HTTP/1.0 404 Not Found');
+ echo "404 Not found";
+ return;
+ }
+
+ // TODO: implement hub_verifytoken checking
+
+ $result = $this->dbh->query("SELECT feed_url FROM ttrss_feeds
+ WHERE id = '$feed_id'");
+
+ if ($this->dbh->num_rows($result) != 0) {
+
+ $check_feed_url = $this->dbh->fetch_result($result, 0, "feed_url");
+
+ if ($check_feed_url && ($check_feed_url == $feed_url || !$feed_url)) {
+ if ($mode == "subscribe") {
+
+ $this->dbh->query("UPDATE ttrss_feeds SET pubsub_state = 2
+ WHERE id = '$feed_id'");
+
+ print $_REQUEST['hub_challenge'];
+ return;
+
+ } else if ($mode == "unsubscribe") {
+
+ $this->dbh->query("UPDATE ttrss_feeds SET pubsub_state = 0
+ WHERE id = '$feed_id'");
+
+ print $_REQUEST['hub_challenge'];
+ return;
+
+ } else if (!$mode) {
+
+ // Received update ping, schedule feed update.
+ //update_rss_feed($feed_id, true, true);
+
+ $this->dbh->query("UPDATE ttrss_feeds SET
+ last_update_started = '1970-01-01',
+ last_updated = '1970-01-01' WHERE id = '$feed_id'");
+
+ }
+ } else {
+ header('HTTP/1.0 404 Not Found');
+ echo "404 Not found";
+ }
+ } else {
+ header('HTTP/1.0 404 Not Found');
+ echo "404 Not found";
+ }
+
+ }
+
+ function logout() {
+ logout_user();
+ header("Location: index.php");
+ }
+
+ function share() {
+ $uuid = $this->dbh->escape_string($_REQUEST["key"]);
+
+ $result = $this->dbh->query("SELECT ref_id, owner_uid FROM ttrss_user_entries WHERE
+ uuid = '$uuid'");
+
+ if ($this->dbh->num_rows($result) != 0) {
+ header("Content-Type: text/html");
+
+ $id = $this->dbh->fetch_result($result, 0, "ref_id");
+ $owner_uid = $this->dbh->fetch_result($result, 0, "owner_uid");
+
+ $article = format_article($id, false, true, $owner_uid);
+
+ print_r($article['content']);
+
+ } else {
+ print "Article not found.";
+ }
+
+ }
+
+ function rss() {
+ $feed = $this->dbh->escape_string($_REQUEST["id"]);
+ $key = $this->dbh->escape_string($_REQUEST["key"]);
+ $is_cat = sql_bool_to_bool($_REQUEST["is_cat"]);
+ $limit = (int)$this->dbh->escape_string($_REQUEST["limit"]);
+ $offset = (int)$this->dbh->escape_string($_REQUEST["offset"]);
+
+ $search = $this->dbh->escape_string($_REQUEST["q"]);
+ $search_mode = $this->dbh->escape_string($_REQUEST["smode"]);
+ $view_mode = $this->dbh->escape_string($_REQUEST["view-mode"]);
+ $order = $this->dbh->escape_string($_REQUEST["order"]);
+
+ $format = $this->dbh->escape_string($_REQUEST['format']);
+ $orig_guid = !sql_bool_to_bool($_REQUEST["no_orig_guid"]);
+
+ if (!$format) $format = 'atom';
+
+ if (SINGLE_USER_MODE) {
+ authenticate_user("admin", null);
+ }
+
+ $owner_id = false;
+
+ if ($key) {
+ $result = $this->dbh->query("SELECT owner_uid FROM
+ ttrss_access_keys WHERE access_key = '$key' AND feed_id = '$feed'");
+
+ if ($this->dbh->num_rows($result) == 1)
+ $owner_id = $this->dbh->fetch_result($result, 0, "owner_uid");
+ }
+
+ if ($owner_id) {
+ $this->generate_syndicated_feed($owner_id, $feed, $is_cat, $limit,
+ $offset, $search, $search_mode, $view_mode, $format, $order, $orig_guid);
+ } else {
+ header('HTTP/1.1 403 Forbidden');
+ }
+ }
+
+ function updateTask() {
+ PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", $op);
+ }
+
+ function housekeepingTask() {
+ PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING, "hook_house_keeping", $op);
+ }
+
+ function globalUpdateFeeds() {
+ RPC::updaterandomfeed_real($this->dbh);
+
+ PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", $op);
+ }
+
+ function sharepopup() {
+ if (SINGLE_USER_MODE) {
+ login_sequence();
+ }
+
+ header('Content-Type: text/html; charset=utf-8');
+ print "
Tiny Tiny RSS ";
+
+ stylesheet_tag("css/utility.css");
+ javascript_tag("lib/prototype.js");
+ javascript_tag("lib/scriptaculous/scriptaculous.js?load=effects,dragdrop,controls");
+ print "
+ ";
+
+ $action = $_REQUEST["action"];
+
+ if ($_SESSION["uid"]) {
+
+ if ($action == 'share') {
+
+ $title = $this->dbh->escape_string(strip_tags($_REQUEST["title"]));
+ $url = $this->dbh->escape_string(strip_tags($_REQUEST["url"]));
+ $content = $this->dbh->escape_string(strip_tags($_REQUEST["content"]));
+ $labels = $this->dbh->escape_string(strip_tags($_REQUEST["labels"]));
+
+ Article::create_published_article($title, $url, $content, $labels,
+ $_SESSION["uid"]);
+
+ print "";
+
+ } else {
+ $title = htmlspecialchars($_REQUEST["title"]);
+ $url = htmlspecialchars($_REQUEST["url"]);
+
+ ?>
+
+
+
+
+
+
+ dbh->escape_string($_POST["login"]);
+ $password = $_POST["password"];
+ $remember_me = $_POST["remember_me"];
+
+ if ($remember_me) {
+ session_set_cookie_params(SESSION_COOKIE_LIFETIME);
+ } else {
+ session_set_cookie_params(0);
+ }
+
+ @session_start();
+
+ if (authenticate_user($login, $password)) {
+ $_POST["password"] = "";
+
+ if (get_schema_version() >= 120) {
+ $_SESSION["language"] = get_pref("USER_LANGUAGE", $_SESSION["uid"]);
+ }
+
+ $_SESSION["ref_schema_version"] = get_schema_version(true);
+ $_SESSION["bw_limit"] = !!$_POST["bw_limit"];
+
+ if ($_POST["profile"]) {
+
+ $profile = $this->dbh->escape_string($_POST["profile"]);
+
+ $result = $this->dbh->query("SELECT id FROM ttrss_settings_profiles
+ WHERE id = '$profile' AND owner_uid = " . $_SESSION["uid"]);
+
+ if ($this->dbh->num_rows($result) != 0) {
+ $_SESSION["profile"] = $profile;
+ }
+ }
+ } else {
+ $_SESSION["login_error_msg"] = __("Incorrect username or password");
+ user_error("Failed login attempt from {$_SERVER['REMOTE_ADDR']}", E_USER_WARNING);
+ }
+
+ if ($_REQUEST['return']) {
+ header("Location: " . $_REQUEST['return']);
+ } else {
+ header("Location: " . SELF_URL_PATH);
+ }
+ }
+ }
+
+ function subscribe() {
+ if (SINGLE_USER_MODE) {
+ login_sequence();
+ }
+
+ if ($_SESSION["uid"]) {
+
+ $feed_url = $this->dbh->escape_string(trim($_REQUEST["feed_url"]));
+
+ header('Content-Type: text/html; charset=utf-8');
+ print "
+
+
Tiny Tiny RSS
+
+
+
+
+
+
".__("Subscribe to feed...")." ";
+
+ $rc = subscribe_to_feed($feed_url);
+
+ switch ($rc['code']) {
+ case 0:
+ print_warning(T_sprintf("Already subscribed to
%s .", $feed_url));
+ break;
+ case 1:
+ print_notice(T_sprintf("Subscribed to
%s .", $feed_url));
+ break;
+ case 2:
+ print_error(T_sprintf("Could not subscribe to
%s .", $feed_url));
+ break;
+ case 3:
+ print_error(T_sprintf("No feeds found in
%s .", $feed_url));
+ break;
+ case 4:
+ print_notice(__("Multiple feed URLs found."));
+ $feed_urls = $rc["feeds"];
+ break;
+ case 5:
+ print_error(T_sprintf("Could not subscribe to
%s .
Can't download the Feed URL.", $feed_url));
+ break;
+ }
+
+ if ($feed_urls) {
+
+ print "
";
+ }
+
+ $tp_uri = get_self_url_prefix() . "/prefs.php";
+ $tt_uri = get_self_url_prefix();
+
+ if ($rc['code'] <= 2){
+ $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE
+ feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]);
+
+ $feed_id = $this->dbh->fetch_result($result, 0, "id");
+ } else {
+ $feed_id = 0;
+ }
+ print "
";
+
+ if ($feed_id) {
+ print "
";
+ }
+
+ print "
";
+
+ print "
";
+
+ } else {
+ render_login_form();
+ }
+ }
+
+ function subscribe2() {
+ $feed_url = $this->dbh->escape_string(trim($_REQUEST["feed_url"]));
+ $cat_id = $this->dbh->escape_string($_REQUEST["cat_id"]);
+ $from = $this->dbh->escape_string($_REQUEST["from"]);
+ $feed_urls = array();
+
+ /* only read authentication information from POST */
+
+ $auth_login = $this->dbh->escape_string(trim($_POST["auth_login"]));
+ $auth_pass = $this->dbh->escape_string(trim($_POST["auth_pass"]));
+
+ $rc = subscribe_to_feed($feed_url, $cat_id, $auth_login, $auth_pass);
+
+ switch ($rc) {
+ case 1:
+ print_notice(T_sprintf("Subscribed to
%s .", $feed_url));
+ break;
+ case 2:
+ print_error(T_sprintf("Could not subscribe to
%s .", $feed_url));
+ break;
+ case 3:
+ print_error(T_sprintf("No feeds found in
%s .", $feed_url));
+ break;
+ case 0:
+ print_warning(T_sprintf("Already subscribed to
%s .", $feed_url));
+ break;
+ case 4:
+ print_notice(__("Multiple feed URLs found."));
+ $contents = @fetch_file_contents($url, false, $auth_login, $auth_pass);
+ if (is_html($contents)) {
+ $feed_urls = get_feeds_from_html($url, $contents);
+ }
+ break;
+ case 5:
+ print_error(T_sprintf("Could not subscribe to
%s .
Can't download the Feed URL.", $feed_url));
+ break;
+ }
+
+ if ($feed_urls) {
+ print "
";
+ }
+
+ $tp_uri = get_self_url_prefix() . "/prefs.php";
+ $tt_uri = get_self_url_prefix();
+
+ if ($rc <= 2){
+ $result = $this->dbh->query("SELECT id FROM ttrss_feeds WHERE
+ feed_url = '$feed_url' AND owner_uid = " . $_SESSION["uid"]);
+
+ $feed_id = $this->dbh->fetch_result($result, 0, "id");
+ } else {
+ $feed_id = 0;
+ }
+
+ print "
";
+
+ if ($feed_id) {
+ print "
";
+ }
+
+ print "
";
+
+ print "