[
  {
    "path": ".gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files for more about ignoring files.\n#\n# If you find yourself ignoring temporary files generated by your text editor\n# or operating system, you probably want to add a global ignore instead:\n#   git config --global core.excludesfile '~/.gitignore_global'\n\n*.rbc\ncapybara-*.html\n.rspec\n/log\n/tmp\n/db/*.sqlite3\n/public/system\n/public/uploads\n/db/*.sqlite3-journal\n/coverage/\n/spec/tmp\n**.orig\nrerun.txt\npickle-email-*.html\n\n# Ignore all .idea files generated by RubyMine\n*.idea/\n\n# TODO Comment out these rules if you are OK with secrets being uploaded to the repo\nconfig/initializers/secret_token.rb\n\n## Environment normalisation:\n/.bundle\n/vendor/bundle\n\n# these should all be checked in to normalise the environment:\n# Gemfile.lock, .ruby-version, .ruby-gemset\n\n# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:\n.rvmrc\n\n# if using bower-rails ignore default bower_components path bower.json files\n/vendor/assets/bower_components\n*.bowerrc\nbower.json\n# Ignore pow environment settings\n.powenv\nnode_modules/\n"
  },
  {
    "path": "Gemfile",
    "content": "source 'https://rubygems.org'\nruby '~> 2.3.1'\n\n# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'\ngem 'rails', '5.0.2'\n\n# Use SCSS for stylesheets\ngem 'sass-rails', '~> 5.0.0'\n# Use Uglifier as compressor for JavaScript assets\ngem 'uglifier', '>= 1.3.0'\n\n# Use jquery as the JavaScript library\ngem 'jquery-rails'\ngem 'merit'\n# Used to implement at.js for auto complete mentions/emojis\ngem 'jquery-atwho-rails'\n\n# Use twitter bootstrap sass\ngem 'bootstrap-sass', '~> 3.2.0'\ngem 'autoprefixer-rails'\ngem 'font-awesome-rails'\n\ngroup :development do\n  gem 'spring'\n  gem 'better_errors'\n  gem 'binding_of_caller'\n  gem 'letter_opener'\n  gem 'guard'\n  gem 'guard-rspec', '~> 4.2.8'\nend\n\ngroup :development, :test do\n  gem 'puma'\n  gem 'sqlite3'\nend\n\ngroup :production do\n  gem 'pg'\n  gem 'unicorn'\n  gem 'rails_12factor'\n  gem 'fog'\n  gem 'fog-aws'\nend\n\ngem 'devise'\ngem 'carrierwave'\ngem 'friendly_id', '~> 5.0'\n\ngem 'will_paginate', '~> 3.1.0'\ngem 'public_activity'\n\ngem 'acts_as_votable', '~> 0.10.0'\ngem 'acts_as_commentable'\ngem 'acts_as_follower'\ngem 'counter_culture', '~> 0.1.33'\n\ngem 'faker'\ngem 'populator'\ngem 'auto_html', '~>1.6.4'\ngem 'sanitize'\n\ngem 'active_model_serializers'\n\n# Use ActiveModel has_secure_password\n# gem 'bcrypt', '~> 3.1.7'\n\n# Use unicorn as the app server\n# gem 'unicorn'\n\n# Use Capistrano for deployment\n# gem 'capistrano-rails', group: :development\n\n# Use debugger\n# gem 'debugger', group: [:development, :test]\n"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n                            NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    {description}\n    Copyright (C) {year}  {fullname}\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License along\n    with this program; if not, write to the Free Software Foundation, Inc.,\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  {signature of Ty Coon}, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n\n"
  },
  {
    "path": "README.md",
    "content": "## Socify\n\nSocify is an open source social networking platform written in Ruby on Rails. Here is the blog post: [How to build a social network using Rails](https://medium.com/@sudharshanmuralidharaniyer/eb31da569233).\n\n[![Heroku](http://heroku-badge.herokuapp.com/?app=socifyapp&style=flat)](http://socifyapp.herokuapp.com)\n\nDo you want to see it in action? Here is a working version deployed to heroku [http://socifyapp.herokuapp.com](http://socifyapp.herokuapp.com)\n\n### UPDATE\n\nSince my cloudinary free tier hit a bandwidth overload. So had to switch to AWS. If you plan on deploying to production please set the AWS key and secret as environment variables. Or you can checkout the older version which uses cloudinary \nhttps://github.com/sudharti/socify/tree/930b2f7c6a6eb6b442189dc6237765dbf16d461c\n\n### UPDATE #2\n\nUpdated the Rails version to 5.0. Thanks to [@briankung](https://github.com/briankung) for the Pull Request. There are some more things to be upgraded which will be done shortly. Refer this for the list of changes to be done https://hashrocket.com/blog/posts/how-to-upgrade-to-rails-5.\n\n### What it uses?\n\n* [Ruby on Rails](https://github.com/rails/rails)\n* [Bootstrap](https://github.com/twbs/bootstrap-sass)\n* [Devise](https://github.com/plataformatec/devise)\n* [Public Activity](https://github.com/chaps-io/public_activity)\n\n\n### How do I get set up?\n\nTo set it up on your local machine here is what you need to do. Install Ruby & Rails. Clone this repo using the following command:\n\n```\ngit clone https://github.com/sudharti/socify\ncd socify\n```\nThen resolve dependencies using bundler:\n\n```\nbundle install\n```\n\nRun Migrations:\n\n```\nrake db:migrate\n```\n\nRun rails using\n\n```\nrails server\n```\n\n### Populate Mock data\nTo test the app with mock data by running the following rake task:\n\n```\nrake fill:data\n```\n\nThis will create records with values from faker & populator gems. Also here are the test user credentials:\n\n* email: test@socify.com\n* password: password\n\n### Screenshots\n![index](https://cloud.githubusercontent.com/assets/1825853/8845551/daa4d51c-30e5-11e5-8d65-171a06fa31e2.png)\n![home](https://cloud.githubusercontent.com/assets/1825853/8845431/b5a5de74-30e4-11e5-8a80-00ebc59c2804.png)\n![profile](https://cloud.githubusercontent.com/assets/1825853/8845432/b5a61718-30e4-11e5-8b1f-ecd401404c31.png)\n![post](https://cloud.githubusercontent.com/assets/1825853/8845433/b5a5fe86-30e4-11e5-9ebf-312e00153768.png)\n![find_friends](https://cloud.githubusercontent.com/assets/1825853/8845434/b5a657d2-30e4-11e5-807d-1045e754b02d.png)\n\n\n### Pull Requests\n\n* Fork this repo\n* Make changes to code\n* Send Pull Request\n\n### Issues\nIf you find any issue with the app please do raise an issue here https://github.com/sudharti/socify/issues\n\n### License\nThis project is Licensed under the [GNU GPL V2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html). See  [LICENSE](https://github.com/sudharti/socify/blob/master/LICENSE) for more info.\n"
  },
  {
    "path": "Rakefile",
    "content": "# Add your own tasks in files placed in lib/tasks ending in .rake,\n# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.\n\nrequire File.expand_path('../config/application', __FILE__)\n\nRails.application.load_tasks\n"
  },
  {
    "path": "app/assets/images/.keep",
    "content": ""
  },
  {
    "path": "app/assets/javascripts/application.js",
    "content": "// This is a manifest file that'll be compiled into application.js, which will include all the files\n// listed below.\n//\n// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,\n// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.\n//\n// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the\n// compiled file.\n//\n// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details\n// about supported directives.\n//\n//= require jquery\n//= require jquery.atwho\n//= require jquery_ujs\n//= require bootstrap\n//= require bindWithDelay\n//= require moment.min\n//= require fullcalendar.min\n//= require jquery.datetimepicker\n//= require_tree .\n\n$(document).ready(function () {\n  $(\"#event_event_datetime\").datetimepicker({format: 'Y/m/d H:i'});\n  $(\"#user_dob\").datetimepicker({timepicker: false, format: 'Y/m/d', maxDate: '0'});\n});\n"
  },
  {
    "path": "app/assets/javascripts/comments.js",
    "content": "// Place all the behaviors and hooks related to the matching controller here.\n// All this logic will automatically be available in application.js.\n\n$(document).ready(function() {\n  $('#new_comment').submit(function() {\n    $('#comment_text').val($('#comment-text').html());\n    $('#comment-text').html('');\n  });\n});\n"
  },
  {
    "path": "app/assets/javascripts/events.js",
    "content": "// Place all the behaviors and hooks related to the matching controller here.\n// All this logic will automatically be available in application.js.\n$(document).ready(function () {\n  var friends_calendar = $('#calendar').fullCalendar({\n    defaultView: 'month',\n    events: {\n      url: '/events/calendar',\n      type: 'GET',\n      error: function () {\n        alert('There was an error while fetching events.');\n      }\n    }\n  });\n});\n"
  },
  {
    "path": "app/assets/javascripts/follows.js",
    "content": "// Place all the behaviors and hooks related to the matching controller here.\n// All this logic will automatically be available in application.js.\n"
  },
  {
    "path": "app/assets/javascripts/home.js",
    "content": "// Place all the behaviors and hooks related to the matching controller here.\n// All this logic will automatically be available in application.js.\nvar readURL = function(input, preview) {\n  if (input.files && input.files[0]) {\n    var reader = new FileReader();\n    reader.onload = function (e) {\n      $(preview).parent().removeClass('hidden');\n      $(preview).attr('src', e.target.result);\n    }\n    reader.readAsDataURL(input.files[0]);\n  }\n};\n\n$(document).ready(function(){\n\n  var preview = \"#img-preview > img\";\n\n  $(\"#post-attachment\").click(function(){\n    $(\"#post_attachment\").click();\n  });\n\n  $('#post_attachment').change(function(){\n    readURL(this, preview);\n  });\n\n});"
  },
  {
    "path": "app/assets/javascripts/likes.js",
    "content": "// Place all the behaviors and hooks related to the matching controller here.\n// All this logic will automatically be available in application.js.\n"
  },
  {
    "path": "app/assets/javascripts/posts.js",
    "content": "// Place all the behaviors and hooks related to the matching controller here.\n// All this logic will automatically be available in application.js.\n$(document).ready(function () {\n  if ($(\".pagination\").size() > 0) {\n    $(\".pagination\").hide();\n    $(\"#endless-scroll\").removeClass(\"hidden\");\n    $(window).bindWithDelay(\"scroll\", function () {\n      var url = $(\"a.next_page\").attr(\"href\");\n      if (url && $(window).scrollTop() > $(document).height() - $(window).height() - 50) {\n        $.getScript(url);\n      }\n    }, 150);\n  }\n\n  $('#post-content').html($('#post_content').val());\n\n  $('.input-mentionable').atwho({at: '@', data: $('#mentionable-data').data('content'), insertTpl: '<a href=\"/users/${id}\">${name}</a>', displayTpl: '<li data-id=\"${id}\"><span>${name}</span></li>', limit: 15});\n\n  $('.post_form').submit(function () {\n    $('#post_content').val($('#post-content').html());\n    $('#post-content').html('');\n  });\n});\n"
  },
  {
    "path": "app/assets/javascripts/users.js",
    "content": "// Place all the behaviors and hooks related to the matching controller here.\n// All this logic will automatically be available in application.js.\n"
  },
  {
    "path": "app/assets/stylesheets/application.css.scss",
    "content": "/*\n * This is a manifest file that'll be compiled into application.css, which will include all the files\n * listed below.\n *\n * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,\n * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.\n *\n * You're free to add application-wide styles to this file and they'll appear at the bottom of the\n * compiled file so the styles you add here take precedence over styles defined in any styles\n * defined in the other CSS/SCSS files in this directory. It is generally better to create a new\n * file per style scope.\n *\n */\n@import \"bootstrap-sprockets\";\n@import \"bootstrap\";\n@import \"font-awesome\";\n@import \"variables\";\n@import \"jquery.datetimepicker\";\n@import \"jquery.atwho\";\n@import \"fullcalendar.min\";\n@import \"fontello-embedded\";\n@import \"*\";\n"
  },
  {
    "path": "app/assets/stylesheets/comments.css.scss",
    "content": "// Place all the styles related to the comments controller here.\n// They will automatically be included in application.css.\n// You can use Sass (SCSS) here: http://sass-lang.com/\n\n.activity-comment, .activity-like, .comment, .like {\n  .content {\n    border: 1px solid $border-color;\n    margin-left: 75px;\n    margin-right: 15px;\n    padding: 5px 15px;\n    .text {\n      font-size: $default-font-size;\n    }\n  }\n\n  .created-at {\n    margin-left: 75px;\n  }\n}"
  },
  {
    "path": "app/assets/stylesheets/events.css.scss",
    "content": "// Place all the styles related to the events controller here.\n// They will automatically be included in application.css.\n// You can use Sass (SCSS) here: http://sass-lang.com/\n.activity-event, .event {\n  .content {\n    margin-left: 60px;\n    padding: 0px 15px;\n  }\n}"
  },
  {
    "path": "app/assets/stylesheets/follows.css.scss",
    "content": "// Place all the styles related to the follows controller here.\n// They will automatically be included in application.css.\n// You can use Sass (SCSS) here: http://sass-lang.com/\n\n.activity-follow {\n\n  .action {\n    font-size: $default-font-size;\n    margin-left: 2px;\n  }\n\n  .followee {\n    margin-left: 75px;\n  }\n\n  .created-at {\n    margin-left: 75px;\n  }\n}"
  },
  {
    "path": "app/assets/stylesheets/home.css.scss",
    "content": "// Place all the styles related to the home controller here.\n// They will automatically be included in application.css.\n// You can use Sass (SCSS) here: http://sass-lang.com/\n\n#newsfeed > h4 {\n  text-align: center;\n  padding: 10px;\n}\n\n#intro {\n  margin-top: 125px;\n  padding: 10px 50px;\n  text-align: center;\n  h1 {\n    color: $navbar-color;\n    font-weight: 300 !important;\n  }\n\n  p {\n    font-size: 1.65rem;\n    line-height: 3rem;\n  }\n}\n\n#img-preview {\n  padding: 5px;\n  display: inline-block;\n  border: 1px solid $border-color;\n  img {\n    width: 35px;\n    height: 35px;\n  }\n}\n"
  },
  {
    "path": "app/assets/stylesheets/likes.css.scss",
    "content": "// Place all the styles related to the likes controller here.\n// They will automatically be included in application.css.\n// You can use Sass (SCSS) here: http://sass-lang.com/\n"
  },
  {
    "path": "app/assets/stylesheets/posts.css.scss",
    "content": "// Place all the styles related to the posts controller here.\n// They will automatically be included in application.css.\n// You can use Sass (SCSS) here: http://sass-lang.com/\n\n.activity-post,\n.post {\n  .content {\n    margin-left: 60px;\n    padding: 5px 15px;\n\n    .text {\n      font-size: $default-font-size;\n    }\n\n    img {\n      width: 100%;\n    }\n  }\n}\n\n.attachment {\n  border: 1px solid $border-color;\n  padding: 5px;\n  margin-top: 10px;\n\n  img {\n    width: 100%;\n  }\n}\n"
  },
  {
    "path": "app/assets/stylesheets/styles.css.scss",
    "content": "@import url(https://fonts.googleapis.com/css?family=Noto+Sans);\n@import url(https://fonts.googleapis.com/css?family=Montserrat);\n\nbody {\n  padding-top: 100px;\n  background: $bg-color;\n  font-family: 'Noto Sans', sans-serif;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-family: 'Montserrat', sans-serif;\n}\n\n.navbar {\n  border: none;\n  background-color: $navbar-color;\n}\n\n.navbar-brand {\n  font-weight: 600;\n}\n\n.navbar-brand,\n.navbar-default .navbar-nav > li > a {\n  font-family: 'Montserrat';\n  color: white !important;\n\n  &:hover {\n    color: $bg-color !important;\n  };\n}\n\n.avatar {\n  border: 1px solid $border-color;\n  width: 50px;\n  height: 50px;\n}\n\n.cover {\n  width: 100%;\n  height: 400px;\n  background-repeat: no-repeat;\n  background-attachment: fixed;\n  background-position: center;\n}\n\n.activity {\n  background: white;\n  border: 1px solid $border-color;\n  border-radius: 3px;\n  padding: 10px;\n  margin: 10px;\n}\n\n.name {\n  display: inline-block;\n  font-size: $default-font-size;\n  margin-left: 10px;\n}\n\n.action {\n  font-size: $default-font-size;\n  margin-left: 2px;\n}\n\n.created-at {\n  color: $light-text-color;\n  font-size: $small-font-size;\n  margin-top: 15px;\n}\n\n.btn {\n  font-family: 'Montserrat', sans-serif;\n  padding: 10px 20px;\n}\n\n.btn-primary {\n  background-color: $navbar-color;\n}\n\n.btn-sm {\n  padding: 7px 15px;\n  border: none;\n}\n\ndiv.editable {\n  height: 65px;\n  max-height: 65px;\n  overflow-y: scroll;\n}\n\ndiv.editable,\ninput[type=\"email\"],\ninput[type=\"password\"],\ninput[type=\"text\"],\ntextarea {\n  box-shadow: none !important;\n  border: 2px solid #ccc !important;\n\n  &:focus {\n    border: 2px solid #888 !important;\n  };\n}\n\n[placeholder]:empty:before {\n  content: attr(placeholder);\n  color: $light-text-color;\n}\n\n[placeholder]:empty:focus:before {\n  content: \"\";\n}\n\n.alert-fixed {\n  position: fixed;\n  top: 0;\n  left: 0;\n  margin-left: 32%;\n  margin-top: 30px;\n  width: 450px;\n  z-index: 10000;\n  text-align: center;\n  padding: 5px 25px;\n}\n\n.liked {\n  color: $liked-color !important;\n}\n\n.points span {\n  padding: 5px;\n  background-color: $bg-color;\n  color: $light-text-color;\n  display: inline-block;\n  font-size: $small-font-size;\n  margin-top: 10px;\n  margin-right: 10px;\n}\n\n.activity-event,\n.activity-post,\n.event,\n.post {\n  .actions {\n    margin-top: 10px;\n    padding-top: 10px;\n    border-top: 1px solid $border-color;\n\n    a,\n    button {\n      font-family: 'Montserrat', sans-serif;\n      background-color: $border-color;\n      color: #555;\n\n      i {\n        margin-right: 5px;\n      }\n    }\n  }\n}\n\n#links,\n#user-info {\n  h5 {\n    border-bottom: 1px solid $border-color;\n    padding: 15px 10px;\n    margin: 0;\n  }\n\n  i {\n    font-size: 1.75rem;\n    margin-right: 20px;\n  }\n}\n\np {\n  font-size: 1.65rem;\n  line-height: 3rem;\n}\n\n.atwho-view .cur {\n  background: $navbar-color;\n}\n\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:focus,\n.navbar-default .navbar-nav > .open > a:hover {\n  background: darken($navbar-color, 10%);\n}\n\n.dropdown-menu > li > a {\n  padding: 10px 30px;\n}\n"
  },
  {
    "path": "app/assets/stylesheets/users.css.scss",
    "content": "// Place all the styles related to the users controller here.\n// They will automatically be included in application.css.\n// You can use Sass (SCSS) here: http://sass-lang.com/\n\n.well {\n  background-color: white;\n}"
  },
  {
    "path": "app/assets/stylesheets/variables.css.scss",
    "content": "$navbar-color: #005686;\n$border-color: #e0e0e0;\n$liked-color: #2a6496;\n$bg-color: #f0f0f0;\n$light-text-color: #808080;\n$default-font-size: 1.5rem;\n$small-font-size: 1.25rem;"
  },
  {
    "path": "app/controllers/application_controller.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass ApplicationController < ActionController::Base\n  # Prevent CSRF attacks by raising an exception.\n  # For APIs, you may want to use :null_session instead.\n  protect_from_forgery with: :exception\n\n  before_action :configure_permitted_parameters, if: :devise_controller?\n\n  protected\n  def configure_permitted_parameters\n    devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :password_confirmation])\n    devise_parameter_sanitizer.permit(:sign_in, keys: [:email, :remember_me])\n  end\n\n  def render_404\n    respond_to do |format|\n      format.html { render :file => \"#{Rails.root}/public/404\", :layout => false, :status => :not_found }\n    end\n  end\n\n  include PublicActivity::StoreController\nend\n"
  },
  {
    "path": "app/controllers/comments_controller.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass CommentsController < ApplicationController\n  before_action :authenticate_user!\n  before_action :find_commentable, only: :create\n  respond_to :js\n\n  def create\n    @comment = @commentable.comments.new do |comment|\n      comment.comment = params[:comment_text]\n      comment.user = current_user\n    end\n    @comment.save\n  end\n\n  def destroy\n    @comment = current_user.comments.find(params[:id])\n    @comment_id = params[:id]\n    @comment.destroy\n  end\n\n  private\n  def find_commentable\n    @commentable_type = params[:commentable_type].classify\n    @commentable = @commentable_type.constantize.find(params[:commentable_id])\n  end\nend\n"
  },
  {
    "path": "app/controllers/concerns/.keep",
    "content": ""
  },
  {
    "path": "app/controllers/events_controller.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass EventsController < ApplicationController\n  before_action :set_user\n  before_action :authenticate_user!\n  before_action :set_event, only: [:edit, :update, :show, :destroy]\n\n  def new\n    @event = Event.new\n  end\n\n  def create\n    @event = current_user.events.new(event_params)\n    if @event.save\n      redirect_to root_path\n    else\n      render 'new', notice: @event.errors.full_messages.first\n    end\n  end\n\n  def edit\n    @event.event_datetime = @event.event_datetime.strftime(\"%Y/%m/%d %H:%M\")\n  end\n\n  def show\n    @comments = @event.comments\n  end\n\n  def update\n    @event.update(event_params)\n    redirect_to @event\n  end\n\n  def destroy\n    @event.destroy\n    respond_to do |format|\n      format.js\n      format.html { redirect_to root_path }\n    end\n  end\n\n  def calendar\n    if request.xhr?\n      friend_events = Event.select(\"events.*\").joins(\"INNER JOIN follows ON events.user_id = follows.followable_id\").where(\"follows.follower_id = #{current_user.id} AND follows.followable_type ='User'\")\n      current_user_events = current_user.events\n      @events = Event.from(\"(#{friend_events.to_sql} UNION #{current_user_events.to_sql}) as events\").where(\"events.event_datetime BETWEEN '#{params[:start]}' AND '#{params[:end]}'\")\n    end\n    respond_to do |format|\n      format.html\n      format.json { render :json => @events, each_serializer: EventCalendarSerializer }\n    end\n  end\n\n  private\n  def event_params\n    params.require(:event).permit(:name, :event_datetime)\n  end\n\n  def set_event\n    @event = Event.find_by(id: params[:id])\n    render_404 and return unless @event && User.find_by(id: @event.user_id)\n  end\n\n  def set_user\n    @user = current_user\n  end\nend\n"
  },
  {
    "path": "app/controllers/follows_controller.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass FollowsController < ApplicationController\n  before_action :authenticate_user!\n  respond_to :js\n\n  def create\n    @user = User.find(params[:user_id])\n    current_user.follow(@user)\n  end\n\n  def destroy\n    @user = User.find(params[:user_id])\n    current_user.stop_following(@user)\n  end\nend\n"
  },
  {
    "path": "app/controllers/home_controller.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass HomeController < ApplicationController\n  before_action :set_user, except: :front\n  respond_to :html, :js\n\n  def index\n    @post = Post.new\n    @friends = @user.all_following.unshift(@user)\n    @activities = PublicActivity::Activity.where(owner_id: @friends).order(created_at: :desc).paginate(page: params[:page], per_page: 10)\n  end\n\n  def front\n    @activities = PublicActivity::Activity.joins(\"INNER JOIN users ON activities.owner_id = users.id\").order(created_at: :desc).paginate(page: params[:page], per_page: 10)\n  end\n\n  def find_friends\n    @friends = @user.all_following\n    @users =  User.where.not(id: @friends.unshift(@user)).paginate(page: params[:page])\n  end\n\n  private\n  def set_user\n    @user = current_user\n  end\nend\n"
  },
  {
    "path": "app/controllers/likes_controller.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass LikesController < ApplicationController\n  before_action :find_likeable\n  before_action :authenticate_user!\n  respond_to :js\n\n  def create\n    @likeable.liked_by current_user\n    @likeable.create_activity(:like, owner: current_user)\n  end\n\n  def destroy\n    @likeable.disliked_by current_user\n    activity = PublicActivity::Activity.find_by_trackable_id_and_key(@likeable.id, \"#{@likeable_type.downcase}.like\")\n    activity.destroy if activity.present?\n  end\n\n  private\n  def find_likeable\n    @likeable_type = params[:likeable_type].classify\n    @likeable = @likeable_type.constantize.find(params[:likeable_id])\n  end\nend\n"
  },
  {
    "path": "app/controllers/posts_controller.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass PostsController < ApplicationController\n  before_action :authenticate_user!\n  before_action :set_post, only: [:show, :edit, :update, :destroy]\n\n  def show\n    @comments = @post.comments.all\n  end\n\n  def create\n    @post = current_user.posts.new(post_params)\n    if @post.save\n      redirect_to root_path\n    else\n      redirect_to root_path, notice: @post.errors.full_messages.first\n    end\n  end\n\n  def edit\n  end\n\n  def update\n    @post.update(post_params)\n    redirect_to @post\n  end\n\n  def destroy\n    @post.destroy\n    respond_to do |format|\n      format.js\n      format.html { redirect_to root_path }\n    end\n  end\n\n  private\n  def set_post\n    @post = Post.find_by(id: params[:id])\n    render_404 and return unless @post && User.find_by(id: @post.user_id)\n  end\n\n  def post_params\n    params.require(:post).permit(:content, :attachment)\n  end\nend\n"
  },
  {
    "path": "app/controllers/users_controller.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass UsersController < ApplicationController\n  before_action :authenticate_user!\n  before_action :set_user\n  before_action :check_ownership, only: [:edit, :update]\n  respond_to :html, :js\n\n  def show\n    @activities = PublicActivity::Activity.where(owner: @user).order(created_at: :desc).paginate(page: params[:page], per_page: 10)\n  end\n\n  def edit\n  end\n\n  def update\n    if @user.update(user_params)\n      redirect_to user_path(@user)\n    else\n      render :edit\n    end\n  end\n\n  def deactivate\n  end\n\n  def friends\n    @friends = @user.following_users.paginate(page: params[:page])\n  end\n\n  def followers\n    @followers = @user.user_followers.paginate(page: params[:page])\n  end\n\n  def mentionable\n    render json: @user.following_users.as_json(only: [:id, :name]), root: false\n  end\n\n  private\n\n  def user_params\n    params.require(:user).permit(:name, :about, :avatar, :cover,\n                                 :sex, :dob, :location, :phone_number)\n  end\n\n  def check_ownership\n    redirect_to current_user, notice: 'Not Authorized' unless @user == current_user\n  end\n\n  def set_user\n    @user = User.friendly.find_by(slug: params[:id]) || User.find_by(id: params[:id])\n    render_404 and return unless @user\n  end\nend\n"
  },
  {
    "path": "app/helpers/application_helper.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nmodule ApplicationHelper\n  def belongs_to_user?(resource)\n    resource.user == current_user\n  end\n\n  def activity_resources_exist?(activity)\n    activity && activity.trackable && activity.owner\n  end\nend\n"
  },
  {
    "path": "app/helpers/comments_helper.rb",
    "content": "module CommentsHelper\nend\n"
  },
  {
    "path": "app/helpers/events_helper.rb",
    "content": "module EventsHelper\nend\n"
  },
  {
    "path": "app/helpers/follows_helper.rb",
    "content": "module FollowsHelper\nend\n"
  },
  {
    "path": "app/helpers/home_helper.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nmodule HomeHelper\n  def relative_time(created_at)\n    time_ago_in_words(created_at)\n  end\n\n  def formatted_time(time)\n    time.to_formatted_s(:short)\n  end\nend\n"
  },
  {
    "path": "app/helpers/likes_helper.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nmodule LikesHelper\n  def find_like(likeable)\n    likeable.get_likes.where(user: current_user)\n  end\nend\n"
  },
  {
    "path": "app/helpers/posts_helper.rb",
    "content": "module PostsHelper\nend\n"
  },
  {
    "path": "app/helpers/users_helper.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nmodule UsersHelper\n  def options_for_seasons\n    [['Male', 'male'], ['Female', 'female']]\n  end\n\n  def age(dob)\n    now = Time.now.utc.to_date\n    now.year - dob.year - (dob.to_date.change(:year => now.year) > now ? 1 : 0)\n  end\n\n  def is_current_user?(user)\n    user == current_user\n  end\nend\n"
  },
  {
    "path": "app/mailers/.keep",
    "content": ""
  },
  {
    "path": "app/models/.keep",
    "content": ""
  },
  {
    "path": "app/models/comment.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass Comment < ActiveRecord::Base\n  include Shared::Callbacks\n  include ActsAsCommentable::Comment\n  include Mention\n\n  belongs_to :commentable, polymorphic: true, counter_cache: true\n  default_scope -> { order('created_at DESC') }\n\n  # NOTE: install the acts_as_votable plugin if you\n  # want user to vote on the quality of comments.\n  # acts_as_voteable\n\n  # NOTE: Comments belong to a user\n  belongs_to :user\n\n  include PublicActivity::Model\n  tracked only: [:create], owner: proc { |_controller, model| model.user }\n\n  validates_presence_of :comment\n  validates_presence_of :commentable\n  validates_presence_of :user\n\n  auto_html_for :comment do\n    image\n    youtube(width: 400, height: 250, autoplay: true)\n    link target: '_blank', rel: 'nofollow'\n    simple_format\n  end\nend\n"
  },
  {
    "path": "app/models/concerns/.keep",
    "content": ""
  },
  {
    "path": "app/models/concerns/shared/callbacks.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nmodule Shared::Callbacks\n  extend ActiveSupport::Concern\n\n  included do\n    before_destroy :remove_activity\n    before_destroy :remove_likes\n  end\n\n  def remove_activity\n    activity = PublicActivity::Activity.find_by(trackable_id: self.id, trackable_type: self.class.to_s, key: \"#{self.class.to_s.downcase}.create\")\n    activity.destroy if activity.present?\n    true\n  end\n\n  def remove_likes\n    activity = PublicActivity::Activity.find_by(trackable_id: self.id, trackable_type: self.class.to_s, key: \"#{self.class.to_s.downcase}.like\")\n    activity.destroy if activity.present?\n  end\n\nend\n"
  },
  {
    "path": "app/models/event.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass Event < ActiveRecord::Base\n  include Shared::Callbacks\n  belongs_to :user\n  acts_as_votable\n  acts_as_commentable\n\n  include PublicActivity::Model\n  tracked only: [:create, :like], owner: Proc.new{ |controller, model| model.user }\n\n  validates_presence_of :name\n  validates_presence_of :event_datetime\n  validates_presence_of :user\nend\n"
  },
  {
    "path": "app/models/follow.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass Follow < ActiveRecord::Base\n  include Shared::Callbacks\n\n  extend ActsAsFollower::FollowerLib\n  extend ActsAsFollower::FollowScopes\n\n  # NOTE: Follows belong to the \"followable\" interface, and also to followers\n  belongs_to :followable, :polymorphic => true\n  belongs_to :follower,   :polymorphic => true\n\n  def block!\n    self.update_attribute(:blocked, true)\n  end\n\n  include PublicActivity::Model\n  tracked only: [:create], owner: Proc.new{ |controller, model| model.follower }\n\n  validates_presence_of :follower\n  validates_presence_of :followable\nend\n"
  },
  {
    "path": "app/models/mention.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nmodule Mention\n\nprivate\n\n  def friends_names\n    names_array = []\n    user.following_users.each do |friend|\n      names_array << friend.name\n    end\n    names_array\n  end\n\n  def html_type\n    if is_a?(Post)\n      content_html\n    elsif is_a?(Comment)\n      comment_html\n    end\n  end\n\n  def mentioned_friends\n    friends_names.select { |name| html_type.include? name }\n  end\n\n  def add_mention_links_to_content\n    mentioned_friends.each do |friend_name|\n      new_content = html_type.gsub!(friend_name, \"<a href='/users/#{User.where(name: friend_name).first.slug}'>#{friend_name}</a>\")\n      self.content = new_content if is_a?(Post)\n      self.comment = new_content if is_a?(Comment)\n    end\n  end\n\nend\n"
  },
  {
    "path": "app/models/merit/badge_rules.rb",
    "content": "# Be sure to restart your server when you modify this file.\n#\n# +grant_on+ accepts:\n# * Nothing (always grants)\n# * A block which evaluates to boolean (recieves the object as parameter)\n# * A block with a hash composed of methods to run on the target object with\n#   expected values (+votes: 5+ for instance).\n#\n# +grant_on+ can have a +:to+ method name, which called over the target object\n# should retrieve the object to badge (could be +:user+, +:self+, +:follower+,\n# etc). If it's not defined merit will apply the badge to the user who\n# triggered the action (:action_user by default). If it's :itself, it badges\n# the created object (new user for instance).\n#\n# The :temporary option indicates that if the condition doesn't hold but the\n# badge is granted, then it's removed. It's false by default (badges are kept\n# forever).\n\nmodule Merit\n  class BadgeRules\n    include Merit::BadgeRulesMethods\n\n    def initialize\n      grant_on 'comments#create',  badge: 'Jr.Critics', temporary: true, to: :user do |comment|\n        comment.user.comments.count >= 2\n      end\n    end\n\n      # If it creates user, grant badge\n      # Should be \"current_user\" after registration for badge to be granted.\n      # Find badge by badge_id, badge_id takes presidence over badge\n      # grant_on 'users#create', badge_id: 7, badge: 'just-registered', to: :itself\n\n      # If it has 10 comments, grant commenter-10 badge\n      # grant_on 'comments#create', badge: 'commenter', level: 10 do |comment|\n      #   comment.user.comments.count == 10\n      # end\n\n      # If it has 5 votes, grant relevant-commenter badge\n      # grant_on 'comments#vote', badge: 'relevant-commenter',\n      #   to: :user do |comment|\n      #\n      #   comment.votes.count == 5\n      # end\n\n      # Changes his name by one wider than 4 chars (arbitrary ruby code case)\n      # grant_on 'registrations#update', badge: 'autobiographer',\n      #   temporary: true, model_name: 'User' do |user|\n      #\n      #   user.name.length > 4\n      # end\n  end\nend\n"
  },
  {
    "path": "app/models/merit/point_rules.rb",
    "content": "module Merit\n  class PointRules\n    include Merit::PointRulesMethods\n\n    def initialize\n      score 2, on: 'comments#create', to: [:user]\n      score 1, on: 'posts#upvote', to: [:user]\n      score 4, on: 'posts#create', to: [:user]\n\n      score 3, on: 'events#create', to: [:user]\n      score 1, on: 'events#upvote', to: [:user]\n      # score 10, :on => 'users#create' do |user|\n      #   user.bio.present?\n      # end\n      #\n      # score 15, :on => 'reviews#create', :to => [:reviewer, :reviewed]\n      #\n      # score 20, :on => [\n      #   'comments#create',\n      #   'photos#create'\n      # ]\n      #\n      # score -10, :on => 'comments#destroy'\n    end\n  end\nend\n"
  },
  {
    "path": "app/models/merit/rank_rules.rb",
    "content": "# Be sure to restart your server when you modify this file.\n#\n# 5 stars is a common ranking use case. They are not given at specified\n# actions like badges, you should define a cron job to test if ranks are to be\n# granted.\n#\n# +set_rank+ accepts:\n# * :+level+ ranking level (greater is better)\n# * :+to+ model or scope to check if new rankings apply\n# * :+level_name+ attribute name (default is empty and results in 'level'\n#   attribute, if set it's appended like 'level_#{level_name}')\n\nmodule Merit\n  class RankRules\n    include Merit::RankRulesMethods\n\n    def initialize\n      # set_rank :level => 1, :to => Commiter.active do |commiter|\n      #   commiter.repositories.count > 1 && commiter.followers >= 10\n      # end\n      #\n      # set_rank :level => 2, :to => Commiter.active do |commiter|\n      #   commiter.branches.count > 1 && commiter.followers >= 10\n      # end\n      #\n      # set_rank :level => 3, :to => Commiter.active do |commiter|\n      #   commiter.branches.count > 2 && commiter.followers >= 20\n      # end\n    end\n  end\nend\n"
  },
  {
    "path": "app/models/post.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass Post < ActiveRecord::Base\n  include Shared::Callbacks\n\n  belongs_to :user\n  counter_culture :user\n  acts_as_votable\n  acts_as_commentable\n\n  include PublicActivity::Model\n  tracked only: [:create, :like], owner: proc { |_controller, model| model.user }\n\n  default_scope -> { order('created_at DESC') }\n\n  mount_uploader :attachment, AvatarUploader\n\n  validates_presence_of :content\n  validates_presence_of :user\n\n  auto_html_for :content do\n    image\n    youtube(width: 400, height: 250, autoplay: true)\n    link target: '_blank', rel: 'nofollow'\n    simple_format\n  end\nend\n"
  },
  {
    "path": "app/models/user.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass User < ActiveRecord::Base\n  # Include default devise modules. Others available are:\n  has_merit\n  # :confirmable, :lockable, :timeoutable and :omniauthable\n  devise :database_authenticatable, :registerable, :confirmable,\n    :recoverable, :rememberable, :trackable, :validatable\n  acts_as_voter\n  acts_as_follower\n  acts_as_followable\n\n  has_many :posts\n  has_many :comments\n  has_many :events\n\n  mount_uploader :avatar, AvatarUploader\n  mount_uploader :cover, AvatarUploader\n\n  validates_presence_of :name\n\n  self.per_page = 10\n\n  extend FriendlyId\n  friendly_id :name, use: [:slugged, :finders]\nend\n"
  },
  {
    "path": "app/serializers/event_calendar_serializer.rb",
    "content": "class EventCalendarSerializer < ActiveModel::Serializer\n  attributes :id, :start, :end, :title, :allDay\n\n  def title\n    object.name\n  end\n\n  def start\n    object.event_datetime\n  end\n\n  def end\n    object.event_datetime\n  end\n\n  def allDay\n    true\n  end\nend\n"
  },
  {
    "path": "app/uploaders/avatar_uploader.rb",
    "content": "# Copyright (c) 2015, @sudharti(Sudharsanan Muralidharan)\n# Socify is an Open source Social network written in Ruby on Rails This file is licensed\n# under GNU GPL v2 or later. See the LICENSE.\n\nclass AvatarUploader < CarrierWave::Uploader::Base\n  # Include RMagick or MiniMagick support:\n  # include CarrierWave::RMagick\n  # include CarrierWave::MiniMagick\n\n  storage :fog if Rails.env.production?\n\n  # Choose what kind of storage to use for this uploader:\n  storage :file if Rails.env.development?\n  # storage :fog\n\n  # Override the directory where uploaded files will be stored.\n  # This is a sensible default for uploaders that are meant to be mounted:\n  def store_dir\n    \"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}\"\n  end\n\n  # Provide a default URL as a default if there hasn't been a file uploaded:\n  # def default_url\n  #   # For Rails 3.1+ asset pipeline compatibility:\n  #   # ActionController::Base.helpers.asset_path(\"fallback/\" + [version_name, \"default.png\"].compact.join('_'))\n  #\n  #   \"/images/fallback/\" + [version_name, \"default.png\"].compact.join('_')\n  # end\n\n  # Process files as they are uploaded:\n  # process :scale => [200, 300]\n  #\n  # def scale(width, height)\n  #   # do something\n  # end\n\n  # Create different versions of your uploaded files:\n  # version :thumb do\n  #   process :resize_to_fit => [50, 50]\n  # end\n\n  # Add a white list of extensions which are allowed to be uploaded.\n  # For images you might use something like this:\n  # def extension_white_list\n  #   %w(jpg jpeg gif png)\n  # end\n\n  # Override the filename of the uploaded files:\n  # Avoid using model.id or version_name here, see uploader/store.rb for details.\n  # def filename\n  #   \"something.jpg\" if original_filename\n  # end\nend\n"
  },
  {
    "path": "app/views/comments/_comment.html.erb",
    "content": "<% if comment.user %>\n  <div id=\"comment-<%= comment.id %>\">\n    <div class=\"info\">\n      <%= render 'shared/avatar', user: comment.user %>\n      <h4 class=\"name\"><%= link_to comment.user.name, user_path(comment.user) %></h4>\n    </div>\n    <div class=\"content\">\n      <div class=\"row\">\n        <span class=\"text\"><%= comment.comment_html %></span>\n      </div>\n      <div class=\"pull-right\">\n        <% if belongs_to_user?(comment) %>\n          <%= link_to comment_path(comment), method: :delete, class: 'btn btn-danger btn-sm', remote: true do %>\n            <% fa_icon 'trash' %>\n          <% end %>\n        <% end %>\n      </div>\n    </div>\n    <br>\n    <hr>\n  </div>\n<% end %>\n"
  },
  {
    "path": "app/views/comments/_form.html.erb",
    "content": "<div id=\"mentionable-data\" data-content=\"<%= mentionable_user_path(current_user) %>\"></div>\n<%= form_tag comments_path(commentable_type: commentable.class.to_s, commentable_id: commentable.id), id: 'new_comment', method: :post, remote: true do %>\n  <div class=\"form-group\">\n    <div id=\"comment-text\" contenteditable=\"true\" class=\"editable form-control input-mentionable\" placeholder=\"Enter Comment\"></div>\n    <%= hidden_field_tag :comment_text, nil, placeholder: 'Enter Comment', class: 'form-control input-mentionable' %>\n  </div>\n  <%= submit_tag :comment, class: 'btn btn-primary' %>\n<% end %>\n"
  },
  {
    "path": "app/views/comments/create.js.erb",
    "content": "$(\"#<%= @commentable_type.downcase %>-<%= @commentable.id %> .comments\").prepend(\"<%=j render(@comment) %>\");\n$(\"#comment_text\").val(\"\");"
  },
  {
    "path": "app/views/comments/destroy.js.erb",
    "content": "$(\"#comment-<%= @comment.id %>\").remove();"
  },
  {
    "path": "app/views/devise/confirmations/new.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-4 col-lg-offset-4 well\">\n    <h3 class=\"text-center\">Resend Confirmation</h3>\n    <br>\n    <%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %>\n      <% if resource.errors.any? %>\n        <div class=\"alert alert-danger alert-dismissable\">\n          <%= resource.errors.full_messages.first %>\n          <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>\n        </div>\n      <% end %>\n      <div class=\"form-group\">\n        <%= f.label :email %>\n        <%= f.email_field :email, value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email), class: 'form-control', autofocus: true, placeholder: 'email@example.com' %>\n      </div>\n      <div class=\"actions\">\n        <%= f.submit 'Resend confirmation', class: 'btn btn-primary' %>\n      </div>\n    <% end %>\n    <br>\n    <%= render \"devise/shared/links\" %>\n  </div>\n</div>"
  },
  {
    "path": "app/views/devise/mailer/confirmation_instructions.html.erb",
    "content": "<p>Welcome <%= @email %>!</p>\n\n<p>You can confirm your account email through the link below:</p>\n\n<p><%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></p>\n"
  },
  {
    "path": "app/views/devise/mailer/reset_password_instructions.html.erb",
    "content": "<p>Hello <%= @resource.email %>!</p>\n\n<p>Someone has requested a link to change your password. You can do this through the link below.</p>\n\n<p><%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %></p>\n\n<p>If you didn't request this, please ignore this email.</p>\n<p>Your password won't change until you access the link above and create a new one.</p>\n"
  },
  {
    "path": "app/views/devise/mailer/unlock_instructions.html.erb",
    "content": "<p>Hello <%= @resource.email %>!</p>\n\n<p>Your account has been locked due to an excessive number of unsuccessful sign in attempts.</p>\n\n<p>Click the link below to unlock your account:</p>\n\n<p><%= link_to 'Unlock my account', unlock_url(@resource, unlock_token: @token) %></p>\n"
  },
  {
    "path": "app/views/devise/passwords/edit.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-4 col-lg-offset-4 well\">\n    <h3 class=\"text-center\">Change your password</h3>\n    <br>\n    <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>\n      <% if resource.errors.any? %>\n        <div class=\"alert alert-danger alert-dismissable\">\n          <%= resource.errors.full_messages.first %>\n          <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>\n        </div>\n      <% end %>\n      <%= f.hidden_field :reset_password_token %>\n      <div class=\"form-group\">\n        <%= f.label :password, \"New password\" %><br />\n        <% if @minimum_password_length %>\n          <em>(<%= @minimum_password_length %> characters minimum)</em>\n        <% end %><br />\n        <%= f.password_field :password, autofocus: true, autocomplete: 'off', class: 'form-control', placeholder: 'Password' %>\n      </div>\n      <div class=\"form-group\">\n        <%= f.label :password_confirmation, 'Confirm new password'%><br />\n        <%= f.password_field :password_confirmation, autocomplete: 'off', class: 'form-control', placeholder: 'Repeat password' %>\n      </div>\n      <div class=\"actions\">\n        <%= f.submit 'Change Password', class: 'btn btn-primary' %>\n      </div>\n    <% end %>\n    <br>\n    <%= render \"devise/shared/links\" %>\n  </div>\n</div>"
  },
  {
    "path": "app/views/devise/passwords/new.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-4 col-lg-offset-4 well\">\n    <h3 class=\"text-center\">Forgot your password?</h3>\n    <br>\n    <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>\n      <% if resource.errors.any? %>\n        <div class=\"alert alert-danger alert-dismissable\">\n          <%= resource.errors.full_messages.first %>\n          <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>\n        </div>\n      <% end %>\n      <div class=\"form-group\">\n        <%= f.label :email %>\n        <%= f.email_field :email, class: 'form-control', autofocus: true, placeholder: 'email@example.com' %>\n      </div>\n      <div class=\"actions\">\n        <%= f.submit 'Reset Password', class: 'btn btn-primary' %>\n      </div>\n    <% end %>\n    <br>\n    <%= render \"devise/shared/links\" %>\n  </div>\n</div>"
  },
  {
    "path": "app/views/devise/registrations/edit.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-4 col-lg-offset-4 well\">\n    <h3 class=\"text-center\">Change Password</h3>\n\n    <% if resource.errors.any? %>\n      <div class=\"alert alert-danger alert-dismissable\">\n        <%= resource.errors.full_messages.first %>\n        <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>\n    </div>\n    <% end %>\n\n    <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>\n      <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>\n        <div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div>\n      <% end %>\n      <div class=\"form-group\">\n        <%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />\n        <%= f.password_field :password, autocomplete: 'off', class: 'form-control' %>\n      </div>\n      <div class=\"form-group\">\n        <%= f.label :password_confirmation %><br />\n        <%= f.password_field :password_confirmation, autocomplete: 'off', class: 'form-control' %>\n      </div>\n      <div class=\"form-group\">\n        <%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />\n        <%= f.password_field :current_password, autocomplete: 'off', class: 'form-control' %>\n      </div>\n      <div class=\"actions\">\n        <%= f.submit 'Update', class: 'btn btn-primary' %>\n      </div>\n    <% end %>\n  </div>\n</div>\n"
  },
  {
    "path": "app/views/devise/registrations/new.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-4 col-lg-offset-4 well\">\n    <h3 class=\"text-center\">Sign up</h3>\n    <br>\n    <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>\n      <% if resource.errors.any? %>\n        <div class=\"alert alert-danger alert-dismissable\">\n          <%= resource.errors.full_messages.first %>\n          <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>\n        </div>\n      <% end %>\n      <div class=\"form-group\">\n        <%= f.label :name %>\n        <%= f.text_field :name, class: 'form-control', autofocus: true, placeholder: 'Full name' %>\n      </div>\n      <div class=\"form-group\">\n        <%= f.label :email %>\n        <%= f.email_field :email, class: 'form-control', placeholder: 'email@example.com' %>\n      </div>\n      <div class=\"form-group\">\n        <%= f.label :password %>\n        <% if @minimum_password_length %>\n          <em>(<%= @minimum_password_length %> characters minimum)</em>\n        <% end %><br>\n        <%= f.password_field :password, class: 'form-control', autocomplete: 'off', placeholder: 'password' %>\n      </div>\n      <div class=\"form-group\">\n        <%= f.label :password_confirmation %>\n        <%= f.password_field :password_confirmation, class: 'form-control', autocomplete: 'off', placeholder: 'password confirmation' %>\n      </div>\n      <div class=\"actions\">\n        <%= f.submit 'Sign up', class: 'btn btn-success' %>\n      </div>\n    <% end %>\n    <br>\n    <%= render 'devise/shared/links' %>\n  </div>\n</div>"
  },
  {
    "path": "app/views/devise/sessions/new.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-4 col-lg-offset-4 well\">\n    <h3 class=\"text-center\">Log in</h3>\n    <br>\n    <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>\n      <div class=\"form-group\">\n        <%= f.label :email %>\n        <%= f.email_field :email, class: 'form-control', autofocus: true, placeholder: 'email@example.com' %>\n      </div>\n      <div class=\"form-group\">\n        <%= f.label :password %>\n        <%= f.password_field :password, class: 'form-control', autocomplete: 'off', placeholder: 'password' %>\n      </div>\n      <% if devise_mapping.rememberable? -%>\n        <div class=\"form-group\">\n          <%= f.check_box :remember_me %>\n          <%= f.label :remember_me %>\n        </div>\n      <% end -%>\n      <div class=\"actions\">\n        <%= f.submit 'Log in', class: 'btn btn-success' %>\n      </div>\n    <% end %>\n    <br>\n    <%= render 'devise/shared/links' %>\n  </div>\n</div>"
  },
  {
    "path": "app/views/devise/shared/_links.html.erb",
    "content": "<%- if controller_name != 'sessions' %>\n  <%= link_to \"Log in\", new_session_path(resource_name) %><br />\n<% end -%>\n\n<%- if devise_mapping.registerable? && controller_name != 'registrations' %>\n  <%= link_to \"Sign up\", new_registration_path(resource_name) %><br />\n<% end -%>\n\n<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %>\n  <%= link_to \"Forgot your password?\", new_password_path(resource_name) %><br />\n<% end -%>\n\n<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>\n  <%= link_to \"Didn't receive confirmation instructions?\", new_confirmation_path(resource_name) %><br />\n<% end -%>\n\n<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>\n  <%= link_to \"Didn't receive unlock instructions?\", new_unlock_path(resource_name) %><br />\n<% end -%>\n\n<%- if devise_mapping.omniauthable? %>\n  <%- resource_class.omniauth_providers.each do |provider| %>\n    <%= link_to \"Sign in with #{provider.to_s.titleize}\", omniauth_authorize_path(resource_name, provider) %><br />\n  <% end -%>\n<% end -%>\n"
  },
  {
    "path": "app/views/devise/unlocks/new.html.erb",
    "content": "<h2>Resend unlock instructions</h2>\n<%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %>\n  <%= devise_error_messages! %>\n  <div class=\"field\">\n    <%= f.label :email %><br />\n    <%= f.email_field :email, autofocus: true %>\n  </div>\n  <div class=\"actions\">\n    <%= f.submit \"Resend unlock instructions\" %>\n  </div>\n<% end %>\n<%= render \"devise/shared/links\" %>"
  },
  {
    "path": "app/views/events/_event.html.erb",
    "content": "<% if event.user %>\n  <div class=\"info\">\n    <%= render 'shared/avatar', user: event.user %>\n    <h4 class=\"name\"><%= link_to event.user.name, user_path(event.user) %></h4>\n    <span class=\"action\">created an <%= link_to 'event', event %></span>\n  </div>\n  <div class=\"content\">\n    <h3><%= event.name %></h3>\n    <span class=\"text\">\n      <%= fa_icon'calendar' %> <%= formatted_time(event.event_datetime) %>\n    </span>\n    <%= render 'shared/created_at', activity: event %>\n    <div class=\"points\">\n      <span class=\"like-count\"><%= pluralize(event.cached_votes_up, 'like') %></span>\n      <span class=\"comment-count\"><%= pluralize(event.comments_count, 'comment') %></span>\n      <div class=\"pull-right\">\n        <% if belongs_to_user?(event) %>\n          <%= link_to edit_event_path(event), class: 'btn btn-primary btn-sm' do %>\n            <% fa_icon 'pencil' %>\n          <% end %>\n          <%= link_to event_path(event), method: :delete, class:'btn btn-danger btn-sm', remote: remote do %>\n            <% fa_icon 'trash' %>\n          <% end %>\n        <% end %>\n      </div>\n    </div>\n  </div>\n  <%= render 'shared/actions', resource: event %>\n<% end %>\n"
  },
  {
    "path": "app/views/events/_form.html.erb",
    "content": "<%= form_for(@event) do |f| %>\n  <div class=\"form-group\">\n    <%= f.label :event_name %>\n    <%= f.text_field :name, autofocus: true, placeholder: 'Event Name', class: 'form-control' %>\n  </div>\n  <div class=\"form-group\">\n    <%= f.label :when? %>\n    <%= f.text_field :event_datetime, placeholder: 'When is it?', class: 'form-control' %>\n  </div>\n  <div class=\"actions\">\n    <%= f.submit (@event.persisted? ? :update : :create), class: 'btn btn-primary' %>\n  </div>\n<% end %>\n"
  },
  {
    "path": "app/views/events/calendar.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-3\">\n    <%= render 'shared/user_info' %>\n  </div>\n  <div class=\"col-lg-6 well\">\n    <h3>Events Calendar</h3>\n    <hr>\n    <div id=\"calendar\"></div>\n  </div>\n  <div class=\"col-lg-3\">\n    <%= render 'shared/links' %>\n  </div>\n</div>\n"
  },
  {
    "path": "app/views/events/destroy.js.erb",
    "content": "$(\"#event-<%= @event.id %>\").parent().remove();"
  },
  {
    "path": "app/views/events/edit.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-3\">\n    <%= render 'shared/user_info' %>\n  </div>\n  <div class=\"col-lg-6 well\">\n    <%= render 'form' %>\n  </div>\n  <div class=\"col-lg-3\">\n    <%= render 'shared/links' %>\n  </div>\n</div>\n"
  },
  {
    "path": "app/views/events/new.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-3\">\n    <%= render 'shared/user_info' %>\n  </div>\n  <div class=\"col-lg-6 well\">\n    <%= render 'form' %>\n  </div>\n  <div class=\"col-lg-3\">\n    <%= render 'shared/links' %>\n  </div>\n</div>"
  },
  {
    "path": "app/views/events/show.html.erb",
    "content": "<% if @event.user %>\n  <div id=\"event-<%= @event.id %>\" class=\"event\">\n    <div class=\"row\">\n      <div class=\"col-lg-6 col-lg-offset-3 well\">\n        <%= render @event, remote: false %>\n      </div>\n    </div>\n    <div class=\"row\">\n      <div class=\"col-lg-6 col-lg-offset-3 well\">\n        <h4>Comments</h4>\n        <hr>\n        <%= render 'comments/form', commentable: @event %>\n        <br>\n        <div class=\"comments\">\n          <%= render(@comments) || render('shared/no_resource', resources: 'Comments') %>\n        </div>\n      </div>\n    </div>\n  </div>\n<% end %>\n"
  },
  {
    "path": "app/views/follows/_form.html.erb",
    "content": "<div class=\"follow\">\n  <% if user.followed_by?(current_user) %>\n    <%= form_tag unfollow_path(user_id: user.id), method: :post, remote: true do %>\n      <%= button_tag 'unfollow', class: 'btn btn-primary' %>\n    <% end %>\n  <% else %>\n    <%= form_tag follow_path(user_id: user.id), method: :post, remote: true do %>\n      <%= button_tag 'follow', class: 'btn btn-success' %>\n    <% end %>\n  <% end %>\n</div>"
  },
  {
    "path": "app/views/follows/create.js.erb",
    "content": "$(\"#user-<%= @user.id %> .follow\").html(\"<%=j render('follows/form', user: @user) %>\");"
  },
  {
    "path": "app/views/follows/destroy.js.erb",
    "content": "$(\"#user-<%= @user.id %> .follow\").html(\"<%=j render('follows/form', user: @user) %>\");"
  },
  {
    "path": "app/views/home/about.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-6 col-lg-offset-3 well\">\n    <h3 class=\"text-center\">ABOUT</h3>\n    <hr>\n    <h3>What?</h3>\n    <p>\n      Socify is a social networking app built using Ruby on Rails. It's free &amp; completely open source. You can check the source on <a href=\"https://github.com/sudharti/socify\"><%= fa_icon 'github' %> Github</a>. Also take a look at the demo deployed to <a href=\"http://socifyapp.herokuapp.com/\">Heroku</a>.\n    </p>\n    <br>\n    <h3>Why?</h3>\n    <p>\n      I am not building the next Facebook. Given that there are enough social networks already I don't want to end up launching one. Pointless! So why am I building? I want to try and learn how to develop a social network and in the process show you how easy it is done using Rails. Here is the <a href=\"https://medium.com/@sudharshanmuralidharaniyer/eb31da569233\"><%= fa_icon 'medium' %> Blog post</a>.\n    </p>\n    <br>\n    <h3>How?</h3>\n    <p>\n      As stated above it's a Ruby on Rails application. Frontend is developed using Twitter Bootstrap. Database is SQLite for development and Postgresql for production.\n    </p>\n    <br>\n    <a href=\"https://github.com/sudharti/socify\" class=\"btn btn-warning\">\n      <%= fa_icon 'star' %> Star it\n    </a>\n    <a href=\"https://github.com/sudharti/socify\" class=\"btn btn-primary\">\n      <%= fa_icon 'code-fork' %> Fork it\n    </a>\n  </div>\n</div>"
  },
  {
    "path": "app/views/home/find_friends.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-3\">\n    <%= render 'shared/user_info' %>\n  </div>\n  <div class=\"col-lg-6 well\">\n    <h3>Find Friends</h3>\n    <hr>\n    <div id=\"users\">\n      <%= render(@users) || render('shared/no_resource', resources: 'Users') %>\n    </div>\n    <%= render 'shared/paginate', resources: @users %>\n  </div>\n  <div class=\"col-lg-3\">\n    <%= render 'shared/links' %>\n  </div>\n</div>"
  },
  {
    "path": "app/views/home/find_friends.js.erb",
    "content": "$('#users').append(\"<%= j render(@users) %>\");\n\n<%= render 'shared/paginate', resources: @users %> "
  },
  {
    "path": "app/views/home/front.html.erb",
    "content": "<div class=\"row\">\n  <div id=\"newsfeed\" class=\"col-lg-6\">\n    <h4><%= fa_icon \"newspaper-o\" %> NEWSFEED</h4>\n    <div id=\"activities\">\n      <% if @activities.empty? %>\n        <div class=\"well\">\n          <%= render('shared/no_resource', resources: 'Activities') %>\n        </div>\n      <% else %>\n        <%= render_activities(@activities, layout: '/shared/activity') %>\n      <% end %>\n    </div>\n    <%= render 'shared/paginate', resources: @activities %>\n  </div>\n  <div id=\"intro\" class=\"col-lg-6\">\n    <h1>Socify</h1>\n    <p>Socify is an open source social networking app written using <%= fa_icon 'diamond' %> Ruby on Rails. You can checkout the blog <a href=\"https://medium.com/@sudharshanmuralidharaniyer/eb31da569233\">post</a> on how\n    it was developed and also the source code on <a href=\"https://github.com/sudharti/socify\"><%= fa_icon 'github' %> Github</a>.</p>\n    <hr>\n    <a href=\"https://github.com/sudharti/socify\" class=\"btn btn-warning\">\n      <%= fa_icon 'star' %> Star it\n    </a>\n    <a href=\"https://github.com/sudharti/socify\" class=\"btn btn-primary\">\n      <%= fa_icon 'code-fork' %> Fork it\n    </a>\n  </div>\n</div>\n"
  },
  {
    "path": "app/views/home/front.js.erb",
    "content": "$('#activities').append(\"<%= j render_activities(@activities, layout: '/shared/activity') %>\");\n\n<%= render 'shared/paginate', resources: @activities %>"
  },
  {
    "path": "app/views/home/index.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-3\">\n    <%= render 'shared/user_info' %>\n  </div>\n  <div id=\"newsfeed\" class=\"col-lg-6\">\n    <%= render 'posts/form' %>\n    <br>\n    <div id=\"activities\">\n      <% if @activities.empty? %>\n        <div class=\"well\">\n          <%= render('shared/no_resource', resources: 'Activities') %>\n        </div>\n      <% else %>\n        <%= render_activities(@activities, layout: '/shared/activity') %>\n      <% end %>\n    </div>\n    <%= render 'shared/paginate', resources: @activities %>\n  </div>\n  <div class=\"col-lg-3\">\n    <%= render 'shared/links' %>\n  </div>\n</div>"
  },
  {
    "path": "app/views/home/index.js.erb",
    "content": "$('#activities').append(\"<%= j render_activities(@activities, layout: '/shared/activity') %>\");\n\n<%= render 'shared/paginate', resources: @activities %>"
  },
  {
    "path": "app/views/layouts/application.html.erb",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Socify</title>\n    <%= stylesheet_link_tag    'application', media: 'all' %>\n    <%= javascript_include_tag 'application' %>\n    <%= csrf_meta_tags %>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  </head>\n  <body>\n    <%= render 'shared/navbar' %>\n    <% unless notice.blank? %>\n      <div class=\"alert alert-info alert-dismissable alert-fixed\">\n        <%= notice %>\n        <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>\n      </div>\n    <% end %>\n    <% unless alert.blank? %>\n      <div class=\"alert alert-danger alert-dismissable alert-fixed\">\n        <%= alert %>\n        <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-hidden=\"true\">&times;</button>\n      </div>\n    <% end %>\n    <div class=\"container\">\n      <%= yield %>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "app/views/likes/_form.html.erb",
    "content": "<% if current_user.liked? likeable %>\n  <%= form_tag unlike_path(likeable_type: likeable.class.to_s, likeable_id: likeable.id), method: :post, remote: true do %>\n    <% button_tag class: 'btn btn-block liked' do %>\n      <%= fa_icon 'thumbs-up' %> unlike\n    <% end %>\n  <% end %>\n<% else %>\n  <%= form_tag like_path(likeable_type: likeable.class.to_s, likeable_id: likeable.id), remote: true do %>\n    <% button_tag class: 'btn btn-block' do %>\n      <%= fa_icon 'thumbs-up' %> like\n    <% end %>\n  <% end %>\n<% end %>"
  },
  {
    "path": "app/views/likes/create.js.erb",
    "content": "$(\"#<%= @likeable_type.downcase %>-<%= @likeable.id %> .like\").html(\"<%=j render('likes/form', likeable: @likeable) %>\");\n$(\"#<%= @likeable_type.downcase %>-<%= @likeable.id %> .like-count\").html(\"<%= pluralize(@likeable.cached_votes_up, 'like') %>\");"
  },
  {
    "path": "app/views/likes/destroy.js.erb",
    "content": "$(\"#<%= @likeable_type.downcase %>-<%= @likeable.id %> .like\").html(\"<%=j render('likes/form', likeable: @likeable) %>\");\n$(\"#<%= @likeable_type.downcase %>-<%= @likeable.id %> .like-count\").html(\"<%= pluralize(@likeable.cached_votes_up, 'like') %>\");"
  },
  {
    "path": "app/views/posts/_form.html.erb",
    "content": "<div class=\"well\">\n  <div id=\"mentionable-data\" data-content=\"<%= mentionable_user_path(current_user) %>\"></div>\n  <%= form_for @post, html: { class: 'post_form' } do |f| %>\n    <div class=\"form-group\">\n      <h4>Update Status</h4>\n      <div id=\"post-content\" contenteditable=\"true\" class=\"editable form-control input-mentionable\" placeholder=\"What's up?\"></div>\n      <%= f.hidden_field :content, value: @post.content, class: 'form-control input-mentionable', autofocus: true %>\n    </div>\n    <div id=\"img-preview\" class=\"form-group hidden\">\n      <img src=\"\" alt=\"Preview\">\n    </div>\n    <div class=\"form-group hidden\">\n      <%= f.file_field :attachment %>\n    </div>\n    <div class=\"form-group\">\n      <a id=\"post-attachment\" href=\"javascript:void(0);\" class=\"pull-right btn btn-primary\">\n        <%= fa_icon 'image' %>\n      </a>\n      <%= f.submit 'Post', class: 'btn btn-primary'%>\n    </div>\n    <% if @post.attachment.present? %>\n      <div class=\"attachment\">\n        <%= image_tag @post.attachment %>\n      </div>\n    <% end %>\n  <% end %>\n</div>\n"
  },
  {
    "path": "app/views/posts/_post.html.erb",
    "content": "<% if post.user %>\n  <div class=\"info\">\n    <%= render 'shared/avatar', user: post.user %>\n    <h4 class=\"name\"><%= link_to post.user.name, user_path(post.user) %></h4>\n    <span class=\"action\">created a <%= link_to 'post', post %></span>\n  </div>\n  <div class=\"content\">\n    <span class=\"text\"><%= post.content_html %></span>\n    <% if post.attachment.present? %>\n      <div class=\"attachment\">\n        <%= image_tag post.attachment %>\n      </div>\n    <% end %>\n    <%= render 'shared/created_at', activity: post %>\n    <div class=\"points\">\n      <span class=\"like-count\"><%= pluralize(post.cached_votes_up, 'like') %></span>\n      <span class=\"comments-count\"><%= pluralize(post.comments_count, 'comment') %></span>\n      <div class=\"pull-right\">\n        <% if belongs_to_user?(post) %>\n          <%= link_to edit_post_path(post), class: 'btn btn-primary btn-sm' do %>\n            <% fa_icon 'pencil' %>\n          <% end %>\n          <%= link_to post_path(post), method: :delete, class:'btn btn-danger btn-sm', remote: remote do %>\n            <% fa_icon 'trash' %>\n          <% end %>\n        <% end %>\n      </div>\n    </div>\n  </div>\n  <%= render 'shared/actions', resource: post %>\n<% end %>\n"
  },
  {
    "path": "app/views/posts/destroy.js.erb",
    "content": "$(\"#post-<%= @post.id %>\").parent().remove();"
  },
  {
    "path": "app/views/posts/edit.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-6 col-lg-offset-3\">\n    <%= render 'form' %>\n  </div>\n</div>"
  },
  {
    "path": "app/views/posts/show.html.erb",
    "content": "<% if @post.user %>\n  <div id=\"post-<%= @post.id %>\" class=\"post\">\n    <div class=\"row\">\n      <div class=\"col-lg-6 col-lg-offset-3 well\">\n        <%= render @post, remote: false %>\n      </div>\n    </div>\n    <div class=\"row\">\n      <div class=\"col-lg-6 col-lg-offset-3 well\">\n        <h4>Comments</h4>\n        <hr>\n        <%= render 'comments/form', commentable: @post %>\n        <br>\n        <div class=\"comments\">\n          <%= render(@comments) || render('shared/no_resource', resources: 'Comments') %>\n        </div>\n      </div>\n    </div>\n  </div>\n<% end %>\n"
  },
  {
    "path": "app/views/public_activity/comment/_create.html.erb",
    "content": "<% if activity_resources_exist?(activity) %>\n  <div id=\"activity-<%= activity.id %>\" class=\"activity\">\n    <div class=\"activity-comment\">\n      <div class=\"info\">\n        <%= render 'shared/avatar', user: activity.owner %>\n        <h4 class=\"name\"><%= link_to activity.owner.name, user_path(activity.owner) %></h4>\n        <span class=\"action\">commented on a <%= link_to activity.trackable.commentable.class.to_s, activity.trackable.commentable %></span>\n      </div>\n      <div class=\"content\">\n        <h4><small><%= activity.trackable.comment_html %></small></h4>\n      </div>\n      <%= render 'shared/created_at', activity: activity %>\n    </div>\n  </div>\n<% end %>\n"
  },
  {
    "path": "app/views/public_activity/event/_create.html.erb",
    "content": "<% if activity_resources_exist?(activity) %>\n  <div id=\"activity-<%= activity.id %>\" class=\"activity\">\n    <div id=\"event-<%= activity.trackable.id %>\" class=\"activity-event\">\n      <%= render activity.trackable, remote: true %>\n    </div>\n  </div>\n<% end %>\n"
  },
  {
    "path": "app/views/public_activity/event/_like.html.erb",
    "content": "<% if activity_resources_exist?(activity) %>\n  <div id=\"activity-<%= activity.id %>\" class=\"activity\">\n    <% if activity.trackable %>\n      <div class=\"activity-like\">\n        <div class=\"info\">\n          <%= render 'shared/avatar', user: activity.owner %>\n          <h4 class=\"name\"><%= link_to activity.owner.name, user_path(activity.owner) %></h4>\n          <span class=\"action\">liked a <%= link_to 'event', activity.trackable %></span>\n        </div>\n        <div class=\"content\">\n          <h4><small><%= activity.trackable.name %></small></h4>\n          <h4><small><%= fa_icon'calendar' %> <%= formatted_time(activity.trackable.event_datetime) %></small></h4>\n        </div>\n        <%= render 'shared/created_at', activity: activity %>\n      </div>\n    <% end %>\n  </div>\n<% end %>\n"
  },
  {
    "path": "app/views/public_activity/follow/_create.html.erb",
    "content": "<% if activity_resources_exist?(activity) && activity.trackable.followable %>\n  <div id=\"activity-<%= activity.id %>\" class=\"activity\">\n    <div class=\"activity-follow\">\n      <div class=\"follower\">\n        <%= render 'shared/avatar', user: activity.owner %>\n        <h4 class=\"name\"><%= link_to activity.owner.name, user_path(activity.owner) %></h4>\n        <span class=\"action\">Followed </span>\n      </div>\n      <div class=\"followee\">\n        <%= render 'shared/avatar', user: activity.trackable.followable %>\n        <h4 class=\"name\"><%= link_to activity.trackable.followable.name, user_path(activity.trackable.followable) %></h4>\n      </div>\n      <%= render 'shared/created_at', activity: activity %>\n    </div>\n  </div>\n<% end %>\n"
  },
  {
    "path": "app/views/public_activity/post/_create.html.erb",
    "content": "<% if activity_resources_exist?(activity) %>\n  <div id=\"activity-<%= activity.id %>\" class=\"activity\">\n    <div id=\"post-<%= activity.trackable.id %>\" class=\"activity-post\">\n      <%= render activity.trackable, remote: true %>\n    </div>\n  </div>\n<% end %>\n"
  },
  {
    "path": "app/views/public_activity/post/_like.html.erb",
    "content": "<% if activity_resources_exist?(activity) %>\n  <div id=\"activity-<%= activity.id %>\" class=\"activity\">\n    <div class=\"activity-like\">\n      <div class=\"info\">\n        <%= render 'shared/avatar', user: activity.owner %>\n        <h4 class=\"name\"><%= link_to activity.owner.name, user_path(activity.owner) %></h4>\n        <span class=\"action\">liked a <%= link_to 'post', activity.trackable %></span>\n      </div>\n      <div class=\"content\">\n        <h4><small><%= activity.trackable.content_html %></small></h4>\n      </div>\n      <%= render 'shared/created_at', activity: activity %>\n    </div>\n  </div>\n<% end %>\n"
  },
  {
    "path": "app/views/shared/_actions.html.erb",
    "content": "<% if user_signed_in? %>\n  <div class=\"actions\">\n    <div class=\"row\">\n      <div class=\"col-xs-6 like\">\n        <%= render 'likes/form', likeable: resource %>\n      </div>\n      <div class=\"col-xs-6 comment\">\n        <%= link_to resource, class: 'btn btn-block' do %>\n          <%= fa_icon 'comment' %> comment\n        <% end %>\n      </div>\n    </div>\n  </div>\n<% end %>"
  },
  {
    "path": "app/views/shared/_activity.html.erb",
    "content": "<%= render_activity(activity) %>\n"
  },
  {
    "path": "app/views/shared/_avatar.html.erb",
    "content": "<% if user %>\n  <%= link_to user_path(user) do %>\n    <%= image_tag user.avatar.url || 'avatar.jpg', class: 'avatar' %>\n  <% end %>\n<% end %>\n"
  },
  {
    "path": "app/views/shared/_cover.html.erb",
    "content": "<% if user.cover.url %>\n  <div class=\"cover\" style=\"background-image: url(<%= user.cover.url %>);\"></div>\n<% else %>\n  <div class=\"cover\" style=\"background-image: url(/assets/cover.png);\"></div>\n<% end %>"
  },
  {
    "path": "app/views/shared/_created_at.html.erb",
    "content": "<div class=\"created-at\">\n  <%= fa_icon 'clock-o' %>\n  <%= relative_time(activity.created_at) %> ago\n</div>"
  },
  {
    "path": "app/views/shared/_links.html.erb",
    "content": "<div id=\"links\" class=\"well\">\n  <h5>\n    <%= fa_icon 'newspaper-o' %>\n    <%= link_to 'NewsFeed', root_path %>\n  </h5>\n  <h5>\n    <%= fa_icon 'calendar-o' %>\n    <%= link_to 'Create Event', new_event_path %>\n  </h5>\n  <h5>\n    <%= fa_icon 'calendar-o' %>\n    <%= link_to 'Events Calendar', calendar_events_path %>\n  </h5>\n  <h5>\n    <%= fa_icon 'arrow-circle-right' %>\n    <%= link_to 'Friends', friends_user_path(current_user) %>\n  </h5>\n  <h5>\n    <%= fa_icon 'arrow-circle-left' %>\n    <%= link_to 'Followers', followers_user_path(current_user) %>\n  </h5>\n  <h5>\n    <%= fa_icon 'search' %>\n    <%= link_to('Find Friends', find_friends_path)%>\n  </h5>\n  <h5>\n    <%= fa_icon 'pencil' %>\n    <%= link_to 'Edit Profile', edit_user_path(current_user) %>\n  </h5>\n  <h5>\n    <%= fa_icon 'lock' %>\n    <%= link_to 'Change password', edit_user_registration_path %>\n  </h5>\n</div>\n"
  },
  {
    "path": "app/views/shared/_navbar.html.erb",
    "content": "<nav class=\"navbar navbar-default navbar-fixed-top\">\n  <div class=\"container\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#navbar-top\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <%= link_to \"Socify\", root_url, class: \"navbar-brand\" %>\n    </div>\n    <div class=\"collapse navbar-collapse\" id=\"navbar-top\">\n      <ul class=\"nav navbar-nav navbar-right\">\n        <% if user_signed_in? %>\n          <li class=\"dropdown\">\n            <a href=\"#\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\"><%= current_user.name %> <span class=\"caret\"></span></a>\n            <ul class=\"dropdown-menu\">\n              <li><%= link_to('Profile', user_path(current_user)) %></li>\n              <li><%= link_to 'Edit Profile', edit_user_path(current_user) %></li>\n              <li><%= link_to 'Change password', edit_user_registration_path %></li>\n              <li><%= link_to('Sign out', destroy_user_session_path, method: :delete) %></li>\n            </ul>\n          </li>\n        <% else %>\n          <li><%= link_to 'About', about_path %></li>\n          <li><%= link_to 'Sign up', new_user_registration_path %></li>\n          <li><%= link_to 'Sign in', user_session_path %></li>\n        <% end %>\n      </ul>\n    </div>\n  </div>\n</nav>\n"
  },
  {
    "path": "app/views/shared/_no_resource.html.erb",
    "content": "<div class=\"no-resource text-center\">\n  <h5>No <%= resources %> found.</h5>\n</div>"
  },
  {
    "path": "app/views/shared/_paginate.html.erb",
    "content": "<div id=\"endless-scroll\" class=\"well text-center hidden\">\n  <%= image_tag 'ajax-loader.gif' %>\n  <%= will_paginate resources %>\n</div>"
  },
  {
    "path": "app/views/shared/_paginate.js.erb",
    "content": "<% if resources.next_page %>\n  $(\".pagination\").replaceWith(\"<%= j will_paginate(resources) %>\");\n  $(\".pagination\").hide();\n<% else %>\n  $(window).off('scroll');\n  $(\"#endless-scroll\").remove();\n<% end %>"
  },
  {
    "path": "app/views/shared/_user_info.html.erb",
    "content": "<div id=\"user-info\" class=\"well\">\n  <div class=\"text-center\">\n    <%= render 'shared/avatar', user: @user %><br>\n    <h5><%= link_to @user.name, @user %></h5>\n  </div>\n  <h5>\n    <%= fa_icon 'shield' %>\n    <%= pluralize(@user.posts_count, 'post') %>\n  </h5>\n  <% if @user.dob.present? %>\n    <h5>\n      <%= fa_icon @user.sex %>\n      <%= \"#{pluralize(age(@user.dob), 'year')} old\" %>\n    </h5>\n  <% end %>\n  <% if @user.location.present? %>\n    <h5>\n      <%= fa_icon 'map-marker' %>\n      <%= @user.location %>\n    </h5>\n  <% end %>\n  <h5>\n    <i class=\"icon-record\"></i> <%= pluralize(@user.points, 'point') %>\n  </h5>\n  <% if @user.badges.empty? %>\n    <h5>No badge yet.</h5>\n  <% else %>\n    <h5>\n      <% @user.badges.each do |badge| %>\n        <i class=\"<%= badge.custom_fields[:icon] %>\" style=\"color: <%= badge.custom_fields[:color] %>\">\n        </i>\n        <%= badge.name %>\n      <% end %>\n    </h5>\n  <% end %>\n  <br>\n  <div class=\"text-center\">\n    <% unless is_current_user?(@user) %>\n      <%= render 'follows/form', user: @user %>\n      <h6><%= 'Follows you' if current_user.followed_by?(@user) %></h6>\n    <% end %>\n  </div>\n</div>\n"
  },
  {
    "path": "app/views/users/_user.html.erb",
    "content": "<br>\n<div id=\"user-<%= user.id %>\" class=\"row\">\n  <div class=\"col-lg-8\">\n    <%= render 'shared/avatar', user: user %>\n    <h5 class=\"name\"><%= link_to user.name, user %></h5>\n  </div>\n  <div class=\"col-lg-4\">\n    <div class=\"follow\">\n      <%= render 'follows/form', user: user %>\n    </div>\n  </div>\n</div>\n<br>"
  },
  {
    "path": "app/views/users/deactivate.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-6 col-lg-offset-3\">\n    <div class=\"well\">\n      <h3>Deactivate</h3>\n      <hr>\n      <h5>Unhappy with Socify? Hit the Button below to cancel account.</h5>\n      <br>\n      <%= button_to 'Cancel my account', registration_path(@user), data: { confirm: \"Are you sure?\" }, method: :delete, class: 'btn btn-danger' %>\n    </div>\n  </div>\n</div>"
  },
  {
    "path": "app/views/users/edit.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-6 col-lg-offset-3\">\n    <div class=\"well\">\n      <h3>Edit Profile</h3>\n      <%= form_for @user do |f| %>\n        <div class=\"form-group\">\n          <%= f.label :avatar %>\n          <br>\n          <%= render 'shared/avatar', user: @user %>\n          <br>\n          <br>\n          <%= f.file_field :avatar %>\n        </div>\n        <div class=\"form-group\">\n          <%= f.label :cover %>\n          <br>\n          <%= render 'shared/cover', user: @user %>\n          <br>\n          <%= f.file_field :cover %>\n        </div>\n        <div class=\"form-group\">\n          <%= f.label :name %>\n          <%= f.text_field :name, placeholder: 'Full Name', class: 'form-control' %>\n        </div>\n        <div class=\"form-group\">\n          <%= f.label :about %>\n          <%= f.text_area :about, placeholder: 'About', class: 'form-control' %>\n        </div>\n        <div class=\"form-group\">\n          <%= f.label :location %>\n          <%= f.text_field :location, placeholder: 'Location', class: 'form-control' %>\n        </div>\n        <div class=\"form-group\">\n          <%= f.label :phone_number %>\n          <%= f.text_field :phone_number, placeholder: 'Phone Number', class: 'form-control' %>\n        </div>\n        <div class=\"form-group\">\n          <%= f.label :dob %>\n          <%= f.text_field :dob, placeholder: 'Date of Birth', class: 'form-control' %>\n        </div>\n        <div class=\"form-group\">\n          <%= f.label :sex %><br>\n          <%= f.select :sex, options_for_seasons, class: 'form-control', prompt: 'Select One' %>\n        </div>\n        <div class=\"actions\">\n          <%= submit_tag 'Update', class: 'btn btn-primary' %>\n        </div>\n      <% end %>\n    </div>\n  </div>\n</div>"
  },
  {
    "path": "app/views/users/followers.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-3\">\n    <%= render 'shared/user_info' %>\n  </div>\n  <div class=\"col-lg-6 well\">\n    <h3>Followers</h3>\n    <hr>\n    <div id=\"followers\">\n      <%= render(@followers) || render('shared/no_resource', resources: 'Followers')  %>\n    </div>\n    <%= render 'shared/paginate', resources: @followers %>\n  </div>\n  <div class=\"col-lg-3\">\n    <%= render 'shared/links' %>\n  </div>\n</div>"
  },
  {
    "path": "app/views/users/followers.js.erb",
    "content": "$('#followers').append(\"<%= j render(@followers) %>\");\n\n<%= render 'shared/paginate', resources: @followers %>"
  },
  {
    "path": "app/views/users/friends.html.erb",
    "content": "<div class=\"row\">\n  <div class=\"col-lg-3\">\n    <%= render 'shared/user_info' %>\n  </div>\n  <div class=\"col-lg-6 well\">\n    <h3>Friends</h3>\n    <hr>\n    <div id=\"friends\">\n      <%= render(@friends) || render('shared/no_resource', resources: 'Friends') %>\n    </div>\n    <%= render 'shared/paginate', resources: @friends %>\n  </div>\n  <div class=\"col-lg-3\">\n    <%= render 'shared/links' %>\n  </div>\n</div>"
  },
  {
    "path": "app/views/users/friends.js.erb",
    "content": "$('#friends').append(\"<%= j render(@friends) %>\");\n\n<%= render 'shared/paginate', resources: @friends %>"
  },
  {
    "path": "app/views/users/show.html.erb",
    "content": "<%= render 'shared/cover', user: @user %>\n<br>\n<div id=\"user-<%= @user.id %>\" class=\"row\">\n  <div class=\"col-lg-3\">\n    <%= render 'shared/user_info' %>\n  </div>\n  <div class=\"col-lg-6\">\n    <div id=\"activities\">\n      <% if @activities.empty? %>\n        <div class=\"well\">\n          <%= render('shared/no_resource', resources: 'Activities') %>\n        </div>\n      <% else %>\n        <%= render_activities(@activities, layout: '/shared/activity') %>\n      <% end %>\n    </div>\n    <%= render 'shared/paginate', resources: @activities %>\n  </div>\n  <div class=\"col-lg-3\">\n    <% if is_current_user?(@user) %>\n      <div class=\"well\">\n        <ul class=\"nav nav-pills nav-stacked\">\n          <li><%= link_to 'Edit Profile', edit_user_path(@user) %></li>\n          <li><%= link_to 'Change password', edit_user_registration_path %></li>\n          <li><%= link_to 'Friends', friends_user_path(@user) %></li>\n          <li><%= link_to 'Followers', followers_user_path(@user) %></li>\n          <li><%= link_to 'Deactivate', deactivate_user_path(@user) %></li>\n        </ul>\n      </div>\n    <% end %>\n  </div>\n</div>\n"
  },
  {
    "path": "app/views/users/show.js.erb",
    "content": "$('#activities').append(\"<%= j render_activities(@activities, layout: '/shared/activity') %>\");\n\n<%= render 'shared/paginate', resources: @activities %>"
  },
  {
    "path": "bin/bundle",
    "content": "#!/usr/bin/env ruby\nENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)\nload Gem.bin_path('bundler', 'bundle')\n"
  },
  {
    "path": "bin/rails",
    "content": "#!/usr/bin/env ruby\nbegin\n  load File.expand_path(\"../spring\", __FILE__)\nrescue LoadError\nend\nAPP_PATH = File.expand_path('../../config/application', __FILE__)\nrequire_relative '../config/boot'\nrequire 'rails/commands'\n"
  },
  {
    "path": "bin/rake",
    "content": "#!/usr/bin/env ruby\nbegin\n  load File.expand_path(\"../spring\", __FILE__)\nrescue LoadError\nend\nrequire_relative '../config/boot'\nrequire 'rake'\nRake.application.run\n"
  },
  {
    "path": "bin/setup",
    "content": "#!/usr/bin/env ruby\nrequire 'pathname'\n\n# path to your application root.\nAPP_ROOT = Pathname.new File.expand_path('../../',  __FILE__)\n\nDir.chdir APP_ROOT do\n  # This script is a starting point to setup your application.\n  # Add necessary setup steps to this file:\n\n  puts \"== Installing dependencies ==\"\n  system \"gem install bundler --conservative\"\n  system \"bundle check || bundle install\"\n\n  # puts \"\\n== Copying sample files ==\"\n  # unless File.exist?(\"config/database.yml\")\n  #   system \"cp config/database.yml.sample config/database.yml\"\n  # end\n\n  puts \"\\n== Preparing database ==\"\n  system \"bin/rake db:setup\"\n\n  puts \"\\n== Removing old logs and tempfiles ==\"\n  system \"rm -f log/*\"\n  system \"rm -rf tmp/cache\"\n\n  puts \"\\n== Restarting application server ==\"\n  system \"touch tmp/restart.txt\"\nend\n"
  },
  {
    "path": "bin/spring",
    "content": "#!/usr/bin/env ruby\n\n# This file loads spring without using Bundler, in order to be fast.\n# It gets overwritten when you run the `spring binstub` command.\n\nunless defined?(Spring)\n  require \"rubygems\"\n  require \"bundler\"\n\n  if match = Bundler.default_lockfile.read.match(/^GEM$.*?^    (?:  )*spring \\((.*?)\\)$.*?^$/m)\n    Gem.paths = { \"GEM_PATH\" => [Bundler.bundle_path.to_s, *Gem.path].uniq }\n    gem \"spring\", match[1]\n    require \"spring/binstub\"\n  end\nend\n"
  },
  {
    "path": "config/application.rb",
    "content": "require File.expand_path('../boot', __FILE__)\n\nrequire 'rails/all'\n\n# Require the gems listed in Gemfile, including any gems\n# you've limited to :test, :development, or :production.\nBundler.require(*Rails.groups)\n\nmodule Socify\n  class Application < Rails::Application\n    # Settings in config/environments/* take precedence over those specified here.\n    # Application configuration should go into files in config/initializers\n    # -- all .rb files in that directory are automatically loaded.\n\n    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.\n    # Run \"rake -D time\" for a list of tasks for finding time zone names. Default is UTC.\n    # config.time_zone = 'Central Time (US & Canada)'\n\n    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.\n    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]\n    # config.i18n.default_locale = :de\n  end\nend\n"
  },
  {
    "path": "config/boot.rb",
    "content": "ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)\n\nrequire 'bundler/setup' # Set up gems listed in the Gemfile.\n"
  },
  {
    "path": "config/database.yml",
    "content": "# SQLite version 3.x\n#   gem install sqlite3\n#\n#   Ensure the SQLite 3 gem is defined in your Gemfile\n#   gem 'sqlite3'\n#\ndefault: &default\n  adapter: sqlite3\n  pool: 5\n  timeout: 5000\n\ndevelopment:\n  <<: *default\n  database: db/development.sqlite3\n\n# Warning: The database defined as \"test\" will be erased and\n# re-generated from your development database when you run \"rake\".\n# Do not set this db to the same as development or production.\ntest:\n  <<: *default\n  database: db/test.sqlite3\n\nproduction:\n  <<: *default\n  database: db/production.sqlite3\n"
  },
  {
    "path": "config/environment.rb",
    "content": "# Load the Rails application.\nrequire File.expand_path('../application', __FILE__)\n\n# Initialize the Rails application.\nRails.application.initialize!\n"
  },
  {
    "path": "config/environments/development.rb",
    "content": "Rails.application.configure do\n  # Settings specified here will take precedence over those in config/application.rb.\n\n  # In the development environment your application's code is reloaded on\n  # every request. This slows down response time but is perfect for development\n  # since you don't have to restart the web server when you make code changes.\n  config.cache_classes = false\n\n  # Do not eager load code on boot.\n  config.eager_load = false\n\n  # Show full error reports and disable caching.\n  config.consider_all_requests_local       = true\n  config.action_controller.perform_caching = false\n\n  # Don't care if the mailer can't send.\n  config.action_mailer.raise_delivery_errors = false\n\n  # Print deprecation notices to the Rails logger.\n  config.active_support.deprecation = :log\n\n  # Raise an error on page load if there are pending migrations.\n  config.active_record.migration_error = :page_load\n\n  # Debug mode disables concatenation and preprocessing of assets.\n  # This option may cause significant delays in view rendering with a large\n  # number of complex assets.\n  config.assets.debug = true\n\n  # Asset digests allow you to set far-future HTTP expiration dates on all assets,\n  # yet still be able to expire them through the digest params.\n  config.assets.digest = true\n\n  # Adds additional error checking when serving assets at runtime.\n  # Checks for improperly declared sprockets dependencies.\n  # Raises helpful error messages.\n  config.assets.raise_runtime_errors = true\n\n  # Raises error for missing translations\n  # config.action_view.raise_on_missing_translations = true\n\n  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }\n  config.action_mailer.delivery_method = :letter_opener\nend\n"
  },
  {
    "path": "config/environments/production.rb",
    "content": "Rails.application.configure do\n  # Settings specified here will take precedence over those in config/application.rb.\n\n  # Code is not reloaded between requests.\n  config.cache_classes = true\n\n  # Eager load code on boot. This eager loads most of Rails and\n  # your application in memory, allowing both threaded web servers\n  # and those relying on copy on write to perform better.\n  # Rake tasks automatically ignore this option for performance.\n  config.eager_load = true\n\n  # Full error reports are disabled and caching is turned on.\n  config.consider_all_requests_local       = false\n  config.action_controller.perform_caching = true\n\n  # Enable Rack::Cache to put a simple HTTP cache in front of your application\n  # Add `rack-cache` to your Gemfile before enabling this.\n  # For large-scale production use, consider using a caching reverse proxy like\n  # NGINX, varnish or squid.\n  # config.action_dispatch.rack_cache = true\n\n  # Disable serving static files from the `/public` folder by default since\n  # Apache or NGINX already handles this.\n  config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?\n\n  # Compress JavaScripts and CSS.\n  config.assets.js_compressor = :uglifier\n  # config.assets.css_compressor = :sass\n\n  # Do not fallback to assets pipeline if a precompiled asset is missed.\n  config.assets.compile = true\n\n  # Asset digests allow you to set far-future HTTP expiration dates on all assets,\n  # yet still be able to expire them through the digest params.\n  config.assets.digest = true\n\n  # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb\n\n  # Specifies the header that your server uses for sending files.\n  # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache\n  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX\n\n  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.\n  # config.force_ssl = true\n\n  # Use the lowest log level to ensure availability of diagnostic information\n  # when problems arise.\n  config.log_level = :debug\n\n  # Prepend all log lines with the following tags.\n  # config.log_tags = [ :subdomain, :uuid ]\n\n  # Use a different logger for distributed setups.\n  # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)\n\n  # Use a different cache store in production.\n  # config.cache_store = :mem_cache_store\n\n  # Enable serving of images, stylesheets, and JavaScripts from an asset server.\n  # config.action_controller.asset_host = 'http://assets.example.com'\n\n  # Ignore bad email addresses and do not raise email delivery errors.\n  # Set this to true and configure the email server for immediate delivery to raise delivery errors.\n  # config.action_mailer.raise_delivery_errors = false\n\n  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to\n  # the I18n.default_locale when a translation cannot be found).\n  config.i18n.fallbacks = true\n\n  # Send deprecation notices to registered listeners.\n  config.active_support.deprecation = :notify\n\n  # Use default logging formatter so that PID and timestamp are not suppressed.\n  config.log_formatter = ::Logger::Formatter.new\n\n  # Do not dump schema after migrations.\n  config.active_record.dump_schema_after_migration = false\n\n  config.action_mailer.default_url_options = { host: 'http://socifyapp.herokuapp.com' }\n\n  ActionMailer::Base.delivery_method = :smtp\n  ActionMailer::Base.perform_deliveries = true\n\n  ActionMailer::Base.smtp_settings = {\n    :address              => 'smtp.sendgrid.net',\n    :port                 => '587',\n    :domain               => 'heroku.com',\n    :user_name            => ENV['USERNAME'],\n    :password             => ENV['PASSWORD'],\n    :authentication       => \"plain\",\n    :enable_starttls_auto => true\n  }\nend\n"
  },
  {
    "path": "config/environments/test.rb",
    "content": "Rails.application.configure do\n  # Settings specified here will take precedence over those in config/application.rb.\n\n  # The test environment is used exclusively to run your application's\n  # test suite. You never need to work with it otherwise. Remember that\n  # your test database is \"scratch space\" for the test suite and is wiped\n  # and recreated between test runs. Don't rely on the data there!\n  config.cache_classes = true\n\n  # Do not eager load code on boot. This avoids loading your whole application\n  # just for the purpose of running a single test. If you are using a tool that\n  # preloads Rails for running tests, you may have to set it to true.\n  config.eager_load = false\n\n  # Configure static file server for tests with Cache-Control for performance.\n  config.serve_static_files   = true\n  config.static_cache_control = 'public, max-age=3600'\n\n  # Show full error reports and disable caching.\n  config.consider_all_requests_local       = true\n  config.action_controller.perform_caching = false\n\n  # Raise exceptions instead of rendering exception templates.\n  config.action_dispatch.show_exceptions = false\n\n  # Disable request forgery protection in test environment.\n  config.action_controller.allow_forgery_protection = false\n\n  # Tell Action Mailer not to deliver emails to the real world.\n  # The :test delivery method accumulates sent emails in the\n  # ActionMailer::Base.deliveries array.\n  config.action_mailer.delivery_method = :test\n\n  # Randomize the order test cases are executed.\n  config.active_support.test_order = :random\n\n  # Print deprecation notices to the stderr.\n  config.active_support.deprecation = :stderr\n\n  # Raises error for missing translations\n  # config.action_view.raise_on_missing_translations = true\nend\n"
  },
  {
    "path": "config/initializers/assets.rb",
    "content": "# Be sure to restart your server when you modify this file.\n\n# Version of your assets, change this if you want to expire all your assets.\nRails.application.config.assets.version = '1.0'\n\n# Add additional assets to the asset load path\n# Rails.application.config.assets.paths << Emoji.images_path\n\n# Precompile additional assets.\n# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.\n# Rails.application.config.assets.precompile += %w( search.js )\n"
  },
  {
    "path": "config/initializers/backtrace_silencers.rb",
    "content": "# Be sure to restart your server when you modify this file.\n\n# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.\n# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }\n\n# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.\n# Rails.backtrace_cleaner.remove_silencers!\n"
  },
  {
    "path": "config/initializers/carrierwave.rb",
    "content": "CarrierWave.configure do |config|\n  if Rails.env.production?\n    config.fog_credentials = {\n      provider:              'AWS', # required\n      aws_access_key_id:     Rails.application.secrets.aws_access_key_id, # required\n      aws_secret_access_key: Rails.application.secrets.aws_secret_access_key, # required\n      region:                'us-east-1', # optional, defaults to 'us-east-1'\n    }\n    config.fog_directory  = 'socify' # required\n    config.fog_public     = true # optional, defaults to true\n    config.fog_attributes = { 'Cache-Control' => \"max-age=#{365.day.to_i}\" } # optional, defaults to {}\n  end\nend\n"
  },
  {
    "path": "config/initializers/cookies_serializer.rb",
    "content": "# Be sure to restart your server when you modify this file.\n\nRails.application.config.action_dispatch.cookies_serializer = :json\n"
  },
  {
    "path": "config/initializers/devise.rb",
    "content": "# Use this hook to configure devise mailer, warden hooks and so forth.\n# Many of these configuration options can be set straight in your model.\nDevise.setup do |config|\n  # The secret key used by Devise. Devise uses this key to generate\n  # random tokens. Changing this key will render invalid all existing\n  # confirmation, reset password and unlock tokens in the database.\n  # Devise will use the `secret_key_base` on Rails 4+ applications as its `secret_key`\n  # by default. You can change it below and use your own secret key.\n  # config.secret_key = '658880288113e5b68bd9d6a14833f20128a9ffc66a4b117fd4b6b1761766ba1acdf2c525405fb08ab4cf1c060a6d8cb9dd4115457c204cea735899d4c78b3b42'\n\n  # ==> Mailer Configuration\n  # Configure the e-mail address which will be shown in Devise::Mailer,\n  # note that it will be overwritten if you use your own mailer class\n  # with default \"from\" parameter.\n  config.mailer_sender = 'admin@socifyapp.herokuapp.com'\n\n  # Configure the class responsible to send e-mails.\n  # config.mailer = 'Devise::Mailer'\n\n  # ==> ORM configuration\n  # Load and configure the ORM. Supports :active_record (default) and\n  # :mongoid (bson_ext recommended) by default. Other ORMs may be\n  # available as additional gems.\n  require 'devise/orm/active_record'\n\n  # ==> Configuration for any authentication mechanism\n  # Configure which keys are used when authenticating a user. The default is\n  # just :email. You can configure it to use [:username, :subdomain], so for\n  # authenticating a user, both parameters are required. Remember that those\n  # parameters are used only when authenticating and not when retrieving from\n  # session. If you need permissions, you should implement that in a before filter.\n  # You can also supply a hash where the value is a boolean determining whether\n  # or not authentication should be aborted when the value is not present.\n  # config.authentication_keys = [:email]\n\n  # Configure parameters from the request object used for authentication. Each entry\n  # given should be a request method and it will automatically be passed to the\n  # find_for_authentication method and considered in your model lookup. For instance,\n  # if you set :request_keys to [:subdomain], :subdomain will be used on authentication.\n  # The same considerations mentioned for authentication_keys also apply to request_keys.\n  # config.request_keys = []\n\n  # Configure which authentication keys should be case-insensitive.\n  # These keys will be downcased upon creating or modifying a user and when used\n  # to authenticate or find a user. Default is :email.\n  config.case_insensitive_keys = [:email]\n\n  # Configure which authentication keys should have whitespace stripped.\n  # These keys will have whitespace before and after removed upon creating or\n  # modifying a user and when used to authenticate or find a user. Default is :email.\n  config.strip_whitespace_keys = [:email]\n\n  # Tell if authentication through request.params is enabled. True by default.\n  # It can be set to an array that will enable params authentication only for the\n  # given strategies, for example, `config.params_authenticatable = [:database]` will\n  # enable it only for database (email + password) authentication.\n  # config.params_authenticatable = true\n\n  # Tell if authentication through HTTP Auth is enabled. False by default.\n  # It can be set to an array that will enable http authentication only for the\n  # given strategies, for example, `config.http_authenticatable = [:database]` will\n  # enable it only for database authentication. The supported strategies are:\n  # :database      = Support basic authentication with authentication key + password\n  # config.http_authenticatable = false\n\n  # If 401 status code should be returned for AJAX requests. True by default.\n  # config.http_authenticatable_on_xhr = true\n\n  # The realm used in Http Basic Authentication. 'Application' by default.\n  # config.http_authentication_realm = 'Application'\n\n  # It will change confirmation, password recovery and other workflows\n  # to behave the same regardless if the e-mail provided was right or wrong.\n  # Does not affect registerable.\n  # config.paranoid = true\n\n  # By default Devise will store the user in session. You can skip storage for\n  # particular strategies by setting this option.\n  # Notice that if you are skipping storage for all authentication paths, you\n  # may want to disable generating routes to Devise's sessions controller by\n  # passing skip: :sessions to `devise_for` in your config/routes.rb\n  config.skip_session_storage = [:http_auth]\n\n  # By default, Devise cleans up the CSRF token on authentication to\n  # avoid CSRF token fixation attacks. This means that, when using AJAX\n  # requests for sign in and sign up, you need to get a new CSRF token\n  # from the server. You can disable this option at your own risk.\n  # config.clean_up_csrf_token_on_authentication = true\n\n  # ==> Configuration for :database_authenticatable\n  # For bcrypt, this is the cost for hashing the password and defaults to 10. If\n  # using other encryptors, it sets how many times you want the password re-encrypted.\n  #\n  # Limiting the stretches to just one in testing will increase the performance of\n  # your test suite dramatically. However, it is STRONGLY RECOMMENDED to not use\n  # a value less than 10 in other environments. Note that, for bcrypt (the default\n  # encryptor), the cost increases exponentially with the number of stretches (e.g.\n  # a value of 20 is already extremely slow: approx. 60 seconds for 1 calculation).\n  config.stretches = Rails.env.test? ? 1 : 10\n\n  # Setup a pepper to generate the encrypted password.\n  # config.pepper = '3ef86ba979b6b2993e9ec0a4baed06cd5341625212d1a0a3dda3cd21db4f82b655b8089e9323e9f595f1b0f92e972c71cc5a3459d8139067e6891bf344f667e3'\n\n  # ==> Configuration for :confirmable\n  # A period that the user is allowed to access the website even without\n  # confirming their account. For instance, if set to 2.days, the user will be\n  # able to access the website for two days without confirming their account,\n  # access will be blocked just in the third day. Default is 0.days, meaning\n  # the user cannot access the website without confirming their account.\n  # config.allow_unconfirmed_access_for = 2.days\n\n  # A period that the user is allowed to confirm their account before their\n  # token becomes invalid. For example, if set to 3.days, the user can confirm\n  # their account within 3 days after the mail was sent, but on the fourth day\n  # their account can't be confirmed with the token any more.\n  # Default is nil, meaning there is no restriction on how long a user can take\n  # before confirming their account.\n  # config.confirm_within = 3.days\n\n  # If true, requires any email changes to be confirmed (exactly the same way as\n  # initial account confirmation) to be applied. Requires additional unconfirmed_email\n  # db field (see migrations). Until confirmed, new email is stored in\n  # unconfirmed_email column, and copied to email column on successful confirmation.\n  config.reconfirmable = false\n\n  # Defines which key will be used when confirming an account\n  # config.confirmation_keys = [:email]\n\n  # ==> Configuration for :rememberable\n  # The time the user will be remembered without asking for credentials again.\n  # config.remember_for = 2.weeks\n\n  # Invalidates all the remember me tokens when the user signs out.\n  config.expire_all_remember_me_on_sign_out = true\n\n  # If true, extends the user's remember period when remembered via cookie.\n  # config.extend_remember_period = false\n\n  # Options to be passed to the created cookie. For instance, you can set\n  # secure: true in order to force SSL only cookies.\n  # config.rememberable_options = {}\n\n  # ==> Configuration for :validatable\n  # Range for password length.\n  config.password_length = 8..72\n\n  # Email regex used to validate email formats. It simply asserts that\n  # one (and only one) @ exists in the given string. This is mainly\n  # to give user feedback and not to assert the e-mail validity.\n  # config.email_regexp = /\\A[^@]+@[^@]+\\z/\n\n  # ==> Configuration for :timeoutable\n  # The time you want to timeout the user session without activity. After this\n  # time the user will be asked for credentials again. Default is 30 minutes.\n  # config.timeout_in = 30.minutes\n\n  # If true, expires auth token on session timeout.\n  # config.expire_auth_token_on_timeout = false\n\n  # ==> Configuration for :lockable\n  # Defines which strategy will be used to lock an account.\n  # :failed_attempts = Locks an account after a number of failed attempts to sign in.\n  # :none            = No lock strategy. You should handle locking by yourself.\n  # config.lock_strategy = :failed_attempts\n\n  # Defines which key will be used when locking and unlocking an account\n  # config.unlock_keys = [:email]\n\n  # Defines which strategy will be used to unlock an account.\n  # :email = Sends an unlock link to the user email\n  # :time  = Re-enables login after a certain amount of time (see :unlock_in below)\n  # :both  = Enables both strategies\n  # :none  = No unlock strategy. You should handle unlocking by yourself.\n  # config.unlock_strategy = :both\n\n  # Number of authentication tries before locking an account if lock_strategy\n  # is failed attempts.\n  # config.maximum_attempts = 20\n\n  # Time interval to unlock the account if :time is enabled as unlock_strategy.\n  # config.unlock_in = 1.hour\n\n  # Warn on the last attempt before the account is locked.\n  # config.last_attempt_warning = true\n\n  # ==> Configuration for :recoverable\n  #\n  # Defines which key will be used when recovering the password for an account\n  # config.reset_password_keys = [:email]\n\n  # Time interval you can reset your password with a reset password key.\n  # Don't put a too small interval or your users won't have the time to\n  # change their passwords.\n  config.reset_password_within = 6.hours\n\n  # When set to false, does not sign a user in automatically after their password is\n  # reset. Defaults to true, so a user is signed in automatically after a reset.\n  # config.sign_in_after_reset_password = true\n\n  # ==> Configuration for :encryptable\n  # Allow you to use another encryption algorithm besides bcrypt (default). You can use\n  # :sha1, :sha512 or encryptors from others authentication tools as :clearance_sha1,\n  # :authlogic_sha512 (then you should set stretches above to 20 for default behavior)\n  # and :restful_authentication_sha1 (then you should set stretches to 10, and copy\n  # REST_AUTH_SITE_KEY to pepper).\n  #\n  # Require the `devise-encryptable` gem when using anything other than bcrypt\n  # config.encryptor = :sha512\n\n  # ==> Scopes configuration\n  # Turn scoped views on. Before rendering \"sessions/new\", it will first check for\n  # \"users/sessions/new\". It's turned off by default because it's slower if you\n  # are using only default views.\n  # config.scoped_views = false\n\n  # Configure the default scope given to Warden. By default it's the first\n  # devise role declared in your routes (usually :user).\n  # config.default_scope = :user\n\n  # Set this configuration to false if you want /users/sign_out to sign out\n  # only the current scope. By default, Devise signs out all scopes.\n  # config.sign_out_all_scopes = true\n\n  # ==> Navigation configuration\n  # Lists the formats that should be treated as navigational. Formats like\n  # :html, should redirect to the sign in page when the user does not have\n  # access, but formats like :xml or :json, should return 401.\n  #\n  # If you have any extra navigational formats, like :iphone or :mobile, you\n  # should add them to the navigational formats lists.\n  #\n  # The \"*/*\" below is required to match Internet Explorer requests.\n  # config.navigational_formats = ['*/*', :html]\n\n  # The default HTTP method used to sign out a resource. Default is :delete.\n  config.sign_out_via = :delete\n\n  # ==> OmniAuth\n  # Add a new OmniAuth provider. Check the wiki for more information on setting\n  # up on your models and hooks.\n  # config.omniauth :github, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo'\n\n  # ==> Warden configuration\n  # If you want to use other strategies, that are not supported by Devise, or\n  # change the failure app, you can configure them inside the config.warden block.\n  #\n  # config.warden do |manager|\n  #   manager.intercept_401 = false\n  #   manager.default_strategies(scope: :user).unshift :some_external_strategy\n  # end\n\n  # ==> Mountable engine configurations\n  # When using Devise inside an engine, let's call it `MyEngine`, and this engine\n  # is mountable, there are some extra configurations to be taken into account.\n  # The following options are available, assuming the engine is mounted as:\n  #\n  #     mount MyEngine, at: '/my_engine'\n  #\n  # The router that invoked `devise_for`, in the example above, would be:\n  # config.router_name = :my_engine\n  #\n  # When using OmniAuth, Devise cannot automatically set OmniAuth path,\n  # so you need to do it manually. For the users scope, it would be:\n  # config.omniauth_path_prefix = '/my_engine/users/auth'\nend\n"
  },
  {
    "path": "config/initializers/filter_parameter_logging.rb",
    "content": "# Be sure to restart your server when you modify this file.\n\n# Configure sensitive parameters which will be filtered from the log file.\nRails.application.config.filter_parameters += [:password]\n"
  },
  {
    "path": "config/initializers/friendly_id.rb",
    "content": "# FriendlyId Global Configuration\n#\n# Use this to set up shared configuration options for your entire application.\n# Any of the configuration options shown here can also be applied to single\n# models by passing arguments to the `friendly_id` class method or defining\n# methods in your model.\n#\n# To learn more, check out the guide:\n#\n# http://norman.github.io/friendly_id/file.Guide.html\n\nFriendlyId.defaults do |config|\n  # ## Reserved Words\n  #\n  # Some words could conflict with Rails's routes when used as slugs, or are\n  # undesirable to allow as slugs. Edit this list as needed for your app.\n  config.use :reserved\n\n  config.reserved_words = %w(new edit index session login logout users admin\n    stylesheets assets javascripts images)\n\n  #  ## Friendly Finders\n  #\n  # Uncomment this to use friendly finders in all models. By default, if\n  # you wish to find a record by its friendly id, you must do:\n  #\n  #    MyModel.friendly.find('foo')\n  #\n  # If you uncomment this, you can do:\n  #\n  #    MyModel.find('foo')\n  #\n  # This is significantly more convenient but may not be appropriate for\n  # all applications, so you must explicity opt-in to this behavior. You can\n  # always also configure it on a per-model basis if you prefer.\n  #\n  # Something else to consider is that using the :finders addon boosts\n  # performance because it will avoid Rails-internal code that makes runtime\n  # calls to `Module.extend`.\n  #\n  # config.use :finders\n  #\n  # ## Slugs\n  #\n  # Most applications will use the :slugged module everywhere. If you wish\n  # to do so, uncomment the following line.\n  #\n  # config.use :slugged\n  #\n  # By default, FriendlyId's :slugged addon expects the slug column to be named\n  # 'slug', but you can change it if you wish.\n  #\n  # config.slug_column = 'slug'\n  #\n  # When FriendlyId can not generate a unique ID from your base method, it appends\n  # a UUID, separated by a single dash. You can configure the character used as the\n  # separator. If you're upgrading from FriendlyId 4, you may wish to replace this\n  # with two dashes.\n  #\n  # config.sequence_separator = '-'\n  #\n  #  ## Tips and Tricks\n  #\n  #  ### Controlling when slugs are generated\n  #\n  # As of FriendlyId 5.0, new slugs are generated only when the slug field is\n  # nil, but if you're using a column as your base method can change this\n  # behavior by overriding the `should_generate_new_friendly_id` method that\n  # FriendlyId adds to your model. The change below makes FriendlyId 5.0 behave\n  # more like 4.0.\n  #\n  # config.use Module.new {\n  #   def should_generate_new_friendly_id?\n  #     slug.blank? || <your_column_name_here>_changed?\n  #   end\n  # }\n  #\n  # FriendlyId uses Rails's `parameterize` method to generate slugs, but for\n  # languages that don't use the Roman alphabet, that's not usually sufficient.\n  # Here we use the Babosa library to transliterate Russian Cyrillic slugs to\n  # ASCII. If you use this, don't forget to add \"babosa\" to your Gemfile.\n  #\n  # config.use Module.new {\n  #   def normalize_friendly_id(text)\n  #     text.to_slug.normalize! :transliterations => [:russian, :latin]\n  #   end\n  # }\nend\n"
  },
  {
    "path": "config/initializers/inflections.rb",
    "content": "# Be sure to restart your server when you modify this file.\n\n# Add new inflection rules using the following format. Inflections\n# are locale specific, and you may define rules for as many different\n# locales as you wish. All of these examples are active by default:\n# ActiveSupport::Inflector.inflections(:en) do |inflect|\n#   inflect.plural /^(ox)$/i, '\\1en'\n#   inflect.singular /^(ox)en/i, '\\1'\n#   inflect.irregular 'person', 'people'\n#   inflect.uncountable %w( fish sheep )\n# end\n\n# These inflection rules are supported but not enabled by default:\n# ActiveSupport::Inflector.inflections(:en) do |inflect|\n#   inflect.acronym 'RESTful'\n# end\n"
  },
  {
    "path": "config/initializers/merit.rb",
    "content": "# Use this hook to configure merit parameters\nMerit.setup do |config|\n  Merit::Badge.create!(\n    id: 1,\n    name: \"Jr.Critics\",\n    description: \"Over 5 comments\",\n    custom_fields: { color: '#C9AE5D', icon: 'icon-star-circled' }\n  )\n  Merit::Badge.create!(\n    id: 2,\n    name: \"Sr.Critic\",\n    description: \"Over 50 comments\",\n    custom_fields: { color: '#FFD700', icon: 'icon-crown' }\n  )\n\n  Merit::Badge.create!(\n    id: 3,\n    name: \"Story Teller\",\n    description: \"Over 5 posts!\",\n    custom_fields: { color: '#C0C0C0', icon: 'icon-certificate' }\n  )\n  Merit::Badge.create!(\n    id: 4,\n    name: \"First story \",\n    description: \"created first story\",\n    custom_fields: { color: '#C9AE5D', icon: 'icon-star-1' }\n  )\n\n  Merit::Badge.create!(\n    id: 5,\n    name: \"Scholar\",\n    description: \"Recieved over 2 likes on your post!\",\n    custom_fields: { color: '#FFD700', icon: 'icon-certificate' }\n  )\n  Merit::Badge.create!(\n    id: 6,\n    name: \"Necromancer\",\n    description: \"followed 7 people\",\n    custom_fields: { color: '#FFD700', icon: 'icon-minefield' }\n  )\nend\n  # Check rules on each request or in background\n  # config.checks_on_each_request = true\n\n  # Define ORM. Could be :active_record (default) and :mongoid\n  # config.orm = :active_record\n\n  # Add application observers to get notifications when reputation changes.\n  # config.add_observer 'MyObserverClassName'\n\n  # Define :user_model_name. This model will be used to grand badge if no\n  # `:to` option is given. Default is 'User'.\n  # config.user_model_name = 'User'\n\n  # Define :current_user_method. Similar to previous option. It will be used\n  # to retrieve :user_model_name object if no `:to` option is given. Default\n  # is \"current_#{user_model_name.downcase}\".\n  # config.current_user_method = 'current_user'\n\n\n# Create application badges (uses https://github.com/norman/ambry)\n# badge_id = 0\n# [{\n#   id: (badge_id = badge_id+1),\n#   name: 'just-registered'\n# }, {\n#   id: (badge_id = badge_id+1),\n#   name: 'best-unicorn',\n#   custom_fields: { category: 'fantasy' }\n# }].each do |attrs|\n#   Merit::Badge.create! attrs\n# end\n"
  },
  {
    "path": "config/initializers/mime_types.rb",
    "content": "# Be sure to restart your server when you modify this file.\n\n# Add new mime types for use in respond_to blocks:\n# Mime::Type.register \"text/richtext\", :rtf\n"
  },
  {
    "path": "config/initializers/session_store.rb",
    "content": "# Be sure to restart your server when you modify this file.\n\nRails.application.config.session_store :cookie_store, key: '_socify_session'\n"
  },
  {
    "path": "config/initializers/wrap_parameters.rb",
    "content": "# Be sure to restart your server when you modify this file.\n\n# This file contains settings for ActionController::ParamsWrapper which\n# is enabled by default.\n\n# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.\nActiveSupport.on_load(:action_controller) do\n  wrap_parameters format: [:json] if respond_to?(:wrap_parameters)\nend\n\n# To enable root element in JSON for ActiveRecord objects.\n# ActiveSupport.on_load(:active_record) do\n#  self.include_root_in_json = true\n# end\n"
  },
  {
    "path": "config/locales/devise.en.yml",
    "content": "# Additional translations at https://github.com/plataformatec/devise/wiki/I18n\n\nen:\n  devise:\n    confirmations:\n      confirmed: \"Your email address has been successfully confirmed.\"\n      send_instructions: \"You will receive an email with instructions for how to confirm your email address in a few minutes.\"\n      send_paranoid_instructions: \"If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes.\"\n    failure:\n      already_authenticated: \"You are already signed in.\"\n      inactive: \"Your account is not activated yet.\"\n      invalid: \"Invalid %{authentication_keys} or password.\"\n      locked: \"Your account is locked.\"\n      last_attempt: \"You have one more attempt before your account is locked.\"\n      not_found_in_database: \"Invalid %{authentication_keys} or password.\"\n      timeout: \"Your session expired. Please sign in again to continue.\"\n      unauthenticated: \"You need to sign in or sign up before continuing.\"\n      unconfirmed: \"You have to confirm your email address before continuing.\"\n    mailer:\n      confirmation_instructions:\n        subject: \"Confirmation instructions\"\n      reset_password_instructions:\n        subject: \"Reset password instructions\"\n      unlock_instructions:\n        subject: \"Unlock instructions\"\n    omniauth_callbacks:\n      failure: \"Could not authenticate you from %{kind} because \\\"%{reason}\\\".\"\n      success: \"Successfully authenticated from %{kind} account.\"\n    passwords:\n      no_token: \"You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided.\"\n      send_instructions: \"You will receive an email with instructions on how to reset your password in a few minutes.\"\n      send_paranoid_instructions: \"If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes.\"\n      updated: \"Your password has been changed successfully. You are now signed in.\"\n      updated_not_active: \"Your password has been changed successfully.\"\n    registrations:\n      destroyed: \"Bye! Your account has been successfully cancelled. We hope to see you again soon.\"\n      signed_up: \"Welcome! You have signed up successfully.\"\n      signed_up_but_inactive: \"You have signed up successfully. However, we could not sign you in because your account is not yet activated.\"\n      signed_up_but_locked: \"You have signed up successfully. However, we could not sign you in because your account is locked.\"\n      signed_up_but_unconfirmed: \"A message with a confirmation link has been sent to your email address. Please follow the link to activate your account.\"\n      update_needs_confirmation: \"You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address.\"\n      updated: \"Your account has been updated successfully.\"\n    sessions:\n      signed_in: \"\"\n      signed_out: \"Signed out. Bye!\"\n      already_signed_out: \"Signed out. Bye!\"\n    unlocks:\n      send_instructions: \"You will receive an email with instructions for how to unlock your account in a few minutes.\"\n      send_paranoid_instructions: \"If your account exists, you will receive an email with instructions for how to unlock it in a few minutes.\"\n      unlocked: \"Your account has been unlocked successfully. Please sign in to continue.\"\n  errors:\n    messages:\n      already_confirmed: \"was already confirmed, please try signing in\"\n      confirmation_period_expired: \"needs to be confirmed within %{period}, please request a new one\"\n      expired: \"has expired, please request a new one\"\n      not_found: \"not found\"\n      not_locked: \"was not locked\"\n      not_saved:\n        one: \"1 error prohibited this %{resource} from being saved:\"\n        other: \"%{count} errors prohibited this %{resource} from being saved:\"\n"
  },
  {
    "path": "config/locales/en.yml",
    "content": "# Files in the config/locales directory are used for internationalization\n# and are automatically loaded by Rails. If you want to use locales other\n# than English, add the necessary files in this directory.\n#\n# To use the locales, use `I18n.t`:\n#\n#     I18n.t 'hello'\n#\n# In views, this is aliased to just `t`:\n#\n#     <%= t('hello') %>\n#\n# To use a different locale, set it with `I18n.locale`:\n#\n#     I18n.locale = :es\n#\n# This would use the information in config/locales/es.yml.\n#\n# To learn more, please read the Rails Internationalization guide\n# available at http://guides.rubyonrails.org/i18n.html.\n\nen:\n  hello: \"Hello world\"\n"
  },
  {
    "path": "config/puma.rb",
    "content": "workers Integer(ENV['WEB_CONCURRENCY'] || 2)\nthreads_count = Integer(ENV['RAILS_MAX_THREADS'] || 1)\nthreads threads_count, threads_count\n\npreload_app!\n\nrackup      DefaultRackup\nport        ENV['PORT']     || 3000\nenvironment ENV['RACK_ENV'] || 'development'\n\non_worker_boot do\n  # Worker specific setup for Rails 4.1+\n  # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot\n  ActiveRecord::Base.establish_connection\nend\n"
  },
  {
    "path": "config/routes.rb",
    "content": "Rails.application.routes.draw do\n\n  resources :posts\n  resources :comments, only: [:create, :destroy]\n  devise_for :users\n  resources :users do\n    member do\n      get :friends\n      get :followers\n      get :deactivate\n      get :mentionable\n    end\n  end\n\n  resources :events do\n    collection do\n      get :calendar\n    end\n  end\n\n  authenticated :user do\n    root to: 'home#index', as: 'home'\n  end\n  unauthenticated :user do\n    root 'home#front'\n  end\n\n  match :follow, to: 'follows#create', as: :follow, via: :post\n  match :unfollow, to: 'follows#destroy', as: :unfollow, via: :post\n  match :like, to: 'likes#create', as: :like, via: :post\n  match :unlike, to: 'likes#destroy', as: :unlike, via: :post\n  match :find_friends, to: 'home#find_friends', as: :find_friends, via: :get\n  match :about, to: 'home#about', as: :about, via: :get\n\n  # The priority is based upon order of creation: first created -> highest priority.\n  # See how all your routes lay out with \"rake routes\".\n\n  # You can have the root of your site routed with \"root\"\n  # root 'welcome#index'\n\n  # Example of regular route:\n  #   get 'products/:id' => 'catalog#view'\n\n  # Example of named route that can be invoked with purchase_url(id: product.id)\n  #   get 'products/:id/purchase' => 'catalog#purchase', as: :purchase\n\n  # Example resource route (maps HTTP verbs to controller actions automatically):\n  #   resources :products\n\n  # Example resource route with options:\n  #   resources :products do\n  #     member do\n  #       get 'short'\n  #       post 'toggle'\n  #     end\n  #\n  #     collection do\n  #       get 'sold'\n  #     end\n  #   end\n\n  # Example resource route with sub-resources:\n  #   resources :products do\n  #     resources :comments, :sales\n  #     resource :seller\n  #   end\n\n  # Example resource route with more complex sub-resources:\n  #   resources :products do\n  #     resources :comments\n  #     resources :sales do\n  #       get 'recent', on: :collection\n  #     end\n  #   end\n\n  # Example resource route with concerns:\n  #   concern :toggleable do\n  #     post 'toggle'\n  #   end\n  #   resources :posts, concerns: :toggleable\n  #   resources :photos, concerns: :toggleable\n\n  # Example resource route within a namespace:\n  #   namespace :admin do\n  #     # Directs /admin/products/* to Admin::ProductsController\n  #     # (app/controllers/admin/products_controller.rb)\n  #     resources :products\n  #   end\nend\n"
  },
  {
    "path": "config/secrets.yml",
    "content": "# Be sure to restart your server when you modify this file.\n\n# Your secret key is used for verifying the integrity of signed cookies.\n# If you change this key, all old signed cookies will become invalid!\n\n# Make sure the secret is at least 30 characters and all random,\n# no regular words or you'll be exposed to dictionary attacks.\n# You can use `rake secret` to generate a secure secret key.\n\n# Make sure the secrets in this file are kept private\n# if you're sharing your code publicly.\n\ndevelopment:\n  secret_key_base: 60d47b0c616136ad34cb09ad5c0b5fa3f4cf938128fad8b52664881886355a6525ba8384f2cd81f8c051abd9e276a88c6e0504685b2a6f4489d3d406d65bc3f6\n\ntest:\n  secret_key_base: 962263610e563c52551c565eb7aafbe4c2c786f640fb8a540bf25d310cee799c7408692c4700e38eec3c3c153f0dee9cb91d0fd440f0b9c9b3706647afe4e74d\n\n# Do not keep production secrets in the repository,\n# instead read values from the environment.\nproduction:\n  secret_key_base: <%= ENV[\"SECRET_KEY_BASE\"] %>\n  aws_access_key_id: <%= ENV[\"AWS_ACCESS_KEY_ID\"] %>\n  aws_secret_access_key: <%= ENV[\"AWS_SECRET_ACCESS_KEY\"] %>\n"
  },
  {
    "path": "config.ru",
    "content": "# This file is used by Rack-based servers to start the application.\n\nrequire ::File.expand_path('../config/environment', __FILE__)\nrun Rails.application\n"
  },
  {
    "path": "db/migrate/20150701024445_devise_create_users.rb",
    "content": "class DeviseCreateUsers < ActiveRecord::Migration\n  def change\n    create_table(:users) do |t|\n      ## Database authenticatable\n      t.string :name,               null: false, default: \"\"\n      t.string :email,              null: false, default: \"\"\n      t.string :encrypted_password, null: false, default: \"\"\n      t.string :about\n      t.string :avatar\n      t.string :cover\n\n      ## Recoverable\n      t.string   :reset_password_token\n      t.datetime :reset_password_sent_at\n\n      ## Rememberable\n      t.datetime :remember_created_at\n\n      ## Trackable\n      t.integer  :sign_in_count, default: 0, null: false\n      t.datetime :current_sign_in_at\n      t.datetime :last_sign_in_at\n      t.string   :current_sign_in_ip\n      t.string   :last_sign_in_ip\n\n      ## Confirmable\n      t.string   :confirmation_token\n      t.datetime :confirmed_at\n      t.datetime :confirmation_sent_at\n      # t.string   :unconfirmed_email # Only if using reconfirmable\n\n      ## Lockable\n      # t.integer  :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts\n      # t.string   :unlock_token # Only if unlock strategy is :email or :both\n      # t.datetime :locked_at\n\n\n      t.timestamps null: false\n    end\n\n    add_index :users, :email,                unique: true\n    add_index :users, :reset_password_token, unique: true\n    add_index :users, :confirmation_token,   unique: true\n    # add_index :users, :unlock_token,         unique: true\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150702015915_create_posts.rb",
    "content": "class CreatePosts < ActiveRecord::Migration\n  def change\n    create_table :posts do |t|\n      t.text :content, null: false\n      t.references :user, index: true\n      t.string :attachment\n\n      t.timestamps\n    end\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150702020527_create_activities.rb",
    "content": "# Migration responsible for creating a table with activities\nclass CreateActivities < ActiveRecord::Migration\n  # Create table\n  def self.up\n    create_table :activities do |t|\n      t.belongs_to :trackable, :polymorphic => true\n      t.belongs_to :owner, :polymorphic => true\n      t.string  :key\n      t.text    :parameters\n      t.belongs_to :recipient, :polymorphic => true\n\n      t.timestamps\n    end\n\n    add_index :activities, [:trackable_id, :trackable_type]\n    add_index :activities, [:owner_id, :owner_type]\n    add_index :activities, [:recipient_id, :recipient_type]\n  end\n  # Drop table\n  def self.down\n    drop_table :activities\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150703041854_acts_as_votable_migration.rb",
    "content": "class ActsAsVotableMigration < ActiveRecord::Migration\n  def self.up\n    create_table :votes do |t|\n\n      t.references :votable, :polymorphic => true\n      t.references :voter, :polymorphic => true\n\n      t.boolean :vote_flag\n      t.string :vote_scope\n      t.integer :vote_weight\n\n      t.timestamps\n    end\n\n    if ActiveRecord::VERSION::MAJOR < 4\n      add_index :votes, [:votable_id, :votable_type]\n      add_index :votes, [:voter_id, :voter_type]\n    end\n\n    add_index :votes, [:voter_id, :voter_type, :vote_scope]\n    add_index :votes, [:votable_id, :votable_type, :vote_scope]\n  end\n\n  def self.down\n    drop_table :votes\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150703053202_add_cached_votes_to_posts.rb",
    "content": "class AddCachedVotesToPosts < ActiveRecord::Migration\n  def change\n    add_column :posts, :cached_votes_up, :integer, :default => 0\n    add_index  :posts, :cached_votes_up\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150703054721_create_comments.rb",
    "content": "class CreateComments < ActiveRecord::Migration\n  def self.up\n    create_table :comments do |t|\n      t.string :title, :limit => 50, :default => \"\" \n      t.text :comment\n      t.references :commentable, :polymorphic => true\n      t.references :user\n      t.string :role, :default => \"comments\"\n      t.timestamps\n    end\n\n    add_index :comments, :commentable_type\n    add_index :comments, :commentable_id\n    add_index :comments, :user_id\n  end\n\n  def self.down\n    drop_table :comments\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150703161656_add_counter_cache_to_posts.rb",
    "content": "class AddCounterCacheToPosts < ActiveRecord::Migration\n  def change\n    add_column :posts, :comments_count, :integer, :default => 0\n    add_index  :posts, :comments_count\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150703194107_acts_as_follower_migration.rb",
    "content": "class ActsAsFollowerMigration < ActiveRecord::Migration\n  def self.up\n    create_table :follows, :force => true do |t|\n      t.references :followable, :polymorphic => true, :null => false\n      t.references :follower,   :polymorphic => true, :null => false\n      t.boolean :blocked, :default => false, :null => false\n      t.timestamps\n    end\n\n    add_index :follows, [\"follower_id\", \"follower_type\"],     :name => \"fk_follows\"\n    add_index :follows, [\"followable_id\", \"followable_type\"], :name => \"fk_followables\"\n  end\n\n  def self.down\n    drop_table :follows\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150709034258_create_events.rb",
    "content": "class CreateEvents < ActiveRecord::Migration\n  def change\n    create_table :events do |t|\n      t.string :name\n      t.datetime :when\n      t.references :user, index: true\n\n      t.timestamps\n    end\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150709050651_add_votes_comments_count_to_events.rb",
    "content": "class AddVotesCommentsCountToEvents < ActiveRecord::Migration\n  def change\n    add_column :events, :cached_votes_up, :integer, :default => 0\n    add_index  :events, :cached_votes_up\n    add_column :events, :comments_count, :integer, :default => 0\n    add_index  :events, :comments_count\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150710004012_add_fields_to_user.rb",
    "content": "class AddFieldsToUser < ActiveRecord::Migration\n  def change\n    add_column :users, :sex, :string, null: false, default: 'male'\n    add_column :users, :location, :string\n    add_column :users, :dob, :date\n    add_column :users, :phone_number, :string\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150710030803_add_posts_count_to_users.rb",
    "content": "class AddPostsCountToUsers < ActiveRecord::Migration\n\n  def self.up\n    add_column :users, :posts_count, :integer, :null => false, :default => 0\n  end\n\n  def self.down\n    remove_column :users, :posts_count\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150710044606_create_friendly_id_slugs.rb",
    "content": "class CreateFriendlyIdSlugs < ActiveRecord::Migration\n  def change\n    create_table :friendly_id_slugs do |t|\n      t.string   :slug,           :null => false\n      t.integer  :sluggable_id,   :null => false\n      t.string   :sluggable_type, :limit => 50\n      t.string   :scope\n      t.datetime :created_at\n    end\n    add_index :friendly_id_slugs, :sluggable_id\n    add_index :friendly_id_slugs, [:slug, :sluggable_type]\n    add_index :friendly_id_slugs, [:slug, :sluggable_type, :scope], :unique => true\n    add_index :friendly_id_slugs, :sluggable_type\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150710044624_add_slug_to_users.rb",
    "content": "class AddSlugToUsers < ActiveRecord::Migration\n  def change\n    add_column :users, :slug, :string\n    add_index :users, :slug, unique: true\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150723052523_add_content_html_to_posts.rb",
    "content": "class AddContentHtmlToPosts < ActiveRecord::Migration\n  def change\n    add_column :posts, :content_html, :text\n  end\nend\n"
  },
  {
    "path": "db/migrate/20150723052743_add_comment_html_to_comments.rb",
    "content": "class AddCommentHtmlToComments < ActiveRecord::Migration\n  def change\n    add_column :comments, :comment_html, :text\n  end\nend\n"
  },
  {
    "path": "db/migrate/20170428044229_rename_events_when_column.rb",
    "content": "class RenameEventsWhenColumn < ActiveRecord::Migration[5.0]\n  def change\n    rename_column :events, :when, :event_datetime\n  end\nend\n"
  },
  {
    "path": "db/migrate/20170613183107_add_merit_fields_to_users.rb",
    "content": "class AddMeritFieldsToUsers < ActiveRecord::Migration\n  def change\n    add_column :users, :sash_id, :integer\n    add_column :users, :level,   :integer, :default => 0\n  end\nend\n"
  },
  {
    "path": "db/migrate/20170613183243_create_merit_actions.rb",
    "content": "class CreateMeritActions < ActiveRecord::Migration\n  def change\n    create_table :merit_actions do |t|\n      t.integer :user_id\n      t.string  :action_method\n      t.integer :action_value\n      t.boolean :had_errors, default: false\n      t.string  :target_model\n      t.integer :target_id\n      t.text    :target_data\n      t.boolean :processed, default: false\n      t.timestamps\n    end\n  end\nend\n"
  },
  {
    "path": "db/migrate/20170613183244_create_merit_activity_logs.rb",
    "content": "class CreateMeritActivityLogs < ActiveRecord::Migration\n  def change\n    create_table :merit_activity_logs do |t|\n      t.integer  :action_id\n      t.string   :related_change_type\n      t.integer  :related_change_id\n      t.string   :description\n      t.datetime :created_at\n    end\n  end\nend\n"
  },
  {
    "path": "db/migrate/20170613183245_create_sashes.rb",
    "content": "class CreateSashes < ActiveRecord::Migration\n  def change\n    create_table :sashes do |t|\n      t.timestamps\n    end\n  end\nend\n"
  },
  {
    "path": "db/migrate/20170613183246_create_badges_sashes.rb",
    "content": "class CreateBadgesSashes < ActiveRecord::Migration\n  def self.up\n    create_table :badges_sashes do |t|\n      t.integer :badge_id, :sash_id\n      t.boolean :notified_user, default: false\n      t.datetime :created_at\n    end\n    add_index :badges_sashes, [:badge_id, :sash_id]\n    add_index :badges_sashes, :badge_id\n    add_index :badges_sashes, :sash_id\n  end\n\n  def self.down\n    drop_table :badges_sashes\n  end\nend\n"
  },
  {
    "path": "db/migrate/20170613183247_create_scores_and_points.rb",
    "content": "class CreateScoresAndPoints < ActiveRecord::Migration\n  def change\n    create_table :merit_scores do |t|\n      t.references :sash\n      t.string :category, default: 'default'\n    end\n\n    create_table :merit_score_points do |t|\n      t.references :score\n      t.integer :num_points, default: 0\n      t.string :log\n      t.datetime :created_at\n    end\n  end\nend\n"
  },
  {
    "path": "db/schema.rb",
    "content": "# This file is auto-generated from the current state of the database. Instead\n# of editing this file, please use the migrations feature of Active Record to\n# incrementally modify your database, and then regenerate this schema definition.\n#\n# Note that this schema.rb definition is the authoritative source for your\n# database schema. If you need to create the application database on another\n# system, you should be using db:schema:load, not running all the migrations\n# from scratch. The latter is a flawed and unsustainable approach (the more migrations\n# you'll amass, the slower it'll run and the greater likelihood for issues).\n#\n# It's strongly recommended that you check this file into your version control system.\n\nActiveRecord::Schema.define(version: 20170613183247) do\n\n  create_table \"activities\", force: :cascade do |t|\n    t.string   \"trackable_type\"\n    t.integer  \"trackable_id\"\n    t.string   \"owner_type\"\n    t.integer  \"owner_id\"\n    t.string   \"key\"\n    t.text     \"parameters\"\n    t.string   \"recipient_type\"\n    t.integer  \"recipient_id\"\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n    t.index [\"owner_id\", \"owner_type\"], name: \"index_activities_on_owner_id_and_owner_type\"\n    t.index [\"recipient_id\", \"recipient_type\"], name: \"index_activities_on_recipient_id_and_recipient_type\"\n    t.index [\"trackable_id\", \"trackable_type\"], name: \"index_activities_on_trackable_id_and_trackable_type\"\n  end\n\n  create_table \"attachments\", force: :cascade do |t|\n    t.string   \"file_name\"\n    t.string   \"attachable_type\", default: \"\"\n    t.integer  \"attachable_id\",   default: 0\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n    t.index [\"attachable_type\", \"attachable_id\"], name: \"index_attachments_on_attachable_type_and_attachable_id\"\n  end\n\n  create_table \"authentications\", force: :cascade do |t|\n    t.string   \"uid\"\n    t.string   \"provider\"\n    t.string   \"oauth_token\"\n    t.integer  \"user_id\"\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n    t.index [\"user_id\"], name: \"index_authentications_on_user_id\"\n  end\n\n  create_table \"badges_sashes\", force: :cascade do |t|\n    t.integer  \"badge_id\"\n    t.integer  \"sash_id\"\n    t.boolean  \"notified_user\", default: false\n    t.datetime \"created_at\"\n    t.index [\"badge_id\", \"sash_id\"], name: \"index_badges_sashes_on_badge_id_and_sash_id\"\n    t.index [\"badge_id\"], name: \"index_badges_sashes_on_badge_id\"\n    t.index [\"sash_id\"], name: \"index_badges_sashes_on_sash_id\"\n  end\n\n  create_table \"comments\", force: :cascade do |t|\n    t.string   \"title\",            limit: 50, default: \"\"\n    t.text     \"comment\"\n    t.string   \"commentable_type\"\n    t.integer  \"commentable_id\"\n    t.integer  \"user_id\"\n    t.string   \"role\",                        default: \"comments\"\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n    t.text     \"comment_html\"\n    t.index [\"commentable_id\"], name: \"index_comments_on_commentable_id\"\n    t.index [\"commentable_type\"], name: \"index_comments_on_commentable_type\"\n    t.index [\"user_id\"], name: \"index_comments_on_user_id\"\n  end\n\n  create_table \"event_attendees\", force: :cascade do |t|\n    t.integer  \"event_id\",                 null: false\n    t.integer  \"user_id\",                  null: false\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n    t.         \"status\",     default: \"0\", null: false\n    t.index [\"event_id\"], name: \"index_event_attendees_on_event_id\"\n    t.index [\"user_id\"], name: \"index_event_attendees_on_user_id\"\n  end\n\n  create_table \"events\", force: :cascade do |t|\n    t.string   \"name\"\n    t.datetime \"event_datetime\"\n    t.integer  \"user_id\"\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n    t.integer  \"cached_votes_up\", default: 0\n    t.integer  \"comments_count\",  default: 0\n    t.string   \"location\"\n    t.string   \"latlng\",          default: \"\"\n    t.index [\"cached_votes_up\"], name: \"index_events_on_cached_votes_up\"\n    t.index [\"comments_count\"], name: \"index_events_on_comments_count\"\n    t.index [\"user_id\"], name: \"index_events_on_user_id\"\n  end\n\n  create_table \"follows\", force: :cascade do |t|\n    t.string   \"followable_type\",                 null: false\n    t.integer  \"followable_id\",                   null: false\n    t.string   \"follower_type\",                   null: false\n    t.integer  \"follower_id\",                     null: false\n    t.boolean  \"blocked\",         default: false, null: false\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n    t.index [\"followable_id\", \"followable_type\"], name: \"fk_followables\"\n    t.index [\"follower_id\", \"follower_type\"], name: \"fk_follows\"\n  end\n\n  create_table \"friendly_id_slugs\", force: :cascade do |t|\n    t.string   \"slug\",                      null: false\n    t.integer  \"sluggable_id\",              null: false\n    t.string   \"sluggable_type\", limit: 50\n    t.string   \"scope\"\n    t.datetime \"created_at\"\n    t.index [\"slug\", \"sluggable_type\", \"scope\"], name: \"index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope\", unique: true\n    t.index [\"slug\", \"sluggable_type\"], name: \"index_friendly_id_slugs_on_slug_and_sluggable_type\"\n    t.index [\"sluggable_id\"], name: \"index_friendly_id_slugs_on_sluggable_id\"\n    t.index [\"sluggable_type\"], name: \"index_friendly_id_slugs_on_sluggable_type\"\n  end\n\n  create_table \"merit_actions\", force: :cascade do |t|\n    t.integer  \"user_id\"\n    t.string   \"action_method\"\n    t.integer  \"action_value\"\n    t.boolean  \"had_errors\",    default: false\n    t.string   \"target_model\"\n    t.integer  \"target_id\"\n    t.text     \"target_data\"\n    t.boolean  \"processed\",     default: false\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n  end\n\n  create_table \"merit_activity_logs\", force: :cascade do |t|\n    t.integer  \"action_id\"\n    t.string   \"related_change_type\"\n    t.integer  \"related_change_id\"\n    t.string   \"description\"\n    t.datetime \"created_at\"\n  end\n\n  create_table \"merit_score_points\", force: :cascade do |t|\n    t.integer  \"score_id\"\n    t.integer  \"num_points\", default: 0\n    t.string   \"log\"\n    t.datetime \"created_at\"\n  end\n\n  create_table \"merit_scores\", force: :cascade do |t|\n    t.integer \"sash_id\"\n    t.string  \"category\", default: \"default\"\n  end\n\n  create_table \"photo_albums\", force: :cascade do |t|\n    t.string   \"title\",           default: \"Album\"\n    t.string   \"front_image_url\"\n    t.integer  \"photos_count\",    default: 0,       null: false\n    t.integer  \"user_id\"\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n    t.string   \"slug\"\n    t.integer  \"cached_votes_up\", default: 0\n    t.integer  \"comments_count\",  default: 0\n    t.index [\"slug\"], name: \"index_photo_albums_on_slug\", unique: true\n    t.index [\"user_id\"], name: \"index_photo_albums_on_user_id\"\n  end\n\n  create_table \"photos\", force: :cascade do |t|\n    t.string   \"title\",          default: \"\", null: false\n    t.string   \"file\",                        null: false\n    t.integer  \"photo_album_id\"\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n    t.index [\"photo_album_id\"], name: \"index_photos_on_photo_album_id\"\n  end\n\n  create_table \"posts\", force: :cascade do |t|\n    t.text     \"content\",                      null: false\n    t.integer  \"user_id\"\n    t.string   \"attachment\"\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n    t.integer  \"cached_votes_up\", default: 0\n    t.integer  \"comments_count\",  default: 0\n    t.text     \"preview_html\",    default: \"\", null: false\n    t.index [\"cached_votes_up\"], name: \"index_posts_on_cached_votes_up\"\n    t.index [\"comments_count\"], name: \"index_posts_on_comments_count\"\n    t.index [\"user_id\"], name: \"index_posts_on_user_id\"\n  end\n\n  create_table \"sashes\", force: :cascade do |t|\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n  end\n\n  create_table \"users\", force: :cascade do |t|\n    t.string   \"name\",                   default: \"\",     null: false\n    t.string   \"email\",                  default: \"\",     null: false\n    t.string   \"encrypted_password\",     default: \"\",     null: false\n    t.string   \"bio\"\n    t.string   \"avatar\"\n    t.string   \"cover\"\n    t.string   \"reset_password_token\"\n    t.datetime \"reset_password_sent_at\"\n    t.datetime \"remember_created_at\"\n    t.integer  \"sign_in_count\",          default: 0,      null: false\n    t.datetime \"current_sign_in_at\"\n    t.datetime \"last_sign_in_at\"\n    t.string   \"current_sign_in_ip\"\n    t.string   \"last_sign_in_ip\"\n    t.string   \"confirmation_token\"\n    t.datetime \"confirmed_at\"\n    t.datetime \"confirmation_sent_at\"\n    t.datetime \"created_at\",                              null: false\n    t.datetime \"updated_at\",                              null: false\n    t.string   \"sex\",                    default: \"male\", null: false\n    t.string   \"location\"\n    t.date     \"dob\"\n    t.string   \"phone_number\"\n    t.integer  \"posts_count\",            default: 0,      null: false\n    t.string   \"slug\"\n    t.boolean  \"profile_complete\",       default: false,  null: false\n    t.string   \"first_name\",             default: \"\",     null: false\n    t.string   \"last_name\",              default: \"\",     null: false\n    t.string   \"hometown\"\n    t.string   \"works_at\"\n    t.integer  \"photo_albums_count\",     default: 0,      null: false\n    t.integer  \"sash_id\"\n    t.integer  \"level\",                  default: 0\n    t.index [\"confirmation_token\"], name: \"index_users_on_confirmation_token\", unique: true\n    t.index [\"email\"], name: \"index_users_on_email\", unique: true\n    t.index [\"reset_password_token\"], name: \"index_users_on_reset_password_token\", unique: true\n    t.index [\"slug\"], name: \"index_users_on_slug\", unique: true\n  end\n\n  create_table \"votes\", force: :cascade do |t|\n    t.string   \"votable_type\"\n    t.integer  \"votable_id\"\n    t.string   \"voter_type\"\n    t.integer  \"voter_id\"\n    t.boolean  \"vote_flag\"\n    t.string   \"vote_scope\"\n    t.integer  \"vote_weight\"\n    t.datetime \"created_at\"\n    t.datetime \"updated_at\"\n    t.index [\"votable_id\", \"votable_type\", \"vote_scope\"], name: \"index_votes_on_votable_id_and_votable_type_and_vote_scope\"\n    t.index [\"voter_id\", \"voter_type\", \"vote_scope\"], name: \"index_votes_on_voter_id_and_voter_type_and_vote_scope\"\n  end\n\nend\n"
  },
  {
    "path": "db/seeds.rb",
    "content": "# This file should contain all the record creation needed to seed the database with its default values.\n# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).\n#\n# Examples:\n#\n#   cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])\n#   Mayor.create(name: 'Emanuel', city: cities.first)\n"
  },
  {
    "path": "lib/assets/.keep",
    "content": ""
  },
  {
    "path": "lib/tasks/.keep",
    "content": ""
  },
  {
    "path": "lib/tasks/populate.rake",
    "content": "namespace :fill do\n  desc 'Fill data'\n  task data: :environment do\n    require 'faker'\n    require 'populator'\n    puts 'Erasing existing data'\n    puts '====================='\n\n    [User, Post, Event, Comment].each(&:delete_all)\n    ActsAsVotable::Vote.delete_all\n    PublicActivity::Activity.delete_all\n\n    puts 'Creating users'\n    puts '=============='\n    genders = ['male', 'female']\n    password = 'socify'\n\n    User.populate 20 do |user|\n      user.name = Faker::Name.name\n      user.email = Faker::Internet.email\n      user.sex = genders\n      user.dob = Faker::Date.between(45.years.ago, 15.years.ago)\n      user.phone_number = Faker::PhoneNumber.cell_phone\n      user.encrypted_password = User.new(password: password).encrypted_password\n      user.confirmed_at = DateTime.now\n      user.sign_in_count = 0\n      user.posts_count = 0\n      puts \"created user #{user.name}\"\n    end\n\n\n    user = User.new(name: 'Rails', email: 'test@socify.com', sex: 'female', password: 'password')\n    user.skip_confirmation!\n    user.save!\n    puts 'Created test user with email=test@socify.com and password=password'\n\n    puts 'Generate Friendly id slug for users'\n    puts '==================================='\n    User.find_each(&:save)\n\n    puts 'Creating Posts'\n    puts '=============='\n    users = User.all\n\n    15.times do\n      post = Post.new\n      post.content = Populator.sentences(2..4)\n      post.user = users.sample\n      post.save!\n      puts \"created post #{post.id}\"\n    end\n\n    puts 'Creating Comments For Posts'\n    puts '==========================='\n\n    posts = Post.all\n\n    15.times do\n      post = posts.sample\n      user = users.sample\n      comment = post.comments.new\n      comment.comment = Populator.sentences(1)\n      comment.user = user\n      comment.save\n      puts \"user #{user.name} commented on post #{post.id}\"\n    end\n\n    puts 'Creating Events'\n    puts '==============='\n\n    15.times do\n      event = Event.new\n      event.name = Populator.words(1..3).titleize\n      event.event_datetime = Faker::Date.between(2.years.ago, 1.day.from_now)\n      event.user = users.sample\n      event.save\n      puts \"created event #{event.name}\"\n    end\n\n    puts 'Creating Likes For Posts'\n    puts '========================'\n\n    15.times do\n      post = posts.sample\n      user = users.sample\n      post.liked_by user\n      puts \"post #{post.id} liked by user #{user.name}\"\n    end\n\n    puts 'Creating Likes For Events'\n    puts '========================='\n    events = Event.all\n\n    15.times do\n      event = events.sample\n      user = users.sample\n      event.liked_by user\n      puts \"event #{event.id} liked by user #{user.name}\"\n    end\n\n    puts 'Creating Comments For Events'\n    puts '============================='\n\n    15.times do\n      event = events.sample\n      user = users.sample\n      comment = event.comments.new\n      comment.commentable_type = 'Event'\n      comment.comment = Populator.sentences(1)\n      comment.user = user\n      comment.save\n      puts \"user #{user.name} commented on event #{event.id}\"\n    end\n\n  end\nend\n"
  },
  {
    "path": "public/404.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <title>The page you were looking for doesn't exist (404)</title>\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n  <style>\n  body {\n    background-color: #EFEFEF;\n    color: #2E2F30;\n    text-align: center;\n    font-family: arial, sans-serif;\n    margin: 0;\n  }\n\n  div.dialog {\n    width: 95%;\n    max-width: 33em;\n    margin: 4em auto 0;\n  }\n\n  div.dialog > div {\n    border: 1px solid #CCC;\n    border-right-color: #999;\n    border-left-color: #999;\n    border-bottom-color: #BBB;\n    border-top: #B00100 solid 4px;\n    border-top-left-radius: 9px;\n    border-top-right-radius: 9px;\n    background-color: white;\n    padding: 7px 12% 0;\n    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);\n  }\n\n  h1 {\n    font-size: 100%;\n    color: #730E15;\n    line-height: 1.5em;\n  }\n\n  div.dialog > p {\n    margin: 0 0 1em;\n    padding: 1em;\n    background-color: #F7F7F7;\n    border: 1px solid #CCC;\n    border-right-color: #999;\n    border-left-color: #999;\n    border-bottom-color: #999;\n    border-bottom-left-radius: 4px;\n    border-bottom-right-radius: 4px;\n    border-top-color: #DADADA;\n    color: #666;\n    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);\n  }\n  </style>\n</head>\n\n<body>\n  <!-- This file lives in public/404.html -->\n  <div class=\"dialog\">\n    <div>\n      <h1>The page you were looking for doesn't exist.</h1>\n      <p>You may have mistyped the address or the page may have moved.</p>\n    </div>\n    <p>If you are the application owner check the logs for more information.</p>\n  </div>\n</body>\n</html>\n"
  },
  {
    "path": "public/422.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <title>The change you wanted was rejected (422)</title>\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n  <style>\n  body {\n    background-color: #EFEFEF;\n    color: #2E2F30;\n    text-align: center;\n    font-family: arial, sans-serif;\n    margin: 0;\n  }\n\n  div.dialog {\n    width: 95%;\n    max-width: 33em;\n    margin: 4em auto 0;\n  }\n\n  div.dialog > div {\n    border: 1px solid #CCC;\n    border-right-color: #999;\n    border-left-color: #999;\n    border-bottom-color: #BBB;\n    border-top: #B00100 solid 4px;\n    border-top-left-radius: 9px;\n    border-top-right-radius: 9px;\n    background-color: white;\n    padding: 7px 12% 0;\n    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);\n  }\n\n  h1 {\n    font-size: 100%;\n    color: #730E15;\n    line-height: 1.5em;\n  }\n\n  div.dialog > p {\n    margin: 0 0 1em;\n    padding: 1em;\n    background-color: #F7F7F7;\n    border: 1px solid #CCC;\n    border-right-color: #999;\n    border-left-color: #999;\n    border-bottom-color: #999;\n    border-bottom-left-radius: 4px;\n    border-bottom-right-radius: 4px;\n    border-top-color: #DADADA;\n    color: #666;\n    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);\n  }\n  </style>\n</head>\n\n<body>\n  <!-- This file lives in public/422.html -->\n  <div class=\"dialog\">\n    <div>\n      <h1>The change you wanted was rejected.</h1>\n      <p>Maybe you tried to change something you didn't have access to.</p>\n    </div>\n    <p>If you are the application owner check the logs for more information.</p>\n  </div>\n</body>\n</html>\n"
  },
  {
    "path": "public/500.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <title>We're sorry, but something went wrong (500)</title>\n  <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n  <style>\n  body {\n    background-color: #EFEFEF;\n    color: #2E2F30;\n    text-align: center;\n    font-family: arial, sans-serif;\n    margin: 0;\n  }\n\n  div.dialog {\n    width: 95%;\n    max-width: 33em;\n    margin: 4em auto 0;\n  }\n\n  div.dialog > div {\n    border: 1px solid #CCC;\n    border-right-color: #999;\n    border-left-color: #999;\n    border-bottom-color: #BBB;\n    border-top: #B00100 solid 4px;\n    border-top-left-radius: 9px;\n    border-top-right-radius: 9px;\n    background-color: white;\n    padding: 7px 12% 0;\n    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);\n  }\n\n  h1 {\n    font-size: 100%;\n    color: #730E15;\n    line-height: 1.5em;\n  }\n\n  div.dialog > p {\n    margin: 0 0 1em;\n    padding: 1em;\n    background-color: #F7F7F7;\n    border: 1px solid #CCC;\n    border-right-color: #999;\n    border-left-color: #999;\n    border-bottom-color: #999;\n    border-bottom-left-radius: 4px;\n    border-bottom-right-radius: 4px;\n    border-top-color: #DADADA;\n    color: #666;\n    box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);\n  }\n  </style>\n</head>\n\n<body>\n  <!-- This file lives in public/500.html -->\n  <div class=\"dialog\">\n    <div>\n      <h1>We're sorry, but something went wrong.</h1>\n    </div>\n    <p>If you are the application owner check the logs for more information.</p>\n  </div>\n</body>\n</html>\n"
  },
  {
    "path": "public/robots.txt",
    "content": "# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file\n#\n# To ban all spiders from the entire site uncomment the next two lines:\n# User-agent: *\n# Disallow: /\n"
  },
  {
    "path": "test/controllers/.keep",
    "content": ""
  },
  {
    "path": "test/controllers/comments_controller_test.rb",
    "content": "require 'test_helper'\n\nclass CommentsControllerTest < ActionController::TestCase\n  # test \"the truth\" do\n  #   assert true\n  # end\nend\n"
  },
  {
    "path": "test/controllers/events_controller_test.rb",
    "content": "require 'test_helper'\n\nclass EventsControllerTest < ActionController::TestCase\n  # test \"the truth\" do\n  #   assert true\n  # end\nend\n"
  },
  {
    "path": "test/controllers/follows_controller_test.rb",
    "content": "require 'test_helper'\n\nclass FollowsControllerTest < ActionController::TestCase\n  # test \"the truth\" do\n  #   assert true\n  # end\nend\n"
  },
  {
    "path": "test/controllers/home_controller_test.rb",
    "content": "require 'test_helper'\n\nclass HomeControllerTest < ActionController::TestCase\n  # test \"the truth\" do\n  #   assert true\n  # end\nend\n"
  },
  {
    "path": "test/controllers/likes_controller_test.rb",
    "content": "require 'test_helper'\n\nclass LikesControllerTest < ActionController::TestCase\n  # test \"the truth\" do\n  #   assert true\n  # end\nend\n"
  },
  {
    "path": "test/controllers/posts_controller_test.rb",
    "content": "require 'test_helper'\n\nclass PostsControllerTest < ActionController::TestCase\n  setup do\n    @post = posts(:one)\n  end\n\n  test \"should get index\" do\n    get :index\n    assert_response :success\n    assert_not_nil assigns(:posts)\n  end\n\n  test \"should get new\" do\n    get :new\n    assert_response :success\n  end\n\n  test \"should create post\" do\n    assert_difference('Post.count') do\n      post :create, post: { attachment: @post.attachment, content: @post.content, user_id: @post.user_id }\n    end\n\n    assert_redirected_to post_path(assigns(:post))\n  end\n\n  test \"should show post\" do\n    get :show, id: @post\n    assert_response :success\n  end\n\n  test \"should get edit\" do\n    get :edit, id: @post\n    assert_response :success\n  end\n\n  test \"should update post\" do\n    patch :update, id: @post, post: { attachment: @post.attachment, content: @post.content, user_id: @post.user_id }\n    assert_redirected_to post_path(assigns(:post))\n  end\n\n  test \"should destroy post\" do\n    assert_difference('Post.count', -1) do\n      delete :destroy, id: @post\n    end\n\n    assert_redirected_to posts_path\n  end\nend\n"
  },
  {
    "path": "test/controllers/users_controller_test.rb",
    "content": "require 'test_helper'\n\nclass UsersControllerTest < ActionController::TestCase\n  # test \"the truth\" do\n  #   assert true\n  # end\nend\n"
  },
  {
    "path": "test/fixtures/.keep",
    "content": ""
  },
  {
    "path": "test/fixtures/events.yml",
    "content": "# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html\n\none:\n  name: MyString\n  date: 2015-07-08\n  time: 2015-07-08 22:42:59\n  user_id: \n\ntwo:\n  name: MyString\n  date: 2015-07-08\n  time: 2015-07-08 22:42:59\n  user_id: \n"
  },
  {
    "path": "test/fixtures/posts.yml",
    "content": "# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html\n\none:\n  content: MyText\n  user_id: \n  attachment: MyString\n\ntwo:\n  content: MyText\n  user_id: \n  attachment: MyString\n"
  },
  {
    "path": "test/fixtures/users.yml",
    "content": "# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html\n\n# This model initially had no columns defined.  If you add columns to the\n# model remove the '{}' from the fixture names and add the columns immediately\n# below each fixture, per the syntax in the comments below\n#\none: {}\n# column: value\n#\ntwo: {}\n#  column: value\n"
  },
  {
    "path": "test/helpers/.keep",
    "content": ""
  },
  {
    "path": "test/helpers/comments_helper_test.rb",
    "content": "require 'test_helper'\n\nclass CommentsHelperTest < ActionView::TestCase\nend\n"
  },
  {
    "path": "test/helpers/events_helper_test.rb",
    "content": "require 'test_helper'\n\nclass EventsHelperTest < ActionView::TestCase\nend\n"
  },
  {
    "path": "test/helpers/follows_helper_test.rb",
    "content": "require 'test_helper'\n\nclass FollowsHelperTest < ActionView::TestCase\nend\n"
  },
  {
    "path": "test/helpers/home_helper_test.rb",
    "content": "require 'test_helper'\n\nclass HomeHelperTest < ActionView::TestCase\nend\n"
  },
  {
    "path": "test/helpers/likes_helper_test.rb",
    "content": "require 'test_helper'\n\nclass LikesHelperTest < ActionView::TestCase\nend\n"
  },
  {
    "path": "test/helpers/posts_helper_test.rb",
    "content": "require 'test_helper'\n\nclass PostsHelperTest < ActionView::TestCase\nend\n"
  },
  {
    "path": "test/helpers/users_helper_test.rb",
    "content": "require 'test_helper'\n\nclass UsersHelperTest < ActionView::TestCase\nend\n"
  },
  {
    "path": "test/integration/.keep",
    "content": ""
  },
  {
    "path": "test/mailers/.keep",
    "content": ""
  },
  {
    "path": "test/models/.keep",
    "content": ""
  },
  {
    "path": "test/models/event_test.rb",
    "content": "require 'test_helper'\n\nclass EventTest < ActiveSupport::TestCase\n  # test \"the truth\" do\n  #   assert true\n  # end\nend\n"
  },
  {
    "path": "test/models/post_test.rb",
    "content": "require 'test_helper'\n\nclass PostTest < ActiveSupport::TestCase\n  # test \"the truth\" do\n  #   assert true\n  # end\nend\n"
  },
  {
    "path": "test/models/user_test.rb",
    "content": "require 'test_helper'\n\nclass UserTest < ActiveSupport::TestCase\n  # test \"the truth\" do\n  #   assert true\n  # end\nend\n"
  },
  {
    "path": "test/test_helper.rb",
    "content": "ENV['RAILS_ENV'] ||= 'test'\nrequire File.expand_path('../../config/environment', __FILE__)\nrequire 'rails/test_help'\n\nclass ActiveSupport::TestCase\n  # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.\n  fixtures :all\n\n  # Add more helper methods to be used by all tests here...\nend\n"
  },
  {
    "path": "vendor/assets/javascripts/.keep",
    "content": ""
  },
  {
    "path": "vendor/assets/javascripts/bindWithDelay.js",
    "content": "/*\nbindWithDelay jQuery plugin\nAuthor: Brian Grinstead\nMIT license: http://www.opensource.org/licenses/mit-license.php\n\nhttp://github.com/bgrins/bindWithDelay\nhttp://briangrinstead.com/files/bindWithDelay\n\nUsage:\n    See http://api.jquery.com/bind/\n    .bindWithDelay( eventType, [ eventData ], handler(eventObject), timeout, throttle )\n\nExamples:\n    $(\"#foo\").bindWithDelay(\"click\", function(e) { }, 100);\n    $(window).bindWithDelay(\"resize\", { optional: \"eventData\" }, callback, 1000);\n    $(window).bindWithDelay(\"resize\", callback, 1000, true);\n*/\n\n(function($) {\n\n$.fn.bindWithDelay = function( type, data, fn, timeout, throttle ) {\n\n    if ( $.isFunction( data ) ) {\n        throttle = timeout;\n        timeout = fn;\n        fn = data;\n        data = undefined;\n    }\n\n    // Allow delayed function to be removed with fn in unbind function\n    fn.guid = fn.guid || ($.guid && $.guid++);\n\n    // Bind each separately so that each element has its own delay\n    return this.each(function() {\n\n        var wait = null;\n\n        function cb() {\n            var e = $.extend(true, { }, arguments[0]);\n            var ctx = this;\n            var throttler = function() {\n                wait = null;\n                fn.apply(ctx, [e]);\n            };\n\n            if (!throttle) { clearTimeout(wait); wait = null; }\n            if (!wait) { wait = setTimeout(throttler, timeout); }\n        }\n\n        cb.guid = fn.guid;\n\n        $(this).bind(type, data, cb);\n    });\n};\n\n})(jQuery);\n"
  },
  {
    "path": "vendor/assets/javascripts/jquery.datetimepicker.js",
    "content": "/**\n * @preserve jQuery DateTimePicker plugin v2.4.5\n * @homepage http://xdsoft.net/jqplugins/datetimepicker/\n * (c) 2014, Chupurnov Valeriy.\n */\n/*global document,window,jQuery,setTimeout,clearTimeout,HighlightedDate,getCurrentValue*/\n(function ($) {\n\t'use strict';\n\tvar default_options  = {\n\t\ti18n: {\n\t\t\tar: { // Arabic\n\t\t\t\tmonths: [\n\t\t\t\t\t\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"مايو\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"ن\", \"ث\", \"ع\", \"خ\", \"ج\", \"س\", \"ح\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tro: { // Romanian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"ianuarie\", \"februarie\", \"martie\", \"aprilie\", \"mai\", \"iunie\", \"iulie\", \"august\", \"septembrie\", \"octombrie\", \"noiembrie\", \"decembrie\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"l\", \"ma\", \"mi\", \"j\", \"v\", \"s\", \"d\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tid: { // Indonesian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Min\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tis: { // Icelandic\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Janúar\", \"Febrúar\", \"Mars\", \"Apríl\", \"Maí\", \"Júní\", \"Júlí\", \"Ágúst\", \"September\", \"Október\", \"Nóvember\", \"Desember\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sun\", \"Mán\", \"Þrið\", \"Mið\", \"Fim\", \"Fös\", \"Lau\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tbg: { // Bulgarian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Януари\", \"Февруари\", \"Март\", \"Април\", \"Май\", \"Юни\", \"Юли\", \"Август\", \"Септември\", \"Октомври\", \"Ноември\", \"Декември\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Нд\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tfa: { // Persian/Farsi\n\t\t\t\tmonths: [\n\t\t\t\t\t'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'\n\t\t\t\t]\n\t\t\t},\n\t\t\tru: { // Russian\n\t\t\t\tmonths: [\n\t\t\t\t\t'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Вск\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tuk: { // Ukrainian\n\t\t\t\tmonths: [\n\t\t\t\t\t'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ндл\", \"Пнд\", \"Втр\", \"Срд\", \"Чтв\", \"Птн\", \"Сбт\"\n\t\t\t\t]\n\t\t\t},\n\t\t\ten: { // English\n\t\t\t\tmonths: [\n\t\t\t\t\t\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tel: { // Ελληνικά\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάιος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Κυρ\", \"Δευ\", \"Τρι\", \"Τετ\", \"Πεμ\", \"Παρ\", \"Σαβ\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tde: { // German\n\t\t\t\tmonths: [\n\t\t\t\t\t'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tnl: { // Dutch\n\t\t\t\tmonths: [\n\t\t\t\t\t\"januari\", \"februari\", \"maart\", \"april\", \"mei\", \"juni\", \"juli\", \"augustus\", \"september\", \"oktober\", \"november\", \"december\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"\n\t\t\t\t]\n\t\t\t},\n\t\t\ttr: { // Turkish\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tfr: { //French\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tes: { // Spanish\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tth: { // Thai\n\t\t\t\tmonths: [\n\t\t\t\t\t'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'\n\t\t\t\t]\n\t\t\t},\n\t\t\tpl: { // Polish\n\t\t\t\tmonths: [\n\t\t\t\t\t\"styczeń\", \"luty\", \"marzec\", \"kwiecień\", \"maj\", \"czerwiec\", \"lipiec\", \"sierpień\", \"wrzesień\", \"październik\", \"listopad\", \"grudzień\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"nd\", \"pn\", \"wt\", \"śr\", \"cz\", \"pt\", \"sb\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tpt: { // Portuguese\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tch: { // Simplified Chinese\n\t\t\t\tmonths: [\n\t\t\t\t\t\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tse: { // Swedish\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\",  \"Oktober\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tkr: { // Korean\n\t\t\t\tmonths: [\n\t\t\t\t\t\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tit: { // Italian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tda: { // Dansk\n\t\t\t\tmonths: [\n\t\t\t\t\t\"January\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"July\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tno: { // Norwegian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tja: { // Japanese\n\t\t\t\tmonths: [\n\t\t\t\t\t\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tvi: { // Vietnamese\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Tháng 1\", \"Tháng 2\", \"Tháng 3\", \"Tháng 4\", \"Tháng 5\", \"Tháng 6\", \"Tháng 7\", \"Tháng 8\", \"Tháng 9\", \"Tháng 10\", \"Tháng 11\", \"Tháng 12\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"CN\", \"T2\", \"T3\", \"T4\", \"T5\", \"T6\", \"T7\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tsl: { // Slovenščina\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tcs: { // Čeština\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"\n\t\t\t\t]\n\t\t\t},\n\t\t\thu: { // Hungarian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Cs\", \"Pé\", \"Szo\"\n\t\t\t\t]\n\t\t\t},\n\t\t\taz: { //Azerbaijanian (Azeri)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Yanvar\", \"Fevral\", \"Mart\", \"Aprel\", \"May\", \"Iyun\", \"Iyul\", \"Avqust\", \"Sentyabr\", \"Oktyabr\", \"Noyabr\", \"Dekabr\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"B\", \"Be\", \"Ça\", \"Ç\", \"Ca\", \"C\", \"Ş\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tbs: { //Bosanski\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"Čet\", \"Pet\", \"Sub\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tca: { //Català\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dg\", \"Dl\", \"Dt\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t'en-GB': { //English (British)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tet: { //\"Eesti\"\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Jaanuar\", \"Veebruar\", \"Märts\", \"Aprill\", \"Mai\", \"Juuni\", \"Juuli\", \"August\", \"September\", \"Oktoober\", \"November\", \"Detsember\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"P\", \"E\", \"T\", \"K\", \"N\", \"R\", \"L\"\n\t\t\t\t]\n\t\t\t},\n\t\t\teu: { //Euskara\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Urtarrila\", \"Otsaila\", \"Martxoa\", \"Apirila\", \"Maiatza\", \"Ekaina\", \"Uztaila\", \"Abuztua\", \"Iraila\", \"Urria\", \"Azaroa\", \"Abendua\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ig.\", \"Al.\", \"Ar.\", \"Az.\", \"Og.\", \"Or.\", \"La.\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tfi: { //Finnish (Suomi)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tgl: { //Galego\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Xan\", \"Feb\", \"Maz\", \"Abr\", \"Mai\", \"Xun\", \"Xul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dec\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Xov\", \"Ven\", \"Sab\"\n\t\t\t\t]\n\t\t\t},\n\t\t\thr: { //Hrvatski\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Siječanj\", \"Veljača\", \"Ožujak\", \"Travanj\", \"Svibanj\", \"Lipanj\", \"Srpanj\", \"Kolovoz\", \"Rujan\", \"Listopad\", \"Studeni\", \"Prosinac\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"Čet\", \"Pet\", \"Sub\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tko: { //Korean (한국어)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tlt: { //Lithuanian (lietuvių)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Sausio\", \"Vasario\", \"Kovo\", \"Balandžio\", \"Gegužės\", \"Birželio\", \"Liepos\", \"Rugpjūčio\", \"Rugsėjo\", \"Spalio\", \"Lapkričio\", \"Gruodžio\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sek\", \"Pir\", \"Ant\", \"Tre\", \"Ket\", \"Pen\", \"Šeš\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tlv: { //Latvian (Latviešu)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Janvāris\", \"Februāris\", \"Marts\", \"Aprīlis \", \"Maijs\", \"Jūnijs\", \"Jūlijs\", \"Augusts\", \"Septembris\", \"Oktobris\", \"Novembris\", \"Decembris\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sv\", \"Pr\", \"Ot\", \"Tr\", \"Ct\", \"Pk\", \"St\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tmk: { //Macedonian (Македонски)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"јануари\", \"февруари\", \"март\", \"април\", \"мај\", \"јуни\", \"јули\", \"август\", \"септември\", \"октомври\", \"ноември\", \"декември\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"нед\", \"пон\", \"вто\", \"сре\", \"чет\", \"пет\", \"саб\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tmn: { //Mongolian (Монгол)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"1-р сар\", \"2-р сар\", \"3-р сар\", \"4-р сар\", \"5-р сар\", \"6-р сар\", \"7-р сар\", \"8-р сар\", \"9-р сар\", \"10-р сар\", \"11-р сар\", \"12-р сар\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Дав\", \"Мяг\", \"Лха\", \"Пүр\", \"Бсн\", \"Бям\", \"Ням\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t'pt-BR': { //Português(Brasil)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tsk: { //Slovenčina\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tsq: { //Albanian (Shqip)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t'sr-YU': { //Serbian (Srpski)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ned\", \"Pon\", \"Uto\", \"Sre\", \"čet\", \"Pet\", \"Sub\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tsr: { //Serbian Cyrillic (Српски)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"јануар\", \"фебруар\", \"март\", \"април\", \"мај\", \"јун\", \"јул\", \"август\", \"септембар\", \"октобар\", \"новембар\", \"децембар\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"нед\", \"пон\", \"уто\", \"сре\", \"чет\", \"пет\", \"суб\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tsv: { //Svenska\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t'zh-TW': { //Traditional Chinese (繁體中文)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tzh: { //Simplified Chinese (简体中文)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"\n\t\t\t\t]\n\t\t\t},\n\t\t\the: { //Hebrew (עברית)\n\t\t\t\tmonths: [\n\t\t\t\t\t'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t'א\\'', 'ב\\'', 'ג\\'', 'ד\\'', 'ה\\'', 'ו\\'', 'שבת'\n\t\t\t\t]\n\t\t\t},\n\t\t\thy: { // Armenian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Հունվար\", \"Փետրվար\", \"Մարտ\", \"Ապրիլ\", \"Մայիս\", \"Հունիս\", \"Հուլիս\", \"Օգոստոս\", \"Սեպտեմբեր\", \"Հոկտեմբեր\", \"Նոյեմբեր\", \"Դեկտեմբեր\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Կի\", \"Երկ\", \"Երք\", \"Չոր\", \"Հնգ\", \"Ուրբ\", \"Շբթ\"\n\t\t\t\t]\n\t\t\t},\n            kg: { // Kyrgyz\n                months: [\n                    'Үчтүн айы', 'Бирдин айы', 'Жалган Куран', 'Чын Куран', 'Бугу', 'Кулжа', 'Теке', 'Баш Оона', 'Аяк Оона', 'Тогуздун айы', 'Жетинин айы', 'Бештин айы'\n                ],\n                dayOfWeek: [\n                    \"Жек\", \"Дүй\", \"Шей\", \"Шар\", \"Бей\", \"Жум\", \"Ише\"\n                ]\n            }\n\t\t},\n\t\tvalue: '',\n\t\tlang: 'en',\n\n\t\tformat:\t'Y/m/d H:i',\n\t\tformatTime:\t'H:i',\n\t\tformatDate:\t'Y/m/d',\n\n\t\tstartDate:\tfalse, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05',\n\t\tstep: 60,\n\t\tmonthChangeSpinner: true,\n\n\t\tcloseOnDateSelect: false,\n\t\tcloseOnTimeSelect: true,\n\t\tcloseOnWithoutClick: true,\n\t\tcloseOnInputClick: true,\n\n\t\ttimepicker: true,\n\t\tdatepicker: true,\n\t\tweeks: false,\n\n\t\tdefaultTime: false,\t// use formatTime format (ex. '10:00' for formatTime:\t'H:i')\n\t\tdefaultDate: false,\t// use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05')\n\n\t\tminDate: false,\n\t\tmaxDate: false,\n\t\tminTime: false,\n\t\tmaxTime: false,\n\t\tdisabledMinTime: false,\n\t\tdisabledMaxTime: false,\n\n\t\tallowTimes: [],\n\t\topened: false,\n\t\tinitTime: true,\n\t\tinline: false,\n\t\ttheme: '',\n\n\t\tonSelectDate: function () {},\n\t\tonSelectTime: function () {},\n\t\tonChangeMonth: function () {},\n\t\tonChangeYear: function () {},\n\t\tonChangeDateTime: function () {},\n\t\tonShow: function () {},\n\t\tonClose: function () {},\n\t\tonGenerate: function () {},\n\n\t\twithoutCopyright: true,\n\t\tinverseButton: false,\n\t\thours12: false,\n\t\tnext: 'xdsoft_next',\n\t\tprev : 'xdsoft_prev',\n\t\tdayOfWeekStart: 0,\n\t\tparentID: 'body',\n\t\ttimeHeightInTimePicker: 25,\n\t\ttimepickerScrollbar: true,\n\t\ttodayButton: true,\n\t\tprevButton: true,\n\t\tnextButton: true,\n\t\tdefaultSelect: true,\n\n\t\tscrollMonth: true,\n\t\tscrollTime: true,\n\t\tscrollInput: true,\n\n\t\tlazyInit: false,\n\t\tmask: false,\n\t\tvalidateOnBlur: true,\n\t\tallowBlank: true,\n\t\tyearStart: 1950,\n\t\tyearEnd: 2050,\n\t\tmonthStart: 0,\n\t\tmonthEnd: 11,\n\t\tstyle: '',\n\t\tid: '',\n\t\tfixed: false,\n\t\troundTime: 'round', // ceil, floor\n\t\tclassName: '',\n\t\tweekends: [],\n\t\thighlightedDates: [],\n\t\thighlightedPeriods: [],\n\t\tdisabledDates : [],\n\t\tdisabledWeekDays: [],\n\t\tyearOffset: 0,\n\t\tbeforeShowDay: null,\n\n\t\tenterLikeTab: true,\n        showApplyButton: false\n\t};\n\t// fix for ie8\n\tif (!window.getComputedStyle) {\n\t\twindow.getComputedStyle = function (el, pseudo) {\n\t\t\tthis.el = el;\n\t\t\tthis.getPropertyValue = function (prop) {\n\t\t\t\tvar re = /(\\-([a-z]){1})/g;\n\t\t\t\tif (prop === 'float') {\n\t\t\t\t\tprop = 'styleFloat';\n\t\t\t\t}\n\t\t\t\tif (re.test(prop)) {\n\t\t\t\t\tprop = prop.replace(re, function (a, b, c) {\n\t\t\t\t\t\treturn c.toUpperCase();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn el.currentStyle[prop] || null;\n\t\t\t};\n\t\t\treturn this;\n\t\t};\n\t}\n\tif (!Array.prototype.indexOf) {\n\t\tArray.prototype.indexOf = function (obj, start) {\n\t\t\tvar i, j;\n\t\t\tfor (i = (start || 0), j = this.length; i < j; i += 1) {\n\t\t\t\tif (this[i] === obj) { return i; }\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\t}\n\tDate.prototype.countDaysInMonth = function () {\n\t\treturn new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate();\n\t};\n\t$.fn.xdsoftScroller = function (percent) {\n\t\treturn this.each(function () {\n\t\t\tvar timeboxparent = $(this),\n\t\t\t\tpointerEventToXY = function (e) {\n\t\t\t\t\tvar out = {x: 0, y: 0},\n\t\t\t\t\t\ttouch;\n\t\t\t\t\tif (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') {\n\t\t\t\t\t\ttouch  = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];\n\t\t\t\t\t\tout.x = touch.clientX;\n\t\t\t\t\t\tout.y = touch.clientY;\n\t\t\t\t\t} else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') {\n\t\t\t\t\t\tout.x = e.clientX;\n\t\t\t\t\t\tout.y = e.clientY;\n\t\t\t\t\t}\n\t\t\t\t\treturn out;\n\t\t\t\t},\n\t\t\t\tmove = 0,\n\t\t\t\ttimebox,\n\t\t\t\tparentHeight,\n\t\t\t\theight,\n\t\t\t\tscrollbar,\n\t\t\t\tscroller,\n\t\t\t\tmaximumOffset = 100,\n\t\t\t\tstart = false,\n\t\t\t\tstartY = 0,\n\t\t\t\tstartTop = 0,\n\t\t\t\th1 = 0,\n\t\t\t\ttouchStart = false,\n\t\t\t\tstartTopScroll = 0,\n\t\t\t\tcalcOffset = function () {};\n\t\t\tif (percent === 'hide') {\n\t\t\t\ttimeboxparent.find('.xdsoft_scrollbar').hide();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!$(this).hasClass('xdsoft_scroller_box')) {\n\t\t\t\ttimebox = timeboxparent.children().eq(0);\n\t\t\t\tparentHeight = timeboxparent[0].clientHeight;\n\t\t\t\theight = timebox[0].offsetHeight;\n\t\t\t\tscrollbar = $('<div class=\"xdsoft_scrollbar\"></div>');\n\t\t\t\tscroller = $('<div class=\"xdsoft_scroller\"></div>');\n\t\t\t\tscrollbar.append(scroller);\n\n\t\t\t\ttimeboxparent.addClass('xdsoft_scroller_box').append(scrollbar);\n\t\t\t\tcalcOffset = function calcOffset(event) {\n\t\t\t\t\tvar offset = pointerEventToXY(event).y - startY + startTopScroll;\n\t\t\t\t\tif (offset < 0) {\n\t\t\t\t\t\toffset = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (offset + scroller[0].offsetHeight > h1) {\n\t\t\t\t\t\toffset = h1 - scroller[0].offsetHeight;\n\t\t\t\t\t}\n\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]);\n\t\t\t\t};\n\n\t\t\t\tscroller\n\t\t\t\t\t.on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) {\n\t\t\t\t\t\tif (!parentHeight) {\n\t\t\t\t\t\t\ttimeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstartY = pointerEventToXY(event).y;\n\t\t\t\t\t\tstartTopScroll = parseInt(scroller.css('margin-top'), 10);\n\t\t\t\t\t\th1 = scrollbar[0].offsetHeight;\n\n\t\t\t\t\t\tif (event.type === 'mousedown') {\n\t\t\t\t\t\t\tif (document) {\n\t\t\t\t\t\t\t\t$(document.body).addClass('xdsoft_noselect');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$([document.body, window]).on('mouseup.xdsoft_scroller', function arguments_callee() {\n\t\t\t\t\t\t\t\t$([document.body, window]).off('mouseup.xdsoft_scroller', arguments_callee)\n\t\t\t\t\t\t\t\t\t.off('mousemove.xdsoft_scroller', calcOffset)\n\t\t\t\t\t\t\t\t\t.removeClass('xdsoft_noselect');\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t$(document.body).on('mousemove.xdsoft_scroller', calcOffset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttouchStart = true;\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.on('touchmove', function (event) {\n\t\t\t\t\t\tif (touchStart) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tcalcOffset(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.on('touchend touchcancel', function (event) {\n\t\t\t\t\t\ttouchStart =  false;\n\t\t\t\t\t\tstartTopScroll = 0;\n\t\t\t\t\t});\n\n\t\t\t\ttimeboxparent\n\t\t\t\t\t.on('scroll_element.xdsoft_scroller', function (event, percentage) {\n\t\t\t\t\t\tif (!parentHeight) {\n\t\t\t\t\t\t\ttimeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpercentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage;\n\n\t\t\t\t\t\tscroller.css('margin-top', maximumOffset * percentage);\n\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\ttimebox.css('marginTop', -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10));\n\t\t\t\t\t\t}, 10);\n\t\t\t\t\t})\n\t\t\t\t\t.on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) {\n\t\t\t\t\t\tvar percent, sh;\n\t\t\t\t\t\tparentHeight = timeboxparent[0].clientHeight;\n\t\t\t\t\t\theight = timebox[0].offsetHeight;\n\t\t\t\t\t\tpercent = parentHeight / height;\n\t\t\t\t\t\tsh = percent * scrollbar[0].offsetHeight;\n\t\t\t\t\t\tif (percent > 1) {\n\t\t\t\t\t\t\tscroller.hide();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tscroller.show();\n\t\t\t\t\t\t\tscroller.css('height', parseInt(sh > 10 ? sh : 10, 10));\n\t\t\t\t\t\t\tmaximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight;\n\t\t\t\t\t\t\tif (noTriggerScroll !== true) {\n\t\t\t\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || Math.abs(parseInt(timebox.css('marginTop'), 10)) / (height - parentHeight)]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\ttimeboxparent.on('mousewheel', function (event) {\n\t\t\t\t\tvar top = Math.abs(parseInt(timebox.css('marginTop'), 10));\n\n\t\t\t\t\ttop = top - (event.deltaY * 20);\n\t\t\t\t\tif (top < 0) {\n\t\t\t\t\t\ttop = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]);\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\t\ttimeboxparent.on('touchstart', function (event) {\n\t\t\t\t\tstart = pointerEventToXY(event);\n\t\t\t\t\tstartTop = Math.abs(parseInt(timebox.css('marginTop'), 10));\n\t\t\t\t});\n\n\t\t\t\ttimeboxparent.on('touchmove', function (event) {\n\t\t\t\t\tif (start) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tvar coord = pointerEventToXY(event);\n\t\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\ttimeboxparent.on('touchend touchcancel', function (event) {\n\t\t\t\t\tstart = false;\n\t\t\t\t\tstartTop = 0;\n\t\t\t\t});\n\t\t\t}\n\t\t\ttimeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);\n\t\t});\n\t};\n\n\t$.fn.datetimepicker = function (opt) {\n\t\tvar KEY0 = 48,\n\t\t\tKEY9 = 57,\n\t\t\t_KEY0 = 96,\n\t\t\t_KEY9 = 105,\n\t\t\tCTRLKEY = 17,\n\t\t\tDEL = 46,\n\t\t\tENTER = 13,\n\t\t\tESC = 27,\n\t\t\tBACKSPACE = 8,\n\t\t\tARROWLEFT = 37,\n\t\t\tARROWUP = 38,\n\t\t\tARROWRIGHT = 39,\n\t\t\tARROWDOWN = 40,\n\t\t\tTAB = 9,\n\t\t\tF5 = 116,\n\t\t\tAKEY = 65,\n\t\t\tCKEY = 67,\n\t\t\tVKEY = 86,\n\t\t\tZKEY = 90,\n\t\t\tYKEY = 89,\n\t\t\tctrlDown\t=\tfalse,\n\t\t\toptions = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options),\n\n\t\t\tlazyInitTimer = 0,\n\t\t\tcreateDateTimePicker,\n\t\t\tdestroyDateTimePicker,\n\n\t\t\tlazyInit = function (input) {\n\t\t\t\tinput\n\t\t\t\t\t.on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function initOnActionCallback(event) {\n\t\t\t\t\t\tif (input.is(':disabled') || input.data('xdsoft_datetimepicker')) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclearTimeout(lazyInitTimer);\n\t\t\t\t\t\tlazyInitTimer = setTimeout(function () {\n\n\t\t\t\t\t\t\tif (!input.data('xdsoft_datetimepicker')) {\n\t\t\t\t\t\t\t\tcreateDateTimePicker(input);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinput\n\t\t\t\t\t\t\t\t.off('open.xdsoft focusin.xdsoft mousedown.xdsoft', initOnActionCallback)\n\t\t\t\t\t\t\t\t.trigger('open.xdsoft');\n\t\t\t\t\t\t}, 100);\n\t\t\t\t\t});\n\t\t\t};\n\n\t\tcreateDateTimePicker = function (input) {\n\t\t\tvar datetimepicker = $('<div class=\"xdsoft_datetimepicker xdsoft_noselect\"></div>'),\n\t\t\t\txdsoft_copyright = $('<div class=\"xdsoft_copyright\"><a target=\"_blank\" href=\"http://xdsoft.net/jqplugins/datetimepicker/\">xdsoft.net</a></div>'),\n\t\t\t\tdatepicker = $('<div class=\"xdsoft_datepicker active\"></div>'),\n\t\t\t\tmounth_picker = $('<div class=\"xdsoft_mounthpicker\"><button type=\"button\" class=\"xdsoft_prev\"></button><button type=\"button\" class=\"xdsoft_today_button\"></button>' +\n\t\t\t\t\t'<div class=\"xdsoft_label xdsoft_month\"><span></span><i></i></div>' +\n\t\t\t\t\t'<div class=\"xdsoft_label xdsoft_year\"><span></span><i></i></div>' +\n\t\t\t\t\t'<button type=\"button\" class=\"xdsoft_next\"></button></div>'),\n\t\t\t\tcalendar = $('<div class=\"xdsoft_calendar\"></div>'),\n\t\t\t\ttimepicker = $('<div class=\"xdsoft_timepicker active\"><button type=\"button\" class=\"xdsoft_prev\"></button><div class=\"xdsoft_time_box\"></div><button type=\"button\" class=\"xdsoft_next\"></button></div>'),\n\t\t\t\ttimeboxparent = timepicker.find('.xdsoft_time_box').eq(0),\n\t\t\t\ttimebox = $('<div class=\"xdsoft_time_variant\"></div>'),\n                applyButton = $('<button type=\"button\" class=\"xdsoft_save_selected blue-gradient-button\">Save Selected</button>'),\n\t\t\t\t/*scrollbar = $('<div class=\"xdsoft_scrollbar\"></div>'),\n\t\t\t\tscroller = $('<div class=\"xdsoft_scroller\"></div>'),*/\n\t\t\t\tmonthselect = $('<div class=\"xdsoft_select xdsoft_monthselect\"><div></div></div>'),\n\t\t\t\tyearselect = $('<div class=\"xdsoft_select xdsoft_yearselect\"><div></div></div>'),\n\t\t\t\ttriggerAfterOpen = false,\n\t\t\t\tXDSoft_datetime,\n\t\t\t\t//scroll_element,\n\t\t\t\txchangeTimer,\n\t\t\t\ttimerclick,\n\t\t\t\tcurrent_time_index,\n\t\t\t\tsetPos,\n\t\t\t\ttimer = 0,\n\t\t\t\ttimer1 = 0,\n\t\t\t\t_xdsoft_datetime;\n\n\t\t\tif (options.id) {\n\t\t\t\tdatetimepicker.attr('id', options.id);\n\t\t\t}\n\t\t\tif (options.style) {\n\t\t\t\tdatetimepicker.attr('style', options.style);\n\t\t\t}\n\t\t\tif (options.weeks) {\n\t\t\t\tdatetimepicker.addClass('xdsoft_showweeks');\n\t\t\t}\n\n\t\t\tdatetimepicker.addClass('xdsoft_' + options.theme);\n\t\t\tdatetimepicker.addClass(options.className);\n\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_month span')\n\t\t\t\t\t.after(monthselect);\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_year span')\n\t\t\t\t\t.after(yearselect);\n\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_month,.xdsoft_year')\n\t\t\t\t\t.on('mousedown.xdsoft', function (event) {\n\t\t\t\t\tvar select = $(this).find('.xdsoft_select').eq(0),\n\t\t\t\t\t\tval = 0,\n\t\t\t\t\t\ttop = 0,\n\t\t\t\t\t\tvisible = select.is(':visible'),\n\t\t\t\t\t\titems,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\tmounth_picker\n\t\t\t\t\t\t.find('.xdsoft_select')\n\t\t\t\t\t\t\t.hide();\n\t\t\t\t\tif (_xdsoft_datetime.currentTime) {\n\t\t\t\t\t\tval = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear']();\n\t\t\t\t\t}\n\n\t\t\t\t\tselect[visible ? 'hide' : 'show']();\n\t\t\t\t\tfor (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) {\n\t\t\t\t\t\tif (items.eq(i).data('value') === val) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttop += items[0].offsetHeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tselect.xdsoftScroller(top / (select.children()[0].offsetHeight - (select[0].clientHeight)));\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_select')\n\t\t\t\t\t.xdsoftScroller()\n\t\t\t\t.on('mousedown.xdsoft', function (event) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t})\n\t\t\t\t.on('mousedown.xdsoft', '.xdsoft_option', function (event) {\n\n\t\t\t\t\tif (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {\n\t\t\t\t\t\t_xdsoft_datetime.currentTime = _xdsoft_datetime.now();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar year = _xdsoft_datetime.currentTime.getFullYear();\n\t\t\t\t\tif (_xdsoft_datetime && _xdsoft_datetime.currentTime) {\n\t\t\t\t\t\t_xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value'));\n\t\t\t\t\t}\n\n\t\t\t\t\t$(this).parent().parent().hide();\n\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t\tif (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {\n\t\t\t\t\t\toptions.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {\n\t\t\t\t\t\toptions.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tdatetimepicker.setOptions = function (_options) {\n\t\t\t\tvar highlightedDates = {},\n\t\t\t\t\tgetCaretPos = function (input) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (document.selection && document.selection.createRange) {\n\t\t\t\t\t\t\t\tvar range = document.selection.createRange();\n\t\t\t\t\t\t\t\treturn range.getBookmark().charCodeAt(2) - 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (input.setSelectionRange) {\n\t\t\t\t\t\t\t\treturn input.selectionStart;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tsetCaretPos = function (node, pos) {\n\t\t\t\t\t\tnode = (typeof node === \"string\" || node instanceof String) ? document.getElementById(node) : node;\n\t\t\t\t\t\tif (!node) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (node.createTextRange) {\n\t\t\t\t\t\t\tvar textRange = node.createTextRange();\n\t\t\t\t\t\t\ttextRange.collapse(true);\n\t\t\t\t\t\t\ttextRange.moveEnd('character', pos);\n\t\t\t\t\t\t\ttextRange.moveStart('character', pos);\n\t\t\t\t\t\t\ttextRange.select();\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (node.setSelectionRange) {\n\t\t\t\t\t\t\tnode.setSelectionRange(pos, pos);\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t},\n\t\t\t\t\tisValidValue = function (mask, value) {\n\t\t\t\t\t\tvar reg = mask\n\t\t\t\t\t\t\t.replace(/([\\[\\]\\/\\{\\}\\(\\)\\-\\.\\+]{1})/g, '\\\\$1')\n\t\t\t\t\t\t\t.replace(/_/g, '{digit+}')\n\t\t\t\t\t\t\t.replace(/([0-9]{1})/g, '{digit$1}')\n\t\t\t\t\t\t\t.replace(/\\{digit([0-9]{1})\\}/g, '[0-$1_]{1}')\n\t\t\t\t\t\t\t.replace(/\\{digit[\\+]\\}/g, '[0-9_]{1}');\n\t\t\t\t\t\treturn (new RegExp(reg)).test(value);\n\t\t\t\t\t};\n\t\t\t\toptions = $.extend(true, {}, options, _options);\n\n\t\t\t\tif (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) {\n\t\t\t\t\toptions.allowTimes = $.extend(true, [], _options.allowTimes);\n\t\t\t\t}\n\n\t\t\t\tif (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) {\n\t\t\t\t\toptions.weekends = $.extend(true, [], _options.weekends);\n\t\t\t\t}\n\n\t\t\t\tif (_options.highlightedDates && $.isArray(_options.highlightedDates) && _options.highlightedDates.length) {\n\t\t\t\t\t$.each(_options.highlightedDates, function (index, value) {\n\t\t\t\t\t\tvar splitData = $.map(value.split(','), $.trim),\n\t\t\t\t\t\t\texDesc,\n\t\t\t\t\t\t\thDate = new HighlightedDate(Date.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style\n\t\t\t\t\t\t\tkeyDate = hDate.date.dateFormat(options.formatDate);\n\t\t\t\t\t\tif (highlightedDates[keyDate] !== undefined) {\n\t\t\t\t\t\t\texDesc = highlightedDates[keyDate].desc;\n\t\t\t\t\t\t\tif (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {\n\t\t\t\t\t\t\t\thighlightedDates[keyDate].desc = exDesc + \"\\n\" + hDate.desc;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\thighlightedDates[keyDate] = hDate;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\toptions.highlightedDates = $.extend(true, [], highlightedDates);\n\t\t\t\t}\n\n\t\t\t\tif (_options.highlightedPeriods && $.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) {\n\t\t\t\t\thighlightedDates = $.extend(true, [], options.highlightedDates);\n\t\t\t\t\t$.each(_options.highlightedPeriods, function (index, value) {\n\t\t\t\t\t\tvar splitData = $.map(value.split(','), $.trim),\n\t\t\t\t\t\t\tdateTest = Date.parseDate(splitData[0], options.formatDate), // start date\n\t\t\t\t\t\t\tdateEnd = Date.parseDate(splitData[1], options.formatDate),\n\t\t\t\t\t\t\tdesc = splitData[2],\n\t\t\t\t\t\t\thDate,\n\t\t\t\t\t\t\tkeyDate,\n\t\t\t\t\t\t\texDesc,\n\t\t\t\t\t\t\tstyle = splitData[3];\n\n\t\t\t\t\t\twhile (dateTest <= dateEnd) {\n\t\t\t\t\t\t\thDate = new HighlightedDate(dateTest, desc, style);\n\t\t\t\t\t\t\tkeyDate = dateTest.dateFormat(options.formatDate);\n\t\t\t\t\t\t\tdateTest.setDate(dateTest.getDate() + 1);\n\t\t\t\t\t\t\tif (highlightedDates[keyDate] !== undefined) {\n\t\t\t\t\t\t\t\texDesc = highlightedDates[keyDate].desc;\n\t\t\t\t\t\t\t\tif (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {\n\t\t\t\t\t\t\t\t\thighlightedDates[keyDate].desc = exDesc + \"\\n\" + hDate.desc;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thighlightedDates[keyDate] = hDate;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\toptions.highlightedDates = $.extend(true, [], highlightedDates);\n\t\t\t\t}\n\n\t\t\t\tif (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) {\n\t\t\t\t\toptions.disabledDates = $.extend(true, [], _options.disabledDates);\n\t\t\t\t}\n\n\t\t\t\tif (_options.disabledWeekDays && $.isArray(_options.disabledWeekDays) && _options.disabledWeekDays.length) {\n\t\t\t\t    options.disabledWeekDays = $.extend(true, [], _options.disabledWeekDays);\n\t\t\t\t}\n\n\t\t\t\tif ((options.open || options.opened) && (!options.inline)) {\n\t\t\t\t\tinput.trigger('open.xdsoft');\n\t\t\t\t}\n\n\t\t\t\tif (options.inline) {\n\t\t\t\t\ttriggerAfterOpen = true;\n\t\t\t\t\tdatetimepicker.addClass('xdsoft_inline');\n\t\t\t\t\tinput.after(datetimepicker).hide();\n\t\t\t\t}\n\n\t\t\t\tif (options.inverseButton) {\n\t\t\t\t\toptions.next = 'xdsoft_prev';\n\t\t\t\t\toptions.prev = 'xdsoft_next';\n\t\t\t\t}\n\n\t\t\t\tif (options.datepicker) {\n\t\t\t\t\tdatepicker.addClass('active');\n\t\t\t\t} else {\n\t\t\t\t\tdatepicker.removeClass('active');\n\t\t\t\t}\n\n\t\t\t\tif (options.timepicker) {\n\t\t\t\t\ttimepicker.addClass('active');\n\t\t\t\t} else {\n\t\t\t\t\ttimepicker.removeClass('active');\n\t\t\t\t}\n\n\t\t\t\tif (options.value) {\n\t\t\t\t\t_xdsoft_datetime.setCurrentTime(options.value);\n\t\t\t\t\tif (input && input.val) {\n\t\t\t\t\t\tinput.val(_xdsoft_datetime.str);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isNaN(options.dayOfWeekStart)) {\n\t\t\t\t\toptions.dayOfWeekStart = 0;\n\t\t\t\t} else {\n\t\t\t\t\toptions.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7;\n\t\t\t\t}\n\n\t\t\t\tif (!options.timepickerScrollbar) {\n\t\t\t\t\ttimeboxparent.xdsoftScroller('hide');\n\t\t\t\t}\n\n\t\t\t\tif (options.minDate && /^-(.*)$/.test(options.minDate)) {\n\t\t\t\t\toptions.minDate = _xdsoft_datetime.strToDateTime(options.minDate).dateFormat(options.formatDate);\n\t\t\t\t}\n\n\t\t\t\tif (options.maxDate &&  /^\\+(.*)$/.test(options.maxDate)) {\n\t\t\t\t\toptions.maxDate = _xdsoft_datetime.strToDateTime(options.maxDate).dateFormat(options.formatDate);\n\t\t\t\t}\n\n\t\t\t\tapplyButton.toggle(options.showApplyButton);\n\n\t\t\t\tmounth_picker\n\t\t\t\t\t.find('.xdsoft_today_button')\n\t\t\t\t\t\t.css('visibility', !options.todayButton ? 'hidden' : 'visible');\n\n\t\t\t\tmounth_picker\n\t\t\t\t\t.find('.' + options.prev)\n\t\t\t\t\t\t.css('visibility', !options.prevButton ? 'hidden' : 'visible');\n\n\t\t\t\tmounth_picker\n\t\t\t\t\t.find('.' + options.next)\n\t\t\t\t\t\t.css('visibility', !options.nextButton ? 'hidden' : 'visible');\n\n\t\t\t\tif (options.mask) {\n\t\t\t\t\tinput.off('keydown.xdsoft');\n\n\t\t\t\t\tif (options.mask === true) {\n\t\t\t\t\t\toptions.mask = options.format\n\t\t\t\t\t\t\t.replace(/Y/g, '9999')\n\t\t\t\t\t\t\t.replace(/F/g, '9999')\n\t\t\t\t\t\t\t.replace(/m/g, '19')\n\t\t\t\t\t\t\t.replace(/d/g, '39')\n\t\t\t\t\t\t\t.replace(/H/g, '29')\n\t\t\t\t\t\t\t.replace(/i/g, '59')\n\t\t\t\t\t\t\t.replace(/s/g, '59');\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($.type(options.mask) === 'string') {\n\t\t\t\t\t\tif (!isValidValue(options.mask, input.val())) {\n\t\t\t\t\t\t\tinput.val(options.mask.replace(/[0-9]/g, '_'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tinput.on('keydown.xdsoft', function (event) {\n\t\t\t\t\t\t\tvar val = this.value,\n\t\t\t\t\t\t\t\tkey = event.which,\n\t\t\t\t\t\t\t\tpos,\n\t\t\t\t\t\t\t\tdigit;\n\n\t\t\t\t\t\t\tif (((key >= KEY0 && key <= KEY9) || (key >= _KEY0 && key <= _KEY9)) || (key === BACKSPACE || key === DEL)) {\n\t\t\t\t\t\t\t\tpos = getCaretPos(this);\n\t\t\t\t\t\t\t\tdigit = (key !== BACKSPACE && key !== DEL) ? String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key) : '_';\n\n\t\t\t\t\t\t\t\tif ((key === BACKSPACE || key === DEL) && pos) {\n\t\t\t\t\t\t\t\t\tpos -= 1;\n\t\t\t\t\t\t\t\t\tdigit = '_';\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\twhile (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {\n\t\t\t\t\t\t\t\t\tpos += (key === BACKSPACE || key === DEL) ? -1 : 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tval = val.substr(0, pos) + digit + val.substr(pos + 1);\n\t\t\t\t\t\t\t\tif ($.trim(val) === '') {\n\t\t\t\t\t\t\t\t\tval = options.mask.replace(/[0-9]/g, '_');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (pos === options.mask.length) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpos += (key === BACKSPACE || key === DEL) ? 0 : 1;\n\t\t\t\t\t\t\t\twhile (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {\n\t\t\t\t\t\t\t\t\tpos += (key === BACKSPACE || key === DEL) ? -1 : 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (isValidValue(options.mask, val)) {\n\t\t\t\t\t\t\t\t\tthis.value = val;\n\t\t\t\t\t\t\t\t\tsetCaretPos(this, pos);\n\t\t\t\t\t\t\t\t} else if ($.trim(val) === '') {\n\t\t\t\t\t\t\t\t\tthis.value = options.mask.replace(/[0-9]/g, '_');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tinput.trigger('error_input.xdsoft');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (options.validateOnBlur) {\n\t\t\t\t\tinput\n\t\t\t\t\t\t.off('blur.xdsoft')\n\t\t\t\t\t\t.on('blur.xdsoft', function () {\n\t\t\t\t\t\t\tif (options.allowBlank && !$.trim($(this).val()).length) {\n\t\t\t\t\t\t\t\t$(this).val(null);\n\t\t\t\t\t\t\t\tdatetimepicker.data('xdsoft_datetime').empty();\n\t\t\t\t\t\t\t} else if (!Date.parseDate($(this).val(), options.format)) {\n\t\t\t\t\t\t\t\tvar splittedHours   = +([$(this).val()[0], $(this).val()[1]].join('')),\n\t\t\t\t\t\t\t\t\tsplittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));\n\n\t\t\t\t\t\t\t\t// parse the numbers as 0312 => 03:12\n\t\t\t\t\t\t\t\tif (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) {\n\t\t\t\t\t\t\t\t\t$(this).val([splittedHours, splittedMinutes].map(function (item) {\n\t\t\t\t\t\t\t\t\t\treturn item > 9 ? item : '0' + item;\n\t\t\t\t\t\t\t\t\t}).join(':'));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$(this).val((_xdsoft_datetime.now()).dateFormat(options.format));\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tdatetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdatetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdatetimepicker.trigger('changedatetime.xdsoft');\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\toptions.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1;\n\n\t\t\t\tdatetimepicker\n\t\t\t\t\t.trigger('xchange.xdsoft')\n\t\t\t\t\t.trigger('afterOpen.xdsoft');\n\t\t\t};\n\n\t\t\tdatetimepicker\n\t\t\t\t.data('options', options)\n\t\t\t\t.on('mousedown.xdsoft', function (event) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tyearselect.hide();\n\t\t\t\t\tmonthselect.hide();\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\t//scroll_element = timepicker.find('.xdsoft_time_box');\n\t\t\ttimeboxparent.append(timebox);\n\t\t\ttimeboxparent.xdsoftScroller();\n\n\t\t\tdatetimepicker.on('afterOpen.xdsoft', function () {\n\t\t\t\ttimeboxparent.xdsoftScroller();\n\t\t\t});\n\n\t\t\tdatetimepicker\n\t\t\t\t.append(datepicker)\n\t\t\t\t.append(timepicker);\n\n\t\t\tif (options.withoutCopyright !== true) {\n\t\t\t\tdatetimepicker\n\t\t\t\t\t.append(xdsoft_copyright);\n\t\t\t}\n\n\t\t\tdatepicker\n\t\t\t\t.append(mounth_picker)\n\t\t\t\t.append(calendar)\n\t\t\t\t.append(applyButton);\n\n\t\t\t$(options.parentID)\n\t\t\t\t.append(datetimepicker);\n\n\t\t\tXDSoft_datetime = function () {\n\t\t\t\tvar _this = this;\n\t\t\t\t_this.now = function (norecursion) {\n\t\t\t\t\tvar d = new Date(),\n\t\t\t\t\t\tdate,\n\t\t\t\t\t\ttime;\n\n\t\t\t\t\tif (!norecursion && options.defaultDate) {\n\t\t\t\t\t\tdate = _this.strToDateTime(options.defaultDate);\n\t\t\t\t\t\td.setFullYear(date.getFullYear());\n\t\t\t\t\t\td.setMonth(date.getMonth());\n\t\t\t\t\t\td.setDate(date.getDate());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (options.yearOffset) {\n\t\t\t\t\t\td.setFullYear(d.getFullYear() + options.yearOffset);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!norecursion && options.defaultTime) {\n\t\t\t\t\t\ttime = _this.strtotime(options.defaultTime);\n\t\t\t\t\t\td.setHours(time.getHours());\n\t\t\t\t\t\td.setMinutes(time.getMinutes());\n\t\t\t\t\t}\n\t\t\t\t\treturn d;\n\t\t\t\t};\n\n\t\t\t\t_this.isValidDate = function (d) {\n\t\t\t\t\tif (Object.prototype.toString.call(d) !== \"[object Date]\") {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn !isNaN(d.getTime());\n\t\t\t\t};\n\n\t\t\t\t_this.setCurrentTime = function (dTime) {\n\t\t\t\t\t_this.currentTime = (typeof dTime === 'string') ? _this.strToDateTime(dTime) : _this.isValidDate(dTime) ? dTime : _this.now();\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t};\n\n\t\t\t\t_this.empty = function () {\n\t\t\t\t\t_this.currentTime = null;\n\t\t\t\t};\n\n\t\t\t\t_this.getCurrentTime = function (dTime) {\n\t\t\t\t\treturn _this.currentTime;\n\t\t\t\t};\n\n\t\t\t\t_this.nextMonth = function () {\n\n\t\t\t\t\tif (_this.currentTime === undefined || _this.currentTime === null) {\n\t\t\t\t\t\t_this.currentTime = _this.now();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar month = _this.currentTime.getMonth() + 1,\n\t\t\t\t\t\tyear;\n\t\t\t\t\tif (month === 12) {\n\t\t\t\t\t\t_this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1);\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tyear = _this.currentTime.getFullYear();\n\n\t\t\t\t\t_this.currentTime.setDate(\n\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\tnew Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),\n\t\t\t\t\t\t\t_this.currentTime.getDate()\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t\t_this.currentTime.setMonth(month);\n\n\t\t\t\t\tif (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {\n\t\t\t\t\t\toptions.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {\n\t\t\t\t\t\toptions.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t\treturn month;\n\t\t\t\t};\n\n\t\t\t\t_this.prevMonth = function () {\n\n\t\t\t\t\tif (_this.currentTime === undefined || _this.currentTime === null) {\n\t\t\t\t\t\t_this.currentTime = _this.now();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar month = _this.currentTime.getMonth() - 1;\n\t\t\t\t\tif (month === -1) {\n\t\t\t\t\t\t_this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1);\n\t\t\t\t\t\tmonth = 11;\n\t\t\t\t\t}\n\t\t\t\t\t_this.currentTime.setDate(\n\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\tnew Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),\n\t\t\t\t\t\t\t_this.currentTime.getDate()\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t\t_this.currentTime.setMonth(month);\n\t\t\t\t\tif (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {\n\t\t\t\t\t\toptions.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t\treturn month;\n\t\t\t\t};\n\n\t\t\t\t_this.getWeekOfYear = function (datetime) {\n\t\t\t\t\tvar onejan = new Date(datetime.getFullYear(), 0, 1);\n\t\t\t\t\treturn Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7);\n\t\t\t\t};\n\n\t\t\t\t_this.strToDateTime = function (sDateTime) {\n\t\t\t\t\tvar tmpDate = [], timeOffset, currentTime;\n\n\t\t\t\t\tif (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) {\n\t\t\t\t\t\treturn sDateTime;\n\t\t\t\t\t}\n\n\t\t\t\t\ttmpDate = /^(\\+|\\-)(.*)$/.exec(sDateTime);\n\t\t\t\t\tif (tmpDate) {\n\t\t\t\t\t\ttmpDate[2] = Date.parseDate(tmpDate[2], options.formatDate);\n\t\t\t\t\t}\n\t\t\t\t\tif (tmpDate  && tmpDate[2]) {\n\t\t\t\t\t\ttimeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000;\n\t\t\t\t\t\tcurrentTime = new Date((_this.now(true)).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentTime = sDateTime ? Date.parseDate(sDateTime, options.format) : _this.now();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!_this.isValidDate(currentTime)) {\n\t\t\t\t\t\tcurrentTime = _this.now();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn currentTime;\n\t\t\t\t};\n\n\t\t\t\t_this.strToDate = function (sDate) {\n\t\t\t\t\tif (sDate && sDate instanceof Date && _this.isValidDate(sDate)) {\n\t\t\t\t\t\treturn sDate;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar currentTime = sDate ? Date.parseDate(sDate, options.formatDate) : _this.now(true);\n\t\t\t\t\tif (!_this.isValidDate(currentTime)) {\n\t\t\t\t\t\tcurrentTime = _this.now(true);\n\t\t\t\t\t}\n\t\t\t\t\treturn currentTime;\n\t\t\t\t};\n\n\t\t\t\t_this.strtotime = function (sTime) {\n\t\t\t\t\tif (sTime && sTime instanceof Date && _this.isValidDate(sTime)) {\n\t\t\t\t\t\treturn sTime;\n\t\t\t\t\t}\n\t\t\t\t\tvar currentTime = sTime ? Date.parseDate(sTime, options.formatTime) : _this.now(true);\n\t\t\t\t\tif (!_this.isValidDate(currentTime)) {\n\t\t\t\t\t\tcurrentTime = _this.now(true);\n\t\t\t\t\t}\n\t\t\t\t\treturn currentTime;\n\t\t\t\t};\n\n\t\t\t\t_this.str = function () {\n\t\t\t\t\treturn _this.currentTime.dateFormat(options.format);\n\t\t\t\t};\n\t\t\t\t_this.currentTime = this.now();\n\t\t\t};\n\n\t\t\t_xdsoft_datetime = new XDSoft_datetime();\n\n\t\t\tapplyButton.on('click', function (e) {//pathbrite\n                e.preventDefault();\n                datetimepicker.data('changed', true);\n                _xdsoft_datetime.setCurrentTime(getCurrentValue());\n                input.val(_xdsoft_datetime.str());\n                datetimepicker.trigger('close.xdsoft');\n            });\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_today_button')\n\t\t\t\t.on('mousedown.xdsoft', function () {\n\t\t\t\t\tdatetimepicker.data('changed', true);\n\t\t\t\t\t_xdsoft_datetime.setCurrentTime(0);\n\t\t\t\t\tdatetimepicker.trigger('afterOpen.xdsoft');\n\t\t\t\t}).on('dblclick.xdsoft', function () {\n\t\t\t\t\tvar currentDate = _xdsoft_datetime.getCurrentTime(), minDate, maxDate;\n\t\t\t\t\tcurrentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());\n\t\t\t\t\tminDate = _xdsoft_datetime.strToDate(options.minDate);\n\t\t\t\t\tminDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());\n\t\t\t\t\tif (currentDate < minDate) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tmaxDate = _xdsoft_datetime.strToDate(options.maxDate);\n\t\t\t\t\tmaxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate());\n\t\t\t\t\tif (currentDate > maxDate) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tinput.val(_xdsoft_datetime.str());\n\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t});\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_prev,.xdsoft_next')\n\t\t\t\t.on('mousedown.xdsoft', function () {\n\t\t\t\t\tvar $this = $(this),\n\t\t\t\t\t\ttimer = 0,\n\t\t\t\t\t\tstop = false;\n\n\t\t\t\t\t(function arguments_callee1(v) {\n\t\t\t\t\t\tif ($this.hasClass(options.next)) {\n\t\t\t\t\t\t\t_xdsoft_datetime.nextMonth();\n\t\t\t\t\t\t} else if ($this.hasClass(options.prev)) {\n\t\t\t\t\t\t\t_xdsoft_datetime.prevMonth();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.monthChangeSpinner) {\n\t\t\t\t\t\t\tif (!stop) {\n\t\t\t\t\t\t\t\ttimer = setTimeout(arguments_callee1, v || 100);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}(500));\n\n\t\t\t\t\t$([document.body, window]).on('mouseup.xdsoft', function arguments_callee2() {\n\t\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\t\tstop = true;\n\t\t\t\t\t\t$([document.body, window]).off('mouseup.xdsoft', arguments_callee2);\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\ttimepicker\n\t\t\t\t.find('.xdsoft_prev,.xdsoft_next')\n\t\t\t\t.on('mousedown.xdsoft', function () {\n\t\t\t\t\tvar $this = $(this),\n\t\t\t\t\t\ttimer = 0,\n\t\t\t\t\t\tstop = false,\n\t\t\t\t\t\tperiod = 110;\n\t\t\t\t\t(function arguments_callee4(v) {\n\t\t\t\t\t\tvar pheight = timeboxparent[0].clientHeight,\n\t\t\t\t\t\t\theight = timebox[0].offsetHeight,\n\t\t\t\t\t\t\ttop = Math.abs(parseInt(timebox.css('marginTop'), 10));\n\t\t\t\t\t\tif ($this.hasClass(options.next) && (height - pheight) - options.timeHeightInTimePicker >= top) {\n\t\t\t\t\t\t\ttimebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px');\n\t\t\t\t\t\t} else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) {\n\t\t\t\t\t\t\ttimebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px');\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox.css('marginTop'), 10) / (height - pheight))]);\n\t\t\t\t\t\tperiod = (period > 10) ? 10 : period - 10;\n\t\t\t\t\t\tif (!stop) {\n\t\t\t\t\t\t\ttimer = setTimeout(arguments_callee4, v || period);\n\t\t\t\t\t\t}\n\t\t\t\t\t}(500));\n\t\t\t\t\t$([document.body, window]).on('mouseup.xdsoft', function arguments_callee5() {\n\t\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\t\tstop = true;\n\t\t\t\t\t\t$([document.body, window])\n\t\t\t\t\t\t\t.off('mouseup.xdsoft', arguments_callee5);\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\txchangeTimer = 0;\n\t\t\t// base handler - generating a calendar and timepicker\n\t\t\tdatetimepicker\n\t\t\t\t.on('xchange.xdsoft', function (event) {\n\t\t\t\t\tclearTimeout(xchangeTimer);\n\t\t\t\t\txchangeTimer = setTimeout(function () {\n\n\t\t\t\t\t\tif (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {\n\t\t\t\t\t\t\t_xdsoft_datetime.currentTime = _xdsoft_datetime.now();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar table =\t'',\n\t\t\t\t\t\t\tstart = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0),\n\t\t\t\t\t\t\ti = 0,\n\t\t\t\t\t\t\tj,\n\t\t\t\t\t\t\ttoday = _xdsoft_datetime.now(),\n\t\t\t\t\t\t\tmaxDate = false,\n\t\t\t\t\t\t\tminDate = false,\n\t\t\t\t\t\t\thDate,\n\t\t\t\t\t\t\tday,\n\t\t\t\t\t\t\td,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\tm,\n\t\t\t\t\t\t\tw,\n\t\t\t\t\t\t\tclasses = [],\n\t\t\t\t\t\t\tcustomDateSettings,\n\t\t\t\t\t\t\tnewRow = true,\n\t\t\t\t\t\t\ttime = '',\n\t\t\t\t\t\t\th = '',\n\t\t\t\t\t\t\tline_time,\n\t\t\t\t\t\t\tdescription;\n\n\t\t\t\t\t\twhile (start.getDay() !== options.dayOfWeekStart) {\n\t\t\t\t\t\t\tstart.setDate(start.getDate() - 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttable += '<table><thead><tr>';\n\n\t\t\t\t\t\tif (options.weeks) {\n\t\t\t\t\t\t\ttable += '<th></th>';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (j = 0; j < 7; j += 1) {\n\t\t\t\t\t\t\ttable += '<th>' + options.i18n[options.lang].dayOfWeek[(j + options.dayOfWeekStart) % 7] + '</th>';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttable += '</tr></thead>';\n\t\t\t\t\t\ttable += '<tbody>';\n\n\t\t\t\t\t\tif (options.maxDate !== false) {\n\t\t\t\t\t\t\tmaxDate = _xdsoft_datetime.strToDate(options.maxDate);\n\t\t\t\t\t\t\tmaxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.minDate !== false) {\n\t\t\t\t\t\t\tminDate = _xdsoft_datetime.strToDate(options.minDate);\n\t\t\t\t\t\t\tminDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twhile (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) {\n\t\t\t\t\t\t\tclasses = [];\n\t\t\t\t\t\t\ti += 1;\n\n\t\t\t\t\t\t\tday = start.getDay();\n\t\t\t\t\t\t\td = start.getDate();\n\t\t\t\t\t\t\ty = start.getFullYear();\n\t\t\t\t\t\t\tm = start.getMonth();\n\t\t\t\t\t\t\tw = _xdsoft_datetime.getWeekOfYear(start);\n\t\t\t\t\t\t\tdescription = '';\n\n\t\t\t\t\t\t\tclasses.push('xdsoft_date');\n\n\t\t\t\t\t\t\tif (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) {\n\t\t\t\t\t\t\t\tcustomDateSettings = options.beforeShowDay.call(datetimepicker, start);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcustomDateSettings = null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_disabled');\n\t\t\t\t\t\t\t} else if (options.disabledDates.indexOf(start.dateFormat(options.formatDate)) !== -1) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_disabled');\n\t\t\t\t\t\t\t} else if (options.disabledWeekDays.indexOf(day) !== -1) {\n\t\t\t\t\t\t\t    classes.push('xdsoft_disabled');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (customDateSettings && customDateSettings[1] !== \"\") {\n\t\t\t\t\t\t\t\tclasses.push(customDateSettings[1]);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (_xdsoft_datetime.currentTime.getMonth() !== m) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_other_month');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ((options.defaultSelect || datetimepicker.data('changed')) && _xdsoft_datetime.currentTime.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_current');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (today.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_today');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(start.dateFormat(options.formatDate)) !== -1) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_weekend');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (options.highlightedDates[start.dateFormat(options.formatDate)] !== undefined) {\n\t\t\t\t\t\t\t\thDate = options.highlightedDates[start.dateFormat(options.formatDate)];\n\t\t\t\t\t\t\t\tclasses.push(hDate.style === undefined ? 'xdsoft_highlighted_default' : hDate.style);\n\t\t\t\t\t\t\t\tdescription = hDate.desc === undefined ? '' : hDate.desc;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (options.beforeShowDay && $.isFunction(options.beforeShowDay)) {\n\t\t\t\t\t\t\t\tclasses.push(options.beforeShowDay(start));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (newRow) {\n\t\t\t\t\t\t\t\ttable += '<tr>';\n\t\t\t\t\t\t\t\tnewRow = false;\n\t\t\t\t\t\t\t\tif (options.weeks) {\n\t\t\t\t\t\t\t\t\ttable += '<th>' + w + '</th>';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttable += '<td data-date=\"' + d + '\" data-month=\"' + m + '\" data-year=\"' + y + '\"' + ' class=\"xdsoft_date xdsoft_day_of_week' + start.getDay() + ' ' + classes.join(' ') + '\" title=\"' + description + '\">' +\n\t\t\t\t\t\t\t\t\t\t'<div>' + d + '</div>' +\n\t\t\t\t\t\t\t\t\t'</td>';\n\n\t\t\t\t\t\t\tif (start.getDay() === options.dayOfWeekStartPrev) {\n\t\t\t\t\t\t\t\ttable += '</tr>';\n\t\t\t\t\t\t\t\tnewRow = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tstart.setDate(d + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttable += '</tbody></table>';\n\n\t\t\t\t\t\tcalendar.html(table);\n\n\t\t\t\t\t\tmounth_picker.find('.xdsoft_label span').eq(0).text(options.i18n[options.lang].months[_xdsoft_datetime.currentTime.getMonth()]);\n\t\t\t\t\t\tmounth_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear());\n\n\t\t\t\t\t\t// generate timebox\n\t\t\t\t\t\ttime = '';\n\t\t\t\t\t\th = '';\n\t\t\t\t\t\tm = '';\n\t\t\t\t\t\tline_time = function line_time(h, m) {\n\t\t\t\t\t\t\tvar now = _xdsoft_datetime.now(), optionDateTime, current_time;\n\t\t\t\t\t\t\tnow.setHours(h);\n\t\t\t\t\t\t\th = parseInt(now.getHours(), 10);\n\t\t\t\t\t\t\tnow.setMinutes(m);\n\t\t\t\t\t\t\tm = parseInt(now.getMinutes(), 10);\n\t\t\t\t\t\t\toptionDateTime = new Date(_xdsoft_datetime.currentTime);\n\t\t\t\t\t\t\toptionDateTime.setHours(h);\n\t\t\t\t\t\t\toptionDateTime.setMinutes(m);\n\t\t\t\t\t\t\tclasses = [];\n\t\t\t\t\t\t\tif ((options.minDateTime !== false && options.minDateTime > optionDateTime) || (options.maxTime !== false && _xdsoft_datetime.strtotime(options.maxTime).getTime() < now.getTime()) || (options.minTime !== false && _xdsoft_datetime.strtotime(options.minTime).getTime() > now.getTime())) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_disabled');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ((options.minDateTime !== false && options.minDateTime > optionDateTime) || ((options.disabledMinTime !== false && now.getTime() > _xdsoft_datetime.strtotime(options.disabledMinTime).getTime()) && (options.disabledMaxTime !== false && now.getTime() < _xdsoft_datetime.strtotime(options.disabledMaxTime).getTime()))) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_disabled');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcurrent_time = new Date(_xdsoft_datetime.currentTime);\n\t\t\t\t\t\t\tcurrent_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10));\n\t\t\t\t\t\t\tcurrent_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step);\n\n\t\t\t\t\t\t\tif ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && (options.step > 59 || current_time.getMinutes() === parseInt(m, 10))) {\n\t\t\t\t\t\t\t\tif (options.defaultSelect || datetimepicker.data('changed')) {\n\t\t\t\t\t\t\t\t\tclasses.push('xdsoft_current');\n\t\t\t\t\t\t\t\t} else if (options.initTime) {\n\t\t\t\t\t\t\t\t\tclasses.push('xdsoft_init_time');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_today');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttime += '<div class=\"xdsoft_time ' + classes.join(' ') + '\" data-hour=\"' + h + '\" data-minute=\"' + m + '\">' + now.dateFormat(options.formatTime) + '</div>';\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) {\n\t\t\t\t\t\t\tfor (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) {\n\t\t\t\t\t\t\t\tfor (j = 0; j < 60; j += options.step) {\n\t\t\t\t\t\t\t\t\th = (i < 10 ? '0' : '') + i;\n\t\t\t\t\t\t\t\t\tm = (j < 10 ? '0' : '') + j;\n\t\t\t\t\t\t\t\t\tline_time(h, m);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (i = 0; i < options.allowTimes.length; i += 1) {\n\t\t\t\t\t\t\t\th = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours();\n\t\t\t\t\t\t\t\tm = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes();\n\t\t\t\t\t\t\t\tline_time(h, m);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttimebox.html(time);\n\n\t\t\t\t\t\topt = '';\n\t\t\t\t\t\ti = 0;\n\n\t\t\t\t\t\tfor (i = parseInt(options.yearStart, 10) + options.yearOffset; i <= parseInt(options.yearEnd, 10) + options.yearOffset; i += 1) {\n\t\t\t\t\t\t\topt += '<div class=\"xdsoft_option ' + (_xdsoft_datetime.currentTime.getFullYear() === i ? 'xdsoft_current' : '') + '\" data-value=\"' + i + '\">' + i + '</div>';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tyearselect.children().eq(0)\n\t\t\t\t\t\t\t\t\t\t\t\t.html(opt);\n\n\t\t\t\t\t\tfor (i = parseInt(options.monthStart, 10), opt = ''; i <= parseInt(options.monthEnd, 10); i += 1) {\n\t\t\t\t\t\t\topt += '<div class=\"xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '\" data-value=\"' + i + '\">' + options.i18n[options.lang].months[i] + '</div>';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmonthselect.children().eq(0).html(opt);\n\t\t\t\t\t\t$(datetimepicker)\n\t\t\t\t\t\t\t.trigger('generate.xdsoft');\n\t\t\t\t\t}, 10);\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t})\n\t\t\t\t.on('afterOpen.xdsoft', function () {\n\t\t\t\t\tif (options.timepicker) {\n\t\t\t\t\t\tvar classType, pheight, height, top;\n\t\t\t\t\t\tif (timebox.find('.xdsoft_current').length) {\n\t\t\t\t\t\t\tclassType = '.xdsoft_current';\n\t\t\t\t\t\t} else if (timebox.find('.xdsoft_init_time').length) {\n\t\t\t\t\t\t\tclassType = '.xdsoft_init_time';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (classType) {\n\t\t\t\t\t\t\tpheight = timeboxparent[0].clientHeight;\n\t\t\t\t\t\t\theight = timebox[0].offsetHeight;\n\t\t\t\t\t\t\ttop = timebox.find(classType).index() * options.timeHeightInTimePicker + 1;\n\t\t\t\t\t\t\tif ((height - pheight) < top) {\n\t\t\t\t\t\t\t\ttop = height - pheight;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [0]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\ttimerclick = 0;\n\t\t\tcalendar\n\t\t\t\t.on('click.xdsoft', 'td', function (xdevent) {\n\t\t\t\t\txdevent.stopPropagation();  // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap\n\t\t\t\t\ttimerclick += 1;\n\t\t\t\t\tvar $this = $(this),\n\t\t\t\t\t\tcurrentTime = _xdsoft_datetime.currentTime;\n\n\t\t\t\t\tif (currentTime === undefined || currentTime === null) {\n\t\t\t\t\t\t_xdsoft_datetime.currentTime = _xdsoft_datetime.now();\n\t\t\t\t\t\tcurrentTime = _xdsoft_datetime.currentTime;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($this.hasClass('xdsoft_disabled')) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentTime.setDate(1);\n\t\t\t\t\tcurrentTime.setFullYear($this.data('year'));\n\t\t\t\t\tcurrentTime.setMonth($this.data('month'));\n\t\t\t\t\tcurrentTime.setDate($this.data('date'));\n\n\t\t\t\t\tdatetimepicker.trigger('select.xdsoft', [currentTime]);\n\n\t\t\t\t\tinput.val(_xdsoft_datetime.str());\n\t\t\t\t\tif ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === false && !options.timepicker))) && !options.inline) {\n\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (options.onSelectDate &&\t$.isFunction(options.onSelectDate)) {\n\t\t\t\t\t\toptions.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);\n\t\t\t\t\t}\n\n\t\t\t\t\tdatetimepicker.data('changed', true);\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t\tdatetimepicker.trigger('changedatetime.xdsoft');\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\ttimerclick = 0;\n\t\t\t\t\t}, 200);\n\t\t\t\t});\n\n\t\t\ttimebox\n\t\t\t\t.on('click.xdsoft', 'div', function (xdevent) {\n\t\t\t\t\txdevent.stopPropagation();\n\t\t\t\t\tvar $this = $(this),\n\t\t\t\t\t\tcurrentTime = _xdsoft_datetime.currentTime;\n\n\t\t\t\t\tif (currentTime === undefined || currentTime === null) {\n\t\t\t\t\t\t_xdsoft_datetime.currentTime = _xdsoft_datetime.now();\n\t\t\t\t\t\tcurrentTime = _xdsoft_datetime.currentTime;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($this.hasClass('xdsoft_disabled')) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentTime.setHours($this.data('hour'));\n\t\t\t\t\tcurrentTime.setMinutes($this.data('minute'));\n\t\t\t\t\tdatetimepicker.trigger('select.xdsoft', [currentTime]);\n\n\t\t\t\t\tdatetimepicker.data('input').val(_xdsoft_datetime.str());\n\n                    if (options.inline !== true && options.closeOnTimeSelect === true) {\n                        datetimepicker.trigger('close.xdsoft');\n                    }\n\n\t\t\t\t\tif (options.onSelectTime && $.isFunction(options.onSelectTime)) {\n\t\t\t\t\t\toptions.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);\n\t\t\t\t\t}\n\t\t\t\t\tdatetimepicker.data('changed', true);\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t\tdatetimepicker.trigger('changedatetime.xdsoft');\n\t\t\t\t});\n\n\n\t\t\tdatepicker\n\t\t\t\t.on('mousewheel.xdsoft', function (event) {\n\t\t\t\t\tif (!options.scrollMonth) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (event.deltaY < 0) {\n\t\t\t\t\t\t_xdsoft_datetime.nextMonth();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_xdsoft_datetime.prevMonth();\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\tinput\n\t\t\t\t.on('mousewheel.xdsoft', function (event) {\n\t\t\t\t\tif (!options.scrollInput) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (!options.datepicker && options.timepicker) {\n\t\t\t\t\t\tcurrent_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0;\n\t\t\t\t\t\tif (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) {\n\t\t\t\t\t\t\tcurrent_time_index += event.deltaY;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (timebox.children().eq(current_time_index).length) {\n\t\t\t\t\t\t\ttimebox.children().eq(current_time_index).trigger('mousedown');\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (options.datepicker && !options.timepicker) {\n\t\t\t\t\t\tdatepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]);\n\t\t\t\t\t\tif (input.val) {\n\t\t\t\t\t\t\tinput.val(_xdsoft_datetime.str());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdatetimepicker.trigger('changedatetime.xdsoft');\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tdatetimepicker\n\t\t\t\t.on('changedatetime.xdsoft', function (event) {\n\t\t\t\t\tif (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) {\n\t\t\t\t\t\tvar $input = datetimepicker.data('input');\n\t\t\t\t\t\toptions.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event);\n\t\t\t\t\t\tdelete options.value;\n\t\t\t\t\t\t$input.trigger('change');\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('generate.xdsoft', function () {\n\t\t\t\t\tif (options.onGenerate && $.isFunction(options.onGenerate)) {\n\t\t\t\t\t\toptions.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\t\t\t\t\tif (triggerAfterOpen) {\n\t\t\t\t\t\tdatetimepicker.trigger('afterOpen.xdsoft');\n\t\t\t\t\t\ttriggerAfterOpen = false;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('click.xdsoft', function (xdevent) {\n\t\t\t\t\txdevent.stopPropagation();\n\t\t\t\t});\n\n\t\t\tcurrent_time_index = 0;\n\n\t\t\tsetPos = function () {\n\t\t\t\tvar offset = datetimepicker.data('input').offset(), top = offset.top + datetimepicker.data('input')[0].offsetHeight - 1, left = offset.left, position = \"absolute\", node;\n\t\t\t\tif (options.fixed) {\n\t\t\t\t\ttop -= $(window).scrollTop();\n\t\t\t\t\tleft -= $(window).scrollLeft();\n\t\t\t\t\tposition = \"fixed\";\n\t\t\t\t} else {\n\t\t\t\t\tif (top + datetimepicker[0].offsetHeight > $(window).height() + $(window).scrollTop()) {\n\t\t\t\t\t\ttop = offset.top - datetimepicker[0].offsetHeight + 1;\n\t\t\t\t\t}\n\t\t\t\t\tif (top < 0) {\n\t\t\t\t\t\ttop = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (left + datetimepicker[0].offsetWidth > $(window).width()) {\n\t\t\t\t\t\tleft = $(window).width() - datetimepicker[0].offsetWidth;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnode = datetimepicker[0];\n\t\t\t\tdo {\n\t\t\t\t\tnode = node.parentNode;\n\t\t\t\t\tif (window.getComputedStyle(node).getPropertyValue('position') === 'relative' && $(window).width() >= node.offsetWidth) {\n\t\t\t\t\t\tleft = left - (($(window).width() - node.offsetWidth) / 2);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} while (node.nodeName !== 'HTML');\n\t\t\t\tdatetimepicker.css({\n\t\t\t\t\tleft: left,\n\t\t\t\t\ttop: top,\n\t\t\t\t\tposition: position\n\t\t\t\t});\n\t\t\t};\n\t\t\tdatetimepicker\n\t\t\t\t.on('open.xdsoft', function (event) {\n\t\t\t\t\tvar onShow = true;\n\t\t\t\t\tif (options.onShow && $.isFunction(options.onShow)) {\n\t\t\t\t\t\tonShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);\n\t\t\t\t\t}\n\t\t\t\t\tif (onShow !== false) {\n\t\t\t\t\t\tdatetimepicker.show();\n\t\t\t\t\t\tsetPos();\n\t\t\t\t\t\t$(window)\n\t\t\t\t\t\t\t.off('resize.xdsoft', setPos)\n\t\t\t\t\t\t\t.on('resize.xdsoft', setPos);\n\n\t\t\t\t\t\tif (options.closeOnWithoutClick) {\n\t\t\t\t\t\t\t$([document.body, window]).on('mousedown.xdsoft', function arguments_callee6() {\n\t\t\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t\t\t\t$([document.body, window]).off('mousedown.xdsoft', arguments_callee6);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('close.xdsoft', function (event) {\n\t\t\t\t\tvar onClose = true;\n\t\t\t\t\tmounth_picker\n\t\t\t\t\t\t.find('.xdsoft_month,.xdsoft_year')\n\t\t\t\t\t\t\t.find('.xdsoft_select')\n\t\t\t\t\t\t\t\t.hide();\n\t\t\t\t\tif (options.onClose && $.isFunction(options.onClose)) {\n\t\t\t\t\t\tonClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);\n\t\t\t\t\t}\n\t\t\t\t\tif (onClose !== false && !options.opened && !options.inline) {\n\t\t\t\t\t\tdatetimepicker.hide();\n\t\t\t\t\t}\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t})\n\t\t\t\t.on('toggle.xdsoft', function (event) {\n\t\t\t\t\tif (datetimepicker.is(':visible')) {\n\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatetimepicker.trigger('open.xdsoft');\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.data('input', input);\n\n\t\t\ttimer = 0;\n\t\t\ttimer1 = 0;\n\n\t\t\tdatetimepicker.data('xdsoft_datetime', _xdsoft_datetime);\n\t\t\tdatetimepicker.setOptions(options);\n\n\t\t\tfunction getCurrentValue() {\n\t\t\t\tvar ct = false, time;\n\n\t\t\t\tif (options.startDate) {\n\t\t\t\t\tct = _xdsoft_datetime.strToDate(options.startDate);\n\t\t\t\t} else {\n\t\t\t\t\tct = options.value || ((input && input.val && input.val()) ? input.val() : '');\n\t\t\t\t\tif (ct) {\n\t\t\t\t\t\tct = _xdsoft_datetime.strToDateTime(ct);\n\t\t\t\t\t} else if (options.defaultDate) {\n\t\t\t\t\t\tct = _xdsoft_datetime.strToDateTime(options.defaultDate);\n\t\t\t\t\t\tif (options.defaultTime) {\n\t\t\t\t\t\t\ttime = _xdsoft_datetime.strtotime(options.defaultTime);\n\t\t\t\t\t\t\tct.setHours(time.getHours());\n\t\t\t\t\t\t\tct.setMinutes(time.getMinutes());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (ct && _xdsoft_datetime.isValidDate(ct)) {\n\t\t\t\t\tdatetimepicker.data('changed', true);\n\t\t\t\t} else {\n\t\t\t\t\tct = '';\n\t\t\t\t}\n\n\t\t\t\treturn ct || 0;\n\t\t\t}\n\n\t\t\t_xdsoft_datetime.setCurrentTime(getCurrentValue());\n\n\t\t\tinput\n\t\t\t\t.data('xdsoft_datetimepicker', datetimepicker)\n\t\t\t\t.on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function (event) {\n\t\t\t\t\tif (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\ttimer = setTimeout(function () {\n\t\t\t\t\t\tif (input.is(':disabled')) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttriggerAfterOpen = true;\n\t\t\t\t\t\t_xdsoft_datetime.setCurrentTime(getCurrentValue());\n\n\t\t\t\t\t\tdatetimepicker.trigger('open.xdsoft');\n\t\t\t\t\t}, 100);\n\t\t\t\t})\n\t\t\t\t.on('keydown.xdsoft', function (event) {\n\t\t\t\t\tvar val = this.value, elementSelector,\n\t\t\t\t\t\tkey = event.which;\n\t\t\t\t\tif ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) {\n\t\t\t\t\t\telementSelector = $(\"input:visible,textarea:visible\");\n\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t\telementSelector.eq(elementSelector.index(this) + 1).focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif ([TAB].indexOf(key) !== -1) {\n\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t};\n\t\tdestroyDateTimePicker = function (input) {\n\t\t\tvar datetimepicker = input.data('xdsoft_datetimepicker');\n\t\t\tif (datetimepicker) {\n\t\t\t\tdatetimepicker.data('xdsoft_datetime', null);\n\t\t\t\tdatetimepicker.remove();\n\t\t\t\tinput\n\t\t\t\t\t.data('xdsoft_datetimepicker', null)\n\t\t\t\t\t.off('.xdsoft');\n\t\t\t\t$(window).off('resize.xdsoft');\n\t\t\t\t$([window, document.body]).off('mousedown.xdsoft');\n\t\t\t\tif (input.unmousewheel) {\n\t\t\t\t\tinput.unmousewheel();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\t$(document)\n\t\t\t.off('keydown.xdsoftctrl keyup.xdsoftctrl')\n\t\t\t.on('keydown.xdsoftctrl', function (e) {\n\t\t\t\tif (e.keyCode === CTRLKEY) {\n\t\t\t\t\tctrlDown = true;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('keyup.xdsoftctrl', function (e) {\n\t\t\t\tif (e.keyCode === CTRLKEY) {\n\t\t\t\t\tctrlDown = false;\n\t\t\t\t}\n\t\t\t});\n\t\treturn this.each(function () {\n\t\t\tvar datetimepicker = $(this).data('xdsoft_datetimepicker'), $input;\n\t\t\tif (datetimepicker) {\n\t\t\t\tif ($.type(opt) === 'string') {\n\t\t\t\t\tswitch (opt) {\n\t\t\t\t\tcase 'show':\n\t\t\t\t\t\t$(this).select().focus();\n\t\t\t\t\t\tdatetimepicker.trigger('open.xdsoft');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'hide':\n\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'toggle':\n\t\t\t\t\t\tdatetimepicker.trigger('toggle.xdsoft');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'destroy':\n\t\t\t\t\t\tdestroyDateTimePicker($(this));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'reset':\n\t\t\t\t\t\tthis.value = this.defaultValue;\n\t\t\t\t\t\tif (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(Date.parseDate(this.value, options.format))) {\n\t\t\t\t\t\t\tdatetimepicker.data('changed', false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdatetimepicker.data('xdsoft_datetime').setCurrentTime(this.value);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'validate':\n\t\t\t\t\t\t$input = datetimepicker.data('input');\n\t\t\t\t\t\t$input.trigger('blur.xdsoft');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdatetimepicker\n\t\t\t\t\t\t.setOptions(opt);\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif ($.type(opt) !== 'string') {\n\t\t\t\tif (!options.lazyInit || options.open || options.inline) {\n\t\t\t\t\tcreateDateTimePicker($(this));\n\t\t\t\t} else {\n\t\t\t\t\tlazyInit($(this));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\t$.fn.datetimepicker.defaults = default_options;\n}(jQuery));\n\nfunction HighlightedDate(date, desc, style) {\n\t\"use strict\";\n\tthis.date = date;\n\tthis.desc = desc;\n\tthis.style = style;\n}\n\n(function () {\n\n/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Version: 3.1.12\n *\n * Requires: jQuery 1.2.2+\n */\n!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):\"object\"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type=\"mousewheel\",\"detail\"in g&&(m=-1*g.detail),\"wheelDelta\"in g&&(m=g.wheelDelta),\"wheelDeltaY\"in g&&(m=g.wheelDeltaY),\"wheelDeltaX\"in g&&(l=-1*g.wheelDeltaX),\"axis\"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,\"deltaY\"in g&&(m=-1*g.deltaY,j=m),\"deltaX\"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,\"mousewheel-line-height\");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,\"mousewheel-page-height\");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?\"floor\":\"ceil\"](j/f),l=Math[l>=1?\"floor\":\"ceil\"](l/f),m=Math[m>=1?\"floor\":\"ceil\"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&\"mousewheel\"===a.type&&b%120===0}var e,f,g=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],h=\"onwheel\"in document||document.documentMode>=9?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:\"3.1.12\",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,\"mousewheel-line-height\",k.getLineHeight(this)),a.data(this,\"mousewheel-page-height\",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,\"mousewheel-line-height\"),a.removeData(this,\"mousewheel-page-height\")},getLineHeight:function(b){var c=a(b),d=c[\"offsetParent\"in a.fn?\"offsetParent\":\"parent\"]();return d.length||(d=a(\"body\")),parseInt(d.css(\"fontSize\"),10)||parseInt(c.css(\"fontSize\"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind(\"mousewheel\",a):this.trigger(\"mousewheel\")},unmousewheel:function(a){return this.unbind(\"mousewheel\",a)}})});\n\n// Parse and Format Library\n//http://www.xaprb.com/blog/2005/12/12/javascript-closures-for-runtime-efficiency/\n/*\n * Copyright (C) 2004 Baron Schwartz <baron at sequent dot org>\n *\n * This program is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as published by the\n * Free Software Foundation, version 2.1.\n *\n * This program is distributed in the hope that it will be useful, but WITHOUT\n * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n * FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more\n * details.\n */\nDate.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(b){if(b==\"unixtime\"){return parseInt(this.getTime()/1000);}if(Date.formatFunctions[b]==null){Date.createNewFormat(b);}var a=Date.formatFunctions[b];return this[a]();};Date.createNewFormat=function(format){var funcName=\"format\"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var codePrefix=\"Date.prototype.\"+funcName+\" = function() {return \";var code=\"\";var special=false;var ch=\"\";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch==\"\\\\\"){special=true;}else{if(special){special=false;code+=\"'\"+String.escape(ch)+\"' + \";}else{code+=Date.getFormatCode(ch);}}}if(code.length==0){code=\"\\\"\\\"\";}else{code=code.substring(0,code.length-3);}eval(codePrefix+code+\";}\");};Date.getFormatCode=function(a){switch(a){case\"d\":return\"String.leftPad(this.getDate(), 2, '0') + \";case\"D\":return\"Date.dayNames[this.getDay()].substring(0, 3) + \";case\"j\":return\"this.getDate() + \";case\"l\":return\"Date.dayNames[this.getDay()] + \";case\"S\":return\"this.getSuffix() + \";case\"w\":return\"this.getDay() + \";case\"z\":return\"this.getDayOfYear() + \";case\"W\":return\"this.getWeekOfYear() + \";case\"F\":return\"Date.monthNames[this.getMonth()] + \";case\"m\":return\"String.leftPad(this.getMonth() + 1, 2, '0') + \";case\"M\":return\"Date.monthNames[this.getMonth()].substring(0, 3) + \";case\"n\":return\"(this.getMonth() + 1) + \";case\"t\":return\"this.getDaysInMonth() + \";case\"L\":return\"(this.isLeapYear() ? 1 : 0) + \";case\"Y\":return\"this.getFullYear() + \";case\"y\":return\"('' + this.getFullYear()).substring(2, 4) + \";case\"a\":return\"(this.getHours() < 12 ? 'am' : 'pm') + \";case\"A\":return\"(this.getHours() < 12 ? 'AM' : 'PM') + \";case\"g\":return\"((this.getHours() %12) ? this.getHours() % 12 : 12) + \";case\"G\":return\"this.getHours() + \";case\"h\":return\"String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + \";case\"H\":return\"String.leftPad(this.getHours(), 2, '0') + \";case\"i\":return\"String.leftPad(this.getMinutes(), 2, '0') + \";case\"s\":return\"String.leftPad(this.getSeconds(), 2, '0') + \";case\"O\":return\"this.getGMTOffset() + \";case\"T\":return\"this.getTimezone() + \";case\"Z\":return\"(this.getTimezoneOffset() * -60) + \";default:return\"'\"+String.escape(a)+\"' + \";}};Date.parseDate=function(a,c){if(c==\"unixtime\"){return new Date(!isNaN(parseInt(a))?parseInt(a)*1000:0);}if(Date.parseFunctions[c]==null){Date.createParser(c);}var b=Date.parseFunctions[c];return Date[b](a);};Date.createParser=function(format){var funcName=\"parse\"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code=\"Date.\"+funcName+\" = function(input) {\\nvar y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, z = -1;\\nvar d = new Date();\\ny = d.getFullYear();\\nm = d.getMonth();\\nd = d.getDate();\\nvar results = input.match(Date.parseRegexes[\"+regexNum+\"]);\\nif (results && results.length > 0) {\";var regex=\"\";var special=false;var ch=\"\";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch==\"\\\\\"){special=true;}else{if(special){special=false;regex+=String.escape(ch);}else{obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c;}}}}code+=\"if (y > 0 && z > 0){\\nvar doyDate = new Date(y,0);\\ndoyDate.setDate(z);\\nm = doyDate.getMonth();\\nd = doyDate.getDate();\\n}\";code+=\"if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\\n{return new Date(y, m, d, h, i, s);}\\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\\n{return new Date(y, m, d, h, i);}\\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\\n{return new Date(y, m, d, h);}\\nelse if (y > 0 && m >= 0 && d > 0)\\n{return new Date(y, m, d);}\\nelse if (y > 0 && m >= 0)\\n{return new Date(y, m);}\\nelse if (y > 0)\\n{return new Date(y);}\\n}return null;}\";Date.parseRegexes[regexNum]=new RegExp(\"^\"+regex+\"$\",'i');eval(code);};Date.formatCodeToRegex=function(b,a){switch(b){case\"D\":return{g:0,c:null,s:\"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\"};case\"j\":case\"d\":return{g:1,c:\"d = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{1,2})\"};case\"l\":return{g:0,c:null,s:\"(?:\"+Date.dayNames.join(\"|\")+\")\"};case\"S\":return{g:0,c:null,s:\"(?:st|nd|rd|th)\"};case\"w\":return{g:0,c:null,s:\"\\\\d\"};case\"z\":return{g:1,c:\"z = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{1,3})\"};case\"W\":return{g:0,c:null,s:\"(?:\\\\d{2})\"};case\"F\":return{g:1,c:\"m = parseInt(Date.monthNumbers[results[\"+a+\"].substring(0, 3)], 10);\\n\",s:\"(\"+Date.monthNames.join(\"|\")+\")\"};case\"M\":return{g:1,c:\"m = parseInt(Date.monthNumbers[results[\"+a+\"]], 10);\\n\",s:\"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\"};case\"n\":case\"m\":return{g:1,c:\"m = parseInt(results[\"+a+\"], 10) - 1;\\n\",s:\"(\\\\d{1,2})\"};case\"t\":return{g:0,c:null,s:\"\\\\d{1,2}\"};case\"L\":return{g:0,c:null,s:\"(?:1|0)\"};case\"Y\":return{g:1,c:\"y = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{4})\"};case\"y\":return{g:1,c:\"var ty = parseInt(results[\"+a+\"], 10);\\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\\n\",s:\"(\\\\d{1,2})\"};case\"a\":return{g:1,c:\"if (results[\"+a+\"] == 'am') {\\nif (h == 12) { h = 0; }\\n} else { if (h < 12) { h += 12; }}\",s:\"(am|pm)\"};case\"A\":return{g:1,c:\"if (results[\"+a+\"] == 'AM') {\\nif (h == 12) { h = 0; }\\n} else { if (h < 12) { h += 12; }}\",s:\"(AM|PM)\"};case\"g\":case\"G\":case\"h\":case\"H\":return{g:1,c:\"h = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{1,2})\"};case\"i\":return{g:1,c:\"i = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{2})\"};case\"s\":return{g:1,c:\"s = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{2})\"};case\"O\":return{g:0,c:null,s:\"[+-]\\\\d{4}\"};case\"T\":return{g:0,c:null,s:\"[A-Z]{3}\"};case\"Z\":return{g:0,c:null,s:\"[+-]\\\\d{1,5}\"};default:return{g:0,c:null,s:String.escape(b)};}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,\"$1\").replace(/^.*?\\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\\)$/,\"$1$2$3\");};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?\"-\":\"+\")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,\"0\")+String.leftPad(Math.abs(this.getTimezoneOffset())%60,2,\"0\");};Date.prototype.getDayOfYear=function(){var a=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var b=0;b<this.getMonth();++b){a+=Date.daysInMonth[b];}return a+this.getDate();};Date.prototype.getWeekOfYear=function(){var b=this.getDayOfYear()+(4-this.getDay());var a=new Date(this.getFullYear(),0,1);var c=(7-a.getDay()+4);return String.leftPad(Math.ceil((b-c)/7)+1,2,\"0\");};Date.prototype.isLeapYear=function(){var a=this.getFullYear();return((a&3)==0&&(a%100||(a%400==0&&a)));};Date.prototype.getFirstDayOfMonth=function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a;};Date.prototype.getLastDayOfMonth=function(){var a=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(a<0)?(a+7):a;};Date.prototype.getDaysInMonth=function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()];};Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return\"st\";case 2:case 22:return\"nd\";case 3:case 23:return\"rd\";default:return\"th\";}};String.escape=function(a){return a.replace(/('|\\\\)/g,\"\\\\$1\");};String.leftPad=function(d,b,c){var a=new String(d);if(c==null){c=\" \";}while(a.length<b){a=c+a;}return a;};Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Date.monthNames=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];Date.dayNames=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.patterns={ISO8601LongPattern:\"Y-m-d H:i:s\",ISO8601ShortPattern:\"Y-m-d\",ShortDatePattern:\"n/j/Y\",LongDatePattern:\"l, F d, Y\",FullDateTimePattern:\"l, F d, Y g:i:s A\",MonthDayPattern:\"F d\",ShortTimePattern:\"g:i A\",LongTimePattern:\"g:i:s A\",SortableDateTimePattern:\"Y-m-d\\\\TH:i:s\",UniversalSortableDateTimePattern:\"Y-m-d H:i:sO\",YearMonthPattern:\"F, Y\"};\n}());\n"
  },
  {
    "path": "vendor/assets/stylesheets/.keep",
    "content": ""
  },
  {
    "path": "vendor/assets/stylesheets/fontello-embedded.css",
    "content": "@font-face {\n  font-family: 'fontello';\n  src: url('../font/fontello.eot?44676558');\n  src: url('../font/fontello.eot?44676558#iefix') format('embedded-opentype'),\n       url('../font/fontello.svg?44676558#fontello') format('svg');\n  font-weight: normal;\n  font-style: normal;\n}\n@font-face {\n  font-family: 'fontello';\n  src: url('data:application/octet-stream;base64,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') format('woff'),\n       url('data:application/octet-stream;base64,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') format('truetype');\n}\n/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */\n/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */\n/*\n@media screen and (-webkit-min-device-pixel-ratio:0) {\n  @font-face {\n    font-family: 'fontello';\n    src: url('../font/fontello.svg?44676558#fontello') format('svg');\n  }\n}\n*/\n \n [class^=\"icon-\"]:before, [class*=\" icon-\"]:before {\n  font-family: \"fontello\";\n  font-style: normal;\n  font-weight: normal;\n  speak: none;\n \n  display: inline-block;\n  text-decoration: inherit;\n  width: 1em;\n  margin-right: .2em;\n  text-align: center;\n  /* opacity: .8; */\n \n  /* For safety - reset parent styles, that can break glyph codes*/\n  font-variant: normal;\n  text-transform: none;\n     \n  /* fix buttons height, for twitter bootstrap */\n  line-height: 1em;\n \n  /* Animation center compensation - margins should be symmetric */\n  /* remove if not needed */\n  margin-left: .2em;\n \n  /* you can be more comfortable with increased icons size */\n  /* font-size: 120%; */\n \n  /* Uncomment for 3D effect */\n  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */\n}\n.icon-calendar:before { content: '\\e800'; } /* '' */\n.icon-left-open:before { content: '\\e801'; } /* '' */\n.icon-right-open:before { content: '\\e802'; } /* '' */\n.icon-users:before { content: '\\e803'; } /* '' */\n.icon-user:before { content: '\\e804'; } /* '' */\n.icon-user-add:before { content: '\\e805'; } /* '' */\n.icon-comment-alt:before { content: '\\e806'; } /* '' */\n.icon-comment:before { content: '\\e807'; } /* '' */\n.icon-trash:before { content: '\\e808'; } /* '' */\n.icon-newspaper:before { content: '\\e809'; } /* '' */\n.icon-picture:before { content: '\\e80a'; } /* '' */\n.icon-location:before { content: '\\e80b'; } /* '' */\n.icon-location-1:before { content: '\\e80c'; } /* '' */\n.icon-calendar-empty:before { content: '\\e80d'; } /* '' */\n.icon-lock:before { content: '\\e80e'; } /* '' */\n.icon-home:before { content: '\\e80f'; } /* '' */\n.icon-pin:before { content: '\\e810'; } /* '' */\n.icon-attach:before { content: '\\e811'; } /* '' */\n.icon-attach-1:before { content: '\\e812'; } /* '' */\n.icon-paper-plane:before { content: '\\e813'; } /* '' */\n.icon-search:before { content: '\\e814'; } /* '' */\n.icon-down-open-big:before { content: '\\e815'; } /* '' */\n.icon-chat:before { content: '\\e816'; } /* '' */\n.icon-cancel:before { content: '\\e817'; } /* '' */\n.icon-star:before { content: '\\e818'; } /* '' */\n.icon-ok:before { content: '\\e819'; } /* '' */\n.icon-cancel-1:before { content: '\\e81a'; } /* '' */\n.icon-briefcase:before { content: '\\e81b'; } /* '' */\n.icon-back-in-time:before { content: '\\e81c'; } /* '' */\n.icon-birthday:before { content: '\\e81d'; } /* '' */\n.icon-gift:before { content: '\\e81e'; } /* '' */\n.icon-pencil:before { content: '\\e81f'; } /* '' */\n.icon-upload:before { content: '\\e820'; } /* '' */\n.icon-plus:before { content: '\\e821'; } /* '' */\n.icon-gplus:before { content: '\\e822'; } /* '' */\n.icon-facebook:before { content: '\\e823'; } /* '' */\n.icon-heart:before { content: '\\e824'; } /* '' */\n.icon-heart-empty:before { content: '\\e825'; } /* '' */\n.icon-bookmark:before { content: '\\e826'; } /* '' */\n.icon-compass:before { content: '\\e827'; } /* '' */\n.icon-star-1:before { content: '\\e828'; } /* '' */\n.icon-star-empty:before { content: '\\e829'; } /* '' */\n.icon-star-half:before { content: '\\e82a'; } /* '' */\n.icon-minefield:before { content: '\\e82b'; } /* '' */\n.icon-star-circled:before { content: '\\e82c'; } /* '' */\n.icon-certificate:before { content: '\\e82d'; } /* '' */\n.icon-record:before { content: '\\e82e'; } /* '' */\n.icon-crown:before { content: '\\e844'; } /* '' */\n.icon-bookmark-empty:before { content: '\\f097'; } /* '' */\n.icon-certificate-1:before { content: '\\f0a3'; } /* '' */\n.icon-star-half-alt:before { content: '\\f123'; } /* '' */"
  },
  {
    "path": "vendor/assets/stylesheets/jquery.datetimepicker.css",
    "content": ".xdsoft_datetimepicker {\n\tbox-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.506);\n\tbackground: #fff;\n\tborder-bottom: 1px solid #bbb;\n\tborder-left: 1px solid #ccc;\n\tborder-right: 1px solid #ccc;\n\tborder-top: 1px solid #ccc;\n\tcolor: #333;\n\tfont-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n\tpadding: 8px;\n\tpadding-left: 0;\n\tpadding-top: 2px;\n\tposition: absolute;\n\tz-index: 9999;\n\t-moz-box-sizing: border-box;\n\tbox-sizing: border-box;\n\tdisplay: none;\n}\n\n.xdsoft_datetimepicker iframe {\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\twidth: 75px;\n\theight: 210px;\n\tbackground: transparent;\n\tborder: none;\n}\n\n/*For IE8 or lower*/\n.xdsoft_datetimepicker button {\n\tborder: none !important;\n}\n\n.xdsoft_noselect {\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\t-o-user-select: none;\n\tuser-select: none;\n}\n\n.xdsoft_noselect::selection { background: transparent }\n.xdsoft_noselect::-moz-selection { background: transparent }\n\n.xdsoft_datetimepicker.xdsoft_inline {\n\tdisplay: inline-block;\n\tposition: static;\n\tbox-shadow: none;\n}\n\n.xdsoft_datetimepicker * {\n\t-moz-box-sizing: border-box;\n\tbox-sizing: border-box;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker {\n\tdisplay: none;\n}\n\n.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active {\n\tdisplay: block;\n}\n\n.xdsoft_datetimepicker .xdsoft_datepicker {\n\twidth: 224px;\n\tfloat: left;\n\tmargin-left: 8px;\n}\n\n.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker {\n\twidth: 256px;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker {\n\twidth: 58px;\n\tfloat: left;\n\ttext-align: center;\n\tmargin-left: 8px;\n\tmargin-top: 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker {\n\tmargin-top: 8px;\n\tmargin-bottom: 3px\n}\n\n.xdsoft_datetimepicker .xdsoft_mounthpicker {\n\tposition: relative;\n\ttext-align: center;\n}\n\n.xdsoft_datetimepicker .xdsoft_label i,\n.xdsoft_datetimepicker .xdsoft_prev,\n.xdsoft_datetimepicker .xdsoft_next,\n.xdsoft_datetimepicker .xdsoft_today_button {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC);\n}\n\n.xdsoft_datetimepicker .xdsoft_label i {\n\topacity: 0.5;\n\tbackground-position: -92px -19px;\n\tdisplay: inline-block;\n\twidth: 9px;\n\theight: 20px;\n\tvertical-align: middle;\n}\n\n.xdsoft_datetimepicker .xdsoft_prev {\n\tfloat: left;\n\tbackground-position: -20px 0;\n}\n.xdsoft_datetimepicker .xdsoft_today_button {\n\tfloat: left;\n\tbackground-position: -70px 0;\n\tmargin-left: 5px;\n}\n\n.xdsoft_datetimepicker .xdsoft_next {\n\tfloat: right;\n\tbackground-position: 0 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_next,\n.xdsoft_datetimepicker .xdsoft_prev ,\n.xdsoft_datetimepicker .xdsoft_today_button {\n\tbackground-color: transparent;\n\tbackground-repeat: no-repeat;\n\tborder: 0 none;\n\tcursor: pointer;\n\tdisplay: block;\n\theight: 30px;\n\topacity: 0.5;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\";\n\toutline: medium none;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: relative;\n\ttext-indent: 100%;\n\twhite-space: nowrap;\n\twidth: 20px;\n\tmin-width: 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next {\n\tfloat: none;\n\tbackground-position: -40px -15px;\n\theight: 15px;\n\twidth: 30px;\n\tdisplay: block;\n\tmargin-left: 14px;\n\tmargin-top: 7px;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev {\n\tbackground-position: -40px 0;\n\tmargin-bottom: 7px;\n\tmargin-top: 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box {\n\theight: 151px;\n\toverflow: hidden;\n\tborder-bottom: 1px solid #ddd;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div {\n\tbackground: #f5f5f5;\n\tborder-top: 1px solid #ddd;\n\tcolor: #666;\n\tfont-size: 12px;\n\ttext-align: center;\n\tborder-collapse: collapse;\n\tcursor: pointer;\n\tborder-bottom-width: 0;\n\theight: 25px;\n\tline-height: 25px;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child {\n\tborder-top-width: 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_today_button:hover,\n.xdsoft_datetimepicker .xdsoft_next:hover,\n.xdsoft_datetimepicker .xdsoft_prev:hover {\n\topacity: 1;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n}\n\n.xdsoft_datetimepicker .xdsoft_label {\n\tdisplay: inline;\n\tposition: relative;\n\tz-index: 9999;\n\tmargin: 0;\n\tpadding: 5px 3px;\n\tfont-size: 14px;\n\tline-height: 20px;\n\tfont-weight: bold;\n\tbackground-color: #fff;\n\tfloat: left;\n\twidth: 182px;\n\ttext-align: center;\n\tcursor: pointer;\n}\n\n.xdsoft_datetimepicker .xdsoft_label:hover>span {\n\ttext-decoration: underline;\n}\n\n.xdsoft_datetimepicker .xdsoft_label:hover i {\n\topacity: 1.0;\n}\n\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select {\n\tborder: 1px solid #ccc;\n\tposition: absolute;\n\tright: 0;\n\ttop: 30px;\n\tz-index: 101;\n\tdisplay: none;\n\tbackground: #fff;\n\tmax-height: 160px;\n\toverflow-y: hidden;\n}\n\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{ right: -7px }\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{ right: 2px }\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {\n\tcolor: #fff;\n\tbackground: #ff8000;\n}\n\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option {\n\tpadding: 2px 10px 2px 5px;\n\ttext-decoration: none !important;\n}\n\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {\n\tbackground: #33aaff;\n\tbox-shadow: #178fe5 0 1px 3px 0 inset;\n\tcolor: #fff;\n\tfont-weight: 700;\n}\n\n.xdsoft_datetimepicker .xdsoft_month {\n\twidth: 100px;\n\ttext-align: right;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar {\n\tclear: both;\n}\n\n.xdsoft_datetimepicker .xdsoft_year{\n\twidth: 48px;\n\tmargin-left: 5px;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar table {\n\tborder-collapse: collapse;\n\twidth: 100%;\n\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td > div {\n\tpadding-right: 5px;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar th {\n\theight: 25px;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th {\n\twidth: 14.2857142%;\n\tbackground: #f5f5f5;\n\tborder: 1px solid #ddd;\n\tcolor: #666;\n\tfont-size: 12px;\n\ttext-align: right;\n\tvertical-align: middle;\n\tpadding: 0;\n\tborder-collapse: collapse;\n\tcursor: pointer;\n\theight: 25px;\n}\n.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th {\n\twidth: 12.5%;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar th {\n\tbackground: #f1f1f1;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today {\n\tcolor: #33aaff;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default {\n\tbackground: #ffe9d2;\n\tbox-shadow: #ffb871 0 1px 4px 0 inset;\n\tcolor: #000;\n}\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint {\n\tbackground: #c1ffc9;\n\tbox-shadow: #00dd1c 0 1px 4px 0 inset;\n\tcolor: #000;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current {\n\tbackground: #33aaff;\n\tbox-shadow: #178fe5 0 1px 3px 0 inset;\n\tcolor: #fff;\n\tfont-weight: 700;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,\n.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled {\n\topacity: 0.5;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\";\n\tcursor: default;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled {\n\topacity: 0.2;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)\";\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td:hover,\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover {\n\tcolor: #fff !important;\n\tbackground: #ff8000 !important;\n\tbox-shadow: none !important;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover {\n\tbackground: #33aaff !important;\n\tbox-shadow: #178fe5 0 1px 3px 0 inset !important;\n\tcolor: #fff !important;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover {\n\tcolor: inherit\t!important;\n\tbackground: inherit !important;\n\tbox-shadow: inherit !important;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar th {\n\tfont-weight: 700;\n\ttext-align: center;\n\tcolor: #999;\n\tcursor: default;\n}\n\n.xdsoft_datetimepicker .xdsoft_copyright {\n\tcolor: #ccc !important;\n\tfont-size: 10px;\n\tclear: both;\n\tfloat: none;\n\tmargin-left: 8px;\n}\n\n.xdsoft_datetimepicker .xdsoft_copyright a { color: #eee !important }\n.xdsoft_datetimepicker .xdsoft_copyright a:hover { color: #aaa !important }\n\n.xdsoft_time_box {\n\tposition: relative;\n\tborder: 1px solid #ccc;\n}\n.xdsoft_scrollbar >.xdsoft_scroller {\n\tbackground: #ccc !important;\n\theight: 20px;\n\tborder-radius: 3px;\n}\n.xdsoft_scrollbar {\n\tposition: absolute;\n\twidth: 7px;\n\tright: 0;\n\ttop: 0;\n\tbottom: 0;\n\tcursor: pointer;\n}\n.xdsoft_scroller_box {\n\tposition: relative;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark {\n\tbox-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506);\n\tbackground: #000;\n\tborder-bottom: 1px solid #444;\n\tborder-left: 1px solid #333;\n\tborder-right: 1px solid #333;\n\tborder-top: 1px solid #333;\n\tcolor: #ccc;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box {\n\tborder-bottom: 1px solid #222;\n}\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div {\n\tbackground: #0a0a0a;\n\tborder-top: 1px solid #222;\n\tcolor: #999;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label {\n\tbackground-color: #000;\n}\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select {\n\tborder: 1px solid #333;\n\tbackground: #000;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {\n\tcolor: #000;\n\tbackground: #007fff;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {\n\tbackground: #cc5500;\n\tbox-shadow: #b03e00 0 1px 3px 0 inset;\n\tcolor: #000;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==);\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {\n\tbackground: #0a0a0a;\n\tborder: 1px solid #222;\n\tcolor: #999;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {\n\tbackground: #0e0e0e;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today {\n\tcolor: #cc5500;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default {\n\tbackground: #ffe9d2;\n\tbox-shadow: #ffb871 0 1px 4px 0 inset;\n\tcolor:#000;\n}\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint {\n\tbackground: #c1ffc9;\n\tbox-shadow: #00dd1c 0 1px 4px 0 inset;\n\tcolor:#000;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current {\n\tbackground: #cc5500;\n\tbox-shadow: #b03e00 0 1px 3px 0 inset;\n\tcolor: #000;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover {\n\tcolor: #000 !important;\n\tbackground: #007fff !important;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {\n\tcolor: #666;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright { color: #333 !important }\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a { color: #111 !important }\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover { color: #555 !important }\n\n.xdsoft_dark .xdsoft_time_box {\n\tborder: 1px solid #333;\n}\n\n.xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller {\n\tbackground: #333 !important;\n}\n.xdsoft_datetimepicker .xdsoft_save_selected {\n    display: block;\n    border: 1px solid #dddddd !important;\n    margin-top: 5px;\n    width: 100%;\n    color: #454551;\n    font-size: 13px;\n}\n.xdsoft_datetimepicker .blue-gradient-button {\n\tfont-family: \"museo-sans\", \"Book Antiqua\", sans-serif;\n\tfont-size: 12px;\n\tfont-weight: 300;\n\tcolor: #82878c;\n\theight: 28px;\n\tposition: relative;\n\tpadding: 4px 17px 4px 33px;\n\tborder: 1px solid #d7d8da;\n\tbackground: -moz-linear-gradient(top, #fff 0%, #f4f8fa 73%);\n\t/* FF3.6+ */\n\tbackground: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(73%, #f4f8fa));\n\t/* Chrome,Safari4+ */\n\tbackground: -webkit-linear-gradient(top, #fff 0%, #f4f8fa 73%);\n\t/* Chrome10+,Safari5.1+ */\n\tbackground: -o-linear-gradient(top, #fff 0%, #f4f8fa 73%);\n\t/* Opera 11.10+ */\n\tbackground: -ms-linear-gradient(top, #fff 0%, #f4f8fa 73%);\n\t/* IE10+ */\n\tbackground: linear-gradient(to bottom, #fff 0%, #f4f8fa 73%);\n\t/* W3C */\n\tfilter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f4f8fa',GradientType=0 );\n/* IE6-9 */\n}\n.xdsoft_datetimepicker .blue-gradient-button:hover, .xdsoft_datetimepicker .blue-gradient-button:focus, .xdsoft_datetimepicker .blue-gradient-button:hover span, .xdsoft_datetimepicker .blue-gradient-button:focus span {\n  color: #454551;\n  background: -moz-linear-gradient(top, #f4f8fa 0%, #FFF 73%);\n  /* FF3.6+ */\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f8fa), color-stop(73%, #FFF));\n  /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(top, #f4f8fa 0%, #FFF 73%);\n  /* Chrome10+,Safari5.1+ */\n  background: -o-linear-gradient(top, #f4f8fa 0%, #FFF 73%);\n  /* Opera 11.10+ */\n  background: -ms-linear-gradient(top, #f4f8fa 0%, #FFF 73%);\n  /* IE10+ */\n  background: linear-gradient(to bottom, #f4f8fa 0%, #FFF 73%);\n  /* W3C */\n  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f8fa', endColorstr='#FFF',GradientType=0 );\n  /* IE6-9 */\n}\n"
  }
]