text:
//
//  QBRequest+QBUsers.h
//  Quickblox
//
//  Created by Andrey Kozlov on 09/12/2013.
//  Copyright (c) 2013 QuickBlox. All rights reserved.
//

#import "QBRequest.h"

@class QBResponse;
@class QBUUser;
@class QBGeneralResponsePage;
@class QBUpdateUserParameters;

@interface QBRequest (QBUsers)

#pragma mark - Get all Users for current account

/**
 Retrieve all Users for current account (last 10 users)

 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithSuccessBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                                     errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

/**
 Retrieve all Users for current account (with extended set of pagination parameters)

 @param page Pagination parameters
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersForPage:(QB_NULLABLE QBGeneralResponsePage *)page
                          successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                            errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

/**
 Retrieve all Users for current account with extended request

 @param extendedRequest Dictionary with extended request
 @param responsePage Pagination parameters
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithExtendedRequest:(QB_NONNULL NSDictionary QB_GENERIC(NSString *, NSString *) *)extendedRequest
                                              page:(QB_NULLABLE QBGeneralResponsePage *)responsePage
                                      successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                                        errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get User with ID

/**
 Retrieve User by identifier

 @param userID ID of QBUUser to be retrieved.
 @param successBlock Block with response and user instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)userWithID:(NSUInteger)userID successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBUUser * QB_NULLABLE_S user))successBlock
                          errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get Users with IDs

/**
 Retrieve users with ids (with extended set of pagination parameters)

 @param IDs IDs of users which you want to retrieve
 @param page Pagination parameters
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithIDs:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)IDs
                                  page:(QB_NULLABLE QBGeneralResponsePage *)page
                          successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                            errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get User with login

/**
 Retrieve User by login

 @param userLogin Login of user to be retrieved.
 @param successBlock Block with response and user instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)userWithLogin:(QB_NONNULL NSString *)userLogin
                           successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBUUser * QB_NULLABLE_S user))successBlock
                             errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get Users with Logins

/**
 Retrieve users with logins (max 10 users)

 @param logins Logins of users which you want to retrieve
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithLogins:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)logins
                             successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                               errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;
/**
 Retrieve users with logins (with extended set of pagination parameters)

 @param logins Logins of users which you want to retrieve
 @param page Pagination parameters
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithLogins:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)logins
                                     page:(QB_NULLABLE QBGeneralResponsePage *)page
                             successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                               errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get Users with full name

/**
 Retrieve Users by full name for current account (last 10 users)

 @param userFullName Full name of users to be retrieved.
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithFullName:(QB_NONNULL NSString *)userFullName
                               successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                                 errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;
/**
 Retrieve Users by full name for current account (with extended set of pagination parameters)

 @param userFullName Full name of users to be retrieved.
 @param page Pagination parameters
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithFullName:(QB_NONNULL NSString *)userFullName
                                       page:(QB_NULLABLE QBGeneralResponsePage *)page
                               successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                                 errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get Users with tags

/**
 Retrieve Users by tags for current account (last 10 users)

 @param tags Tags of users to be retrieved.
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithTags:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)tags
                           successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                             errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;
/**
 Retrieve Users by tags for current account (with extended set of pagination parameters)

 @param tags Tags of users to be retrieved.
 @param page Pagination parameters
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithTags:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)tags
                                   page:(QB_NULLABLE QBGeneralResponsePage *)page
                           successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                             errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;
#pragma mark - Get Users with phone numbers

/**
 Retrieve users with phone numbers (max 10 users)

 @param phoneNumbers Pnone numbers of users which you want to retrieve
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed
 @return An instance of QBRequest. Use this instance to cancel the operation.
 */
+ (QB_NONNULL QBRequest *)usersWithPhoneNumbers:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)phoneNumbers
                                   successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                                     errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;
/**
 Retrieve users with phone numbers (with extended set of pagination parameters)

 @param phoneNumbers Pnone numbers of users which you want to retrieve
 @param page Pagination parameters
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithPhoneNumbers:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)phoneNumbers
                                           page:(QB_NULLABLE QBGeneralResponsePage *)page
                                   successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                                     errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get User with Facebook ID

/**
 Retrieve User by Facebook ID

 @param userFacebookID Facebook ID of user to be retrieved.
 @param successBlock Block with response and user instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)userWithFacebookID:(QB_NONNULL NSString *)userFacebookID
                                successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBUUser * QB_NULLABLE_S user))successBlock
                                  errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get Users Facebook IDs

/**
 Retrieve users with facebook ids (max 10 users)

 @param facebookIDs Facebook IDs of users which you want to retrieve
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithFacebookIDs:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)facebookIDs
                                  successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                                    errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;
/**
 Retrieve users with facebook ids (with extended set of pagination parameters)

 @param facebookIDs Facebook IDs of users which you want to retrieve
 @param page Pagination parameters
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithFacebookIDs:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)facebookIDs
                                          page:(QB_NULLABLE QBGeneralResponsePage *)page
                                  successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                                    errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get User with Twitter ID

/**
 Retrieve User by Twitter ID

 @param userTwitterID Twitter ID of user to be retrieved.
 @param successBlock Block with response and user instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)userWithTwitterID:(QB_NONNULL NSString *)userTwitterID
                               successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBUUser * QB_NULLABLE_S user))successBlock
                                 errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get Users Twitter IDs

/**
 Retrieve users with twitter ids (max 10 users)

 @param twitterIDs Twitter IDs of users which you want to retrieve
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithTwitterIDs:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)twitterIDs
                                 successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                                   errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;
/**
 Retrieve users with twitter ids (with extended set of pagination parameters)

 @param twitterIDs Twitter IDs of users which you want to retrieve
 @param page Pagination parameters
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithTwitterIDs:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)twitterIDs
                                         page:(QB_NULLABLE QBGeneralResponsePage *)page
                                 successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                                   errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get User with email

/**
 Retrieve User by Email

 @param userEmail Email of user to be retrieved.
 @param successBlock Block with response and user instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)userWithEmail:(QB_NONNULL NSString *)userEmail
                           successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBUUser * QB_NULLABLE_S user))successBlock
                             errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get Users with emails

/**
 Retrieve users with email (max 10 users)

 @param emails Emails of users which you want to retrieve
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithEmails:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)emails
                             successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                               errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

/**
 Retrieve users with email (with extended set of pagination parameters)

 @param emails Emails of users which you want to retrieve
 @param page Pagination parameters
 @param successBlock Block with response, page and users instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)usersWithEmails:(QB_NONNULL NSArray QB_GENERIC(NSString *) *)emails
                                     page:(QB_NULLABLE QBGeneralResponsePage *)page
                             successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBGeneralResponsePage * QB_NULLABLE_S page, NSArray QB_GENERIC(QBUUser *) * QB_NULLABLE_S users))successBlock
                               errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Get User with external ID

/**
 Retrieve User by External identifier

 @param userExternalID External ID of user to be retrieved.
 @param successBlock Block with response and user instances if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)userWithExternalID:(NSUInteger)userExternalID
                                successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBUUser * QB_NULLABLE_S user))successBlock
                                  errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Update User

/**
 Update current session user.

 @param parameters   User parameters that could be updated.
 @param successBlock Block with response and user instances if request succeded.
 @param errorBlock   Block with response instance if request failed.

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)updateCurrentUser:(QB_NONNULL QBUpdateUserParameters *)parameters
                               successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response, QBUUser * QB_NULLABLE_S user))successBlock
                                 errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Delete Current User

/**
 Delete Current User

 @note You should login firstly in order to delete current user

 @param successBlock Block with response instance if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)deleteCurrentUserWithSuccessBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))successBlock
												 errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

#pragma mark - Reset password

/**
 Reset user's password. User with this email will retrieve an email instruction for reset password.

 @param email User's email
 @param successBlock Block with response instance if request succeded
 @param errorBlock Block with response instance if request failed

 @return An instance of QBRequest for cancel operation mainly.
 */
+ (QB_NONNULL QBRequest *)resetUserPasswordWithEmail:(QB_NONNULL NSString *)email
                                        successBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))successBlock
                                          errorBlock:(QB_NULLABLE void (^)(QBResponse * QB_NONNULL_S response))errorBlock;

@end


text:
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.sam.cotton</groupId>
  <artifactId>cotton</artifactId>
  <version>0.1.0</version>
  <name>cotton</name>
  <dependencies>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-server</artifactId>
      <type>jar</type>
      <version>8.1.5.v20120716</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-webapp</artifactId>
      <type>jar</type>
      <version>8.1.5.v20120716</version>
    </dependency>
    <dependency>
      <groupId>org.infinispan</groupId>
      <artifactId>infinispan-core</artifactId>
      <type>jar</type>
      <version>5.1.6.FINAL</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <type>jar</type>
      <version>1.0.7</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <type>jar</type>
      <version>1.0.7</version>
    </dependency>
    <dependency>
      <groupId>org.jruby</groupId>
      <artifactId>jruby</artifactId>
      <type>jar</type>
      <version>1.7.0</version>
    </dependency>
  </dependencies>
  <build>
    <sourceDirectory>ext/java</sourceDirectory>
  </build>
</project>

redpajama_set_name: RedPajamaGithub


text:
require 'test_helper'

class PermitTest < ActiveSupport::TestCase
  # test "the truth" do
  #   assert true
  # end
end


text:
namespace ComputerBuildingSystem
{
    using System;

    public class InvalidArgumentException : ArgumentException
    {
        public InvalidArgumentException(string message)
            : base(message)
        {
        }
    }
}


text:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
    <type>org.netbeans.modules.web.project</type>
    <configuration>
        <data xmlns="http://www.netbeans.org/ns/web-project/3">
            <name>IDPPublic</name>
            <minimum-ant-version>1.6.5</minimum-ant-version>
            <web-module-libraries>
                <library dirs="200">
                    <file>${libs.Struts2Core.classpath}</file>
                    <path-in-war>WEB-INF/lib</path-in-war>
                </library>
                <library dirs="200">
                    <file>${libs.hibernate-support.classpath}</file>
                    <path-in-war>WEB-INF/lib</path-in-war>
                </library>
                <library dirs="200">
                    <file>${libs.ejb3-persistence.classpath}</file>
                    <path-in-war>WEB-INF/lib</path-in-war>
                </library>
                <library dirs="200">
                    <file>${file.reference.hsqldb.jar}</file>
                    <path-in-war>WEB-INF/lib</path-in-war>
                </library>
                <library dirs="200">
                    <file>${file.reference.mail.jar}</file>
                </library>
            </web-module-libraries>
            <web-module-additional-libraries/>
            <source-roots>
                <root id="src.dir"/>
            </source-roots>
            <test-roots>
                <root id="test.src.dir"/>
            </test-roots>
        </data>
        <libraries xmlns="http://www.netbeans.org/ns/ant-project-libraries/1">
            <definitions>./lib/nblibraries.properties</definitions>
        </libraries>
    </configuration>
</project>


text:
////////////////////////////////////////////////////////////////////////////////
// checkstyle: Checks Java source code for adherence to a set of rules.
// Copyright (C) 2001-2015 the original author or authors.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
////////////////////////////////////////////////////////////////////////////////

package com.puppycrawl.tools.checkstyle.checks.whitespace;

import java.io.File;
import java.util.List;

import com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck;

/**
 * Checks to see if a file contains a tab character.
 * @author oliverb
 */
public class FileTabCharacterCheck extends AbstractFileSetCheck {

    /**
     * A key is pointing to the warning message text in "messages.properties"
     * file.
     */
    public static final String CONTAINS_TAB = "containsTab";

    /**
     * A key is pointing to the warning message text in "messages.properties"
     * file.
     */
    public static final String FILE_CONTAINS_TAB = "file.containsTab";

    /** Indicates whether to report once per file, or for each line. */
    private boolean eachLine;

    @Override
    protected void processFiltered(File file, List<String> lines) {
        int lineNum = 0;
        for (final String line : lines) {
            lineNum++;
            final int tabPosition = line.indexOf('\t');
            if (tabPosition != -1) {
                if (eachLine) {
                    log(lineNum, tabPosition + 1, CONTAINS_TAB);
                }
                else {
                    log(lineNum, tabPosition + 1, FILE_CONTAINS_TAB);
                    break;
                }
            }
        }
    }

    /**
     * Whether report on each line containing a tab.
     * @param eachLine Whether report on each line containing a tab.
     */
    public void setEachLine(boolean eachLine) {
        this.eachLine = eachLine;
    }
}


text:
define(["lib-build/css!./InlineEditor",
        "storymaps/common/builder/ckeditor/plugins/storymapsInlineMedia/dialog/Media",
		"dojo/topic"
	],
	function(
		viewCss,
		EditorDialogInlineMedia,
		topic
	){
		var _editorDialogInlineMedia = null,
			_isInit = false;

		return function InlineEditor()
		{
			if ( ! _editorDialogInlineMedia )
				_editorDialogInlineMedia = new EditorDialogInlineMedia($("#editorDialogInlineMedia"));

			this.init = function(container, options)
			{
				/* TODO: mutualize editor config with MJ but keep flexible
				 * Should rely on the regular config.js ?
				 * how to mix the two different config style?
				 */

				options = options || {
					extraPlugins: 'storymapsInlineMedia,autogrow',
					resize_enabled: false,
					toolbar: [
						{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ], items: [ 'Bold', 'Italic', 'Underline', 'RemoveFormat' ] },
						{ name: 'colors', items: [ 'TextColor' ] },
						{ name: 'styles', items: [ 'FontSize' ] },
						{ name: 'insert', groups: [ 'storymapsInlineMedia' ], items: [ 'InlineMedia' ] },
						{ name: 'links', items: [ 'Link', 'Unlink' ] },
						{ name: 'paragraph', groups: [ 'list', 'align' ], items: [ 'NumberedList', 'BulletedList', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'] }
					],
					uiColor: '#FCFCFC',
					contentsCss: app.isProduction ? 'resources/lib/ckeditor/editor.css' : 'app/storymaps/common/builder/ckeditor/editor.css',
					autoGrow_onStartup: true,
					linkShowAdvancedTab: false,
					linkShowTargetTab: false,

					/*
					 * Content filtering
					 */

					extraAllowedContent: 'h1 h2 h3 h4 h5 h6 sub sup table tr th td caption div span img figure figcaption iframe; *(*); *[*]; a[data-*]',
					// Elements to be removed when executing the "remove " format" command
					removeFormatTags:
						// Default
						'b,big,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var'
						+ ',h1,h2,h3,h4,h5,h6',
					// Copy/paste magic
					pasteFromWordRemoveFontStyles: false,
					pasteFromWordRemoveStyles: false
				};

				CKEDITOR.on('instanceCreated', function(event) {
					var editor = event.editor;

					// TODO make a clean callback
					var tmpCallback = function(){
						var editorContainer = $(editor.container.$).parents('.entry');
						topic.publish("BUILDER-UPDATE-ENTRY-DESCRIPTION", {
							index: editorContainer.index(),
							value: editor.getData()
						});
					};

					editor.on('blur', tmpCallback);
					editor.on('change', tmpCallback);

					// Disable double click edit on links
					editor.on('doubleclick', function(evt) {
						var element = CKEDITOR.plugins.link.getSelectedLink( editor ) || evt.data.element;

						if ( element.is('a') ) {
							evt.data.dialog = (element.getAttribute('name') && (!element.getAttribute('href') || !element.getChildCount())) ? 'anchor' : 'link';
							editor.getSelection().selectElement( element );
							return false;
						}
					});

					// Update Main Stage Actions button status on mouse UP
					// This is the only way to have an event when the highlighted text change
					// Buttons are enabled when cursor is on a correct action link or when some text is selected
					editor.on('contentDom', function() {
						// Resize the Iframe with fit positioning to have the final aspect ratio
						// Same ratio than in StoryText
						// Timeout needed all the time but first time editor is open, wait popup ready?
						setTimeout(function(){
							var editorFrame = container.find(".cke_wysiwyg_frame"),
								editorFrameContent = null;

							if ( ! editorFrame.length )
								return;

							try {
								editorFrameContent = editorFrame.contents().find('body');
							}
							catch(e) {
								return;
							}

							if ( ! editorFrameContent.length )
								return;

							editorFrameContent.find(".iframe-container.fit img").css(
								"height",
								container.find(".cke_wysiwyg_frame").width() * 9 / 16
							);

							editorFrameContent.find(".iframe-container").off('click').click(function(){
								var $this = $(this);
								topic.publish("EDITOR-EDIT-INLINE-MEDIA", $this[0]);
							});

							editorFrameContent.find(".image-container > span.cke_widget_wrapper, .cke_widget_element > span.cke_image_resizer_wrapper").off('click').click(function(e){
								var $this = $(this),
									xpos = e.offsetX === undefined ? e.pageX - $this.offset().left : e.offsetX,
									ypos = e.offsetY === undefined ? e.pageY - $this.offset().top  : e.offsetY;

								if (xpos > $(this).width() - 20 && ypos < 20 )
									topic.publish("EDITOR-EDIT-INLINE-MEDIA", $this[0]);
							});
						}, 500);
					});

					editor.on('selectionChange', function(evt) {
						if ( editor.readOnly )
							return;

						var command = editor.getCommand('link'),
							element = evt.data.path.lastElement && evt.data.path.lastElement.getAscendant( 'a', true ),
							elementIsAction = element && element.getName() == 'a' && element.getAttribute('data-storymaps') && element.getChildCount();

						command.setState(elementIsAction ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_OFF);
					});
				});

				CKEDITOR.on('instanceReady', function(event) {
					var editor = event.editor;

					// Inline media
					// TODO css?
					container.find('.cke_button__inlinemedia, .cke_button__inlinemedia .cke_button_icon').css("width", 27);
					container.find('.cke_button__inlinemedia .cke_button_icon').css("background-size", 27);

					// Disable link by default
					event.editor.getCommand('link').setState(CKEDITOR.TRISTATE_DISABLED);

					editor.filter.addTransformations([
						[
							// Add target="_blank" to link that don't have it or that is set to different value
							{
								element: 'a',
								left: function(el) {
									return el.attributes.target != "_blank";
								},
								right: function(el) {
									// If link isn't a Main Stage action
									if ( ! el.attributes['data-storymaps'] )
										el.attributes.target = "_blank";
								}
							}
						]
					]);

					/*
					// TODO create huge issue with inline media editing in the same session
					// Force autogrow and panel layout rules
					setTimeout(function(){
						editor.fire('contentDom');
						topic.publish("CORE_RESIZE");
					}, 50);
					*/
				});

				// Set target="_blank" for links
				CKEDITOR.on('dialogDefinition', function(ev) {
					var dialogName = ev.data.name,
						dialogDefinition = ev.data.definition;

					if ( dialogName == 'link' ) {
						var infoTab = dialogDefinition.getContents('info'),
							targetTab = dialogDefinition.getContents('target'),
							targetField = targetTab.get('linkTargetType');

						targetField['default'] = '_blank';
						infoTab.get('linkType').style = 'display: none';
						// Hide the protocol dropdown (unline in MJ shift doesn't works...)
						infoTab.get('urlOptions').children[0].children[0].style = 'display: none';
						infoTab.get('urlOptions').children[0].widths = ["0%", "100%"];
						//infoTab.get('urlOptions').children[0].children.shift();
					}

					// Open inline media cfg on image double click
					if ( dialogName == 'image2' ) {
						dialogDefinition.dialog.show = function(){
							topic.publish("EDITOR-EDIT-INLINE-MEDIA", {});
						};
					}
				});

				CKEDITOR.replaceAll(function(textarea, config) {
					/*
					 * Filter on textarea that are a child of the container
					 */
					var parentContainerFound = false;

					$(textarea).parents().each(function() {
						if ($.inArray(this, container) != -1) {
							parentContainerFound = true;
							return false;
						}
					});

					if ( ! parentContainerFound )
						return false;

					/*
					 * Override the editor config
					 */
					$.each(Object.keys(options), function(i, optKey){
						config[optKey] = options[optKey];
					});
				});
			};

			function initEvents()
			{
				if ( _isInit )
					return;

				if (!app.isProduction) {
					CKEDITOR.plugins.addExternal(
						'storymapsInlineMedia',
						'../../app/storymaps/common/builder/ckeditor/plugins/storymapsInlineMedia/'
					);
				}

				topic.subscribe("EDITOR-OPEN-INLINE-MEDIA", function(params){
					_editorDialogInlineMedia.present(
						{
							mode: params.selectedMedia ? "edit" : "add",
							edit: {
								media: params.selectedMedia
							}
						},
						290 /* TODO handle null? */
					).then(function(cfg){
						params.editorCallback(cfg);
					});
				});

				_isInit = true;
			}

			initEvents();
		};
	}
);


text:
package fr.jrds.snmpcodec.smi;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.snmp4j.smi.Variable;

import fr.jrds.snmpcodec.MibException;

public abstract class Syntax {

    private static final Pattern NAMEDINDEXFORMAT = Pattern.compile("(?<name>\\p{L}(?:[\\p{L}\\d])+)(?:\\s*\\((?<value>\\d+)?\\))?");

    private final Constraint constraints;
    private final Map<String, Integer> fromname;
    private final Map<Integer, String> toname;

    protected Syntax(Map<Number, String> names, Constraint constraints) {
        if (names != null) {
            this.toname = new HashMap<>(names.size());
            this.fromname = new HashMap<>(names.size());
            names.entrySet().forEach(e -> {
                String name = e.getValue();
                Integer val = e.getKey().intValue();
                toname.put(val, name);
                fromname.put(name, val);
            });
        } else {
            this.toname = Collections.emptyMap();
            this.fromname = Collections.emptyMap();
        }
        this.constraints = constraints;
    }

    public abstract String format(Variable v);
    public abstract Object convert(Variable v);
    public abstract Variable parse(String text);
    public abstract Variable getVariable();
    public abstract Variable getVariable(Object source);

    public Constraint getConstrains() {
        return constraints;
    }

    public boolean isNamed() {
        return toname.size() != 0;
    }

    public String getNameFromNumer(int number) {
        return this.toname.get(number);
    }

    public Integer getNumberFromName(String name) {
        Matcher m = NAMEDINDEXFORMAT.matcher(name);
        if (! m.matches()) {
            try {
                return Integer.parseInt(name);
            } catch (NumberFormatException e) {
                return null;
            }
        }
        if (m.group("value") != null) {
            return Integer.parseInt(m.group("value"));
        } else if (m.group("name") != null) {
            return fromname.get(m.group("name"));
        } else {
            return null;
        }
    }

    public TextualConvention getTextualConvention(String hint, Syntax type) throws MibException {
        throw new MibException("Can't provide textual convention");
    }

    public void resolve(Map<Symbol, Syntax> types) throws MibException {
    }

    @Override
    public String toString() {
        StringBuilder buffer = new StringBuilder();
        toname.forEach((i,j) -> buffer.append(String.format("%s (%d) ", j, i)));
        if (constraints != null) {
            buffer.append(constraints.toString());
        }
        return buffer.toString();
    }

}


text:
/* line 5, ../scss/emojionearea.scss */
.emojionearea, .emojionearea.form-control {
  display: block;
  position: relative !important;
  width: 100%;
  height: auto;
  padding: 0;
  font-size: 14px;
  border: 0;
  background-color: #fff;
  border: 1px solid #ccc;
  -moz-border-radius: 3px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -moz-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
  -o-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
  -webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
  transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box; }
/* line 21, ../scss/emojionearea.scss */
.emojionearea.focused {
  border-color: #66afe9;
  outline: 0;
  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
/* line 27, ../scss/emojionearea.scss */
.emojionearea .emojionearea-editor {
  display: block;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  height: auto;
  min-height: 8em;
  max-height: 15em;
  overflow: auto;
  padding: 6px 12px;
  line-height: 1.42857143;
  font-size: inherit;
  color: #555;
  background-color: transparent;
  border: 0;
  cursor: text;
  margin-right: 1px;
  -moz-border-radius: 0;
  -webkit-border-radius: 0;
  border-radius: 0;
  -moz-box-shadow: none;
  -webkit-box-shadow: none;
  box-shadow: none;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box; }
  /* line 46, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-editor:empty:before {
    content: attr(placeholder);
    display: block; }
  /* line 51, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-editor:focus {
    outline: 0;
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
    box-shadow: none; }
  /* line 56, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-editor [class*=emojione-], .emojionearea .emojionearea-editor .emojione {
    font-size: inherit;
    height: 2ex;
    width: 2.1ex;
    min-height: 20px;
    min-width: 20px;
    display: inline-block;
    margin: -.2ex .15em .2ex;
    line-height: normal;
    vertical-align: middle;
    max-width: 100%;
    top: 0; }
/* line 71, ../scss/emojionearea.scss */
.emojionearea .emojionearea-filters {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  background: #e5e5e5;
  width: 100%;
  height: 46px;
  position: relative;
  overflow: hidden; }
  /* line 79, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-filters .emojionearea-filter {
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box;
    box-sizing: content-box;
    top: 0 !important;
    margin: 0;
    width: 32px;
    height: 32px;
    width: 28px;
    height: 28px;
    display: inline-block;
    background-color: #e5e5e5;
    border: 9px solid #e5e5e5;
    border-left-width: 14px;
    border-right-width: 14px;
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
    opacity: 0.7; }
    /* line 94, ../scss/emojionearea.scss */
    .emojionearea .emojionearea-filters .emojionearea-filter i, .emojionearea .emojionearea-filters .emojionearea-filter img {
      display: block;
      width: 28px;
      height: 28px;
      top: 0;
      margin: 0; }
    /* line 102, ../scss/emojionearea.scss */
    .emojionearea .emojionearea-filters .emojionearea-filter:hover {
      background-color: #f2f2f2;
      border-color: #f2f2f2;
      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90);
      opacity: 0.9; }
    /* line 108, ../scss/emojionearea.scss */
    .emojionearea .emojionearea-filters .emojionearea-filter.active {
      background-color: #f9f9f9;
      border-color: #f9f9f9;
      filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false);
      opacity: 1; }
  /* line 115, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-filters .emojionearea-filters-scroll {
    height: 46px;
    overflow: hidden;
    width: 10000%;
    display: block;
    left: 0;
    margin: 0;
    position: absolute;
    background: #e5e5e5;
    -moz-transition: left 0.25s ease-in-out;
    -o-transition: left 0.25s ease-in-out;
    -webkit-transition: left 0.25s ease-in-out;
    transition: left 0.25s ease-in-out; }
    /* line 125, ../scss/emojionearea.scss */
    .focused.emojionearea .emojionearea-filters .emojionearea-filters-scroll {
      z-index: 91; }
  /* line 130, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-filters .emojionearea-filter-arrow-left,
  .emojionearea .emojionearea-filters .emojionearea-filter-arrow-right {
    display: block;
    width: 22px;
    height: 46px;
    position: absolute;
    top: 0;
    -moz-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
    -webkit-box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
    box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
    background: #e5e5e5;
    z-index: 1; }
    /* line 141, ../scss/emojionearea.scss */
    .focused.emojionearea .emojionearea-filters .emojionearea-filter-arrow-left, .emojionearea .emojionearea-filters .emojionearea-filter-arrow-right {
      z-index: 92; }
    /* line 145, ../scss/emojionearea.scss */
    .emojionearea .emojionearea-filters .emojionearea-filter-arrow-left:hover,
    .emojionearea .emojionearea-filters .emojionearea-filter-arrow-right:hover {
      background: #f2f2f2; }
    /* line 149, ../scss/emojionearea.scss */
    .emojionearea .emojionearea-filters .emojionearea-filter-arrow-left:after,
    .emojionearea .emojionearea-filters .emojionearea-filter-arrow-right:after {
      content: "";
      width: 0;
      height: 0;
      border-style: solid;
      border-width: 5px 0;
      border-color: transparent;
      position: absolute;
      top: 18px; }
    /* line 160, ../scss/emojionearea.scss */
    .emojionearea .emojionearea-filters .emojionearea-filter-arrow-left.disabled,
    .emojionearea .emojionearea-filters .emojionearea-filter-arrow-right.disabled {
      -moz-box-shadow: none;
      -webkit-box-shadow: none;
      box-shadow: none; }
  /* line 165, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-filters .emojionearea-filter-arrow-left {
    -moz-transition: left 0.15s ease-in-out;
    -o-transition: left 0.15s ease-in-out;
    -webkit-transition: left 0.15s ease-in-out;
    transition: left 0.15s ease-in-out;
    left: -30px;
    border-right: 1px solid #c9c9c9; }
    /* line 169, ../scss/emojionearea.scss */
    .emojionearea .emojionearea-filters .emojionearea-filter-arrow-left:after {
      left: 6px;
      border-right: 8px solid #333; }
    /* line 173, ../scss/emojionearea.scss */
    .emojionearea .emojionearea-filters .emojionearea-filter-arrow-left.disabled:after {
      border-right-color: #aaa; }
    /* line 176, ../scss/emojionearea.scss */
    .focused.emojionearea .emojionearea-filters .emojionearea-filter-arrow-left.active {
      left: 0; }
  /* line 181, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-filters .emojionearea-filter-arrow-right {
    -moz-transition: right 0.15s ease-in-out;
    -o-transition: right 0.15s ease-in-out;
    -webkit-transition: right 0.15s ease-in-out;
    transition: right 0.15s ease-in-out;
    right: -30px;
    border-left: 1px solid #c9c9c9; }
    /* line 185, ../scss/emojionearea.scss */
    .emojionearea .emojionearea-filters .emojionearea-filter-arrow-right:after {
      right: 6px;
      border-left: 8px solid #333; }
    /* line 189, ../scss/emojionearea.scss */
    .emojionearea .emojionearea-filters .emojionearea-filter-arrow-right.disabled:after {
      border-left-color: #aaa; }
    /* line 192, ../scss/emojionearea.scss */
    .focused.emojionearea .emojionearea-filters .emojionearea-filter-arrow-right.active {
      right: 0; }
/* line 198, ../scss/emojionearea.scss */
.emojionearea .emojionearea-tabs {
  position: absolute;
  left: -1px;
  right: -1px;
  border: 1px solid #ccc;
  border-top: 0 !important;
  padding: 1px 0 2px;
  margin-top: -1px;
  background: #f9f9f9;
  height: 138px;
  z-index: 90;
  -moz-border-radius-bottomleft: 3px;
  -webkit-border-bottom-left-radius: 3px;
  border-bottom-left-radius: 3px;
  -moz-border-radius-bottomright: 3px;
  -webkit-border-bottom-right-radius: 3px;
  border-bottom-right-radius: 3px;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box; }
  /* line 213, ../scss/emojionearea.scss */
  .focused.emojionearea .emojionearea-tabs {
    border-color: inherit;
    -moz-box-shadow: inherit;
    -webkit-box-shadow: inherit;
    box-shadow: inherit; }
  /* line 218, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-tabs [class*=emojione-] {
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box;
    box-sizing: content-box;
    margin: 0;
    width: 24px;
    height: 24px;
    top: 0; }
  /* line 226, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-tabs .emojionearea-tab {
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    position: absolute;
    padding: 4px 4px 4px 10px;
    height: 136px;
    overflow: auto; }
    /* line 233, ../scss/emojionearea.scss */
    .emojionearea .emojionearea-tabs .emojionearea-tab .emojibtn {
      -moz-box-sizing: content-box;
      -webkit-box-sizing: content-box;
      box-sizing: content-box;
      width: 24px;
      height: 24px;
      float: left;
      display: block;
      margin: 1px;
      padding: 3px; }
      /* line 242, ../scss/emojionearea.scss */
      .emojionearea .emojionearea-tabs .emojionearea-tab .emojibtn:hover {
        -moz-border-radius: 4px;
        -webkit-border-radius: 4px;
        border-radius: 4px;
        background-color: #e4e4e4;
        cursor: pointer; }
      /* line 248, ../scss/emojionearea.scss */
      .emojionearea .emojionearea-tabs .emojionearea-tab .emojibtn i, .emojionearea .emojionearea-tabs .emojionearea-tab .emojibtn img {
        float: left;
        display: block;
        width: 24px;
        height: 24px; }
/* line 258, ../scss/emojionearea.scss */
.emojionearea .emojionearea-filters,
.emojionearea .emojionearea-tabs {
  overflow: hidden;
  filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false);
  opacity: 1; }
  /* line 263, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-filters.ea-hidden,
  .emojionearea .emojionearea-tabs.ea-hidden {
    height: 0;
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0; }
/* line 269, ../scss/emojionearea.scss */
.emojionearea .emojionearea-tab {
  filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false);
  opacity: 1;
  -moz-transition: all 250ms ease;
  -o-transition: all 250ms ease;
  -webkit-transition: all 250ms ease;
  transition: all 250ms ease; }
  /* line 274, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-tab.ea-hidden {
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    z-index: -1; }
/* line 281, ../scss/emojionearea.scss */
.emojionearea .emojionearea-filters,
.emojionearea .emojionearea-tabs,
.emojionearea .emojionearea-editor {
  -moz-transition: all 250ms ease;
  -o-transition: all 250ms ease;
  -webkit-transition: all 250ms ease;
  transition: all 250ms ease; }
/* line 287, ../scss/emojionearea.scss */
.emojionearea .emojionearea-editor + .emojionearea-filters,
.emojionearea .emojionearea-editor + .emojionearea-tabs,
.emojionearea .emojionearea-filters + .emojionearea-editor,
.emojionearea .emojionearea-tabs + .emojionearea-editor {
  border-top: 1px solid #cfcfcf; }
/* line 294, ../scss/emojionearea.scss */
.emojionearea.has-button {
  border: 0;
  background: transparent;
  box-shadow: none;
  display: inline-block;
  width: auto; }
  /* line 300, ../scss/emojionearea.scss */
  .emojionearea.has-button .emojionearea-filters,
  .emojionearea.has-button .emojionearea-tabs {
    width: 306px;
    transition: none; }
  /* line 305, ../scss/emojionearea.scss */
  .emojionearea.has-button .emojionearea-filters {
    border: 1px solid #ccc;
    border-top-left-radius: 3px;
    border-top-right-radius: 3px;
    position: absolute;
    top: 44px;
    left: 0;
    z-index: 90; }
  /* line 314, ../scss/emojionearea.scss */
  .emojionearea.has-button .emojionearea-tabs {
    top: 90px;
    left: 0;
    right: 0; }
  /* line 319, ../scss/emojionearea.scss */
  .emojionearea.has-button .emojionearea-filter-arrow-left.active {
    left: 0; }
  /* line 322, ../scss/emojionearea.scss */
  .emojionearea.has-button .emojionearea-filter-arrow-right.active {
    right: 0; }
/* line 326, ../scss/emojionearea.scss */
.emojionearea .emojionearea-button {
  margin-bottom: 10px;
  background-color: #e5e5e5;
  cursor: pointer;
  width: auto;
  display: inline-block;
  border: 1px solid #ccc;
  border-radius: 4px;
  user-select: none;
  -webkit-user-select: none;
  position: relative;
  padding: 6px 55px 6px 10px;
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAOVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8dlA9AAAAEnRSTlMABREVGC51gIiKra69zNHW1+vNhZpxAAAAhUlEQVR4Ae3RywpCMQyE4R7rpfXuvP/DCtNNkIBhVgrz778hkPbjOeecOxxb0jZ71b8wEn/BY1/1wEg8uFDzYSH42sIVq9OnZ7N9bXfDaiT+vDVhIfHVBc3HBc3HBc3HBcGzfsfqqflwg+i5IPpkgV5foNcXdM8F1Ydv6p71Se+cc+5PegM/oA+TVIN/2wAAAABJRU5ErkJggg==);
  background-size: 32px auto;
  background-repeat: no-repeat;
  background-position: 88% center; }
  /* line 342, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-button:hover {
    background-color: #f2f2f2; }
  /* line 345, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-button::after {
    content: "";
    position: absolute;
    top: 4px;
    left: 50%;
    bottom: 4px;
    border-left: 1px solid #ccc;
    border-right: 1px solid #f0f0f0; }
  /* line 355, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-button.placeholder::before {
    content: "";
    position: absolute;
    z-index: 1;
    top: 2px;
    left: 27px;
    display: block;
    width: 14px;
    height: 14px;
    background-size: 100% auto;
    background-repeat: no-repeat;
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA2CAMAAAC/bkrSAAAARVBMVEUAAAC/v7+fn5+ZmZmenp6Xl5ebm5uampqYmJibm5uampqYmJiYmJiYmJiYmJiXl5eYmJiYmJiXl5eYmJiZmZmampqbm5sJERIjAAAAEnRSTlMABAgPFSAzNUNFVnl8hvX4+fpxC8StAAAAbklEQVR42u3WuRKAIAxF0bhvuBHl/z9VZmzgpUBpLMxtk1OGgUSbhWpKt+Sh0wUpUvRT1EPDimjElZKsCJCs8YgxF8bYjdy7WJGiT9GBRachph7l3ZOZ4syOaMaNSt89RYoeIw5Lovw/bNtBBWEX3ut8mHtBARQAAAAASUVORK5CYII=); }
  /* line 368, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-button.placeholder img {
    opacity: 0.5; }
  /* line 371, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-button.placeholder:hover img {
    opacity: 0.7; }
  /* line 375, ../scss/emojionearea.scss */
  .emojionearea .emojionearea-button img {
    display: block;
    width: 25px;
    height: auto;
    top: 0; }

/*# sourceMappingURL=emojionearea.css.map */


text:
{% load static comments %}

{% get_comment_count for article as comment_count %}
{% if article.is_commenting_enabled %}
  {% if comment_count > 0 %}

      {{comment_count}}

        {% trans "comment" %}{{comment_count|pluralize}}

  {% endif %}
{% endif %}


text:
const initialState = {
  picList: [],
};

export default function handleActions(state = initialState, action) {
  switch (action.type) {
    case 'GetPicListDone': return {...state, ...action.payload};
    default: return state;
  }
}


text:
* html .u0_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u2_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u4_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u6_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u8_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u10_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u12_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u14_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u16_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u18_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u20_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u22_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u24_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u26_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u28_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u30_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u32_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u34_normal {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u0_normal.png");
}

* html .u36c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u36c0.png");
}

* html .u38c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u38c0.png");
}

* html .u38c1 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u38c1.png");
}

* html .u38c2 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u38c2.png");
}

* html .u40c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u40c0.png");
}

* html .u40c1 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u40c1.png");
}

* html .u40c2 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u40c2.png");
}

* html .u42c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u42c0.png");
}

* html .u42c1 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u42c1.png");
}

* html .u42c2 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u42c2.png");
}

* html .u44c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u44c0.png");
}

* html .u46c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u46c0.png");
}

* html .u46c1 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u46c1.png");
}

* html .u46c2 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u46c2.png");
}

* html .u48c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u48c0.png");
}

* html .u48c1 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u48c1.png");
}

* html .u48c2 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u48c2.png");
}

* html .u50c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u50c0.png");
}

* html .u50c1 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u50c1.png");
}

* html .u50c2 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u50c2.png");
}

* html .u52c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u52c0.png");
}

* html .u52c1 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u52c1.png");
}

* html .u52c2 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u52c2.png");
}

* html .u54c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u54c0.png");
}

* html .u56c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u56c0.png");
}

* html .u58c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u58c0.png");
}

* html .u60c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u60c0.png");
}

* html .u62c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u62c0.png");
}

* html .u64c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u64c0.png");
}

* html .u66c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u66c0.png");
}

* html .u68c0 {
    background-image: none;
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="Create_New_Employee_files/u68c0.png");
}


text:
require 'worth_watching'
require 'webmock/rspec'

WebMock.disable_net_connect!(allow_localhost: true)


text:
layout: default
---

      {% unless page.title == "blog" or page.title == "home" %}

{{ page.title }}

{{ page.description }}

    {% endunless %}

    {{ content }}


text:
/*************************************************************************/
/*  resource_import.cpp                                                  */
/*************************************************************************/
/*                       This file is part of:                           */
/*                           GODOT ENGINE                                */
/*                    http://www.godotengine.org                         */
/*************************************************************************/
/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur.                 */
/* Copyright (c) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)    */
/*                                                                       */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the       */
/* "Software"), to deal in the Software without restriction, including   */
/* without limitation the rights to use, copy, modify, merge, publish,   */
/* distribute, sublicense, and/or sell copies of the Software, and to    */
/* permit persons to whom the Software is furnished to do so, subject to */
/* the following conditions:                                             */
/*                                                                       */
/* The above copyright notice and this permission notice shall be        */
/* included in all copies or substantial portions of the Software.       */
/*                                                                       */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
/*************************************************************************/
#include "resource_import.h"

#include "os/os.h"
#include "variant_parser.h"

Error ResourceFormatImporter::_get_path_and_type(const String &p_path, PathAndType &r_path_and_type) const {

	Error err;
	FileAccess *f = FileAccess::open(p_path + ".import", FileAccess::READ, &err);

	if (!f)
		return err;

	VariantParser::StreamFile stream;
	stream.f = f;

	String assign;
	Variant value;
	VariantParser::Tag next_tag;

	int lines = 0;
	String error_text;
	while (true) {

		assign = Variant();
		next_tag.fields.clear();
		next_tag.name = String();

		err = VariantParser::parse_tag_assign_eof(&stream, lines, error_text, next_tag, assign, value, NULL, true);
		if (err == ERR_FILE_EOF) {
			memdelete(f);
			return OK;
		} else if (err != OK) {
			ERR_PRINTS("ResourceFormatImporter::load - " + p_path + ".import:" + itos(lines) + " error: " + error_text);
			memdelete(f);
			return err;
		}

		if (assign != String()) {
			if (assign.begins_with("path.") && r_path_and_type.path == String()) {
				String feature = assign.get_slicec('.', 1);
				if (OS::get_singleton()->check_feature_support(feature)) {
					r_path_and_type.path = value;
				}

			} else if (assign == "path") {
				r_path_and_type.path = value;
			} else if (assign == "type") {
				r_path_and_type.type = value;
			}

		} else if (next_tag.name != "remap") {
			break;
		}
	}

	memdelete(f);

	if (r_path_and_type.path == String() || r_path_and_type.type == String()) {
		return ERR_FILE_CORRUPT;
	}
	return OK;
}

RES ResourceFormatImporter::load(const String &p_path, const String &p_original_path, Error *r_error) {

	PathAndType pat;
	Error err = _get_path_and_type(p_path, pat);

	if (err != OK) {

		if (r_error)
			*r_error = err;

		return RES();
	}

	RES res = ResourceLoader::load(pat.path, pat.type, false, r_error);

#ifdef TOOLS_ENABLED
	if (res.is_valid()) {
		res->set_import_last_modified_time(res->get_last_modified_time()); //pass this, if used
		res->set_import_path(pat.path);
	}
#endif

	return res;
}

void ResourceFormatImporter::get_recognized_extensions(List<String> *p_extensions) const {

	Set<String> found;

	for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
		List<String> local_exts;
		E->get()->get_recognized_extensions(&local_exts);
		for (List<String>::Element *F = local_exts.front(); F; F = F->next()) {
			if (!found.has(F->get())) {
				p_extensions->push_back(F->get());
				found.insert(F->get());
			}
		}
	}
}

void ResourceFormatImporter::get_recognized_extensions_for_type(const String &p_type, List<String> *p_extensions) const {

	if (p_type == "") {
		return get_recognized_extensions(p_extensions);
	}

	Set<String> found;

	for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
		String res_type = E->get()->get_resource_type();
		if (res_type == String())
			continue;

		if (!ClassDB::is_parent_class(res_type, p_type))
			continue;

		List<String> local_exts;
		E->get()->get_recognized_extensions(&local_exts);
		for (List<String>::Element *F = local_exts.front(); F; F = F->next()) {
			if (!found.has(F->get())) {
				p_extensions->push_back(F->get());
				found.insert(F->get());
			}
		}
	}
}

bool ResourceFormatImporter::recognize_path(const String &p_path, const String &p_for_type) const {

	return FileAccess::exists(p_path + ".import");
}

bool ResourceFormatImporter::can_be_imported(const String &p_path) const {

	return ResourceFormatLoader::recognize_path(p_path);
}

bool ResourceFormatImporter::handles_type(const String &p_type) const {

	for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {

		String res_type = E->get()->get_resource_type();
		if (res_type == String())
			continue;
		if (ClassDB::is_parent_class(res_type, p_type))
			return true;
	}

	return true;
}

String ResourceFormatImporter::get_internal_resource_path(const String &p_path) const {

	PathAndType pat;
	Error err = _get_path_and_type(p_path, pat);

	if (err != OK) {

		return String();
	}

	return pat.path;
}

String ResourceFormatImporter::get_resource_type(const String &p_path) const {

	PathAndType pat;
	Error err = _get_path_and_type(p_path, pat);

	if (err != OK) {

		return "";
	}

	return pat.type;
}

void ResourceFormatImporter::get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types) {

	PathAndType pat;
	Error err = _get_path_and_type(p_path, pat);

	if (err != OK) {

		return;
	}

	return ResourceLoader::get_dependencies(pat.path, p_dependencies, p_add_types);
}

Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_name(const String &p_name) {

	for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
		if (E->get()->get_importer_name() == p_name) {
			return E->get();
		}
	}

	return Ref<ResourceImporter>();
}

void ResourceFormatImporter::get_importers_for_extension(const String &p_extension, List<Ref<ResourceImporter> > *r_importers) {

	for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {
		List<String> local_exts;
		E->get()->get_recognized_extensions(&local_exts);
		for (List<String>::Element *F = local_exts.front(); F; F = F->next()) {
			if (p_extension.to_lower() == F->get()) {
				r_importers->push_back(E->get());
			}
		}
	}
}

Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_extension(const String &p_extension) {

	Ref<ResourceImporter> importer;
	float priority = 0;

	for (Set<Ref<ResourceImporter> >::Element *E = importers.front(); E; E = E->next()) {

		List<String> local_exts;
		E->get()->get_recognized_extensions(&local_exts);
		for (List<String>::Element *F = local_exts.front(); F; F = F->next()) {
			if (p_extension.to_lower() == F->get() && E->get()->get_priority() > priority) {
				importer = E->get();
				priority = E->get()->get_priority();
			}
		}
	}

	return importer;
}

String ResourceFormatImporter::get_import_base_path(const String &p_for_file) const {

	return "res://.import/" + p_for_file.get_file() + "-" + p_for_file.md5_text();
}

ResourceFormatImporter *ResourceFormatImporter::singleton = NULL;

ResourceFormatImporter::ResourceFormatImporter() {
	singleton = this;
}