text:
package self.micromagic.eterna.model.impl;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map;

import org.apache.commons.collections.iterators.EnumerationIterator;
import org.dom4j.Element;

import self.micromagic.cg.ClassGenerator;
import self.micromagic.eterna.dao.ResultIterator;
import self.micromagic.eterna.dao.ResultRow;
import self.micromagic.eterna.model.AppData;
import self.micromagic.eterna.model.AppDataLogExecute;
import self.micromagic.eterna.model.DataHandler;
import self.micromagic.eterna.model.Execute;
import self.micromagic.eterna.model.Model;
import self.micromagic.eterna.model.ModelExport;
import self.micromagic.eterna.model.TransExecuteGenerator;
import self.micromagic.eterna.model.TransOperator;
import self.micromagic.eterna.search.ConditionInfo;
import self.micromagic.eterna.search.SearchManager;
import self.micromagic.eterna.search.SearchResult;
import self.micromagic.eterna.share.EternaException;
import self.micromagic.eterna.share.Tool;
import self.micromagic.util.StringTool;
import self.micromagic.util.container.PreFetchIterator;
import self.micromagic.util.converter.DateConverter;
import self.micromagic.util.converter.DoubleConverter;
import self.micromagic.util.converter.IntegerConverter;
import self.micromagic.util.converter.LongConverter;
import self.micromagic.util.converter.StringConverter;
import self.micromagic.util.converter.TimeConverter;
import self.micromagic.util.converter.TimestampConverter;
import self.micromagic.util.converter.ValueConverter;
import self.micromagic.util.ref.StringRef;

public class TransExecute extends AbstractExecute
		implements Execute, TransExecuteGenerator
{
	protected DataHandler fromHandler = new DataHandler("from", true, true);
	protected boolean removeFrom = false;
	protected boolean mustExist = true;

	protected DataHandler toHandler = null;

	protected TransOperator opt;
	protected boolean pushResult = false;

	public void initialize(Model model)
			throws EternaException
	{
		if (this.initialized)
		{
			return;
		}
		super.initialize(model);
	}

	public String getExecuteType()
	{
		return "trans";
	}

	public String getName()
			throws EternaException
	{
		return this.toHandler == null ? this.pushResult ? "#stack" : "#none"
				: this.toHandler.getConfig();
	}

	public boolean isPushResult()
	{
		return this.pushResult;
	}

	public void setPushResult(boolean push)
	{
		this.pushResult = push;
	}

	public void setFrom(String theFrom)
			throws EternaException
	{
		this.fromHandler.setConfig(theFrom);
	}

	public void setRemoveFrom(boolean remove)
	{
		this.removeFrom = remove;
	}

	public void setMustExist(boolean mustExist)
	{
		this.mustExist = mustExist;
	}

	public void setOpt(String opt)
			throws EternaException
	{
		if (opt.startsWith("class:"))
		{
			try
			{
				this.opt = (TransOperator) Tool.createObject(opt.substring(6));
			}
			catch (Exception ex)
			{
				throw new EternaException(ex);
			}
		}
		else
		{
			int index = opt.indexOf(':');
			String optName = opt;
			String optParam = null;
			if (index != -1)
			{
				optName = opt.substring(0, index);
				optParam = opt.substring(index + 1);
			}
			if ("getFirstRow".equals(optName))
			{
				this.opt = TransResultRow.instance;
			}
			else if ("getNext".equals(optName))
			{
				this.opt = TransNext.instance;
			}
			else if ("getFirstString".equals(optName))
			{
				this.opt = TransStrings.instance;
			}
			else if ("getFormated".equals(optName))
			{
				this.opt = new TransResultValue(optParam);
			}
			else if ("getObject".equals(optName))
			{
				this.opt = new TransResultValue(optParam, false);
			}
			else if ("getMapValue".equals(optName))
			{
				this.opt = new TransMapValue(optParam);
			}
			else if ("toResultIterator".equals(optName))
			{
				this.opt = TransToResultIterator.instance;
			}
			else if ("toIterator".equals(optName))
			{
				this.opt = TransToIterator.instance;
			}
			else if ("beforeFirst".equals(optName))
			{
				this.opt = TransBeforeFirst.instance;
			}
			else if ("toArray".equals(optName))
			{
				this.opt = optParam != null ? new TransToArray(optParam) : TransToArray.instance;
			}
			else if ("toString".equals(optName))
			{
				this.opt = new TransToWatendType(new StringConverter());
			}
			else if ("toInteger".equals(optName))
			{
				this.opt = new TransToWatendType(new IntegerConverter());
			}
			else if ("toLong".equals(optName))
			{
				this.opt = new TransToWatendType(new LongConverter());
			}
			else if ("toDouble".equals(optName))
			{
				this.opt = new TransToWatendType(new DoubleConverter());
			}
			else if ("toTime".equals(optName))
			{
				this.opt = new TransToWatendType(new TimeConverter());
			}
			else if ("toDate".equals(optName))
			{
				this.opt = new TransToWatendType(new DateConverter());
			}
			else if ("toDatetime".equals(optName))
			{
				this.opt = new TransToWatendType(new TimestampConverter());
			}
			else
			{
				throw new EternaException("Error opt:[" + opt + "].");
			}
		}
	}

	public void setTo(String theTo)
			throws EternaException
	{
		if (this.toHandler == null)
		{
			this.toHandler = new DataHandler("to", true, false);
		}
		this.toHandler.setConfig(theTo);
	}

	public ModelExport execute(AppData data, Connection conn)
			throws EternaException, SQLException, IOException
	{
		Object value = this.fromHandler.getData(data, this.removeFrom);
		if (value == null)
		{
			if (this.mustExist)
			{
				throw new EternaException("There is no value in [" + this.fromHandler.getConfig() + "].");
			}
		}
		Element nowNode = null;
		Element vToNode = null;
		if (data.getLogType() > 0)
		{
			nowNode = data.getCurrentNode();
		}
		if (nowNode != null)
		{
			Element vNode = nowNode.addElement("value-from");
			if (this.removeFrom)
			{
				vNode.addAttribute("removeFrom", "true");
			}
			vNode.addAttribute("config", this.fromHandler.getConfig());
			AppDataLogExecute.printObject(vNode, value);
			vToNode = nowNode.addElement("value-to");
			if (this.isPushResult())
			{
				vToNode.addAttribute("pushResult", "true");
			}
			if (this.toHandler != null)
			{
				vToNode.addAttribute("config", this.toHandler.getConfig());
			}
		}
		if (this.opt != null && value != null)
		{
			value = this.opt.change(value);
			if (vToNode != null)
			{
				vToNode.addAttribute("opt", this.opt.toString());
				AppDataLogExecute.printObject(vToNode, value);
			}
		}

		if (this.toHandler != null)
		{
			this.toHandler.setData(data, value);
		}
		if (this.isPushResult())
		{
			data.push(value);
		}
		return null;
	}

	private static class TransResultValue
			implements TransOperator
	{
		private final String param;
		private boolean useFormated = true;

		public TransResultValue(String param)
		{
			this.param = param;
		}

		public TransResultValue(String param, boolean useFormated)
		{
			this.param = param;
			this.useFormated = useFormated;
		}

		public Object change(Object value)
				throws EternaException
		{
			if (value == null)
			{
				return null;
			}
			ResultRow row = (ResultRow) TransResultRow.instance.change(value);
			if (row != null)
			{
				try
				{
					return this.useFormated ? row.getFormated(this.param) : row.getObject(this.param);
				}
				catch (SQLException ex)
				{
					throw new EternaException(ex);
				}
			}
			throw new EternaException("Error Object type:" + value.getClass() + ".");
		}

		public String toString()
		{
			return (this.useFormated ? "getFormated:" : "getObject:") + this.param;
		}

	}

	private static class TransMapValue
			implements TransOperator
	{
		private final String param;

		public TransMapValue(String param)
		{
			this.param = param;
		}

		public Object change(Object value)
				throws EternaException
		{
			if (value == null)
			{
				return null;
			}
			if (value instanceof Map)
			{
				Map map = (Map) value;
				return map.get(this.param);
			}
			else if (value instanceof SearchManager)
			{
				SearchManager sm = (SearchManager) value;
				ConditionInfo condition = sm.getCondition(this.param);
				return condition != null ? condition.value : null;
			}
			throw new EternaException("Error Object type:" + value.getClass() + ".");
		}

		public String toString()
		{
			return "getMapValue:" + this.param;
		}

	}

	private static class TransStrings
			implements TransOperator
	{
		static TransStrings instance = new TransStrings();

		public Object change(Object value)
				throws EternaException
		{
			if (value == null)
			{
				return null;
			}
			if (value instanceof String)
			{
				return value;
			}
			if (value instanceof String[])
			{
				String[] strs = (String[]) value;
				return strs.length > 0 ? strs[0] : null;
			}
			throw new EternaException("Error Object type:" + value.getClass() + ".");
		}

		public String toString()
		{
			return "getFirstString";
		}

	}

	private static class TransToIterator
			implements TransOperator
	{
		static TransToIterator instance = new TransToIterator();

		public Object change(Object value)
				throws EternaException
		{
			if (value == null)
			{
				return null;
			}
			if (value instanceof Iterator)
			{
				if (!(value instanceof PreFetchIterator))
				{
					return new PreFetchIterator((Iterator) value);
				}
				return value;
			}
			else if (value instanceof Collection)
			{
				return new PreFetchIterator(((Collection) value).iterator());
			}
			else if (ClassGenerator.isArray(value.getClass()))
			{
				return new PreFetchIterator(Arrays.asList((Object[]) value).iterator());
			}
			else if (value instanceof Map)
			{
				return new PreFetchIterator(((Map) value).entrySet().iterator());
			}
			else if (value instanceof Enumeration)
			{
				return new PreFetchIterator(new EnumerationIterator((Enumeration) value));
			}
			throw new EternaException("Error Object type:" + value.getClass() + ".");
		}

		public String toString()
		{
			return "toIterator";
		}

	}

	private static class TransNext
			implements TransOperator
	{
		static TransNext instance = new TransNext();

		public Object change(Object value)
				throws EternaException
		{
			if (value == null)
			{
				return null;
			}
			if (value instanceof Iterator)
			{
				Iterator itr = (Iterator) value;
				if (itr.hasNext())
				{
					return itr.next();
				}
				return null;
			}
			throw new EternaException("Error Object type:" + value.getClass() + ".");
		}

		public String toString()
		{
			return "getNext";
		}

	}

	private static class TransToResultIterator
			implements TransOperator
	{
		static TransToResultIterator instance = new TransToResultIterator();

		public Object change(Object value)
				throws EternaException
		{
			if (value == null)
			{
				return null;
			}
			if (value instanceof ResultIterator)
			{
				return value;
			}
			if (value instanceof SearchResult)
			{
				return ((SearchResult) value).queryResult;
			}
			throw new EternaException("Error Object type:" + value.getClass() + ".");
		}

		public String toString()
		{
			return "toResultIterator";
		}

	}

	private static class TransBeforeFirst
			implements TransOperator
	{
		static TransBeforeFirst instance = new TransBeforeFirst();

		public Object change(Object value)
				throws EternaException
		{
			if (value == null)
			{
				return null;
			}
			if (value instanceof ResultIterator)
			{
				ResultIterator ritr = (ResultIterator) value;
				try
				{
					ritr.beforeFirst();
				}
				catch (SQLException ex)
				{
					throw new EternaException(ex);
				}
				return ritr;
			}
			if (value instanceof SearchResult)
			{
				ResultIterator ritr = ((SearchResult) value).queryResult;
				try
				{
					ritr.beforeFirst();
				}
				catch (SQLException ex)
				{
					throw new EternaException(ex);
				}
				return value;
			}
			throw new EternaException("Error Object type:" + value.getClass() + ".");
		}

		public String toString()
		{
			return "beforeFirst";
		}

	}

	private static class TransResultRow
			implements TransOperator
	{
		static TransResultRow instance = new TransResultRow();

		public Object change(Object value)
				throws EternaException
		{
			if (value == null)
			{
				return null;
			}
			if (value instanceof ResultIterator)
			{
				ResultIterator ritr = (ResultIterator) value;
				if (ritr.hasNext())
				{
					try
					{
						return ritr.nextRow();
					}
					catch (SQLException ex)
					{
						throw new EternaException(ex);
					}
				}
				return null;
			}
			if (value instanceof ResultRow)
			{
				return value;
			}
			if (value instanceof SearchResult)
			{
				ResultIterator ritr = ((SearchResult) value).queryResult;
				if (ritr.hasNext())
				{
					try
					{
						return ritr.nextRow();
					}
					catch (SQLException ex)
					{
						throw new EternaException(ex);
					}
				}
				return null;
			}
			throw new EternaException("Error Object type:" + value.getClass() + ".");
		}

		public String toString()
		{
			return "getFirstRow";
		}

	}

	private static class TransToArray
			implements TransOperator
	{
		static TransToArray instance = new TransToArray();

		private final String param;

		public TransToArray(String param)
		{
			this.param = param;
		}

		public TransToArray()
		{
			this.param = ",";
		}

		public Object change(Object value)
				throws EternaException
		{
			if (value == null)
			{
				return null;
			}
			if (value instanceof ResultIterator)
			{
				LinkedList list = new LinkedList();
				ResultIterator ritr = (ResultIterator) value;
				try
				{
					while (ritr.hasNext())
					{
						list.add(ritr.nextRow().getFormated(this.param));
					}
				}
				catch (SQLException ex)
				{
					throw new EternaException(ex);
				}
				String[] temp = new String[list.size()];
				list.toArray(temp);
				return temp;
			}
			else if (value instanceof String)
			{
				return StringTool.separateString((String) value, this.param, true);
			}
			throw new EternaException("Error Object type:" + value.getClass() + ".");
		}

		public String toString()
		{
			return "toArray:" + this.param;
		}

	}

	private static class TransToWatendType
			implements TransOperator
	{
		private final ValueConverter converter;

		public TransToWatendType(ValueConverter converter)
		{
			this.converter = converter;
		}

		public Object change(Object value)
				throws EternaException
		{
			return this.converter.convert(value);
		}

		public String toString()
		{
			StringRef type = new StringRef();
			this.converter.getConvertType(type);
			String typeName = "Unkown";
			if (type.getString() != null && type.getString().length() > 0)
			{
				typeName = type.getString();
			}
			return "convert:" + typeName;
		}

	}

}


text:
#include <stdint.h>
#include "bacenum.h"
#include "bacdcode.h"
#include "bacdef.h"
#include "reject.h"

/** @file reject.c  Encode/Decode Reject APDUs */

/* Helper function to avoid needing additional entries in service data structures
 * when passing back reject status.
 * Convert from error code to reject code.
 * Anything not defined gets converted to REJECT_REASON_OTHER.
 * Will need reworking if it is required to return proprietary reject codes.
 */

BACNET_REJECT_REASON reject_convert_error_code(
    BACNET_ERROR_CODE error_code)
{
    BACNET_REJECT_REASON reject_code = REJECT_REASON_OTHER;

    switch (error_code) {
        case ERROR_CODE_REJECT_BUFFER_OVERFLOW:
            reject_code = REJECT_REASON_BUFFER_OVERFLOW;
            break;
        case ERROR_CODE_REJECT_INCONSISTENT_PARAMETERS:
            reject_code = REJECT_REASON_INCONSISTENT_PARAMETERS;
            break;
        case ERROR_CODE_REJECT_INVALID_PARAMETER_DATA_TYPE:
            reject_code = REJECT_REASON_INVALID_PARAMETER_DATA_TYPE;
            break;
        case ERROR_CODE_REJECT_INVALID_TAG:
            reject_code = REJECT_REASON_INVALID_TAG;
            break;
        case ERROR_CODE_REJECT_MISSING_REQUIRED_PARAMETER:
            reject_code = REJECT_REASON_MISSING_REQUIRED_PARAMETER;
            break;
        case ERROR_CODE_REJECT_PARAMETER_OUT_OF_RANGE:
            reject_code = REJECT_REASON_PARAMETER_OUT_OF_RANGE;
            break;
        case ERROR_CODE_REJECT_TOO_MANY_ARGUMENTS:
            reject_code = REJECT_REASON_TOO_MANY_ARGUMENTS;
            break;
        case ERROR_CODE_REJECT_UNDEFINED_ENUMERATION:
            reject_code = REJECT_REASON_UNDEFINED_ENUMERATION;
            break;
        case ERROR_CODE_REJECT_UNRECOGNIZED_SERVICE:
            reject_code = REJECT_REASON_UNRECOGNIZED_SERVICE;
            break;
        case ERROR_CODE_REJECT_PROPRIETARY:
            reject_code = REJECT_REASON_PROPRIETARY_FIRST;
            break;
        case ERROR_CODE_REJECT_OTHER:
        default:
            reject_code = REJECT_REASON_OTHER;
            break;
    }

    return (reject_code);
}

/* encode service */
int reject_encode_apdu(
    uint8_t * apdu,
    uint8_t invoke_id,
    uint8_t reject_reason)
{
    int apdu_len = 0;   /* total length of the apdu, return value */

    if (apdu) {
        apdu[0] = PDU_TYPE_REJECT;
        apdu[1] = invoke_id;
        apdu[2] = reject_reason;
        apdu_len = 3;
    }

    return apdu_len;
}

#if !BACNET_SVC_SERVER
/* decode the service request only */
int reject_decode_service_request(
    uint8_t * apdu,
    unsigned apdu_len,
    uint8_t * invoke_id,
    uint8_t * reject_reason)
{
    int len = 0;

    if (apdu_len) {
        if (invoke_id)
            *invoke_id = apdu[0];
        if (reject_reason)
            *reject_reason = apdu[1];
    }

    return len;
}
#endif

#ifdef TEST
#include <assert.h>
#include <string.h>
#include "ctest.h"

/* decode the whole APDU - mainly used for unit testing */
int reject_decode_apdu(
    uint8_t * apdu,
    unsigned apdu_len,
    uint8_t * invoke_id,
    uint8_t * reject_reason)
{
    int len = 0;

    if (!apdu)
        return -1;
    /* optional checking - most likely was already done prior to this call */
    if (apdu_len) {
        if (apdu[0] != PDU_TYPE_REJECT)
            return -1;
        if (apdu_len > 1) {
            len =
                reject_decode_service_request(&apdu[1], apdu_len - 1,
                invoke_id, reject_reason);
        }
    }

    return len;
}

void testReject(
    Test * pTest)
{
    uint8_t apdu[480] = { 0 };
    int len = 0;
    int apdu_len = 0;
    uint8_t invoke_id = 0;
    uint8_t reject_reason = 0;
    uint8_t test_invoke_id = 0;
    uint8_t test_reject_reason = 0;

    len = reject_encode_apdu(&apdu[0], invoke_id, reject_reason);
    ct_test(pTest, len != 0);
    apdu_len = len;

    len =
        reject_decode_apdu(&apdu[0], apdu_len, &test_invoke_id,
        &test_reject_reason);
    ct_test(pTest, len != -1);
    ct_test(pTest, test_invoke_id == invoke_id);
    ct_test(pTest, test_reject_reason == reject_reason);

    /* change type to get negative response */
    apdu[0] = PDU_TYPE_ABORT;
    len =
        reject_decode_apdu(&apdu[0], apdu_len, &test_invoke_id,
        &test_reject_reason);
    ct_test(pTest, len == -1);

    /* test NULL APDU */
    len =
        reject_decode_apdu(NULL, apdu_len, &test_invoke_id,
        &test_reject_reason);
    ct_test(pTest, len == -1);

    /* force a zero length */
    len =
        reject_decode_apdu(&apdu[0], 0, &test_invoke_id, &test_reject_reason);
    ct_test(pTest, len == 0);

    /* check them all...   */
    for (invoke_id = 0; invoke_id < 255; invoke_id++) {
        for (reject_reason = 0; reject_reason < 255; reject_reason++) {
            len = reject_encode_apdu(&apdu[0], invoke_id, reject_reason);
            apdu_len = len;
            ct_test(pTest, len != 0);
            len =
                reject_decode_apdu(&apdu[0], apdu_len, &test_invoke_id,
                &test_reject_reason);
            ct_test(pTest, len != -1);
            ct_test(pTest, test_invoke_id == invoke_id);
            ct_test(pTest, test_reject_reason == reject_reason);
        }
    }
}

#ifdef TEST_REJECT
int main(
    void)
{
    Test *pTest;
    bool rc;

    pTest = ct_create("BACnet Reject", NULL);
    /* individual tests */
    rc = ct_addTestFunction(pTest, testReject);
    assert(rc);

    ct_setStream(pTest, stdout);
    ct_run(pTest);
    (void) ct_report(pTest);
    ct_destroy(pTest);

    return 0;
}
#endif /* TEST_REJECT */
#endif /* TEST */

redpajama_set_name: RedPajamaGithub


text:
from asynctest import TestManager, test
from blinker import signal

@test("always succeeds")
def success_test():
    return 1 + 1

@test("always fails")
def fail_test():
    return 1 + 1

def a(t, **kw):
    print(t)

signal("test-complete").receiver_connected.connect(a)

manager = TestManager([success_test, fail_test])
manager.run_all()

success_test.success()
fail_test.failure()


text:
<?php

class SFC_FeaturedCategories_Block_Display extends Mage_Core_Block_Template
{
	protected function getFeaturedCategories()
	{
		$Categories = array();
		$cats = split(",",Mage::getModel('catalog/category')->load(Mage::app()->getStore()->getRootCategoryId())->getAllChildren());
		$cats[] = Mage::app()->getStore()->getRootCategoryId();
		foreach ( $cats as $cat )
		{
			$Category = Mage::getModel('catalog/category')->load($cat);

			//BUG: "0" = true, "1" = false
			//echo $Category->getName() . " - C:" . $Category->getIsFeaturedCategory() . " - S:" . $Category->getIsFeaturedSubcat() .  "<br />";

			if ( $Category->getIsFeaturedCategory() )
			{
				$Categories[$Category->getId()]['Category'] = $Category;
			}
			if ( $Category->getIsFeaturedSubcat() )
			{
				// Should search all predecessor nodes for a featured category to nest under
				$ParentCategory = $Category->getParentCategory();
				while ( true )
				{
					if ( $ParentCategory->getIsFeaturedCategory() || $ParentCategory->getId() == 1 )
					{
						break;
					}
					$ParentCategory = $ParentCategory->getParentCategory();
				}
				$Categories[$ParentCategory->getId()]['Subcats'][$Category->getId()] = $Category;
			}
		}
		return $Categories;
	}

	protected function calcCategoryBlockHeight()
	{
		$Categories = getFeaturedCategories();

		// Iterate and check the longest
	}
}


text:
@charset "utf-8";

html{height:100%}
body{min-height: 100%;position: relative;font-size:14px;color:#333; background-color:#fff}
a{color:#333}a:hover,a:focus,.maincolor,.maincolor a{color:#06c}
.bg-1{ background-color:#f5fafe}
h4{line-height:30px}

/*页面框架*/
.Hui-header{position:absolute;top:0; right:0; left:0;height:44px;z-index:999; padding:0 15px}
.Hui-aside{position: absolute;top:44px;bottom:0;left:0;padding-top:10px;width:199px;z-index:99;overflow:auto; background-color:rgba(238,238,238,0.98);_background-color:rgb(238,238,238);border-right: 1px solid #e5e5e5}
.Hui-article-box{position: absolute;top:44px;right:0;bottom: 0;left:199px; overflow:hidden; z-index:1; background-color:#fff}
	.Hui-article{position: absolute;top:34px;bottom:0;left:0; right:0;overflow:auto;z-index:1}
.Hui-container{ padding:45px 0 0}
.Hui-aside,.Hui-article-box,.dislpayArrow{-moz-transition: all 0.2s ease 0s;-webkit-transition: all 0.2s ease 0s;-ms-transition: all 0.2s ease 0s;-o-transition: all 0.2s ease 0s;transition: all 0.2s ease 0s}
.big-page .Hui-article-box,.big-page .dislpayArrow,.big-page .breadcrumb{left:0px}
.big-page .Hui-aside{ left:-200px}
.page-container{ padding:20px}
@media (max-width: 767px) {
	.page-container{ padding:15px}
}
/*组件*/
/*logo*/

/*导航*/
#Hui-nav > ul > li{ font-weight:normal}
@media (max-width: 767px) {
	#Hui-nav{display: block; top: 0; left: 65px; right: 65px}
	#Hui-nav > ul { width: 100%}
	#Hui-nav > ul > li{ width: 24%;text-align:center;}
	#Hui-nav > ul > li a{ text-align: center; padding: 0}
}
#Hui-userbar{right:20px; position:absolute; top:0;}
#Hui-userbar > ul > li > a{padding:0 10px}

#Hui-msg .badge{ position:absolute; left:19px; top:4px; font-size:12px; font-weight:normal; padding:1px 5px}
/*左侧菜单*/
.Hui-aside .menu_dropdown dl{ margin-bottom:0}
.Hui-aside .menu_dropdown dt{display:block;line-height:35px;padding-left:15px;cursor:pointer;position:relative;border-bottom: 1px solid #e5e5e5;font-weight:normal}
.Hui-aside .menu_dropdown dt .menu_dropdown-arrow{ position:absolute;overflow: hidden; top:0; right:15px;transition-duration:0.3s ;transition-property:all}
.Hui-aside .menu_dropdown dd{ display:none}
.Hui-aside .menu_dropdown dt.selected .menu_dropdown-arrow{transform: rotate(180deg)}
.Hui-aside .menu_dropdown dd.selected{display:block; margin-left:0px}
.Hui-aside .menu_dropdown ul{padding:0px}
.Hui-aside .menu_dropdown li{line-height:35px;overflow:hidden;zoom:1}
.Hui-aside .menu_dropdown li a{padding-left:15px; display:block;font-weight: bold; margin:0}
.Hui-aside .menu_dropdown li a i{ font-weight: normal}
.Hui-aside .menu_dropdown dd ul{padding:3px 8px}
.Hui-aside .menu_dropdown dd li{line-height:32px}
.Hui-aside .menu_dropdown dd li a{line-height:32px;padding-left:26px; border-bottom:none; font-weight:normal}
.Hui-aside .menu_dropdown li a:hover{text-decoration:none}
.Hui-aside .menu_dropdown li.current a,.menu_dropdown li.current a:hover{background-color:rgba(255,255,255,0.2)}
/*菜单收缩切换*/
.dislpayArrow{position: absolute;top: 0;bottom: 0;left:200px;width:0px; height:100%;z-index:10}
.dislpayArrow a{ position:absolute; display:block; width:17px; height:61px;top:50%; margin-top:-30px;outline:none}
.dislpayArrow a.open{ background-position:0 -61px}
.dislpayArrow a:hover{ text-decoration:none; background-position:right 0}
.dislpayArrow a.open:hover{background-position:right -61px}

/*选项卡导航*/
.Hui-tabNav-wp{position:relative; height:35px;overflow:hidden}
.Hui-tabNav,
.Hui-tabNav .acrossTab li
,.Hui-tabNav .acrossTab li em{background-image:url(../images/acrossTab/acrossTab-2.png)}
.Hui-tabNav{height:35px; padding-right:75px;overflow:hidden; position:relative;background-color:#efeef0; background-repeat: repeat-x; background-position: 0 -175px;}
.Hui-tabNav .acrossTab{ position:absolute; height:26px; line-height:26px; background:none; top:8px; left:0;padding-top:0}
.Hui-tabNav .acrossTab li{height:26px;line-height:26px;}
.Hui-tabNav .acrossTab li em{ right:-16px; height: 26px; width: 16px}
.loading {background:url(../images/loading.gif) no-repeat center; height:100px}
.show_iframe{ position:absolute; top:0; right:0; left:0; bottom:0;}
.show_iframe iframe {position: absolute;bottom: 0;height: 100%;width: 100%}
.Hui-tabNav-more {position: absolute;right:0px;width:70px;top:4px;display: none}

/*面包屑导航*/
.breadcrumb{background-color:#f5f5f5; padding:0 20px; position:relative; z-index:99}
@media (max-width: 767px) {
	.breadcrumb{ padding:0 15px;}
	.show_iframe{-webkit-overflow-scrolling: touch;overflow-y: scroll;}
}

/*横向手机 竖向平板*/
@media (max-width: 767px) {
	.Hui-aside{ display:none;float:none; width:100%; height:auto; margin-top:0;padding-top:0;bottom:auto}
	.big-page .Hui-aside{ left:0!important}
		.menu_dropdown dt{line-height:44px}
		.menu_dropdown li,.menu_dropdown dd li,.menu_dropdown dd li a{ line-height:44px}
  .Hui-tabNav{ position:fixed; z-index:998}
  .Hui-article{ top:44px}
  .Hui-article-box{ position:static; left:0}
  .Hui-article-box .pd-20{padding:15px}
		.Hui-article{left:0}
		.Hui-container .bk-gray{ border:none}
		.Hui-container .pd-10{ padding:0}
}

/*==============以下是业务相关的样式====================*/
/*权限*/
.permission-list{ border:solid 1px #eee;}
.permission-list > dt{ background-color:#efefef;padding:5px 10px}
.permission-list > dd{ padding:10px; padding-left:30px}
.permission-list > dd > dl{ border-bottom:solid 1px #eee; padding:5px 0}
.permission-list > dd > dl > dt{ display:inline-block;float:left;white-space:nowrap;width:100px}
.permission-list > dd > dl > dd{ margin-left:100px;}
.permission-list > dd > dl > dd > label{ padding-right:10px}

/*图片预览*/
.portfolio-area{ margin-right: -20px;}
.portfolio-area li{position: relative; float: left; margin-right: 20px; width:162px; height:162px;margin-top: 20px;}
.portfolio-area li.hover{ z-index:9}
.portfolio-area li .portfoliobox{ position: absolute; top: 0; left: 0; width: 152px; height: 152px;padding:5px;border: solid 1px #eee; background-color: #fff;}
.portfolio-area li .checkbox{position: absolute; top: 10px; right: 5px; cursor:pointer}
.portfolio-area li.hover .portfoliobox{ height:auto;padding-bottom:10px;box-shadow:0 1px 3px rgba(68, 68, 68,0.3);-moz-box-shadow:0 1px 3px rgba(68, 68, 68,0.3);-webkit-box-shadow:0 1px 3px rgba(68, 68, 68,0.3)}
.portfolio-area li .picbox{width: 150px; height: 150px;overflow: hidden;text-align: center;vertical-align:middle;display:table-cell; line-height:150px;}
.portfolio-area li .picbox img{max-width:150px; max-height:150px;vertical-align:middle;}
.portfolio-area li .textbox{ display: none; margin-top: 5px;}
.portfolio-area li.hover .textbox{ display: block;}
.portfolio-area li label{ display:block; cursor:pointer}


text:
<?php
/**
 * redactor文件上传
 *
 */
class RedactorFileController extends AdminBaseController
{
	public function actionImage()
	{
		$file = CUploadedFile::getInstanceByName('file');
		$filename = UploadFile::saveImage($file);
		if($filename)
			echo json_encode( array('filelink'=>UploadFile::getImageUrl($filename)) );
		die;
	}

	public function actionImagelist()
	{
		$list_files = glob(Yii::app()->params['upload_image_path'].'*.jpg');
		$r = array();
		foreach ($list_files as $key => $value) {
			$v = str_replace(Yii::app()->params['project_path'], '', $value);
			$r[] = array('filelink'=>$v,'thumb'=>$v,'image'=>$v,'folder'=>'images');
		}
		echo json_encode($r);
		die;
	}

	public function actionFile()
	{
		$file = CUploadedFile::getInstanceByName('file');
		$filename = UploadFile::saveFile($file);
		if($filename)
			echo json_encode( array('filelink'=>UploadFile::getFileUrl($filename),'filename'=>$file->getName()) );
		die;
	}
}


text:
set -e

yarn test --coverage --runInBand
if [ -z $CI_PULL_REQUEST ]; then
  cat ./coverage/lcov.info | ./node_modules/.bin/coveralls
fi

# TODO: should we also track prod code coverage somehow?
# yarn test-prod --coverage


text:
layout: post
title: "Unity3d 内置管线Shader升级到URP详细手册"
categories: unity3d URP Shader
tags: unity3d URP
---

* content
{:toc}

# 内置管线Shader升级到URP详细手册
# 总体结构
- 1、在SubShader的Tags中添加"RenderPipeline" = "UniversalPipeline"
- 2、所有URP着色器都是HLSL编写的,使用宏HLSL包含的shader代码
- 3、使用HLSLINCLUDE替代CGINCLUDE

内置管线	URP
                CGPROGRAM HLSLPROGRAM	HLSL程序
                ENDCG ENDHLSL	ENDHLSL
                CGINCLUDE HLSLINCLUDE	HLSLINCLUDE
Include文件
内容	内置管线	URP

                Core	Unity.cginc	Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl
                Light	AutoLight.cginc	Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl
                Shadow	AutoLight.cginc	Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl

表面着色器	Lighting.cginc	URP内没有,可以参考项目:在此处
其他有用的包括:

                Packages/com.unity.render-pipelines.core/ShaderLibrary/SpaceTransforms.hlsl

                Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl

                Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl

                Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl

                Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl

                Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl

                Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareOpaqueTextue.hlsl

灯光模式LightMode
内置管线	URP
                ForwardBase	UniversalForward
                ForwardAdd	移除
                Deferred以及相关	尚未支持
                Vertex及相关	移除
                ShadowCaster	ShadowCaster
                MotionVectors	尚未支持
支持的其他照明模式包括:

                DepthOnly

                Meta (for lightmap baking)

                Universal2D

变体Variants
URP支持某些变体,因此,根据你使用的功能,可能需要使用#pragma multi_compile添加一些关键字:

                _MAIN_LIGHT_SHADOWS

                _MAIN_LIGHT_SHADOWS_CASCADE

                _ADDITIONAL_LIGHTS_VERTEX

                _ADDITIONAL_LIGHTS

                _ADDITIONAL_LIGHT_SHADOWS

                _SHADOWS_SOFT

                _MIXED_LIGHTING_SUBTRACTIVE

预定义的着色器宏
辅助宏
内置管线	URP

```
                UNITY_PROJ_COORD(a)	移除了,使用a.xy / a.w代替
                UNITY_INITIALIZE_OUTPUT(type,name)	ZERO_INITIALIZE(type,name)
```

阴影贴图
必须include  "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl"

内置管线	URP

                    UNITY_DECLARE_SHADOWMAP(tex)	TEXTURE2D_SHADOW_PARAM(textureName,samplerName)
                    UNITY_SAMPLE_SHADOW(tex,uv)	SAMPLE_TEXTURE2D_SHADOW(textureName,samplerName,coord3)
                    UNITY_SAMPLE_SHADOW_PROJ(tex,uv)	SAMPLE_TEXTURE2D_SHADOW(textureName,samplerName,coord4.xyz/coord4.w)

纹理/采样器声明宏
Unity有很多纹理/采样器宏来改善API之间的交叉兼容性,但是人们并不习惯使用它们。URP中这些宏的名称有所变化。由于数量很多,全部的宏可以在API includes中查看,下面主要列举一些常用的:

内置管线	URP

                UNITY_DECLARE_TEX2D(name)	TEXTURE2D(textureName); SAMPLER(samplerName);
                UNITY_DECLARE_TEX2D_NOSAMPLER(name)	TEXTURE2D(textureName);
                UNITY_DECLARE_TEX2DARRAY(name)	TEXTURE2D_ARRAY(textureName); SAMPLER(samplerName);
                UNITY_SAMPLE_TEX2D(name,uv)	SAMPLE_TEXTURE2D(textureName,samplerName,coord2)
                UNITY_SAMPLE_TEX2D_SAMPLER(name,samplername,uv)	SAMPLE_TEXTURE2D(textureName,samplerName,coord2)
                UNITY_SAMPLE_TEX2DARRAY(name,uv)	SAMPLE_TEXTURE2D_ARRAY(textureName,samplerName,coord2,index)
                UNITY_SAMPLE_TEX2DARRAY_LOD(name,uv,lod)	SAMPLE_TEXTURE2D_ARRAY_LOD(textureName,samplerName,coord2,index,lod)

需要注意SCREENSPACE_TEXTURE变成了TEXTURE2D_X。如果你想要在VR中(Single Pass Instanced 或 Multi-view 模式)制作屏幕效果,你必须使用TEXTURE2D_X定义纹理。这个宏会为你处理正确的纹理声明(是否为数组)。对这个纹理采样的时候必须使用SAMPLE_TEXTURE2D_X,并且对uv使用UnityStereoTransformScreenSpaceTex。

Shader辅助函数
下列函数可以在此文件中找到:"Packages/com.unity.render-pipelines.core/ShaderLibrary/SpaceTransforms.hlsl".

顶点转换函数
内置管线	URP

                float4 UnityObjectToClipPos(float3 pos)	float4 TransformObjectToHClip(float3 positionOS)
                float3 UnityObjectToViewPos(float3 pos)	TransformWorldToView(TransformObjectToWorld(positionOS))

通用辅助函数
内置管线	URP

                float3 WorldSpaceViewDir(float4 v)	float3 GetWorldSpaceViewDir(float3 positionWS)	Include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl"
                float3 ObjSpaceViewDir(float4 v)	移除了,可以使用TransformWorldToObject(GetCameraPositionWS()) - objectSpacePosition ;
                float2 ParallaxOffset(half h,half height,half3 viewDir)	移除了。可以从UnityCG.cginc复制过来
                fixed Luminance(fixed3 c)	real Luminance(real3 linearRgb)	Include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
                fixed3 DecodeLightmap(fixed4 color)	real3 DecodeLightmap(real4 encodedIlluminance, real4 decodeInstructions)	Include "Packages/com.unity.render-pipelines.core/ShaderLibrary/EntityLighting.hlsl" URP中的decodeInstructions是half4(LIGHTMAP_HDR_MULTIPLIER, LIGHTMAP_HDR_EXPONENT, 0.0h, 0.0h)
                float4 EncodeFloatRGBA(float v)	移除了。可以从UnityCG.cginc复制过来
                float DecodeFloatRGBA(float4 enc)	移除了。可以从UnityCG.cginc复制过来
                float2 EncodeFloatRG(float v)	移除了。可以从UnityCG.cginc复制过来
                float DecodeFloatRG(float2 enc)	移除了。可以从UnityCG.cginc复制过来
                float2 EncodeViewNormalStereo(float3 n)	移除了。可以从UnityCG.cginc复制过来
                float3 DecodeViewNormalStereo(float4 enc4)	移除了。可以从UnityCG.cginc复制过来

前向渲染辅助函数
内置管线	URP

                float3 WorldSpaceLightDir(float4 v)	_MainLightPosition.xyz - TransformObjectToWorld(objectSpacePosition)	Include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
                float3 ObjSpaceLightDir(float4 v)	TransformWorldToObject(_MainLightPosition.xyz)-objectSpacePosition	Include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
                float3 Shade4PointLights(…)	可以使用half3 VertexLighting(float3 positionWS, half3 normalWS)	对于VertexLighting(...) include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"

屏幕空间辅助函数
内置管线	URP

                float4 ComputeScreenPos(float4 clipPos)	float4 ComputeScreenPos(float4 positionCS)	Include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl"
                float4 ComputeGrabScreenPos(float4 clipPos)	移除了

顶点照明辅助函数↑
内置管线	URP

                float3 ShadeVertexLights (float4 vertex, float3 normal)	移除了,可以尝试使用UNITY_LIGHTMODEL_AMBIENT.xyz + VertexLighting(...)	对于VertexLighting(...) include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
可以在"Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"中找到很多工具函数。

内置着色器变量
除了光照相关的变量外,其他的变量名都基本没变

照明↑
内置管线	URP

                _LightColor0	_MainLightColor	Include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
                _WorldSpaceLightPos0	_MainLightPosition	Include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl"
                _LightMatrix0	移除了。目前尚不支持Cookie
                unity_4LightPosX0,unity_4LightPosY0,unity_4LightPosZ0	在URP中,其他光源存储在数组/缓冲区中(取决于平台)。使用Light GetAdditionalLight(uint i, float3 positionWS)获取额外光源信息	Include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
                unity_4LightAtten0	在URP中,其他光源存储在数组/缓冲区中(取决于平台)。使用Light GetAdditionalLight(uint i, float3 positionWS)获取额外光源信息	Include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
                unity_LightColor	在URP中,其他光源存储在数组/缓冲区中(取决于平台)。使用Light GetAdditionalLight(uint i, float3 positionWS)获取额外光源信息	Include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
                unity_WorldToShadow	float4x4 _MainLightWorldToShadow[MAX_SHADOW_CASCADES + 1] 或者_AdditionalLightsWorldToShadow[MAX_VISIBLE_LIGHTS]	Include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl"

如果要使用循环所有其他灯光GetAdditionalLight(...),GetAdditionalLightsCount()可以使用来查询其他灯光计数。

其他
阴影
有关阴影的更多信息,"Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl"

内置管线	URP

                UNITY_SHADOW_COORDS(x)	移除了。DIY,例如float4 shadowCoord : TEXCOORD0;
                TRANSFER_SHADOW(a)	a.shadowCoord = TransformWorldToShadowCoord(worldSpacePosition)	启用cascades时,对片段执行此操作以避免视觉鬼影
                SHADOWS_SCREEN	移除了。不支持。

雾
有关雾的更多信息,"Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl".

内置管线	URP

            UNITY_FOG_COORDS(x)	移除了。DIY,例如float fogCoord : TEXCOORD0;
            UNITY_TRANSFER_FOG(o*, outpos)	o.fogCoord = ComputeFogFactor(clipSpacePosition.z);
            UNITY_APPLY_FOG(coord, col)	color = MixFog(color, i.fogCoord);

深度
要使用相机深度纹理,需要include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareDepthTexture.hlsl" ,然后会自动声明_CameraDepthTexture,也会包含辅助函数SampleSceneDepth(...)和LoadSceneDepth(...)。

内置管线	URP

            LinearEyeDepth(sceneZ)	LinearEyeDepth(sceneZ,_ZBufferParams)	Include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
            Linear01Depth(sceneZ)	Linear01Depth(sceneZ,_ZBufferParams)	Include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"

其他中的其他
内置管线	URP

            ShadeSH9(normal)	SampleSH(normal)	Include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
            unity_ColorSpaceLuminance	移除了。使用Luminance()	Include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"

后处理/视觉特效
URP不支持OnPreCull,OnPreRender,OnPostRender和OnRenderImage这些方法。URP支持OnRenderObject和OnWillRenderObject,但是如果在URP中使用你可能会发现问题。因此,如果你曾经在旧管线创建视觉效果时使用它们,那么现在你需要学习新方法了。URP包含以下注入点:

            beginCameraRendering(ScriptableRenderContext context, Camera camera)

            endCameraRendering(ScriptableRenderContext context, Camera camera)

            beginFrameRendering(ScriptableRenderContext context,Camera[] cameras)

            endFrameRendering(ScriptableRenderContext context,Camera[] cameras)

用法示例:

```
        void OnEnable()
        {
            RenderPipelineManager.beginCameraRendering += MyCameraRendering;
        }

        void OnDisable()
        {
            RenderPipelineManager.beginCameraRendering -= MyCameraRendering;
        }

        void MyCameraRendering(ScriptableRenderContext context, Camera camera)
        {
            ...
            if(camera == myEffectCamera)
            {
            ...
            }
            ...
        }
```

就像我说的那样,OnWillRenderObject是受支持的,但是,如果你需要在其中执行渲染调用(例如,水反射/折射),它将无法正常工作。调用Camera.Render(),你将看到以下消息:

Recursive rendering is not supported in SRP (are you calling Camera.Render from within a render pipeline?)

翻译过来就是:

SRP不支持递归渲染(你是从渲染管道中调用Camera.Render吗?)

在这种情况下,URP中应该将OnWillRenderObject替换为begin/endCameraRendering(如上面的例子),并调用RenderSingleCamera(),而不是 Camera.Render()。更改上面的示例,你将获得以下内容
```
        void MyCameraRendering(ScriptableRenderContext context, Camera camera)
        {
            ...
            if(camera == myEffectCamera)
            {
            ...
                UniversalRenderPipeline.RenderSingleCamera(context, camera);
            }
            ...
        }
```
使用后处理的另一种方法是使用ScriptableRendererFeature。这篇文章很好地解释了使用RenderFeature的描边效果。ScriptableRendererFeature可以让你将ScriptableRenderPass(es)注入到渲染管线的不同阶段,因此是创建后处理效果的强大工具。注入位置可以包含以下:

                BeforeRendering

                BeforeRenderingShadows

                AfterRenderingShadows

                BeforeRenderingPrepasses

                AfterRenderingPrePasses

                BeforeRenderingOpaques

                AfterRenderingOpaques

                BeforeRenderingSkybox

                AfterRenderingSkybox

                BeforeRenderingTransparents

                AfterRenderingTransparents

                BeforeRenderingPostProcessing

                AfterRenderingPostProcessing

                AfterRendering

这是ScriptableRendererFeature使用自定义材质执行blit的简单示例:

```
public class CustomRenderPassFeature : ScriptableRendererFeature
{
    class CustomRenderPass : ScriptableRenderPass
    {
        CustomRPSettings _CustomRPSettings;
        RenderTargetHandle _TemporaryColorTexture;

        private RenderTargetIdentifier _Source;
        private RenderTargetHandle _Destination;

        public CustomRenderPass(CustomRPSettings settings)
        {
            _CustomRPSettings = settings;
        }

        public void Setup(RenderTargetIdentifier source, RenderTargetHandle destination)
        {
            _Source = source;
            _Destination = destination;
        }

        public override void Configure(CommandBuffer cmd, RenderTextureDescriptor cameraTextureDescriptor)
        {
            _TemporaryColorTexture.Init("_TemporaryColorTexture");
        }

        public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
        {
            CommandBuffer cmd = CommandBufferPool.Get("My Pass");

            if (_Destination == RenderTargetHandle.CameraTarget)
            {
                cmd.GetTemporaryRT(_TemporaryColorTexture.id, renderingData.cameraData.cameraTargetDescriptor, FilterMode.Point);
                cmd.Blit(_Source, _TemporaryColorTexture.Identifier());
                cmd.Blit(_TemporaryColorTexture.Identifier(), _Source, _CustomRPSettings.m_Material);
            }
            else
            {
                cmd.Blit(_Source, _Destination.Identifier(), _CustomRPSettings.m_Material, 0);
            }

            context.ExecuteCommandBuffer(cmd);
            CommandBufferPool.Release(cmd);
        }

        public override void FrameCleanup(CommandBuffer cmd)
        {
            if (_Destination == RenderTargetHandle.CameraTarget)
            {
                cmd.ReleaseTemporaryRT(_TemporaryColorTexture.id);
            }
        }
    }

    [System.Serializable]
    public class CustomRPSettings
    {
        public Material m_Material;
    }

    public CustomRPSettings m_CustomRPSettings = new CustomRPSettings();
    CustomRenderPass _ScriptablePass;

    public override void Create()
    {
        _ScriptablePass = new CustomRenderPass(m_CustomRPSettings);

        _ScriptablePass.renderPassEvent = RenderPassEvent.AfterRenderingOpaques;
    }

    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
        _ScriptablePass.Setup(renderer.cameraColorTarget, RenderTargetHandle.CameraTarget);
        renderer.EnqueuePass(_ScriptablePass);
    }
}

```

你可以通过单击"Create > Rendering > Universal Render Pipeline > Renderer Feature"来创建一个ScriptableRendererFeature。你创建的功能必须添加到你的中ForwardRenderer。为此,选择ForwardRenderer,单击Add Renderer Feature,然后选择要添加的功能。你可以在Inspector中公开属性,例如上面的例子中包含了一个材质球属性。


text:
namespace GestionFacturas.Dominio;

public class TotalesFacturas
{
    public decimal TotalBaseImponible { get; set; }
    public decimal TotalImpuestos { get; set; }
    public decimal TotalImporte {
        get { return TotalBaseImponible + TotalImpuestos;  }
    }
}


text:
import {Xen} from '../../../lib/components/xen.js';
import IconStyle from '../../../lib/modalities/dom/components/icons.css.js';
import '../../../lib/modalities/dom/components/elements/simple-tabs.js';
import '../../../lib/modalities/dom/components/arc-tools/store-explorer.js';
import '../../../lib/modalities/dom/components/xen/tools/xen-explorer.js';

// templates
const template = Xen.Template.html`

  <icon on-click="onToolsClick">assessment</icon>

    <simple-tabs>

        <simple-tabs on-change="onTabChange">

            <store-explorer arc="{{arc}}" context="{{context}}"></store-explorer>

            <store-explorer arc="{{launcherarc}}"></store-explorer>

        </simple-tabs>

        <xen-explorer></xen-explorer>

{{serialization}}

        <button on-click="onReplan">Replan</button>

    </simple-tabs>

`;

const log = Xen.logFactory('WebTools', '#cc9096');

export class WebTools extends Xen.Debug(Xen.Async, log) {
  static get observedAttributes() {
    return ['arc', 'context', 'nullarc', 'launcherarc', 'pipesarc', 'open'];
  }
  get template() {
    return template;
  }
  update({arc, nullarc}) {
    if (arc || nullarc) {
      (arc||nullarc).serialize().then(serialization => this.state = {serialization});
    }
  }
  render(props, state) {
    const renderModel = {
      scrimOpen: Boolean(props.open)
    };
    return [props, state, renderModel];
  }
  onToolsClick(e) {
    this.fire('tools', !this.state.toolsOpen);
  }
  onToolsPanelClick(e) {
    e.stopPropagation();
  }
  onTabChange(e, tab) {
    // const name = ['arc', 'launcherarc', 'pipesarc'][tab];
    // const arc = this.props[name];
    // if (arc && arc.debugHandler && arc.debugHandler.identifyArc) {
    //   log('debugHandler.identifyArc', String(arc.id));
    //   arc.debugHandler.identifyArc(arc);
    // }
  }
  onReplan() {
    const webPlanner =document.querySelector('web-shell').shadowRoot.querySelector('web-planner');
    const producer = webPlanner.state.planificator.producer;
    producer.result.suggestions = [];
    producer.produceSuggestions();
  }
}

customElements.define('web-tools', WebTools);


text:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">

<title>curl_getdate man page</title>
<meta name="generator" content="roffit">

NAME

curl_getdate - Convert a date string to number of seconds
SYNOPSIS

#include <curl/curl.h>

time_t curl_getdate(char * datestring , time_t *now  );

DESCRIPTION

curl_getdate returns the number of seconds since the Epoch, January 1st 1970 00:00:00 in the UTC time zone, for the date and time that the datestring parameter specifies. The now parameter is not used, pass a NULL there.
PARSING DATES AND TIMES

A "date" is a string containing several items separated by whitespace. The order of the items is immaterial.  A date string may contain many flavors of items:

calendar date items Can be specified several ways. Month names can only be three-letter english abbreviations, numbers can be zero-prefixed and the year may use 2 or 4 digits. Examples: 06 Nov 1994, 06-Nov-94 and Nov-94 6.

time of the day items This string specifies the time on a given day. You must specify it with 6 digits with two colons: HH:MM:SS. To not include the time in a date string, will make the function assume 00:00:00. Example: 18:19:21.

time zone items Specifies international time zone. There are a few acronyms supported, but in general you should instead use the specific relative time compared to UTC. Supported formats include: -1200, MST, +0100.

day of the week items Specifies a day of the week. Days of the week may be spelled out in full (using english): `Sunday', `Monday', etc or they may be abbreviated to their first three letters. This is usually not info that adds anything.

pure numbers If a decimal number of the form YYYYMMDD appears, then YYYY is read as the year, MM as the month number and DD as the day of the month, for the specified calendar date.

EXAMPLES

Sun, 06 Nov 1994 08:49:37 GMT
Sunday, 06-Nov-94 08:49:37 GMT
Sun Nov  6 08:49:37 1994
06 Nov 1994 08:49:37 GMT
06-Nov-94 08:49:37 GMT
Nov  6 08:49:37 1994
06 Nov 1994 08:49:37
06-Nov-94 08:49:37
1994 Nov 6 08:49:37
GMT 08:49:37 06-Nov-94 Sunday
94 6 Nov 08:49:37
1994 Nov 6
06-Nov-94
Sun Nov 6 94
1994.Nov.6
Sun/Nov/6/94/GMT
Sun, 06 Nov 1994 08:49:37 CET
06 Nov 1994 08:49:37 EST
Sun, 12 Sep 2004 15:05:58 -0700
Sat, 11 Sep 2004 21:32:11 +0200
20040912 15:05:58 -0700
20040911 +0200

STANDARDS

This parser was written to handle date formats specified in RFC 822 (including the update in RFC 1123) using time zone name or time zone delta and RFC 850 (obsoleted by RFC 1036) and ANSI C's asctime() format. These formats are the only ones RFC 2616 says HTTP applications may use.
RETURN VALUE

This function returns -1 when it fails to parse the date string. Otherwise it returns the number of seconds as described.

If the year is larger than 2037 on systems with 32 bit time_t, this function will return 0x7fffffff (since that is the largest possible signed 32 bit number).

Having a 64 bit time_t is not a guarantee that dates beyond 03:14:07 UTC, January 19, 2038 will work fine. On systems with a 64 bit time_t but with a crippled mktime(), curl_getdate will return -1 in this case.
SEE ALSO

curl_easy_escape, curl_easy_unescape,   CURLOPT_TIMECONDITION (3)   CURLOPT_TIMEVALUE (3)

 This HTML page was made with roffit.


text:
main:
	echo 'Hello'

build:
	gulp

deploy: build
	-rm -rf ./dist/.git/
	cd dist && git init . && git remote add github https://github.com/ztbcms/module.git\
	&& git add -A && git commit -m 'Build site' && git checkout -b gh-pages \
	&& git push -f github gh-pages

.PHONY: main deploy


text:
SpreeMalls
==================

Purpose
-------
* 外部ショッピングモールの価格に関する情報を管理することができます。

製品のサイドメニューへ「モール価格」を表示。
![Malls](https://raw.githubusercontent.com/wiki/digitalm/spree_malls/images/malls2.jpg)

「モール価格」 - edit(種類を選択)
![Malls](https://raw.githubusercontent.com/wiki/digitalm/spree_malls/images/malls3.jpg)

モール価格の管理
![Malls](https://raw.githubusercontent.com/wiki/digitalm/spree_malls/images/malls4.jpg)

モールの登録
![Malls](https://raw.githubusercontent.com/wiki/digitalm/spree_malls/images/malls1.jpg)

依存関係
------------
* [spree_add_on_menu](https://github.com/digitalm/spree_add_on_menu)

Installation
------------

Add spree_malls to your Gemfile:

```ruby
gem 'spree_malls'
```

Bundle your dependencies and run the installation generator:

```shell
bundle
bundle exec rails g spree_add_on_menu:instal
bundle exec rails g spree_malls:install
```

Testing
-------

Be sure to bundle your dependencies and then create a dummy test app for the specs to run against.

```shell
bundle
bundle exec rake test_app
bundle exec rspec spec
```

When testing your applications integration with this extension you may use it's factories.
Simply add this require statement to your spec_helper:

```ruby
require 'spree_malls/factories'
```

Copyright (c) 2014 [Exsight.inc](http://www.exsight.co.jp/) , released under the New BSD License


text:
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IFilterService.cs" company="Orcomp development team">
//   Copyright (c) 2008 - 2014 Orcomp development team. All rights reserved.
// </copyright>
// --------------------------------------------------------------------------------------------------------------------

namespace Orc.FilterBuilder.Services
{
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using Models;

    public interface IFilterService
    {
        #region Properties
        FilterScheme SelectedFilter { get; set; }
        #endregion

        #region Methods
        void FilterCollection(FilterScheme filter, IEnumerable rawCollection, IList filteredCollection);
        #endregion

        /// <summary>
        /// Occurs when any of the filters has been updated.
        /// </summary>
        event EventHandler<EventArgs> FiltersUpdated;

        /// <summary>
        /// Occurs when the currently selected filter has changed.
        /// </summary>
        event EventHandler<EventArgs> SelectedFilterChanged;
    }
}


text:
/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.facebook.presto.orc.checkpoint;

import com.facebook.presto.orc.StreamId;
import com.facebook.presto.orc.metadata.ColumnEncoding;
import com.facebook.presto.orc.metadata.ColumnEncoding.ColumnEncodingKind;
import com.facebook.presto.orc.metadata.CompressionKind;
import com.facebook.presto.orc.metadata.OrcType;
import com.facebook.presto.orc.metadata.OrcType.OrcTypeKind;
import com.facebook.presto.orc.metadata.RowGroupIndex;
import com.facebook.presto.orc.metadata.Stream;
import com.facebook.presto.orc.metadata.Stream.StreamKind;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSetMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.SetMultimap;

import java.util.List;
import java.util.Map;
import java.util.Set;

import static com.facebook.presto.orc.checkpoint.InputStreamCheckpoint.createInputStreamCheckpoint;
import static com.facebook.presto.orc.metadata.ColumnEncoding.ColumnEncodingKind.DICTIONARY;
import static com.facebook.presto.orc.metadata.ColumnEncoding.ColumnEncodingKind.DICTIONARY_V2;
import static com.facebook.presto.orc.metadata.ColumnEncoding.ColumnEncodingKind.DIRECT;
import static com.facebook.presto.orc.metadata.ColumnEncoding.ColumnEncodingKind.DIRECT_V2;
import static com.facebook.presto.orc.metadata.ColumnEncoding.ColumnEncodingKind.DWRF_DIRECT;
import static com.facebook.presto.orc.metadata.Stream.StreamKind.DATA;
import static com.facebook.presto.orc.metadata.Stream.StreamKind.DICTIONARY_DATA;
import static com.facebook.presto.orc.metadata.Stream.StreamKind.IN_DICTIONARY;
import static com.facebook.presto.orc.metadata.Stream.StreamKind.LENGTH;
import static com.facebook.presto.orc.metadata.Stream.StreamKind.PRESENT;
import static com.facebook.presto.orc.metadata.Stream.StreamKind.ROW_GROUP_DICTIONARY;
import static com.facebook.presto.orc.metadata.Stream.StreamKind.ROW_GROUP_DICTIONARY_LENGTH;
import static com.facebook.presto.orc.metadata.Stream.StreamKind.SECONDARY;
import static com.google.common.base.Predicates.equalTo;
import static java.lang.String.format;
import static java.util.Objects.requireNonNull;

public final class Checkpoints
{
    private Checkpoints()
    {
    }

    public static Map<StreamId, StreamCheckpoint> getStreamCheckpoints(
            Set<Integer> columns,
            List<OrcType> columnTypes,
            CompressionKind compressionKind,
            int rowGroupId,
            List<ColumnEncoding> columnEncodings,
            Map<StreamId, Stream> streams,
            Map<Integer, List<RowGroupIndex>> columnIndexes)
            throws InvalidCheckpointException
    {
        ImmutableSetMultimap.Builder<Integer, StreamKind> streamKindsBuilder = ImmutableSetMultimap.builder();
        for (Stream stream : streams.values()) {
            streamKindsBuilder.put(stream.getColumn(), stream.getStreamKind());
        }
        SetMultimap<Integer, StreamKind> streamKinds = streamKindsBuilder.build();

        ImmutableMap.Builder<StreamId, StreamCheckpoint> checkpoints = ImmutableMap.builder();
        for (int column : columns) {
            List<Integer> positionsList = columnIndexes.get(column).get(rowGroupId).getPositions();

            ColumnEncodingKind columnEncoding = columnEncodings.get(column).getColumnEncodingKind();
            OrcTypeKind columnType = columnTypes.get(column).getOrcTypeKind();
            Set<StreamKind> availableStreams = streamKinds.get(column);

            ColumnPositionsList columnPositionsList = new ColumnPositionsList(column, columnType, positionsList);
            switch (columnType) {
                case BOOLEAN:
                    checkpoints.putAll(getBooleanColumnCheckpoints(column, compressionKind, availableStreams, columnPositionsList));
                    break;
                case BYTE:
                    checkpoints.putAll(getByteColumnCheckpoints(column, compressionKind, availableStreams, columnPositionsList));
                    break;
                case SHORT:
                case INT:
                case LONG:
                case DATE:
                    checkpoints.putAll(getLongColumnCheckpoints(column, columnEncoding, compressionKind, availableStreams, columnPositionsList));
                    break;
                case FLOAT:
                    checkpoints.putAll(getFloatColumnCheckpoints(column, compressionKind, availableStreams, columnPositionsList));
                    break;
                case DOUBLE:
                    checkpoints.putAll(getDoubleColumnCheckpoints(column, compressionKind, availableStreams, columnPositionsList));
                    break;
                case TIMESTAMP:
                    checkpoints.putAll(getTimestampColumnCheckpoints(column, columnEncoding, compressionKind, availableStreams, columnPositionsList));
                    break;
                case BINARY:
                case STRING:
                case VARCHAR:
                case CHAR:
                    checkpoints.putAll(getSliceColumnCheckpoints(column, columnEncoding, compressionKind, availableStreams, columnPositionsList));
                    break;
                case LIST:
                case MAP:
                    checkpoints.putAll(getListOrMapColumnCheckpoints(column, columnEncoding, compressionKind, availableStreams, columnPositionsList));
                    break;
                case STRUCT:
                    checkpoints.putAll(getStructColumnCheckpoints(column, compressionKind, availableStreams, columnPositionsList));
                    break;
                case DECIMAL:
                    checkpoints.putAll(getDecimalColumnCheckpoints(column, columnEncoding, compressionKind, availableStreams, columnPositionsList));
                    break;
                case UNION:
                    throw new IllegalArgumentException("Unsupported column type " + columnType);
            }

            // The DWRF code is not meticulous in the handling of checkpoints.  It appears that for the first row group
            // it will write checkpoints for all streams, but in other cases it will write only the streams that exist.
            // We detect this case by checking that all offsets in the initial position list are zero, and if so, we
            // clear the extra offsets
            if (columnPositionsList.hasNextPosition() && !Iterables.all(positionsList, equalTo(0))) {
                throw new InvalidCheckpointException(format("Column %s, of type %s, contains %s offset positions, but only %s positions were consumed",
                        column,
                        columnType,
                        positionsList.size(),
                        columnPositionsList.getIndex()));
            }
        }
        return checkpoints.build();
    }

    public static StreamCheckpoint getDictionaryStreamCheckpoint(StreamId streamId, OrcTypeKind columnType, ColumnEncodingKind columnEncoding)
    {
        if (streamId.getStreamKind() == DICTIONARY_DATA) {
            switch (columnType) {
                case SHORT:
                case INT:
                case LONG:
                    return new LongStreamDwrfCheckpoint(createInputStreamCheckpoint(0, 0));
                case STRING:
                case VARCHAR:
                case CHAR:
                case BINARY:
                    return new ByteArrayStreamCheckpoint(createInputStreamCheckpoint(0, 0));
            }
        }

        // dictionary length and data streams are unsigned long streams
        if (streamId.getStreamKind() == LENGTH || streamId.getStreamKind() == DATA) {
            if (columnEncoding == DICTIONARY_V2) {
                return new LongStreamV2Checkpoint(0, createInputStreamCheckpoint(0, 0));
            }
            else if (columnEncoding == DICTIONARY) {
                return new LongStreamV1Checkpoint(0, createInputStreamCheckpoint(0, 0));
            }
        }
        throw new IllegalArgumentException("Unsupported column type " + columnType + " for dictionary stream " + streamId);
    }

    private static Map<StreamId, StreamCheckpoint> getBooleanColumnCheckpoints(
            int column,
            CompressionKind compressionKind,
            Set<StreamKind> availableStreams,
            ColumnPositionsList positionsList)
    {
        ImmutableMap.Builder<StreamId, StreamCheckpoint> checkpoints = ImmutableMap.builder();

        if (availableStreams.contains(PRESENT)) {
            checkpoints.put(new StreamId(column, PRESENT), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        if (availableStreams.contains(DATA)) {
            checkpoints.put(new StreamId(column, DATA), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        return checkpoints.build();
    }

    private static Map<StreamId, StreamCheckpoint> getByteColumnCheckpoints(
            int column,
            CompressionKind compressionKind,
            Set<StreamKind> availableStreams,
            ColumnPositionsList positionsList)
    {
        ImmutableMap.Builder<StreamId, StreamCheckpoint> checkpoints = ImmutableMap.builder();

        if (availableStreams.contains(PRESENT)) {
            checkpoints.put(new StreamId(column, PRESENT), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        if (availableStreams.contains(DATA)) {
            checkpoints.put(new StreamId(column, DATA), new ByteStreamCheckpoint(compressionKind, positionsList));
        }

        return checkpoints.build();
    }

    private static Map<StreamId, StreamCheckpoint> getLongColumnCheckpoints(
            int column,
            ColumnEncodingKind encoding,
            CompressionKind compressionKind,
            Set<StreamKind> availableStreams,
            ColumnPositionsList positionsList)
    {
        ImmutableMap.Builder<StreamId, StreamCheckpoint> checkpoints = ImmutableMap.builder();

        if (availableStreams.contains(PRESENT)) {
            checkpoints.put(new StreamId(column, PRESENT), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        if (availableStreams.contains(IN_DICTIONARY)) {
            checkpoints.put(new StreamId(column, IN_DICTIONARY), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        if (availableStreams.contains(DATA)) {
            checkpoints.put(new StreamId(column, DATA), createLongStreamCheckpoint(encoding, compressionKind, positionsList));
        }

        return checkpoints.build();
    }

    private static Map<StreamId, StreamCheckpoint> getFloatColumnCheckpoints(
            int column,
            CompressionKind compressionKind,
            Set<StreamKind> availableStreams,
            ColumnPositionsList positionsList)
    {
        ImmutableMap.Builder<StreamId, StreamCheckpoint> checkpoints = ImmutableMap.builder();

        if (availableStreams.contains(PRESENT)) {
            checkpoints.put(new StreamId(column, PRESENT), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        if (availableStreams.contains(DATA)) {
            checkpoints.put(new StreamId(column, DATA), new FloatStreamCheckpoint(compressionKind, positionsList));
        }

        return checkpoints.build();
    }

    private static Map<StreamId, StreamCheckpoint> getDoubleColumnCheckpoints(
            int column,
            CompressionKind compressionKind,
            Set<StreamKind> availableStreams,
            ColumnPositionsList positionsList)
    {
        ImmutableMap.Builder<StreamId, StreamCheckpoint> checkpoints = ImmutableMap.builder();

        if (availableStreams.contains(PRESENT)) {
            checkpoints.put(new StreamId(column, PRESENT), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        if (availableStreams.contains(DATA)) {
            checkpoints.put(new StreamId(column, DATA), new DoubleStreamCheckpoint(compressionKind, positionsList));
        }

        return checkpoints.build();
    }

    private static Map<StreamId, StreamCheckpoint> getTimestampColumnCheckpoints(
            int column,
            ColumnEncodingKind encoding,
            CompressionKind compressionKind,
            Set<StreamKind> availableStreams,
            ColumnPositionsList positionsList)
    {
        ImmutableMap.Builder<StreamId, StreamCheckpoint> checkpoints = ImmutableMap.builder();

        if (availableStreams.contains(PRESENT)) {
            checkpoints.put(new StreamId(column, PRESENT), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        if (availableStreams.contains(DATA)) {
            checkpoints.put(new StreamId(column, DATA), createLongStreamCheckpoint(encoding, compressionKind, positionsList));
        }

        if (availableStreams.contains(SECONDARY)) {
            checkpoints.put(new StreamId(column, SECONDARY), createLongStreamCheckpoint(encoding, compressionKind, positionsList));
        }

        return checkpoints.build();
    }

    private static Map<StreamId, StreamCheckpoint> getSliceColumnCheckpoints(
            int column,
            ColumnEncodingKind encoding,
            CompressionKind compressionKind,
            Set<StreamKind> availableStreams,
            ColumnPositionsList positionsList)
    {
        ImmutableMap.Builder<StreamId, StreamCheckpoint> checkpoints = ImmutableMap.builder();

        if (availableStreams.contains(PRESENT)) {
            checkpoints.put(new StreamId(column, PRESENT), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        if (encoding == DIRECT || encoding == DIRECT_V2) {
            if (availableStreams.contains(DATA)) {
                checkpoints.put(new StreamId(column, DATA), new ByteArrayStreamCheckpoint(compressionKind, positionsList));
            }

            if (availableStreams.contains(LENGTH)) {
                checkpoints.put(new StreamId(column, LENGTH), createLongStreamCheckpoint(encoding, compressionKind, positionsList));
            }
        }
        else if (encoding == DICTIONARY || encoding == DICTIONARY_V2) {
            // DWRF has rules inconsistent with the ORC style
            if (availableStreams.contains(IN_DICTIONARY)) {
                if (availableStreams.contains(ROW_GROUP_DICTIONARY)) {
                    checkpoints.put(new StreamId(column, ROW_GROUP_DICTIONARY), new ByteArrayStreamCheckpoint(compressionKind, positionsList));
                }

                checkpoints.put(new StreamId(column, ROW_GROUP_DICTIONARY_LENGTH), new RowGroupDictionaryLengthStreamCheckpoint(compressionKind, positionsList));

                if (availableStreams.contains(DATA)) {
                    checkpoints.put(new StreamId(column, DATA), createLongStreamCheckpoint(encoding, compressionKind, positionsList));
                }

                checkpoints.put(new StreamId(column, IN_DICTIONARY), new BooleanStreamCheckpoint(compressionKind, positionsList));
            }
            else {
                if (availableStreams.contains(DATA)) {
                    checkpoints.put(new StreamId(column, DATA), createLongStreamCheckpoint(encoding, compressionKind, positionsList));
                }
            }
        }
        else {
            throw new IllegalArgumentException("Unsupported encoding for slice column: " + encoding);
        }

        return checkpoints.build();
    }

    private static Map<StreamId, StreamCheckpoint> getListOrMapColumnCheckpoints(
            int column,
            ColumnEncodingKind encoding,
            CompressionKind compressionKind,
            Set<StreamKind> availableStreams,
            ColumnPositionsList positionsList)
    {
        ImmutableMap.Builder<StreamId, StreamCheckpoint> checkpoints = ImmutableMap.builder();

        if (availableStreams.contains(PRESENT)) {
            checkpoints.put(new StreamId(column, PRESENT), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        if (availableStreams.contains(LENGTH)) {
            checkpoints.put(new StreamId(column, LENGTH), createLongStreamCheckpoint(encoding, compressionKind, positionsList));
        }

        return checkpoints.build();
    }

    private static Map<StreamId, StreamCheckpoint> getStructColumnCheckpoints(
            int column,
            CompressionKind compressionKind,
            Set<StreamKind> availableStreams,
            ColumnPositionsList positionsList)
    {
        ImmutableMap.Builder<StreamId, StreamCheckpoint> checkpoints = ImmutableMap.builder();

        if (availableStreams.contains(PRESENT)) {
            checkpoints.put(new StreamId(column, PRESENT), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        return checkpoints.build();
    }

    private static Map<StreamId, StreamCheckpoint> getDecimalColumnCheckpoints(
            int column,
            ColumnEncodingKind encoding,
            CompressionKind compressionKind,
            Set<StreamKind> availableStreams,
            ColumnPositionsList positionsList)
    {
        ImmutableMap.Builder<StreamId, StreamCheckpoint> checkpoints = ImmutableMap.builder();

        if (availableStreams.contains(PRESENT)) {
            checkpoints.put(new StreamId(column, PRESENT), new BooleanStreamCheckpoint(compressionKind, positionsList));
        }

        if (availableStreams.contains(DATA)) {
            checkpoints.put(new StreamId(column, DATA), new DecimalStreamCheckpoint(compressionKind, positionsList));
        }

        if (availableStreams.contains(SECONDARY)) {
            checkpoints.put(new StreamId(column, SECONDARY), createLongStreamCheckpoint(encoding, compressionKind, positionsList));
        }

        return checkpoints.build();
    }

    private static StreamCheckpoint createLongStreamCheckpoint(ColumnEncodingKind encoding, CompressionKind compressionKind, ColumnPositionsList positionsList)
    {
        if (encoding == DIRECT_V2 || encoding == DICTIONARY_V2) {
            return new LongStreamV2Checkpoint(compressionKind, positionsList);
        }

        if (encoding == DIRECT || encoding == DICTIONARY) {
            return new LongStreamV1Checkpoint(compressionKind, positionsList);
        }

        if (encoding == DWRF_DIRECT) {
            return new LongStreamDwrfCheckpoint(compressionKind, positionsList);
        }

        throw new IllegalArgumentException("Unsupported encoding for long stream: " + encoding);
    }

    public static class ColumnPositionsList
    {
        private final int column;
        private final OrcTypeKind columnType;
        private final List<Integer> positionsList;
        private int index;

        private ColumnPositionsList(int column, OrcTypeKind columnType, List<Integer> positionsList)
        {
            this.column = column;
            this.columnType = requireNonNull(columnType, "columnType is null");
            this.positionsList = ImmutableList.copyOf(requireNonNull(positionsList, "positionsList is null"));
        }

        public int getIndex()
        {
            return index;
        }

        public boolean hasNextPosition()
        {
            return index < positionsList.size();
        }

        public int nextPosition()
        {
            if (!hasNextPosition()) {
                throw new InvalidCheckpointException("Not enough positions for column %s, of type %s, checkpoints",
                        column,
                        columnType);
            }

            return positionsList.get(index++);
        }
    }
}


text:
#ifndef TERMOX_WIDGET_FOCUS_POLICY_HPP
#define TERMOX_WIDGET_FOCUS_POLICY_HPP
namespace ox {

/// Defines different ways a Widget can receiver the focus of the system.
/** None: Widget cannot have focus. */
/** Tab: Tab key presses will cycle the focus to Widgets with this policy. */
/** Click: A mouse click on this Widget will give it focus. */
/** Strong: Both Tab and Click policies apply. */
/** Direct: Can only get focus if directly set with System::set_focus(...). */
enum class Focus_policy { None, Tab, Click, Strong, Direct };

}  // namespace ox
#endif  // TERMOX_WIDGET_FOCUS_POLICY_HPP


text:
include_recipe "pivotal_workstation::git"
pivotal_workstation_bash_it_custom_plugin "git-export_editor.bash"

template "#{WS_HOME}/.gitignore_global" do
  source "gitignore_global.erb"
  owner WS_USER
  variables(
    :ignore_idea => node[:git_global_ignore_idea]
  )
end

execute "set global git ignore" do
  command "git config --global core.excludesfile #{WS_HOME}/.gitignore_global"
  user WS_USER
  not_if "git config --global core.excludesfile | grep -q .gitignore_global"
end

execute "set alias st=status" do
  command "git config --global alias.st status"
  user WS_USER
end

execute "set alias di=diff" do
  command "git config --global alias.di diff"
  user WS_USER
end

execute "set alias co=checkout" do
  command "git config --global alias.co checkout"
  user WS_USER
end

execute "set alias ci=commit" do
  command "git config --global alias.ci commit"
  user WS_USER
end

execute "set alias br=branch" do
  command "git config --global alias.br branch"
  user WS_USER
end

execute "set alias sta=stash" do
  command "git config --global alias.sta stash"
  user WS_USER
end

execute "set alias llog=log --date=local" do
  command "git config --replace-all --global alias.llog 'log --date=local'"
  user WS_USER
end

execute "set apply whitespace=nowarn" do
  command "git config --global apply.whitespace nowarn"
  user WS_USER
end

execute "set color branch=auto" do
  command "git config --global color.branch auto"
  user WS_USER
end

execute "set color diff=auto" do
  command "git config --global color.diff auto"
  user WS_USER
end

execute "set color interactive=auto" do
  command "git config --global color.interactive auto"
  user WS_USER
end

execute "set color status=auto" do
  command "git config --global color.status auto"
  user WS_USER
end

execute "set color ui=auto" do
  command "git config --global color.ui auto"
  user WS_USER
end

execute "set branch autosetupmerge=true" do
  command "git config --global branch.autosetupmerge true"
  user WS_USER
end


text:
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">My Application</string>
	<string name="MyTransitionName">ImageTransition</string>

	<string name="monkey">monkey</string>
	<string name="penguins">penguins</string>

</resources>


text:
namespace WifiMonitor
{
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    using WifiMonitor.Properties;
    using Windows.Data.Xml.Dom;
    using Windows.UI.Notifications;

    public partial class MainForm : Form
    {
        private bool found = false;

        private WlanClient client = new WlanClient();

        private WlanClient.WlanInterface[] interfaces;

        private Dictionary<WlanClient.WlanInterface, bool> scanMap = new Dictionary<WlanClient.WlanInterface, bool>();

        public MainForm()
        {
            this.interfaces = client.Interfaces;
            foreach (var wlanInterface in this.interfaces)
            {
                wlanInterface.WlanNotification += (Wlan.WlanNotificationData notifyData) =>
                {
                    if (notifyData.notificationSource != Wlan.WlanNotificationSource.ACM)
                    {
                        switch ((Wlan.WlanNotificationCodeAcm)notifyData.NotificationCode)
                        {
                            case Wlan.WlanNotificationCodeAcm.ScanFail:
                            case Wlan.WlanNotificationCodeAcm.ScanComplete:
                                scanMap[wlanInterface] = false;
                                break;
                        }
                    }
                };
                scanMap[wlanInterface] = false;
            }

            this.found = this.ScanForNetworks();
            this.InitializeComponent();
        }

        void StartScan(WlanClient.WlanInterface wlanInterface)
        {
            if (scanMap[wlanInterface])
            {
                return;
            }

            scanMap[wlanInterface] = true;
            wlanInterface.Scan();
        }

        private void checkTimer_Tick(object sender, System.EventArgs e)
        {
            var newFound = this.ScanForNetworks();
            if (found != newFound)
            {
                this.found = newFound;
                string message;
                if (newFound)
                {
                    message = "Пришел";
                }
                else
                {
                    message = "Ушел";
                }

                SendNotification(message);
            }
        }

        private bool ScanForNetworks()
        {
            foreach (var wlanInterface in this.interfaces)
            {
                StartScan(wlanInterface);
                if (CheckInterface(wlanInterface))
                {
                    return true;
                }
            }

            return false;
        }

        private bool CheckInterface(WlanClient.WlanInterface wlanInterface)
        {
            var networks = wlanInterface.GetAvailableNetworkList(Wlan.WlanGetAvailableNetworkFlags.IncludeAllAdhocProfiles);
            foreach (var net in networks)
            {
                Wlan.Dot11Ssid ssid = net.dot11Ssid;
                string networkName = Encoding.ASCII.GetString(ssid.SSID, 0, (int)ssid.SSIDLength);
                if (networkName == Settings.Default.TargetNetworkName)
                {
                    return true;
                }
            }

            return false;
        }

        private static void SendNotification(string message)
        {
            ToastTemplateType toastTemplate = ToastTemplateType.ToastText01;
            XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
            XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
            toastTextElements[0].AppendChild(toastXml.CreateTextNode(message));
            ToastNotification toast = new ToastNotification(toastXml);
            var notifier = ToastNotificationManager.CreateToastNotifier(Constants.APP_ID);
            notifier.Show(toast);
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            this.textBoxTargetNetwork.Text = Settings.Default.TargetNetworkName;
        }

        private void buttonSave_Click(object sender, EventArgs e)
        {
            Settings.Default.TargetNetworkName = this.textBoxTargetNetwork.Text;
            Settings.Default.Save();
        }
    }
}


text:
<!DOCTYPE html>

    <meta charset="UTF-8" />
    <meta name="robots" content="index, follow, all" />
    <title>Thelia\Condition\ConditionOrganizer | Thelia 2 API</title>

            <link rel="stylesheet" type="text/css" href="../../css/bootstrap.min.css">
        <link rel="stylesheet" type="text/css" href="../../css/bootstrap-theme.min.css">
        <link rel="stylesheet" type="text/css" href="../../css/sami.css">

        <meta name="MobileOptimized" content="width">
        <meta name="HandheldFriendly" content="true">
        <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">

                <form id="search-form" action="../../search.html" method="GET">

            <input name="search"
                   class="typeahead form-control"
                   type="search"
                   placeholder="Search">
        </form>

                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-elements">
                    Toggle navigation

                </button>
                Thelia 2 API

Classes

Namespaces

Interfaces

Traits

Index

Search

class

Thelia

Condition

ConditionOrganizer

ConditionOrganizer

    class
    ConditionOrganizer        implements
        ConditionOrganizerInterface

Manage how Condition could interact with each others

Methods

    array

                    organize(
    array $conditions)

Organize ConditionInterface

Details

at line 31

    array
    organize(
    array $conditions)

Organize ConditionInterface

Parameters

    array
                $conditions
                Array of ConditionInterface

Return Value

    array
            Array of ConditionInterface sorted

        Generated by Sami, the API Documentation Generator.


text:
package com.google.api.ads.adwords.jaxws.v201406.o;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;

/**
 *
 *             Abstract class representing an reply to an {@link EstimateRequest}.
 *
 *
 *
Java class for Estimate complex type.
 *
 *
The following schema fragment specifies the expected content contained within this class.
 *
 *

 * <complexType name="Estimate">
 *   <complexContent>
 *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       <sequence>
 *         <element name="Estimate.Type" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *       </sequence>
 *     </restriction>
 *   </complexContent>
 * </complexType>
 *

 *
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Estimate", propOrder = {
    "estimateType"
})
@XmlSeeAlso({
    KeywordEstimate.class,
    CampaignEstimate.class,
    AdGroupEstimate.class
})
public class Estimate {

    @XmlElement(name = "Estimate.Type")
    protected String estimateType;

    /**
     * Gets the value of the estimateType property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *
     */
    public String getEstimateType() {
        return estimateType;
    }

    /**
     * Sets the value of the estimateType property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *
     */
    public void setEstimateType(String value) {
        this.estimateType = value;
    }

}


text:
layout: page-fullwidth
show_meta: false
title: "Calendar"
permalink: "/calendar/"
---
<iframe src="https://www.google.com/calendar/embed?showTitle=0&showCalendars=0&height=600&wkst=1&bgcolor=%23FFFFFF&src=thunderbirdmarchingband%40gmail.com&color=%232952A3&src=f3khb3c61iagkdntt9lsclu3m0%40group.calendar.google.com&color=%23333333&ctz=America%2FLos_Angeles" style=" border-width:0 " width="800" height="600" frameborder="0" scrolling="no"></iframe>


text:
package com.specmate.administration.internal.services;

import java.util.HashMap;
import java.util.Map;

import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;

import org.eclipse.emf.ecore.resource.Resource;
import org.osgi.service.component.annotations.Component;

import com.specmate.administration.api.ESpecmateStatus;
import com.specmate.administration.api.IStatusService;
import com.specmate.common.exception.SpecmateException;
import com.specmate.common.exception.SpecmateInternalException;
import com.specmate.common.exception.SpecmateValidationException;
import com.specmate.emfrest.api.IRestService;
import com.specmate.emfrest.api.RestServiceBase;
import com.specmate.model.administration.AdministrationFactory;
import com.specmate.model.administration.ErrorCode;
import com.specmate.model.administration.Status;
import com.specmate.rest.RestResult;

@Component(immediate = true, service = { IRestService.class, IStatusService.class })
public class StatusService extends RestServiceBase implements IStatusService {
	private ESpecmateStatus currentStatus = ESpecmateStatus.NORMAL;

	private Map<String, Status> statusMap = new HashMap<>();

	public StatusService() {
		Status normalStatus = AdministrationFactory.eINSTANCE.createStatus();
		normalStatus.setValue(ESpecmateStatus.NORMAL.getName());
		Status maintenanceStatus = AdministrationFactory.eINSTANCE.createStatus();
		maintenanceStatus.setValue(ESpecmateStatus.MAINTENANCE.getName());
		this.statusMap.put(ESpecmateStatus.NORMAL.getName(), normalStatus);
		this.statusMap.put(ESpecmateStatus.MAINTENANCE.getName(), maintenanceStatus);
	}

	@Override
	public String getServiceName() {
		return "status";
	}

	@Override
	public boolean canGet(Object target) {
		return (target instanceof Resource);
	}

	@Override
	public boolean canPost(Object target, Object object) {
		// return (target instanceof Resource && object instanceof Status);
		return false;
	}

	@Override
	public RestResult<?> get(Object target, MultivaluedMap<String, String> queryParams, String token)
			throws SpecmateException {
		if (target instanceof Resource) {
			return new RestResult<>(Response.Status.OK, statusMap.get(getCurrentStatus().getName()));
		} else {
			throw new SpecmateInternalException(ErrorCode.REST_SERVICE, "REST service method guard error.");
		}
	}

	@Override
	public RestResult<?> post(Object target, Object object, String token) throws SpecmateException {
		if (target instanceof Resource) {
			Status status = (Status) object;
			switch (status.getValue()) {
			case ESpecmateStatus.MAINTENANCE_NAME:
				setCurrentStatus(ESpecmateStatus.MAINTENANCE);
				return new RestResult<>(Response.Status.OK, status);
			case ESpecmateStatus.NORMAL_NAME:
				setCurrentStatus(ESpecmateStatus.NORMAL);
				return new RestResult<>(Response.Status.OK, status);
			default:
				throw new SpecmateValidationException("Specmate status " + status.getValue() + " not valid.");
			}
		} else {
			throw new SpecmateInternalException(ErrorCode.REST_SERVICE, "REST service method guard error.");
		}
	}

	@Override
	public ESpecmateStatus getCurrentStatus() {
		return currentStatus;
	}

	@Override
	public void setCurrentStatus(ESpecmateStatus status) {
		this.currentStatus = status;
	}
}


text:
package org.jasig.portlet.calendar.adapter;

import java.io.IOException;
import java.util.Collections;
import java.util.Set;
import javax.portlet.PortletRequest;
import net.fortuna.ical4j.data.ParserException;
import net.fortuna.ical4j.model.Calendar;
import net.fortuna.ical4j.model.component.VEvent;
import net.fortuna.ical4j.util.Calendars;
import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jasig.portlet.calendar.CalendarConfiguration;
import org.jasig.portlet.calendar.caching.DefaultCacheKeyGeneratorImpl;
import org.jasig.portlet.calendar.caching.ICacheKeyGenerator;
import org.jasig.portlet.calendar.processor.ICalendarContentProcessorImpl;
import org.jasig.portlet.calendar.processor.IContentProcessor;
import org.joda.time.Interval;

public class ConfigurableFileCalendarAdapter extends AbstractCalendarAdapter
    implements ICalendarAdapter {

  protected final Log log = LogFactory.getLog(this.getClass());

  private Cache cache;
  private IContentProcessor contentProcessor = new ICalendarContentProcessorImpl();
  private ICacheKeyGenerator cacheKeyGenerator = new DefaultCacheKeyGeneratorImpl();
  private String cacheKeyPrefix = "default";

  public CalendarEventSet getEvents(
      CalendarConfiguration calendarConfiguration, Interval interval, PortletRequest request)
      throws CalendarException {
    Set<VEvent> events = Collections.emptySet();

    String fileName = calendarConfiguration.getCalendarDefinition().getParameters().get("file");

    // try to get the cached calendar
    String key =
        cacheKeyGenerator.getKey(
            calendarConfiguration, interval, request, cacheKeyPrefix.concat(".").concat(fileName));
    Element cachedElement = this.cache.get(key);
    CalendarEventSet eventSet;
    if (cachedElement == null) {
      // read in the data
      Calendar calendar = retrieveCalendar(fileName);
      // run the stream through the processor
      events = contentProcessor.getEvents(interval, calendar);
      log.debug("contentProcessor found " + events.size() + " events");

      // save the calendar event set to the cache
      eventSet = insertCalendarEventSetIntoCache(this.cache, key, events);
    } else {
      eventSet = (CalendarEventSet) cachedElement.getValue();
    }

    return eventSet;
  }

  protected Calendar retrieveCalendar(String fileName) throws CalendarException {

    if (log.isDebugEnabled()) {
      log.debug("Retrieving calendar " + fileName);
    }

    try {
      return Calendars.load(fileName);

    } catch (ParserException e) {
      log.warn("Error loading iCalendar file feed", e);
      throw new CalendarException("Error fetching iCalendar file feed", e);
    } catch (IOException e) {
      log.warn("Error loading iCalendar file feed", e);
      throw new CalendarException("Error loading iCalendar feed", e);
    } finally {
    }
  }

  public void setCache(Cache cache) {
    this.cache = cache;
  }

  public void setContentProcessor(IContentProcessor contentProcessor) {
    this.contentProcessor = contentProcessor;
  }

  public void setCacheKeyGenerator(ICacheKeyGenerator cacheKeyGenerator) {
    this.cacheKeyGenerator = cacheKeyGenerator;
  }

  public void setCacheKeyPrefix(String cacheKeyPrefix) {
    this.cacheKeyPrefix = cacheKeyPrefix;
  }
}


text:
package com.eboji.center.bootstrap.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import({
	BeanConfiguration.class 		//spring 初始化bean相关的配置
})
public class SpringConfiguration {

}


text:
<?php

namespace Drupal\FunctionalTests\Rest;

use Drupal\Tests\rest\Functional\AnonResourceTestTrait;
use Drupal\Tests\rest\Functional\EntityResource\XmlEntityNormalizationQuirksTrait;

/**
 * @group rest
 */
class EntityViewDisplayXmlAnonTest extends EntityViewDisplayResourceTestBase {

  use AnonResourceTestTrait;
  use XmlEntityNormalizationQuirksTrait;

  /**
   * {@inheritdoc}
   */
  protected static $format = 'xml';

  /**
   * {@inheritdoc}
   */
  protected static $mimeType = 'text/xml; charset=UTF-8';

  /**
   * {@inheritdoc}
   */
  protected $defaultTheme = 'stark';

}


text:
import codecs
import json
import re
import urllib

with codecs.open('download/package-jsons', encoding='utf-8') as in_file, \
        codecs.open('output.txt', mode='wb', encoding='utf-8') as out_file:
    for package_json in in_file:
        package_dict = json.loads(package_json)
        package_info = package_dict['info']

        # Build abstract
        abstract_lines = []
        summary = package_info['summary']
        if not summary or summary == 'UNKNOWN':
            continue
        abstract_lines.append(re.sub(r'\s', ' ', summary, flags=re.MULTILINE | re.UNICODE))
        #abstract_lines.append('Downloads in the last month: %s' % package_info['downloads']['last_month'])

        for classifier in package_info['classifiers']:
            if classifier.startswith('Development Status'):
                abstract_lines.append('Development status: %s' % classifier.split(' - ')[-1])
                break

        abstract_lines.append("
pip install " + package_info['name'] + "
")

        official_site = ''
        # check for real links. We can get stuff like 'unknown', '404' in here
        if package_info['home_page'] and re.search(r'www.', package_info['home_page']):
            official_site = '[' + package_info['home_page'] + ' Official site]\\\\n'

        out_file.write('\t'.join([
            package_info['name'],  # Title
            'A',  # Article type
            '',  # No redirect
            '',  # Other uses (ignored)
            '',  # No categories
            '',  # References (ignored)
            '',  # No related topics
            '',  # Further reading (ignored)
            official_site,  # External links (ignored)
            '',  # Disambiguation (ignored)
            '',  # No images
            '
'.join(abstract_lines),
            urllib.quote(package_info['package_url'], safe='/:'),  # Source url
        ]))
        out_file.write('\n')


text:
using System;
using System.Globalization;
using AccidentalFish.ExpressionParser.Nodes;

namespace AccidentalFish.ExpressionParser.Parsers
{
    public class NumericParser : IParser
    {
        private readonly Func<string,ExpressionNode> _factory;

        public NumericParser(Func<string,ExpressionNode> factory)
        {
            _factory = factory;
        }

        public bool IsPartialMatch(string partialToken, ExpressionNode last)
        {
            bool result = double.TryParse(partialToken, NumberStyles.AllowDecimalPoint, null, out double _);

            return result;
        }

        public bool IsCompleteMatch(string token)
        {
            return double.TryParse(token, NumberStyles.AllowDecimalPoint, null, out double _);
        }

        public Func<string,ExpressionNode> Factory => _factory;
    }
}


text:
/**
 * @author 戎晓伟
 * @description redux->type
 */

// 导入创建多Type的方法
import {createActionTypes} from '@/app/utils/createAction'

// SinkerTable管理查询
export const SEARCH_SINKER_TABLE_LIST = createActionTypes('SinkManage/SEARCH_SINKER_TABLE_LIST', [
  'LOAD',
  'SUCCESS',
  'FAIL'
])

// 设置SinkerTable搜索参数
export const SET_SEARCH_SINKER_TABLE_PARAM = 'SinkManage/SET_SEARCH_SINKER_TABLE_PARAM'


text:
namespace app {
namespace Fuse {
namespace Animations {

::uEnumType* AnimatorVariant__typeof();

}}}

#endif