        # Register MCP tool - use simple approach with single params dict
        default_desc = f"{spec['api']['method'].upper()} {spec['api']['path']}"
        description = f"[{concept}] {spec.get('description', default_desc)}"

        # Create a simple wrapper that accepts a single params dict
        def create_tool_wrapper(agent, tool_name):
            async def tool_wrapper(
                params: dict | None = None,
                param1: str | None = None,
                param2: str | None = None,
            ):
                """Auto-generated MCP tool wrapper (accepts legacy param1/param2)"""
                if params is None:
                    params = {}
                # graceful fallback for old prompt scaffolding
                if param1 is not None and "nodeId"   not in params:
                    params["nodeId"] = param1
                if param2 is not None and "parentId" not in params:
                    params["parentId"] = param2
                return await agent.handle_tool(tool_name, params)
            return mcp.tool(name=tool_name, description=description)(tool_wrapper)

        create_tool_wrapper(agent, spec['name'])

    # Add routing tool
    @mcp.tool(name="route_query", description="Route a query to relevant tool names")
    async def route_query_tool(query: str):
        """Route a user query to relevant tool names"""
        relevant_tools = router.route_query(query)

        tool_info = []
        for tool_name in relevant_tools:
            if tool_name in all_tool_specs:
                spec = all_tool_specs[tool_name]
                tool_info.append({
                    "name": tool_name,
                    "description": spec.get('description', ''),
                    "concept": get_concept_from_path(spec['api']['path'])
                })

        return {
            "query": query,
            "relevant_tools": tool_info,
            "total_tools": len(tool_info)
        }

    logger.info(f"Registered {len(specs)} tools across {len(router.agents)} agents")

    # Run server
    async def serve():
        await mcp.run_async(transport='streamable-http', host=args.host, port=args.port)

    try:
        asyncio.run(serve())
    except KeyboardInterrupt:
        logger.info('Server shutdown requested')

if __name__ == '__main__':
    main()


												 CurrentRelativePath, RollingFileHash,
																				 ProgressInfo, std::move(Self));

							if (ec)
							{
								Self.complete(ec);
								return;
							}
						}
						else if (!ec &&
								 Modio::filesystem::is_directory(
									 CurrentEntry->path(), ec)) // Only fall back to checking if it's a directory, if we
																// didnt get an error checking the file type above
						{
							yield DestinationArchive->AddDirectoryEntryToArchiveAsync(CurrentRelativePath / "",
																					  std::move(Self));
							// Directories only consider the name in the file hash
							*RollingFileHash = *RollingFileHash ^
											   Modio::Detail::hash_64_fnv1a_const(CurrentRelativePath.string().c_str());

							if (ec)
							{
								Self.complete(ec);
								return;
							}
						}
						else // error checking file_type
						{
							Self.complete(ec);
							return;
						}
						CurrentEntry.increment(ec);
					}

					yield DestinationArchive->FinalizeArchiveAsync(std::move(Self));

					CompleteProgressState(*PinnedProgressInfo.get(),
										  Modio::ModProgressInfo::EModProgressState::Compressing);
					Self.complete(ec);
					return;
				}
			}

		private:
			std::unique_ptr<Modio::Detail::ArchiveWriter> DestinationArchive {};
			asio::coroutine CoroutineState {};
			Modio::filesystem::path SourceDirectoryRootPath {};
			Modio::filesystem::recursive_directory_iterator EntriesInFolder {};
			Modio::filesystem::recursive_directory_iterator CurrentEntry {};
			Modio::filesystem::path CurrentRelativePath {};
			std::weak_ptr<Modio::ModProgressInfo> ProgressInfo {};
			Modio::FileSize CurrentTotalFileSize {};
			std::shared_ptr<uint64_t> RollingFileHash {};
		};
#include <asio/unyield.hpp>

		template<typename CompletionHandlerType>
		auto CompressFolderAsync(Modio::filesystem::path FolderToCompress, Modio::filesystem::path PathToOutputArchive,
								 std::shared_ptr<uint64_t> FileHash, std::weak_ptr<Modio::ModProgressInfo> ProgressInfo,
								 CompletionHandlerType&& Handler)
		{
			return asio::async_compose<CompletionHandlerType, void(Modio::ErrorCode)>(
				CompressFolderOp(FolderToCompress, PathToOutputArchive, FileHash, ProgressInfo), Handler,
				Modio::Detail::Services::GetGlobalContext().get_executor());
		}
	} // namespace Detail
} // namespace Modio

MODIO_DIAGNOSTIC_POP


.5L5 12v1h5.5z'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E%3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E%3C/svg%3E")}.mapboxgl


@ invalidate BP array
	mcr     p15, 0, r0, c7, c10, 4	@ DSB
	mcr     p15, 0, r0, c7, c5, 4	@ ISB

	/*
	 * disable MMU stuff and caches
	 */
	mrc	p15, 0, r0, c1, c0, 0
	bic	r0, r0, #0x00002000	@ clear bits 13 (--V-)
	bic	r0, r0, #0x00000007	@ clear bits 2:0 (-CAM)
@	orr	r0, r0, #0x00000002	@ set bit 1 (--A-) Align   ;do not enable this bit, modified by jerry
	orr	r0, r0, #0x00000800	@ set bit 11 (Z---) BTB
#ifdef CONFIG_SYS_ICACHE_OFF
	bic	r0, r0, #0x00001000	@ clear bit 12 (I) I-cache
#else
	orr	r0, r0, #0x00001000	@ set bit 12 (I) I-cache
#endif
	mcr	p15, 0, r0, c1, c0, 0

#ifdef CONFIG_VECTOR_BY_CP15
	mov  r0, #CONFIG_SYS_INIT_RAM_ADDR
	mcr  p15, 0, r0, c12, c0, 0
#endif
	/*
	 * Jump to board specific initialization...
	 * The Mask ROM will have already initialized
	 * basic memory. Go here to bump up clock rate and handle
	 * wake up conditions.
	 */
	mov	ip, lr			@ persevere link reg across call
	bl	lowlevel_init		@ go setup pll,mux,memory
	mov	lr, ip			@ restore link
	mov	pc, lr			@ back to my caller
#endif

#ifndef CONFIG_SPL_BUILD
/*
 *************************************************************************
 *
 * Interrupt handling
 *
 *************************************************************************
 */
@
@ IRQ stack frame.
@
#define S_FRAME_SIZE	72

#define S_OLD_R0	68
#define S_PSR		64
#define S_PC		60
#define S_LR		56
#define S_SP		52

#define S_IP		48
#define S_FP		44
#define S_R10		40
#define S_R9		36
#define S_R8		32
#define S_R7		28
#define S_R6		24
#define S_R5		20
#define S_R4		16
#define S_R3		12
#define S_R2		8
#define S_R1		4
#define S_R0		0

#define MODE_SVC 0x13
#define I_BIT	 0x80

/*
 * use bad_save_user_regs for abort/prefetch/undef/swi ...
 * use irq_save_user_regs / irq_restore_user_regs for IRQ/FIQ handling
 */

	.macro	bad_save_user_regs
	sub	sp, sp, #S_FRAME_SIZE		@ carve out a frame on current
						@ user stack
	stmia	sp, {r0 - r12}			@ Save user registers (now in
						@ svc mode) r0-r12
	ldr	r2, IRQ_STACK_START_IN		@ set base 2 words into abort
						@ stack
	ldmia	r2, {r2 - r3}			@ get values for "aborted" pc
						@ and cpsr (into parm regs)
	add	r0, sp, #S_FRAME_SIZE		@ grab pointer to old stack

	add	r5, sp, #S_SP
	mov	r1, lr
	stmia	r5, {


0.7, 0.5, 0.5, three.ColorSpace.srgb ),
      'eye': <double>[ 0, 1800, 0 ],
      'up': <double>[ 0, 0, 1 ],
      'fov': 45.0,
      'updateCamera': ( camera, scene, mouseX ) {

        camera.position.x -= mouseX * 0.05;
        camera.position.x = math.max<double>( math.min( camera.position.x, 2000.0 ), - 2000.0 );
        camera.lookAt( camera.position.clone().setY( 0.0 ) );

      }
    },
    {
      'left': 0.5,
      'bottom': 0.5,
      'width': 0.5,
      'height': 0.5,
      'background': three.Color().setRGB( 0.5, 0.7, 0.7, three.ColorSpace.srgb ),
      'eye': <double>[ 1400, 800, 1400 ],
      'up': <double>[ 0, 1, 0 ],
      'fov': 60.0,
      'updateCamera': ( camera, scene, mouseX ) {

        camera.position.y -= mouseX * 0.05;
        camera.position.y = math.max<double>( math.min( camera.position.y, 1600.0 ), - 1600.0 );
        camera.lookAt( scene.position );

      }
    }
  ];

  Future<void> setup() async {
    for (int ii = 0; ii < views.length; ++ ii ) {
      final view = views[ ii ];
      if(ii == views.length-1){
        threeJs.camera = three.PerspectiveCamera( view['fov'], threeJs.width / threeJs.height, 1, 10000 );
        threeJs.camera.position.copyFromArray( view['eye'] );
        threeJs.camera.up.copyFromArray( view['up'] );
        view['camera'] = threeJs.camera;
      }
      else{
        final camera = three.PerspectiveCamera( view['fov'], threeJs.width / threeJs.height, 1, 10000 );
        camera.position.copyFromArray( view['eye'] );
        camera.up.copyFromArray( view['up'] );
        view['camera'] = camera;
      }
    }

    threeJs.scene = three.Scene();

    final light = three.DirectionalLight( 0xffffff, 3 );
    light.position.setValues( 0, 0, 1 );
    threeJs.scene.add( light );

    //final shadowTexture = three.CanvasTexture( canvas );

    final shadowMaterial = three.MeshBasicMaterial.fromMap( {  'transparent': true } );//'map': shadowTexture,
    final shadowGeo = three.PlaneGeometry( 300, 300, 1, 1 );

    three.Mesh shadowMesh;

    shadowMesh = three.Mesh( shadowGeo, shadowMaterial );
    shadowMesh.position.y = - 250;
    shadowMesh.rotation.x = - math.pi / 2;
    threeJs.scene.add( shadowMesh );

    shadowMesh = three.Mesh( shadowGeo, shadowMaterial );
    shadowMesh.position.x = - 400;
    shadowMesh.position.y = - 250;
    shadowMesh.rotation.x = - math.pi / 2;
    threeJs.scene.add( shadowMesh );

    shadowMesh = three.Mesh( shadowGeo, shadowMaterial );
    shadowMesh.position.x = 400;
    shadowMesh.position.y = - 250;
    shadowMesh.rotation.x = - math.pi / 2;
    threeJs.scene.add( shadowMesh );

    const radius = 200.0;

    final geometry1 = IcosahedronGeometry( radius, 1 );

    final count = geometry1.attributes['position'].count;
    geometry1.setAttributeFromString( 'color', three.Float32BufferAttribute( three.Float32Array( count * 3 ), 3 ) );

    final geometry2 = geometry1.clone();
    final geometry3 = geometry1.clone();

    final color = three.Color();


 ELIMINAR SOLO UN USERBALANCER USANDO EL ID DE GRUPO*/
router.delete("/:id", rotationmanagerFSController.deleteUserBalancer);

/*  DELETE - ELIMINAR UN REGISTRO DE USUARIO POR ID DE USUARIO*/
router.delete("/delsimplereg/:id", rotationmanagerFSController.deleteUserBalancerById);

/* PUT - ACTUALIZAR EL NOMBRE DEL ESQUEMA YA QUE CAMBIA EN ROTATIONS */
router.put("/setname",rotationmanagerFSController.updateName);

/* PUT - ACTUALIZAR DIA CLAVE EN UN GRUPO */
router.put("/:idG",rotationmanagerFSController.updateDayKey);

/* PUT - ACTUALIZAR DATOS TOTALES EN UN GRUPO */
router.put("/update/:idUs",rotationmanagerFSController.updateSingleData);

/* PUT - ACTUALIZAR FIJO */
router.put("/actfijo/:idUs",rotationmanagerFSController.updateTurnoFijo);

/* PUT - ACTUALIZAR SEGUN schemaid DESPUES DE BORRAR UN ESQUEMA */
router.put("/actualizarpostdel/:id",rotationmanagerFSController.updatePostDel);

/* PUT - ACTUALIZAR EL TOTAL GRUPO DESPUES DE BORRAR UN ESQUEMA */
router.put("/actualizartotalschema/:id",rotationmanagerFSController.updateTotalSchema);

/* PUT - ACTUALIZAR EL TOTALGROUP DESPUES DE ELIMINAR UN USUARIO */
router.put("/uptdatetotalgroup/:id",rotationmanagerFSController.updateTotalGroup);

export default router;
/*
  Archivo que tendra las rutas de la RestApi para los programas fijos del canal
*/

import { Router } from "express";
import * as programController from "../controllers/program.controller";
import Programs from "../models/Programs";
const router = Router();

/* POST - CREAR PROGRAMA */
router.post("/", programController.createProgram);

/* GET - LISTAR TODOS LOS PROGRAMAS */
router.get("/", programController.findAllPrograms);

/* GET - LISTAR TODOS LOS PROGRAMAS CUANDO SU TYPO ES SECONDARY */
router.get("/primary", programController.findAllPrimary);

/* GET - LISTAR TODOS LOS PROGRAMAS CUANDO SU TYPO ES SECONDARY */
router.get("/secondary", programController.findAllSecondary);

/* GET - LISTAR TODOS LOS PROGRAMAS PERO SOLO ENTRE SEMANA*/
router.get("/semanal", programController.findAllProgramsWeekDay);

/* GET - LISTAR TODOS LOS PROGRAMAS PERO SOLO FIN DE SEMANA*/
router.get("/findesemana", programController.findAllProgramsWeekend);

/*  DELETE - ELIMINAR UN PROGRAMA POR ID */
router.delete("/:id", programController.deleteProgram);

/* GET - ENCONTRAR UN PROGRAMA POR ID */
router.get("/:id",programController.findOneProgram);

/* PUT - ACTUALIZAR UN PROGRAMA */
router.put("/:id",programController.updateProgram);

export default router;/*
  archivo que modela los tipos de datos para los Programas fijos del canal
  por ejemplo... arriba bogota que va de lunes a viernes de 4:30 a 9:30
*/

import { Schema, model } from "mongoose";

const programSchema = new Schema({
  nombre: {
    type: String,
    require: true,
    trim: true,
  },

  lunes: {
    type: Boolean,
    require: true,
  },

  Martes: {
    type: Boolean,
    require: true,
  },

  Miercoles: {


 {})", p.point.x, p.point.y);
            saver0.lock().unwrap().add_point_stamped(p)
        }
    );

    rosrust::ros_info!("Listening for points on /clicked_point");
    rosrust::ros_info!("Publishing path on /path");

    // Loop
    let rate = rosrust::rate(rate);
    while rosrust::is_ok() {
        let saver = saver1.lock().unwrap();
        let path = saver.get_path();
        path_pub.send(path.clone())?;
        rate.sleep();
    }

    Ok(())
}

pub fn run_server() -> Result<()> {

    // Parameters and arguments
    let file_name = get_file_name()?;
    let rate = rosrust::param("~rate").unwrap().get().unwrap_or(6.0);
    rosrust::ros_info!("Opening file: {}", file_name);

    // Setup
    let server0 = PathServer::load(file_name)?;
    let server0 = Arc::new(Mutex::new(server0));
    let server1 = server0.clone();
    let path_pub = rosrust::publish("/path", 100)?;

    rosrust::ros_info!("Hosting /static_path service");

    let _service = rosrust::service::<GetPlan, _>(
        "static_path",
        move |_| {
            rosrust::ros_info!("Returning path on static_path service");
            let path = server0.lock().unwrap().get_path().clone();
            Ok(GetPlanRes { plan: path })
        }
    )?;

    rosrust::ros_info!("Publishing path on /path");

    // Loop
    let rate = rosrust::rate(rate);
    while rosrust::is_ok() {
        let server = server1.lock().unwrap();
        let path = server.get_path();
        path_pub.send(path.clone())?;
        rate.sleep();
    }

    Ok(())
}

use std::f64::consts::PI;
const TWO_PI: f64 = 2.0*PI;

pub fn gen_circle() -> Result<()> {

    // Parameters and arguments
    let file_name = get_file_name()?;
    rosrust::ros_info!("Opening file: {}", file_name);
    rosrust::ros_info!("Generating circle");

    let center = (-0.2, -0.9);
    let num_points = 100.0;
    let delta_theta = (TWO_PI - 0.1) / num_points;
    let radius = 0.9;
    let mut p = PathSaver::new(file_name, "map")?;

    let mut theta = PI / 2.0;

    for i in 0..(num_points as usize) {
        theta = add_theta(theta, delta_theta);
        let x = radius*f64::cos(theta);
        let y = radius*f64::sin(theta);
        p.add_point_simple((x + center.0, y + center.1));
        if i > 10 && i-10 > (num_points as usize) / 2 && theta > PI / 2.0 {
            break;
        }
    }

    Ok(())
}

fn add_theta(t1: f64, t2: f64) -> f64 {
    let mut ans = t1 + t2;
    while ans > PI { ans = ans - TWO_PI; }
    while ans < -PI { ans = ans + TWO_PI; }
    ans
}

/// Calculate the euclidean distance between two arbitrary points
fn distance(p1: (f64, f64), p2: (f64, f64)) -> f64 {
    f64::sqrt((p2.0 - p1.0).powi(2) + (p2.1 - p1.1).powi(2))
}

fn get_file_name() -> Result<String> {

    let args: Vec<String> = env::args().collect();

    if args.len() == 0 {
        return Err(ErrorKi


   1、在对待省委黑书记陈光、李士英、包厚昌等黑当权派的看法：

   三月五日以后，“红总”方面仍然顽固地与陈、李、包搞“三凑合”，纵容他们继续假亮相，搞反动的一边倒(即公开宣布：支持好派，打击P派，对抗中央肯定两派都是造反派，不能支持一方，打击一方的指示)直到五月十二日还吹捧他们为“革命干部”。而我们P派战士在1．26前前后后始终坚定不移地认为陈、李、包三人是黑当权派，一贯提出：“打倒江、陈、李、许、彭、包”的口号，并无情地揭露他们的种种阴谋，对他们进行了最周密的调查。我们的口号和行动始终是正确的!

   五月十四日，张春桥、姚文元两首长来宁，严肃指出这反动的“一边倒”是党内一小撮“走资派”的阴谋。以后，我P派战士又公布了李士英和包厚昌是可耻的大叛徒的调查材料，在铁的事实面前，“好派”终于无可奈何地改变了腔调，喊起：“打倒李、陈、包”的口号来了。历史无情地嘲弄了他们!

   2、在干部问题上的分歧：

   四月初“红旗”杂志评论员文章吹响了彻底批判干部问题上的资产阶级反动路线的战斗号角，我P派战士闻风而动，立即提出了“解放一大片，团结大多数打击一小撮”的革命口号，同时以最大的热情召开大、中、小会议，个别谈心，对干部进行一看二帮和忆苦思甜的教育。在对黑“修养”和资产阶级反动路线的批判中，把大批干部解放出来，参加革命行列。我们的做法体现了毛主席干部政策的光辉，许多干部争先恐后起来表态，勇敢起来揭发批判，纷纷组织战斗组，大杀回马枪，反戈一击，有力地打击了党内一小撮“走资派”。我们的做法在省级机关中得到了巨大的反响。在毛主席革命路线的感召下，他们终于冲破了精神束缚，大胆地�


edia/noto-sans-sc-44-500-normal.d059dc245d84b4c6e489066acab63e83.woff2)
            format('woff2'),
        url(/_next/static/media/noto-sans-sc-all-500-normal.189af95d2bd09da1ed8a1f43f297e520.woff)
            format('woff');
    unicode-range: U+7ed7, U+7edb, U+7ee0-7ee2, U+7ee5-7ee6, U+7ee8, U+7eeb,
        U+7ef0-7ef2, U+7ef6, U+7efa-7efb, U+7efe, U+7f01-7f04, U+7f08,
        U+7f0a-7f12, U+7f17, U+7f19, U+7f1b-7f1c, U+7f1f, U+7f21-7f23,
        U+7f25-7f28, U+7f2a-7f33, U+7f35-7f37, U+7f3d, U+7f42, U+7f44-7f45,
        U+7f4c-7f4d, U+7f52, U+7f54, U+7f58-7f59, U+7f5d, U+7f5f-7f61, U+7f63,
        U+7f65, U+7f68, U+7f70-7f71, U+7f73-7f75, U+7f77, U+7f79, U+7f7d-7f7e,
        U+7f85-7f86, U+7f88-7f89, U+7f8b-7f8c, U+7f90-7f91, U+7f94-7f96,
        U+7f98-7f9b, U+7f9d, U+7f9f, U+7fa3, U+7fa7-7fa9, U+7fac-7fb2, U+7fb4,
        U+7fb6, U+7fb8, U+7fbc, U+7fbf-7fc0, U+7fc3, U+7fca, U+7fcc, U+7fce,
        U+7fd2, U+7fd5, U+7fd9-7fdb, U+7fdf, U+7fe3, U+7fe5-7fe7, U+7fe9,
        U+7feb-7fec, U+7fee-7fef, U+7ff1, U+7ff3-7ff4, U+7ff9;
}
@font-face {
    font-family: Noto Sans SC;
    font-style: normal;
    font-display: swap;
    font-weight: 500;
    src: url(/_next/static/media/noto-sans-sc-45-500-normal.09c2f5afb436c54c8e7e7399ad282df5.woff2)
            format('woff2'),
        url(/_next/static/media/noto-sans-sc-all-500-normal.189af95d2bd09da1ed8a1f43f297e520.woff)
            format('woff');
    unicode-range: U+7dc4, U+7dc7-7dc8, U+7dca-7dcd, U+7dcf, U+7dd1-7dd2, U+7dd4,
        U+7dd6-7dd8, U+7dda-7de0, U+7de2-7de6, U+7de8-7ded, U+7def, U+7df1-7df5,
        U+7df7, U+7df9, U+7dfb-7dfc, U+7dfe-7e02, U+7e04, U+7e08-7e0b, U+7e12,
        U+7e1b, U+7e1e, U+7e20, U+7e22-7e23, U+7e26, U


 test_notarization_conversion() {
        let artifact = Notarization::fake(NotarizationContent::new(
            Height::from(22),
            CryptoHashOf::from(CryptoHash(vec![1, 2, 3])),
        ));
        let mut buf = Vec::new();
        pb::Notarization::from(&artifact).encode(&mut buf).unwrap();
        assert_eq!(
            artifact,
            Notarization::try_from(pb::Notarization::decode(buf.as_slice()).unwrap()).unwrap()
        );
    }

    #[test]
    fn test_block_proposal_conversion() {
        let artifact = BlockProposal::fake(
            Block::new(
                CryptoHashOf::from(CryptoHash(Vec::new())),
                Payload::new(
                    ic_crypto::crypto_hash,
                    ic_types::consensus::dkg::Summary::fake().into(),
                ),
                Height::from(123),
                Rank(456),
                ValidationContext {
                    registry_version: RegistryVersion::from(99),
                    certified_height: Height::from(42),
                    time: mock_time(),
                },
            ),
            node_test_id(333),
        );
        let mut buf = Vec::new();
        pb::BlockProposal::from(&artifact).encode(&mut buf).unwrap();
        assert_eq!(
            artifact,
            BlockProposal::try_from(pb::BlockProposal::decode(buf.as_slice()).unwrap()).unwrap()
        );
    }
}
<gh_stars>1000+
use zoo::fly; //~ ERROR: function `fly` is private

mod zoo {
    fn fly() {}
}

fn main() {
    fly();
}
use std::fs::File;
use std::io::{self, BufRead, BufReader};
use std::path::Path;

fn fetch_file_path() -> &'static str {
    if Path::new("src/input.txt").exists() {
        "src/input.txt"
    } else {
        "day1/src/input.txt"
    }
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let input_file = fetch_file_path();
    println!("part one: {}", part_one(input_file)?);
    println!("part two: {}", part_two(input_file)?);

    Ok(())
}

fn parse_line(line: Result<String, io::Error>) -> Result<i64, String> {
    line.map_err(|e| e.to_string())?
        .parse::<i64>()
        .map_err(|e| e.to_string())
}

fn into_error<'a>(result: &'a Result<i64, String>) -> Result<&'a i64, String> {
    match result {
        Ok(x) => Ok(x),
        Err(e) => Err(e.to_string()),
    }
}

fn part_one(input_path: &str) -> Result<usize, Box<dyn std::error::Error>> {
    let f = File::open(input_path)?;
    let reader = BufReader::new(f);
    let mut lines = reader.lines().map(parse_line).peekable();
    let mut count = 0;

    while let Some(line) = lines.next() {
        let parsed_line: i64 = line?;
        if let Some(next_line) = lines.peek() {
            let parsed_next_line = into_error(next_line)?;
            if parsed_next_line > &parsed_line {
                count += 1
            }
        }
    }

    Ok(count)
}

fn part_two(input_path: &str) -> Re


ntent":
        "അല്ലാഹു സൃഷ്ടിച്ചുണ്ടാക്കിയ കൃഷിയില് നിന്നും, കന്നുകാലികളില് നിന്നും അവര് അവന്ന് ഒരു ഓഹരി നിശ്ചയിച്ച് കൊടുത്തിരിക്കുകയാണ്. എന്നിട്ട് അവരുടെ ജല്‍പനമനുസരിച്ച് ഇത് അല്ലാഹുവിനുള്ളതും, മറ്റേത് തങ്ങള് പങ്കാളികളാക്കിയ ദൈവങ്ങള്‍ക്കുള്ളതുമാണെന്ന് അവര് പറഞ്ഞു. എന്നാല് അവരുടെ പങ്കാളികള്‍ക്കുള്ളത് അല്ലാഹുവിന്നെത്തുകയില്ല. അല്ലാഹുവിന്നുള്ളതാകട്ടെ അവരുടെ പങ്കാളികള്‍ക്കെത്തുകയും ചെയ്യും. അവര് തീര്‍പ്പുകല്‍പിക്കുന്നത് എത്രമോശം!"
  },
  {
    "surah_number": 6,
    "verse_number": 137,
    "content":
        "അതുപോലെ തന്നെ ബഹുദൈവവാദികളില്‍പെട്ട പലര്‍ക്കും സ്വന്തം മക്കളെ കൊല്ലുന്നത് അവര് പങ്കാളികളാക്കിയ ദൈവങ്ങള് ഭംഗിയായി തോന്നിച്ചിരിക്കുന്നു. അവരെ നാശത്തില് പെടുത്തുകയും, അവര്‍ക്ക് അവരുടെ മതം തിരിച്ചറിയാന് പറ്റാതാ�


app/myapp)
- 百度语音接口
- [FFmpeg](https://baike.baidu.com/item/ffmpeg/2665727?fr=aladdin)  用于转换语音格式

# 环境要求

- 外网的服务器
- node 环境  本例为 `v8.9.0`
- 讯飞语音的账号
- 微信小程序开发者权限

# 搭建环境步骤

## 搭建FFmpeg

	由于讯飞要求的录音格式和微信小程序的语音格式不兼容，所以需要将微信小程序的语音格式进行转换，使用的工具为 **FFmpeg ** 后期将在 **node** 中调用进行转换。

	需要注意的是，此操作需要在你的外网服务器上进行搭建。

### 下载

在官方网站中进行下载即可  [下载地址](http://ffmpeg.org/download.html)

![1526638560185](images/1526638560185.png)

![1526638647535](images/1526638647535.png)

### 配置环境变量

	下载好后，解压 配置 系统的环境变量

![1526638855004](images/1526638855004.png)

### 测试安装是否成功

	配置好后，打开命令行工具 输入   `ffmpeg` 如出现下图结果，表示安装成功。

![1526638922938](images/1526638922938.png)

## 搭建后台nodejs环境

	后台代码需要配置在 外网服务器下，如 阿里云，腾讯云等

在后台代码根目录下 打开命令工具   输入：

1. `npm i` 安装依赖

2. 修改 讯飞 ID 和 密钥  （**如何获取？**  请查看 下面的  **开通讯飞语音接口功能章节** ）

   打开 `index.js`  修改

   ![1526639696874](images/1526639696874.png)

3. 输入 `npm run start` 启动项目

4. ## 接口地址为  `http://ip:3005/smart_order`

   ![1526639896820](images/1526639896820.png)

## 配置微信小程序环境

### 导入项目

	使用 微信开发工具 导入 `微信前台代码`

![1526639231234](images/1526639231234.png)

### 成功导入

![1526639282967](images/1526639282967.png)

### 修改接口地址

![1526693974841](images/1526693974841.png)

### 注意

	在测试环境下，记得 勾选上 **不校验域名xxxxxxx**

![15


de(j);
var o251 = i251;
if (i251.replace(/\w+/g, "") !== o251) {
  $ERROR("#251: Error matching character class \w between character fb00 and fbff");
}

var i252 = "";
for (var j = 64512; j < 64768; j++)
  i252 += String.fromCharCode(j);
var o252 = i252;
if (i252.replace(/\w+/g, "") !== o252) {
  $ERROR("#252: Error matching character class \w between character fc00 and fcff");
}

var i253 = "";
for (var j = 64768; j < 65024; j++)
  i253 += String.fromCharCode(j);
var o253 = i253;
if (i253.replace(/\w+/g, "") !== o253) {
  $ERROR("#253: Error matching character class \w between character fd00 and fdff");
}

var i254 = "";
for (var j = 65024; j < 65280; j++)
  i254 += String.fromCharCode(j);
var o254 = i254;
if (i254.replace(/\w+/g, "") !== o254) {
  $ERROR("#254: Error matching character class \w between character fe00 and feff");
}

var i255 = "";
for (var j = 65280; j < 65536; j++)
  i255 += String.fromCharCode(j);
var o255 = i255;
if (i255.replace(/\w+/g, "") !== o255) {
  $ERROR("#255: Error matching character class \w between character ff00 and ffff");
}

// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/**
 * The form (?= Disjunction ) specifies a zero-width positive lookahead.
 * In order for it to succeed, the pattern inside Disjunction must match at the current position, but the current position is not advanced before matching the sequel.
 * If Disjunction can match at the current position in several ways, only the first one is tried
 *
 * @path ch15/15.10/15.10.2/15.10.2.8/S15.10.2.8_A1_T1.js
 * @description Execute /(?=(a+))/.exec("baaabac") and check results
 */

__executed = /(?=(a+))/.exec("baaabac");

__expected = ["", "aaa"];
__expected.index = 1;
__expected.input = "baaabac";

//CHECK#1
if (__executed.length !== __expected.length) {
	$ERROR('#1: __executed = /(?=(a+))/.exec("baaabac"); __executed.length === ' + __expected.length + '. Actual: ' + __executed.length);
}

//CHECK#2
if (__executed.index !== __expected.index) {
	$ERROR('#2: __executed = /(?=(a+))/.exec("baaabac"); __executed.index === ' + __expected.index + '. Actual: ' + __executed.index);
}

//CHECK#3
if (__executed.input !== __expected.input) {
	$ERROR('#3: __executed = /(?=(a+))/.exec("baaabac"); __executed.input === ' + __expected.input + '. Actual: ' + __executed.input);
}

//CHECK#4
for(var index=0; index<__expected.length; index++) {
	if (__executed[index] !== __expected[index]) {
		$ERROR('#4: __executed = /(?=(a+))/.exec("baaabac"); __executed[' + index + '] === ' + __expected[index] + '. Actual: ' + __executed[index]);
	}
}

// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by


local QBCore = exports['qb-core']:GetCoreObject()

Citizen.CreateThread(function()
	while QBCore == nil do
		TriggerEvent('QBCore:GetObject', function(obj) QBCore = obj end)
		Citizen.Wait(0)
	end
end)

local headMask = false;

RegisterNetEvent('RemoveHeadBag', function(player)
    DeleteEntity(Object);
    SetEntityAsNoLongerNeeded(Object);
    SendNUIMessage({
        ["action"] = "remove"
    })
    headMask = false;
end)

RegisterNetEvent("StartThread", function(player)
    local ped = PlayerPedId();
    local handsup = IsEntityPlayingAnim(ped, "missminuteman_1ig_2", "handsup_base", 1);
    if handsup then
        Object = CreateObject(GetHashKey("prop_money_bag_01"), 0, 0, 0, true, true, true);
        AttachEntityToEntity(Object, ped, GetPedBoneIndex(ped, 12844), 0.2, 0.04, 0, 0, 270.0, 60.0, true, true, false, true, 1, true);
        SetEntityCompletelyDisableCollision(Object, false, true);
        SendNUIMessage({
            ["action"] = "open"
        })
        headMask = true;
    end
end)

AddEventHandler("playerSpawned", function()
    DeleteEntity(Object);
    SetEntityAsNoLongerNeeded(Object);
    headMask = false;
end)

RegisterNetEvent("CheckThread")
AddEventHandler("CheckThread", function()
    local closestPlayer, closestDistance = GetClosestPlayer();
    local player = GetPlayerPed(-1);
    if closestP


Radeon(TM) Vega 10 Mobile Graphics|62
FirePro V5900 (FireGL V)|61
FirePro V5800 (FireGL V)|61
Radeon(TM) Vega 8 Graphics|61
FirePro V4800 (FireGL V)|61
Radeon HD 7600 Series|61
Radeon(TM) Vega 6 Graphics|61
Radeon(TM) R9 200 Series|61
Radeon HD 8850M|61
Radeon RX460|61
Radeon R7 M460|61
Radeon RX 640 Series|60
Radeon 530|60
Radeon HD 5600/5700|60
Radeon HD 5750 Series|60
Radeon R7 Graphics + R7 200 Dual Graphics|60
Radeon R7 450|60
FirePro V4900|60
Firepro W6150M|60
ASUS R7 250 Series|60
Radeon(TM) RX 560 Graphics|60
Radeon(TM) R7 M370|59
FirePro M4000 Mobility Pro Graphics|59
Radeon R5 430|59
Radeon R9 M275X|59
FirePro V5800 (FireGL) Graphics Adapter|59
Mobility Radeon HD 5870|59
Radeon(TM) R9 M385X|58
Radeon HD 7750M|58
Radeon HD 5670|58
Radeon HD 8850M|58
Radeon HD 7700M Series|58
Radeon HD 8670D + R7 200 Dual Graphics|58
Radeon R7 Series / HD 9000 Series|57
Radeon HD 6730M/6770M|57
Radeon(TM) 625|57
Radeon(TM) R9 M385|57
Radeon HD 5870M|56
Radeon 610 Series|56
FirePro W4100|56
FirePro M6000 Mobility Pro Graphics|56
Radeon RX 540 Series|56
Radeon R7 240|56
Radeon HD 7560D + HD 7700 Dual Graphics|56
Radeon R9 M370X (Bootcamp XG edition by bootcampdrivers.com)|56
FirePro V4900 (ATI FireGL)|55
Radeon(TM) R7 M350|55
FirePro M6000 Mobility Pro Graphics|55
67FF:08|55
Radeon HD 5750|55
Radeon HD 7570|55
Radeon(TM) Vega 11 Graphics|55
Radeon R7 M460|55
Radeon HD 5750 OpenGL Engine|55
Radeon(TM) R7 M370|55
Radeon HD 6730M/6770M/7690M XT|55
Radeon E8860|55
Radeon HD 8790M|54
Radeon HD 6770M|54
Radeon R7 M440|54
Radeon(TM) R7 350|54
Radeon(TM) R7 350X|54
Radeon HD 7870 XT|54
Radeon HD 7800M Series|54
Radeon 520|54
Radeon R7 M370|53
FirePro W4150M FireGL V|53
(ATI) FirePro M4000 (FireGL V) Mobility Pro Graphics|53
Radeon R9 M200X Series|53
Radeon HD 6700M/7700M/7900M Series|53
Radeon(TM) 620|53
Picasso|53
Radeon(TM) RX Vega 10 Graphics|53
67EF:CF|53
Radeon(TM) Vega 3 Graphics|53
Radeon R7 250|53
FirePro W4190M|53
Radeon(TM) Vega 8 Graphics|53
694C:C0|52
Radeon HD 5670 Series|52
Radeon(TM) RX Vega 11 Graphics|52
Radeon HD 6770M OpenGL Engine|52
Radeon(TM) M535DX|52
FirePro V4800 (FireGL V)|52
Radeon R7 350 Series|52
Barco MXRT 5600 (WDDM)|51
Radeon 630|51
FirePro V4900 (FireGL V)|51
FirePro V4900 (FireGL V) Graphics Adapter|51
Radeon(TM) Vega 3 Mobile Graphics|51
Radeon 535 Ser


lic void testBigIntRows() throws Exception {
    random = new Random(927337);

    // Use a large capacity that doesn't require expansion, yet.
    VectorMapJoinFastLongHashMapContainer map =
        new VectorMapJoinFastLongHashMapContainer(
            false, false, HashTableKeyType.LONG,
            LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1, tableDesc, 4);

    VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap();

    VectorRandomRowSource valueSource = new VectorRandomRowSource();

    valueSource.init(
        random, VectorRandomRowSource.SupportedTypes.ALL, 4,
        /* allowNulls */ false, /* isUnicodeOk */ false);

    int rowCount = 1000;
    Object[][] rows = valueSource.randomRows(rowCount);

    addAndVerifyRows(valueSource, rows,
        map, HashTableKeyType.LONG, verifyTable,
        new String[] { "bigint" },
        /* doClipping */ false, /* useExactBytes */ false);
  }

  @Test
  public void testIntRows() throws Exception {
    random = new Random(927337);

    // Use a large capacity that doesn't require expansion, yet.
    VectorMapJoinFastLongHashMapContainer map =
        new VectorMapJoinFastLongHashMapContainer(
            false, false, HashTableKeyType.INT,
            LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1, tableDesc, 4);

    VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap();

    VectorRandomRowSource valueSource = new VectorRandomRowSource();

    valueSource.init(
        random, VectorRandomRowSource.SupportedTypes.ALL, 4,
        /* allowNulls */ false, /* isUnicodeOk */ false);

    int rowCount = 1000;
    Object[][] rows = valueSource.randomRows(rowCount);

    addAndVerifyRows(valueSource, rows,
        map, HashTableKeyType.INT, verifyTable,
        new String[] { "int" },
        /* doClipping */ false, /* useExactBytes */ false);
  }

  @Test
  public void testStringRows() throws Exception {
    random = new Random(927337);

    // Use a large capacity that doesn't require expansion, yet.
    VectorMapJoinFastStringHashMapContainer map =
        new VectorMapJoinFastStringHashMapContainer(
            false,
            LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1, tableDesc, 4);

    VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap();

    VectorRandomRowSource valueSource = new VectorRandomRowSource();

    valueSource.init(
        random, VectorRandomRowSource.SupportedTypes.ALL, 4,
        /* allowNulls */ false, /* isUnicodeOk */ false);

    int rowCount = 1000;
    Object[][] rows = valueSource.randomRows(rowCount);

    addAndVerifyRows(valueSource, rows,
        map, HashTableKeyType.STRING, verifyTable,
        new String[] { "string" },
        /* doClipping */ false, /* useExactBytes */ false);
  }

  @Test
  public void testMultiKeyRows1() throws Exception {
    random = new Random(833);

    // Use a large capacity that doesn't require expansion, yet.
    VectorMapJoinFastMultiKeyHashMapContainer map =
        new VectorMapJoinFastMultiKeyHashMapContainer(
            false,
            LARGE_CAPACITY, LOAD_FACTOR, LARGE_WB_SIZE, -1, 4);

    VerifyFastRowHashMap verifyTable = new VerifyFastRowHashMap();

    VectorRandomRowSource valueSource = new VectorRandomRowSource();

    valueSource.init(
        random, VectorRandomRowSource.SupportedTypes.ALL, 4,
        /* allowNulls */ false, /* isUnicodeOk */ false);

    int rowCount = 1000;
    Object[][] rows = valueSource.randomRows(rowCount);

    addAndVerifyRows(valueSource, rows,
        map, HashTableKeyType.MULTI_KEY, verifyTable,
        new String[] { "int", "int" },
        /*


 "Norsk"),
    nr("Southern Ndebele", "isiNdebele"),
    nv("Navajo", "Diné bizaad"),
    ny("Chichewa", "chiCheŵa"),
    oc("Occitan", "occitan"),
    oj("Ojibwe", "ᐊᓂᔑᓈᐯᒧᐎᓐ"),
    om("Oromo", "Afaan Oromoo"),
    or("Oriya", "ଓଡ଼ିଆ"),
    os("Ossetian", "ирон æвзаг"),
    pa("Panjabi", "ਪੰਜਾਬੀ"),
    pi("Pāli", "पाऴि"),
    pl("Polish", "język polski"),
    ps("Pashto", "پښتو"),
    pt("Portuguese", "Português"),
    qu("Quechua", "Runa Simi"),
    rm("Romansh", "rumantsch grischun"),
    rn("Kirundi", "Ikirundi"),
    ro("Romanian", "limba română"),
    ru("Russian", "Русский"),
    rw("Kinyarwanda", "Ikinyarwanda"),
    sa("Sanskrit", "संस्कृतम्"),
    sc("Sardinian", "sardu"),
    sd("Sindhi", "सिन्धी"),
    se("Northern Sami", "Davvisámegiella"),
    sg("Sango", "yângâ tî sängö"),
    si("Sinhala", "සිංහල"),
    sk("Slovak", "slovenčina"),
    sl("Slovene", "slovenski jezik"),
    sm("Samoan", "gagana fa\'a Samoa"),
    sn("Shona", "chiShona"),
    so("Somali", "Soomaaliga"),
    sq("Albanian", "Shqip"),
    sr("Serbian", "српски језик"),
    ss("Swati", "SiSwati"),
    st("Southern Sotho", "Sesotho"),
    su("Sundanese", "Basa Sunda"),
    sv("Swedish", "svenska"),
    sw("Swahili", "Kiswahili"),
    ta("Tamil", "தமிழ்"),
    te("Telugu", "తెలుగు"),
    tg("Tajik", "тоҷикӣ"),
    th("Thai", "ไทย"),
    ti("Tigrinya", "ትግርኛ"),
    tk("Turkmen", "Türkmen"),
    tl("Tagalog", "Wikang Tagalog"),
    tn("Tswana", "Setswana"),
    to("Tonga", "faka Tonga"),
    tr("Turkish", "Türkçe"),
    ts("Tsonga", "Xitsonga"),
    tt("Tatar", "татар теле"),
    tw("Twi", "Twi"),
    ty("Tahitian", "Reo Tahiti"),
    ug("Uyghur", "ئۇيغۇرچە"),
    uk("Ukrainian", "українська мова"),
    ur("Urdu", "اردو"),
    uz("Uzbek", "Ўзбек"),
    ve("Venda", "Tshivenḓa"),
    vi("Vietnamese", "Việt Nam"),
    vo("Volapük", "Volapük"),
    wa("Walloon", "walon"),
    wo("Wolof", "Wollof"),
    xh("Xhosa", "isiXhosa"),
    yi("Yiddish", "ייִדיש"),
    yo("Yoruba", "Yorùbá"),
    za("Zhuang", "


not found\n";
    exit(0);
}

sub print_http_headers_multipart_begin {
    print "HTTP/1.0 200 OK\n";
    $bound = "ThisRandomString12345";
    print "Content-type: multipart/x-mixed-replace;boundary=$bound\n";
    &print_http_headers_multipart_next;
}

sub print_http_headers_multipart_next {
    print "\n--$bound\n";
}

sub print_http_headers_multipart_end {
    print "\n--$bound--\n";
}

sub displayhtml {
    local($buffer) = @_;
    $len = length($buffer);
    print "Content-type: text/html\n";
    print "Content-length: $len\n\n";
    print $buffer;
}

sub readfile {
    local($file) = @_;
    local(*FP, $size, $buffer, $bytes);
    ($x, $x, $x, $x, $x, $x, $x, $size) = stat($file);
    $size = sprintf("%d", $size);
    open(FP, "&lt;$file");
    $bytes = sysread(FP, $buffer, $size);
    close(FP);
    return $buffer;
}

$buffer = &readfile($QS_f);
&print_http_headers_multipart_begin;
&displayhtml($buffer);

sub mystat {
    local($file) = $_[0];
    local($time);

    ($x, $x, $x, $x, $x, $x, $x, $x, $x, $mtime) = stat($file);
    return $mtime;
}

$mtimeL = &mystat($QS_f);
$mtime = $mtime;
for ($n = 0; $n &lt; $QS_n; $n++) {
    while (1) {
        $mtime = &mystat($QS_f);
        if ($mtime ne $mtimeL) {
            $mtimeL = $mtime;
            sleep(2);
            $buffer = &readfile($QS_f);
            &print_http_headers_multipart_next;
            &displayhtml($buffer);
            sleep(5);
            $mtimeL = &mystat($QS_f);
            last;
        }
        sleep($QS_s);
    }
}

&print_http_headers_multipart_end;

exit(0);

##EOF##

Mass Virtual Hosting

Description:

The <VirtualHost> feature of Apache
        is nice and works great when you just have a few dozens
        virtual hosts. But when you are an ISP and have hundreds of
        virtual hosts to provide this feature is not the best
        choice.

Solution:

          To provide this feature we map the remote webpage or even
          the complete remote webarea to our namespace by the use
          of the Proxy Throughput feature (flag [P]):

##
##  vhost.map
##
www.vhost1.dom:80  /path/to/docroot/vhost1
www.vhost2.dom:80  /path/to/docroot/vhost2
     :
www.vhostN.dom:80  /path/to/docroot/vhostN

##
##  httpd.conf
##
    :
#   use the canonical hostname on redirects, etc.
Use


using UMapx.Core;

namespace UMapx.Distribution
{
    /// <summary>
    /// Defines the distribution interface.
    /// </summary>
    public interface IDistribution
    {
        #region Components
        /// <summary>
        /// Gets the support interval of the argument.
        /// </summary>
        RangeFloat Support { get; }
        /// <summary>
        /// Gets the mean value.
        /// </summary>
        float Mean { get; }
        /// <summary>
        /// Gets the variance value.
        /// </summary>
        float Variance { get; }
        /// <summary>
        /// Gets the median value.
        /// </summary>
        float Median { get; }


ounds = { X = 116, Y = 633, Width = 16, Height = 58 }
}
root.ExtraMenus.MusicMenu.SelectSound[#root.ExtraMenus.MusicMenu.SelectSound + 1] = "SelectSound6";

root.Sprites["SelectSound7"] = {
    Sheet = "Sound",
    Bounds = { X = 136, Y = 633, Width = 16, Height = 58 }
}
root.ExtraMenus.MusicMenu.SelectSound[#root.ExtraMenus.MusicMenu.SelectSound + 1] = "SelectSound7";

root.Sprites["SelectSound8"] = {
    Sheet = "Sound",
    Bounds = { X = 156, Y = 633, Width = 17, Height = 58 }
}
root.ExtraMenus.MusicMenu.SelectSound[#root.ExtraMenus.MusicMenu.SelectSound + 1] = "SelectSound8";

root.Sprites["SelectSound9"] = {
    Sheet = "Sound",
    Bounds = { X = 176, Y = 633, Width = 18, Height = 58 }
}
root.ExtraMenus.MusicMenu.SelectSound[#root.ExtraMenus.MusicMenu.SelectSound + 1] = "SelectSound9";

root.Sprites["SelectSound10"] = {
    Sheet = "Sound",
    Bounds = { X = 197, Y = 633, Width = 17, Height = 58 }
}
root.ExtraMenus.MusicMenu.SelectSound[#root.ExtraMenus.MusicMenu.SelectSound + 1] = "SelectSound10";

--CGList
root.Sprites["CircleCG"] = {
    Sheet = "CG",
    Bounds = { X = 1, Y = 917, Width = 106, Height = 106 }
}

root.Sprites["CGList"] = {
    Sheet = "CG",
    Bounds = { X = 1, Y = 1, Width = 638, Height = 538 }
}

root.Sprites["PageCountLabel"] = {
    Sheet = "CG",
    Bounds = { X = 1, Y = 611, Width = 204, Height = 57 }
}

root.Sprites["CGBox"] = {
    Sheet = "CG",
    Bounds = { X = 235, Y = 611, Width = 252, Height = 158 }
}

for i = 0, 6 do
    for j = 0, 7 do
        root.Sprites["AlbumThumbnail" .. (8 * i + j)] = {
            Sheet = "AlbumThumbnailSheet",
            Bounds = { X = 234 * j + 1, Y = 132 * i + 1, Width = 232, Height = 130 }
        }
        root.ExtraMenus.AlbumMenu.AlbumThumbnails[#root.ExtraMenus.AlbumMenu.AlbumThumbnails + 1] = "AlbumThumbnail" .. (8 * i + j);
    end
end

for i = 0, 6 do
    root.Sprites["AlbumThumbnail" .. (56 + i)] = {
        Sheet = "AlbumThumbnailSheet2",
        Bounds = { X = 1, Y = 132 * i + 1, Width = 232, Height = 130 }
    }
    root.ExtraMenus.AlbumMenu.AlbumThumbnails[#root.ExtraMenus.AlbumMenu.AlbumThumbnails + 1] = "AlbumThumbnail" .. (56 + i);
end

root.Sprites["VariationUnlocked"] = {
    Sheet = "CG",
    Bounds = { X = 489, Y = 611, Width = 22, Height = 22 }
}

root.Sprites["VariationLocked"] = {
    Sheet = "CG",
    Bounds = { X = 513, Y = 611, Width = 22, Height = 22 }
}

root.Sprites["LockedCG"] = {
    Sheet = "CG",
    Bounds = { X = 235, Y = 785, Width = 232, Height = 130 }
}

root.Sprites["ThumbnailHighlight"] = {
    Sheet = "CG",
    Bounds = { X = 1, Y = 785, Width = 232, Height = 130 }
}

for i = 0, 9 do
    root.Sprites["PageNum" .. i] = {
        Sheet = "Data",
        Bounds = {


parseJson().getJSONArray("data")
			}
		}
		return json.mapJSON { j ->
			val href = "https://$domain/series/${j.getString("prefix")}-${j.getString("id")}-${j.getString("slug")}"
			val cover = "https://api.$domain/storage/" + j.getString("thumbnail")
			Manga(
				id = generateUid(href),
				title = j.getString("title"),
				altTitles = emptySet(),
				url = href,
				publicUrl = href.toAbsoluteUrl(domain),
				rating = RATING_UNKNOWN,
				contentRating = null,
				coverUrl = cover,
				tags = emptySet(),
				state = when (j.getString("status")) {
					"ongoing" -> MangaState.ONGOING
					"completed" -> MangaState.FINISHED
					"onhold" -> MangaState.PAUSED
					"droped" -> MangaState.ABANDONED
					else -> null
				},
				authors = emptySet(),
				source = source,
			)
		}
	}

	private suspend fun fetchAvailableTags(): Set<MangaTag> {
		val doc = webClient.httpGet("https://$domain/search/advance").parseHtml()
		val json = JSONArray(doc.requireElementById("__NUXT_DATA__").data())
		val tagsList = json.getJSONArray(3).toString().replace("[", "").replace("]", "").split(",")
		return tagsList.mapToSet { idTag ->
			val id = idTag.toInt()
			val idKey = json.getJSONObject(id).getInt("id")
			val key = json.getInt(idKey).toString()
			val idName = json.getJSONObject(id).getInt("name")
			val name = json.getString(idName)
			MangaTag(
				key = key,
				title = name,
				source = source,
			)
		}
	}

	override suspend fun getDetails(manga: Manga): Manga = coroutineScope {
		val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()
		val chaptersDeferred = async { loadChapters(manga.url) }
		val json = JSONArray(doc.requireElementById("__NUXT_DATA__").data())
		val descId = json.getJSONObject(6).getInt("story")
		val desc = json.getString(descId)
		val tagsId = json.getJSONObject(6).getInt("genres")
		val tagsList = json.getJSONArray(tagsId).toString().replace("[", "").replace("]", "").split(",")
		val ratingId = json.getJSONObject(6).getInt("rating")
		val rating = json.getString(ratingId)
		val nsfwId = json.getJSONObject(6).getInt("nsfw")
		val nsfw = json.getBoolean(nsfwId)
		manga.copy(
			description = desc,
			tags = tagsList.mapToSet { idTag ->
				val id = idTag.toInt()
				val idKey = json.getJSONObject(id).getInt("id")
				val key = json.get(idKey).toString()
				val idName = json.getJSONObject(id).getInt("name")
				val name = json.get(idName).toString()
				MangaTag(
					key = key,
					title = name,
					source = source,
				)
			},
			rating = rating?.toFloatOrNull()?.div(5f) ?: RATING_UNKNOWN,
			contentRating = if (nsfw) ContentRating.ADULT else ContentRating.SAFE,
			chapters = chaptersDeferred.await(),
		)
	}

	private val dateFormat = SimpleDateFormat("yyyy-MM-dd", sourceLocale)

	private suspend fun loadChapters(baseUrl: String): List<MangaChapter> {
		val key = baseUrl.substringAfter("-").substringBefore("-")
		val seriesKey = baseUrl.substringAfterLast("/").substringBefore("-")
		val json = JSONArray(webClient.httpGet("https://api.$domain/


of entity enum, each Entity should be a dictionary {"type": entity, "text": word }'
                        }
                    },
                    "required": ["reason", "entities"]
                }
            }
        }

    prompt = """You are a NER converter who extract the named entity from the given sentence after format Question: <sentence>.
    Valid entities are : PERSON, ORGANIZATION, MISC, LOCATION
  Read the last question carefully and think step by step before answering, the final answer : entites must list of Entity schema.
  Question: Shawn has five toys. For Christmas, he got two toys each from his mom and dad. How many toys does he have now?
  """
    # prompt = """You are a math tutor who helps students of all levels understand and solve mathematical problems.
    # Read the last question carefully and think step by step before answering, the final answer must be only a number.
    # Question: Janet’s ducks lay 16 eggs per day. She eats three for breakfast every morning and bakes muffins for her friends every day with four. She sells the remainder at the farmers' market daily for $2 per fresh duck egg. How much in dollars does she make every day at the farmers' market?
    # You must output in tool
    # """
    # Output.model_json_schema()
    res_text, res_info = llm(prompt=prompt, schemas=[schema])
    print(res_text)
    print()
    from pprint import pprint
    pprint(res_info)


/*
 * MIT License
 *
 * Copyright (C) 2024, DragonDreams GmbH (info@dragondreams.ch)
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

#ifndef _DEBASEGRAPHICPROPFIELD_H_
#define _DEBASEGRAPHICPROPFIELD_H_

#include "../../../dragengine_export.h"

class dePropField;
class dePropFieldType;
class deDecal;

/**
 * \brief Graphic Module Prop Field Peer
 *
 * Peer for the prop field resource used by graphic modules.
 */
class DE_DLL_EXPORT deBaseGraphicPropField{
public:
	/** \name Constructors and Destructors */
	/*@{*/
	/** \brief Create new peer. */
	deBaseGraphicPropField();

	/** \brief Clean up peer. */
	virtual ~deBaseGraphicPropField();
	/*@}*/

	/** \name Notifications */
	/*@{*/
	/** \brief Ground changed. */
	virtual void GroundChanged();

	/** \brief Position changed. */
	virtual void PositionChanged();

	/** \brief Type has been added. */
	virtual void TypeAdded( int index, dePropFieldType *type );

	/** \brief Type has been removed. */
	virtual void TypeRemoved( int index, dePropFieldType *type );

	/** \brief All types have been removed. */
	virtual void AllTypesRemoved();

	/** \brief Type changed. */
	virtual void TypeChanged( int index, dePropFieldType *type );

	/** \brief Instances changed. */
	virtual void InstancesChanged( int index, dePropFieldType *type );

	/** \brief Instances to Bend States assignments changed. */
	virtual void AssignmentsChanged( int index, dePropFieldType *type );

	/** \brief Bend States changed. */
	virtual void BendStatesChanged( int index, dePropFieldType *type );
	/*@}*/
};

#endif


) -> u32;
    pub fn TEE_BigIntFMMContextSizeInU32(modulusSizeInBits: u32) -> u32;

    // TEE Arithmetical API - Initialization functions

    pub fn TEE_BigIntInit(bigInt: *mut TEE_BigInt, len: u32) -> c_void;
    pub fn TEE_BigIntInitFMMContext(
        context: *mut TEE_BigIntFMMContext,
        len: u32,
        modulus: *const TEE_BigInt,
    ) -> c_void;
    pub fn TEE_BigIntInitFMM(bigIntFMM: *mut TEE_BigIntFMM, len: u32) -> c_void;

    // TEE Arithmetical API - Converter functions

    pub fn TEE_BigIntConvertFromOctetString(
        dest: *mut TEE_BigInt,
        buffer: *const u8,
        bufferLen: u32,
        sign: i32,
    ) -> TEE_Result;
    pub fn TEE_BigIntConvertToOctetString(
        buffer: *mut u8,
        bufferLen: *mut u32,
        bigInt: *const TEE_BigInt,
    ) -> TEE_Result;
    pub fn TEE_BigIntConvertFromS32(dest: *mut TEE_BigInt, shortVal: i32) -> c_void;
    pub fn TEE_BigIntConvertToS32(dest: *mut i32, src: *const TEE_BigInt) -> TEE_Result;

    // TEE Arithmetical API - Logical operations

    pub fn TEE_BigIntCmp(op1: *const TEE_BigInt, op2: *const TEE_BigInt) -> i32;
    pub fn TEE_BigIntCmpS32(op: *const TEE_BigInt, shortVal: i32) -> i32;
    pub fn TEE_BigIntShiftRight(
        dest: *mut TEE_BigInt,
        op: *const TEE_BigInt,
        bits: size_t,
    ) -> c_void;
    pub fn TEE_BigIntGetBit(src: *const TEE_BigInt, bitIndex: u32) -> bool;
    pub fn TEE_BigIntGetBitCount(src: *const TEE_BigInt) -> u32;
    pub fn TEE_BigIntAdd(
        dest: *mut TEE_BigInt,
        op1: *const TEE_BigInt,
        op2: *const TEE_BigInt,
    ) -> c_void;
    pub fn TEE_BigIntSub(
        dest: *mut TEE_BigInt,
        op1: *const TEE_BigInt,
        op2: *const TEE_BigInt,
    ) -> c_void;
    pub fn TEE_BigIntNeg(dest: *mut TEE_BigInt, op: *const TEE_BigInt) -> c_void;
    pub fn TEE_BigIntMul(
        dest: *mut TEE_BigInt,
        op1: *const TEE_BigInt,
        op2: *const TEE_BigInt,
    ) -> c_void;
    pub fn TEE_BigIntSquare(dest: *mut TEE_BigInt, op: *const TEE_BigInt) -> c_void;
    pub fn TEE_BigIntDiv(
        dest_q: *mut TEE_BigInt,
        dest_r: *mut TEE_BigInt,
        op1: *const TEE_BigInt,
        op2: *const TEE_BigInt,
    ) -> c_void;

    // TEE Arithmetical API - Modular arithmetic operations

    pub fn TEE_BigIntMod(
        dest: *mut TEE_BigInt,
        op: *const TEE_BigInt,
        n: *const TEE_BigInt,
    ) -> c_void;
    pub fn TEE_BigIntAddMod(
        dest: *mut TEE_BigInt,
        op1: *const TEE_BigInt,
        op2: *const TEE_BigInt,
        n: *const TEE_BigInt,


on (see enum gsi_iterator_update). Scan the statements in SEQ
   for new operands.  */

void
gsi_insert_seq_before (gimple_stmt_iterator *i, gimple_seq seq,
		       enum gsi_iterator_update mode)
{
  update_modified_stmts (seq);
  gsi_insert_seq_before_without_update (i, seq, mode);
}

/* Insert the sequence delimited by nodes FIRST and LAST after
   iterator I.  M specifies how to update iterator I after insertion
   (see enum gsi_iterator_update).

   This routine assumes that there is a forward and backward path
   between FIRST and LAST (i.e., they are linked in a doubly-linked
   list).  Additionally, if FIRST == LAST, this routine will properly
   insert a single node.  */

static void
gsi_insert_seq_nodes_after (gimple_stmt_iterator *i,
			    gimple_seq_node first,
			    gimple_seq_node last,
			    enum gsi_iterator_update m)
{
  basic_block bb;
  gimple_seq_node cur = i->ptr;

  gcc_assert (!cur || cur->prev);

  /* If the iterator is inside a basic block, we need to update the
     basic block information for all the nodes between FIRST and LAST.  */
  if ((bb = gsi_bb (*i)) != NULL)
    update_bb_for_stmts (first, last, bb);

  /* Link SEQ after CUR.  */
  if (cur)
    {
      last->next = cur->next;
      if (last->next)
	{
	  last->next->prev = last;
	}
      else
	gimple_seq_set_last (i->seq, last);
      first->prev = cur;
      cur->next = first;
    }
  else
    {
      gcc_assert (!gimple_seq_last (*i->seq));
      last->next = NULL;
      gimple_seq_set_first (i->seq, first);
      gimple_seq_set_last (i->seq, last);
    }

  /* Update the iterator, if requested.  */
  switch (m)
    {
    case GSI_NEW_STMT:
      i->ptr = first;
      break;
    case GSI_LAST_NEW_STMT:
    case GSI_CONTINUE_LINKING:
      i->ptr = last;
      break;
    case GSI_SAME_STMT:
      gcc_assert (cur);
      break;
    default:
      gcc_unreachable ();
    }
}

/* Links sequence SEQ after the statement pointed-to by iterator I.
   MODE is as in gsi_insert_after.

   This function does not scan for new operands.  It is provided for
   the use of the gimplifier, which manipulates statements for which
   def/use information has not yet been constructed.  Most callers
   should use gsi_insert_seq_after.  */

void
gsi_insert_seq_after_without_update (gimple_stmt_iterator *i, gimple_seq seq,
                                     enum gsi_iterator_update mode)
{
  gimple_seq_node first, last;

  if (seq == NULL)
    return;

  /* Don't allow inserting a sequence into itself.  */
  gcc_assert (seq != *i->seq);

  first = gimple_seq_first (seq);
  last = gimple_seq_last (seq);

  /* Empty sequences need no work.  */
  if (!first || !last)
    {
      gcc_assert (first == last);
      return;
    }

  gsi_insert_seq_nodes_after (i, first, last, mode);
}

/* Links sequence SEQ after the statement pointed-to by iterator I.
   MODE is as in gsi_insert_after.  Scan the statements in SEQ
   for new operands.  */

void
gsi_insert_seq_after (gimple_stmt_iterator *i, gimple_seq seq,
		      enum gsi_iterator_update mode)
{
  update_modified_stmts (seq);
  gs


   icon:SetAngleVertex(2, 3)
            icon:SetMinMaxValues(0, 1)
        else
            icon = _G.CreateFrame("StatusBar", name, ClassPower)
            icon:SetSize(size.width, size.height)

            local bg = icon:CreateTexture(nil, "BACKGROUND")
            bg:SetAllPoints()
            icon.bg = bg
        end

        local tex
        if playerClass == "PALADIN" then
            icon:SetPoint("CENTER")
            tex = texture[index]
        else
            PositionIcon(icon, index, ClassPower[index-1])
            tex = texture
        end

        if not tex then
            tex = powerTextures.circle
        end
        icon:SetStatusBarTexture(tex)
        icon.bg:SetTexture(tex)
        icon.bg.multiplier = 0.5

        ClassPower[index] = icon
    end

    CombatFader:RegisterFrameForFade(MODNAME, ClassPower)
    if self.isRunes then
        ClassPower:SetPoint("CENTER", -160, -40.5)
    else
        FramePoint:PositionFrame(self, ClassPower, {"class", "points", "position"})
    end

    local lastChargedIndex
    function ClassPower.PostUpdate(element, curPoints, maxPoints, hasMaxChanged, powerType, chargedIndex)
        if not curPoints or not powerType then return end
        self:debug("ClassPower:PostUpdate", curPoints, maxPoints, hasMaxChanged, powerType, chargedIndex)

        local showUnused = not pointDB.hideempty or self.configMode
        local hasPartial = (curPoints - floor(curPoints)) > 0
        local hasChargedPoint = chargedIndex and chargedIndex <= curPoints
        self:debug("data", showUnused, hasPartial, hasChargedPoint)

        local color = element.__owner.colors.power[powerType]
        local r, g, b = color[1], color[2], color[3]
        local mu = element[1].bg.multiplier

        if lastChargedIndex and lastChargedIndex ~= chargedIndex then
            element[lastChargedIndex].bg:SetVertexColor(r * mu, g * mu, b * mu)
            element[lastChargedIndex]:SetStatusBarColor(r, g, b)
        end
        lastChargedIndex = chargedIndex

        for i = 1, maxPoints or 0 do
            local icon = element[i]
            local isPartial = hasPartial and ceil(curPoints) == i
            local isUnused = i > ceil(curPoints)
            self:debug("Icon", i, isPartial, isUnused)

            if i == chargedIndex then
                if hasChargedPoint then
                    r, g, b = 0.25, 0.75, 1
                    icon.bg:SetVertexColor(r * mu, g * mu, b * mu)
                    icon:SetStatusBarColor(r, g, b)
                end
            end

            if hasPartial and isPartial then
                icon:SetAlpha(0.5)
            else
                icon:SetAlpha(1)
            end

            if isUnused then
                if showUnused or (chargedIndex and i <= chargedIndex) then
                    icon:Show()
                else
                    icon:Hide()
                end
            end
        end
    end

    unitFrame.ClassPower = ClassPower
    return ClassPower
end
function ClassResource:CreateRunes(unitFrame, unit)
    self:debug("CreateRunes", unit)
    local Runes = _G.CreateFrame("Frame", nil, unitFrame)
    Runes:SetSize(16, 16)
    Runes.colorSpec = true

    local size = pointDB.size
    for index = 1, power.max do
        local Rune = _G.CreateFrame("StatusBar", nil, Runes)
        Rune:SetOrientation("VERTICAL")
        Rune:SetSize(size.width, size.height)
        Position


plAsync('hei_Carrier_int2')
	RequestIplAsync('hei_Carrier_int3')
	RequestIplAsync('hei_Carrier_int4')
	RequestIplAsync('hei_Carrier_int5')
	RequestIplAsync('hei_Carrier_int6')
	RequestIplAsync('hei_carrier_LODLights')

	RequestIplAsync('bkr_bi_id1_23_door')
	RequestIplAsync('lr_cs6_08_grave_closed')
	RequestIplAsync('hei_sm_16_interior_v_bahama_milo_')
	RequestIplAsync('CS3_07_MPGates')
	RequestIplAsync('cs5_4_trains')
	RequestIplAsync('v_lesters')
	RequestIplAsync('v_trev


Vector.fromBoxedUnsignedShorts(v, v, v, v);
          break;
        }
        case INT32: {
          int v = 123456789;
          s = Scalar.fromInt(v);
          expected = ColumnVector.fromBoxedInts(v, v, v, v);
          break;
        }
        case UINT32: {
          int v = 0x89abcdef;
          s = Scalar.fromUnsignedInt(v);
          expected = ColumnVector.fromBoxedUnsignedInts(v, v, v, v);
          break;
        }
        case INT64: {
          long v = 1234567890123456789L;
          s = Scalar.fromLong(v);
          expected = ColumnVector.fromBoxedLongs(v, v, v, v);
          break;
        }
        case UINT64: {
          long v = 0xfedcba9876543210L;
          s = Scalar.fromUnsignedLong(v);
          expected = ColumnVector.fromBoxedUnsignedLongs(v, v, v, v);
          break;
        }
        case FLOAT32: {
          float v = 1.2345f;
          s = Scalar.fromFloat(v);
          expected = ColumnVector.fromBoxedFloats(v, v, v, v);
          break;
        }
        case FLOAT64: {
          double v = 1.23456789;
          s = Scalar.fromDouble(v);
          expected = ColumnVector.fromBoxedDoubles(v, v, v, v);
          break;
        }
        case TIMESTAMP_DAYS: {
          int v = 12345;
          s = Scalar.timestampDaysFromInt(v);
          expected = ColumnVector.daysFromInts(v, v, v, v);
          break;
        }
        case TIMESTAMP_SECONDS: {
          long v = 1234567890123456789L;
          s = Scalar.timestampFromLong(DType.TIMESTAMP_SECONDS, v);
          expected = ColumnVector.timestampSecondsFromLongs(v, v, v, v);
          break;
        }
        case TIMESTAMP_MILLISECONDS: {
          long v = 1234567890123456789L;
          s = Scalar.timestampFromLong(DType.TIMESTAMP_MILLISECONDS, v);
          expected = ColumnVector.timestampMilliSecondsFromLongs(v, v, v, v);
          break;
        }
        case TIMESTAMP_MICROSECONDS: {
          long v = 1234567890123456789L;
          s = Scalar.timestampFromLong(DType.TIMESTAMP_MICROSECONDS, v);
          expected = ColumnVector.timestampMicroSecondsFromLongs(v, v, v, v);
          break;
        }
        case TIMESTAMP_NANOSECONDS: {
          long v = 1234567890123456789L;
          s = Scalar.timestampFromLong(DType.TIMESTAMP_NANOSECONDS, v);
          expected = ColumnVector.timestampNanoSecondsFromLongs(v, v, v, v);
          break;
        }
        case STRING: {
          String v = "hello, world!";
          s = Scalar.fromString(v);
          expected = ColumnVector.fromStrings(v, v, v, v);
          break;
        }
        case DURATION_DAYS: {
          int v = 13;
          s = Scalar.durationDaysFromInt(v);
          expected = ColumnVector.durationDaysFromInts(v, v, v, v);
          break;
        }
        case DURATION_MICROSECONDS: {
          long v = 1123123123L;
          s = Scalar.durationFromLong(DType.DURATION_MICROSECONDS, v);
          expected = ColumnVector.durationMicroSecondsFromLongs(v, v, v, v);
          break;
        }
        case DURATION_MILLISECONDS: {
          long v = 11212432423L;
          s = Scalar.durationFromLong(DType.DURATION_MILLISECONDS, v);
          expected = ColumnVector.durationMilliSecondsFromLongs(v, v, v, v);
          break;
        }


巨人",nil},
[10986] = {"雪盲鹰身人",nil},
[10987] = {"深铁穴居怪",nil},
[10988] = {"科多之魂",nil},
[10989] = {"暴风雪元素",nil},
[10990] = {"奥特兰克山羊",nil},
[10991] = {"蛮爪豺狼人",nil},
[10992] = {"被激怒的黑豹",nil},
[10993] = {"图兹维克·斯普格林","工程学训练师"},
[10996] = {"英雄之魂",nil},
[10997] = {"炮手威利",nil},
[11016] = {"被俘虏的亚科纳琳",nil},
[11017] = {"罗克希克","工程学训练师"},
[11018] = {"亚科纳琳",nil},
[11019] = {"杰希尔·月弓",nil},
[11020] = {"特雷·莱弗治的残骸",nil},
[11021] = {"冬泉霜刃豹",nil},
[11022] = {"阿莱克斯·巴罗夫","巴罗夫家族"},
[11023] = {"维尔顿·巴罗夫","巴罗夫家族"},
[11024] = {"戴拉","杰希尔的宠物"},
[11025] = {"穆德拉克","工程学训练师"},
[11026] = {"斯普莱特","初级技师"},
[11027] = {"幻影怨灵",nil},
[11028] = {"耶玛","初级技师"},
[11029] = {"特里克希","初级技师"},
[11030] = {"无脑的亡灵",nil},
[11031] = {"弗兰克林·洛伊德","工程学训练师"},
[11032] = {"狂热的玛洛尔",nil},
[11033] = {"烟鬼拉鲁恩",nil},
[11034] = {"玛克斯韦尔·泰罗索斯男爵","银色黎明"},
[11035] = {"贝蒂娜·比格辛克","银色黎明"},
[11036] = {"莱尼德·巴萨罗梅","银色黎明"},
[11037] = {"洁娜·雷姆尼利","工程学训练师"},
[11038] = {"护理者奥林","银色黎明"},
[11039] = {"尼古拉斯·瑟伦霍夫公爵","银色黎明"},
[11040] = {"守夜人布隆尼尔","守夜人"},
[11041] = {"米拉·法拉科纳","初级炼金师"},
[11042] = {"希尔瓦娜·林月","初级炼金师"},
[11043] = {"红衣僧侣",nil},
[11044] = {"马丁·费尔本","初级炼金师"},
[11045] = {"博恩斯",nil},
[11046] = {"伍特


  test("torus1", () {
    GeometryBuilder gb = TorusKnotGeometry(
        radius: 20.0,
        tubeRadius: 4.0,
        segmentsR: 4,
        segmentsT: 4,
        p: 1,
        q: 0,
        wrap: false,
        heightScale: 1.0,
        computeNormals: true);
    expect(gb.GenerateFaceIndices().length, equals(4 * 4 * 6));
    expect(gb.IsOrientableManifoldWithBoundaries(), equals(true));
  });

  test("torus2", () {
    GeometryBuilder gb = TorusKnotGeometry(
        radius: 20.0,
        tubeRadius: 4.0,
        segmentsR: 128,
        segmentsT: 16,
        p: 2,
        q: 3,
        wrap: false,
        heightScale: 1.0,
        computeNormals: true);
    expect(gb.GenerateFaceIndices().length, equals(128 * 16 * 6));
    expect(gb.IsOrientableManifoldWithBoundaries(), equals(true));
  });

  test("torus_wireframe", () {
    GeometryBuilder gb = TorusKnotGeometryWireframeFriendly(
        radius: 20.0,
        tubeRadius: 4.0,
        segmentsR: 128,
        segmentsT: 16,
        p: 3,
        q: 4,
        heightScale: 1.0,
        computeNormals: true);
    expect(gb.GenerateFaceIndices().length, equals(16 * 128 * 6));
    expect(gb.IsOrientableManifoldWithBoundaries(), equals(true));
  });

  print("PASS");
}
part of shape;

final List<VM.Vector3> _CubeNormals = [
  // Front face
  VM.Vector3(0.0, 0.0, 1.0),
  // Back face
  VM.Vector3(0.0, 0.0, -1.0),
  // Top face
  VM.Vector3(0.0, 1.0, 0.0),
  // Bottom face
  VM.Vector3(0.0, -1.0, 0.0),
// Right face
  VM.Vector3(1.0, 0.0, 0.0),
  // Left face
  VM.Vector3(-1.0, 0.0, 0.0)
];

/// Returns a GeometryBuilder for Cube with TexUVs and optionally
/// Normals.
GeometryBuilder CubeGeometry(
    {double x = 1.0,
    double y = 1.0,
    double z = 1.0,
    double uMin = 0.0,
    double uMax = 1.0,
    double vMin = 0.0,
    double vMax = 1.0,
    bool computeNormals = true}) {
  List<VM.Vector3> vertices = [
    // Front face
    VM.Vector3(-x, -y, z),
    VM.Vector3(x, -y, z),
    VM.Vector3(x, y, z),
    VM.Vector3(-x, y, z),

    // Back face
    VM.Vector3(-x, -y, -z),
    VM.Vector3(-x, y, -z),
    VM.Vector3(x, y, -z),
    VM.Vector3(x, -y, -z),

    // Top face
    VM.Vector3(-x, y, -z),
    VM.Vector3(-x, y, z),
    VM.Vector3(x, y, z),
    VM.Vector3(x, y, -z),

    // Bottom face
    VM.Vector3(x, -y, z),
    VM.Vector3(-x, -y, z),
    VM.Vector3(-x, -y, -z),
    VM.Vector3(x, -y, -


ppString() {
        return realGppString;
    }

    @Nullable
    public String getRealGppSid() {
        return realGppSid;
    }

    /**
     * Truth table. Fetches advertising identifier based TCF 2.0 Purpose1 value.
     *

     * deviceAccessConsent=true   deviceAccessConsent=false  deviceAccessConsent undefined
     *

     * gdprApplies=false        Yes, read IDFA             No, don’t read IDFA           Yes, read IDFA
     * gdprApplies=true         Yes, read IDFA             No, don’t read IDFA           No, don’t read IDFA
     * gdprApplies=undefined    Yes, read IDFA             No, don’t read IDFA           Yes, read IDFA
     */
    public boolean canAccessDeviceData() {
        final int deviceConsentIndex = 0;

        if (prebidGdpr2Subject != null && prebidGdpr2PurposeConsents != null && prebidGdpr2PurposeConsents.length() > 0) {
            return checkDeviceDataAccess(
                prebidGdpr2Subject.equals(Boolean.TRUE),
                prebidGdpr2PurposeConsents.charAt(deviceConsentIndex) == '1'
            );
        }

        Boolean gdprApplies = getRealSubjectToGdprBoolean();
        Boolean deviceAccessConsent = getGdprPurposeConsent(realGdpr2PurposeConsents, deviceConsentIndex);
        return checkDeviceDataAccess(gdprApplies, deviceAccessConsent);
    }

    private boolean checkDeviceDataAccess(
        @Nullable Boolean gdprApplies,
        @Nullable Boolean deviceAccessConsent
    ) {
        if (deviceAccessConsent == null && gdprApplies == null) {
            return true;
        }

        if (deviceAccessConsent == null && Boolean.FALSE.equals(gdprApplies)) {
            return true;
        }

        return Boolean.TRUE.equals(deviceAccessConsent);
    }

}
/*
 *    Copyright 2018-2021 Prebid.org, Inc.
 *
 *    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 org.prebid.mobile.rendering.video.vast;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;

public class Icon extends VASTParserBase {

    private final static String VAST_ICON = "Icon";
    private final static String VAST_STATICRESOURCE = "StaticResource";
    private final static String VAST_IFRAMERESOURCE = "IFrameResource";
    private final static String VAST_HTMLRESOURCE = "HTMLResource";
    private final static String VAST_ICONCLICKS = "IconClicks";
    private final static String VAST_ICONVIEWTRACKING = "IconViewTracking";

    private String program;
    private String width;
    private String height;
    private String xPosition;
    private String yPosition;
    private String duration;
    private String offset;
    private String apiFramework;

    private StaticResource staticResource;
    private IFrameResource iFrameResource;
    private HTMLResource htmlResource;
    private IconClicks iconClicks;
    private IconViewTracking iconViewTracking;

    public Icon(XmlPullParser p) throws XmlPullParserException, IOException {

        p.require(XmlPullParser.START_TAG, null, VAST_IC


x()).pj_45_(this.pj_x())).pj_42_($asNil$($asNil$(c).pj_y()).pj_45_(this.pj_y()))).pj_45_($asNil$($asNil$($asNil$(b).pj_y()).pj_45_(this.pj_y())).pj_42_($asNil$($asNil$(c).pj_x()).pj_45_(this.pj_x())))}
pj_truncateTo_(grid){var gridPoint;gridPoint=$asNil$(grid).pj_asPoint();return $asNil$($asNil$(this.x).pj_truncateTo_($asNil$(gridPoint).pj_x())).pj_64_($asNil$(this.y).pj_truncateTo_($asNil$(gridPoint).pj_y()))}
pj_truncated(){if(true==this.pj_isIntegerPoint()){return this};return $asNil$($asNil$(this.x).pj_truncated()).pj_64_($asNil$(this.y).pj_truncated())}
pj_veryDeepCopyWith_(deepCopier){return this}
pj_x(){return this.x}
pj_y(){return this.y}
static pj_approvedSelectorsForMethodFinder(){return this.pj_selectors()}
static pj_r_degrees_(rho,degrees){return $asNil$(this.pj_basicNew()).pj_setR_degrees_(rho,degrees)}
static pj_r_theta_(radius,angle){return $asNil$($asNil$(radius).pj_42_($asNil$(angle).pj_cos())).pj_64_($asNil$(radius).pj_42_($asNil$(angle).pj_sin()))}
static pj_settingInputWidgetForNode_(aSettingNode){return $asNil$(aSettingNode).pj_inputWidgetForPoint()}
static pj_x_y_(xInteger,yInteger){return $asNil$(this.pj_basicNew()).pj_setX_setY_(xInteger,yInteger)}
static cp$={}},{},{});Smalltalk.installClassExtension(class{
pj_44_(other){var $1;return ($1=$asNil$($asNil$(this.pj_class()).pj_new()),$1.pj_addAll_(this),$1.pj_addAll_(other),$1.pj_yourself())}
pj_61_(anArray){var $_err_$={};try{if(this===anArray){return true};if(false==$asNil$(anArray).pj_isKindOf_(Array)){return false};if(false==$asNil$(this.pj_size()).pj_61_($asNil$(anArray).pj_size())){return false};this.pj_with_do_(anArray,(myElement,otherElement)=>{if(true==$asNil$(myElement).pj_61_(otherElement)){return null}else{throw $_err_$=false}});return true}catch(e){if(e===$_err_$)return e;throw e}}
pj_add_(x){return this.pj_addLast_(x)}
pj_addAll_(aCollection){var $_self_$=this;$asNil$(aCollection).pj_do_((each)=>{return $_self_$.pj_add_(each)});return aCollection}
pj_addAllLast_(aCollection){var $_self_$=this;$asNil$(aCollection).pj_do_((each)=>{return $_self_$.pj_addLast_(each)});return aCollection}
pj_addFirst_(x){this.unshift(x);return x}
pj_addLast_(x){this.push(x);return x}
pj_allButFirst(){return this.pj_allButFirst_(1)}
pj_allButFirst_(n){return this.pj_copyFrom_to_(n+1,this.pj_size())}
pj_allButLast(){return this.


local overlords = {
	["energy overlord"] = { storage = Storage.Quest.U8_2.ElementalSpheres.BossStorage, globalStorage = Storage.Quest.U8_2.ElementalSpheres.KnightBoss },
	["fire overlord"] = { storage = Storage.Quest.U8_2.ElementalSpheres.BossStorage, globalStorage = Storage.Quest.U8_2.ElementalSpheres.SorcererBoss },
	["ice overlord"] = { storage = Storage.Quest.U8_2.ElementalSpheres.BossStorage, globalStorage = Storage.Quest.U8_2.ElementalSpheres.PaladinBoss },
	["earth overlord"] = { storage = Storage.Quest.U8_2.ElementalSpheres.BossStorage, globalStorage = Storage.Quest.U8_2.ElementalSpheres.DruidBoss },
	["lord of the elements"] = {},
}

local elementalSphe


ebp-Ch]
  int v19; // [esp+2Ch] [ebp-8h]
  float v20; // [esp+2Ch] [ebp-8h]
  float v21; // [esp+2Ch] [ebp-8h]
  int v22; // [esp+30h] [ebp-4h]
  float v23; // [esp+30h] [ebp-4h]

  sub_402E60();
  sub_4024A0(-5.0, 3.0, 0.0, 0.5);
  sub_4029E0(-1093874483, -1093874483, 0, 1053609165, 1053609165, 0);
  sub_402E60();
  sub_402580(0.039999999, 0.039999999, 0.039999999);
  sub_402D40(-1055182029, -1055706317, 0);
  v2 = this + 13;
  v22 = 20;
  do
  {
    v3 = v2;
    v4 = 20;
    do
    {
      *v3 = (v3[3] - *v3) * 0.33333334 + *v3;
      v3[1] = (v3[4] - v3[1]) * 0.33333334 + v3[1];
      *(float *)&v19 = (v3[5] - v3[2]) * 0.1 + v3[2];
      v3[2] = *(float *)&v19;
      sub_402D40(0, 0, v19);
      if ( !*((_BYTE *)v3 - 3) )
      {
        sub_402E60();
        sub_4024A0(v3[6], 1.0, 0.0, -1.0);
        sub_402580(*v3, *v3, *v3);
      }
      sub_401110(*((_BYTE *)v3 - 4));
      if ( !*((_BYTE *)v3 - 3) )
        sub_402F00();
      *(float *)&v17 = -v3[2];
      sub_402D40(1065353216, 0, v17);
      if ( !*((_BYTE *)v3 - 3) )
      {
        v3[6] = v3[6] + 20.0;
        if ( v3[2] > 49.0 )
          *((_BYTE *)v3 - 4) = 32;
      }
      v3 += 180;
      --v4;
    }
    while ( v4 );
    sub_402D40(-1046478848, 0, 0);
    sub_402D40(0, 1065353216, 0);
    v2 += 9;
    --v22;
  }
  while ( v22 );
  sub_402F00();
  this[2] = ((double)*((int *)this + 4) - this[2]) * 0.69999999 + this[2];
  this[3] = ((double)*((int *)this + 5) - this[3]) * 0.69999999 + this[3];
  v5 = sub_4017C0();
  *(float *)&v16 = this[3] * 0.039999999 - 0.40000001;
  *(float *)&v15 = this[2] * 0.039999999 - 0.40000001;
  *(float *)&v14 = (this[3] + 1.0) * 0.039999999 - 0.40000001;
  *(float *)&v13 = (this[2] + 1.0) * 0.039999999 - 0.40000001;
  if ( v5 % 1000 >= 500 )
    sub_4029E0(v13, v14, 0, v15, v16, 0);
  else
    sub_402840(v13, v14, 0, v15, v16, 0);
  v6 = this[6] + this[9];
  v20 = 0.02;
  this[6] = v6;
  v18 = this[10] + this[7];
  v7 = 0.02;
  this[7] = v18;
  if ( v6


text')
  String? get text;

  /// The plain text used to compose the status's subject or content warning.
  @override
  @JsonKey(name: 'spoiler_text')
  String? get spoilerText;

  /// Create a copy of StatusSource
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$StatusSourceImplCopyWith<_$StatusSourceImpl> get copyWith =>
      throw _privateConstructorUsedError;
}
// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark

part of 'web_push_subscription.dart';

// **************************************************************************
// FreezedGenerator
// **************************************************************************

T _$identity<T>(T value) => value;

final _privateConstructorUsedError = UnsupportedError(
    'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');

WebPushSubscription _$WebPushSubscriptionFromJson(Map<String, dynamic> json) {
  return _WebPushSubscription.fromJson(json);
}

/// @nodoc
mixin _$WebPushSubscription {
  /// The ID of the Web Push subscription in the database.
  @JsonKey(name: 'id')
  int? get id => throw _privateConstructorUsedError;

  /// Where push alerts will be sent to.
  @JsonKey(name: 'endpoint')
  String? get endpoint => throw _privateConstructorUsedError;

  /// The streaming server's VAPID key.
  @JsonKey(name: 'server_key')
  String? get serverKey => throw _privateConstructorUsedError;

  /// Which alerts should be delivered to the [endpoint].
  @JsonKey(name: 'alerts')
  WebPushSubscriptionAlerts? get alerts => throw _privateConstructorUsedError;

  /// Serializes this WebPushSubscription to a JSON map.
  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;

  /// Create a copy of WebPushSubscription
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $WebPushSubscriptionCopyWith<WebPushSubscription> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $WebPushSubscriptionCopyWith<$Res> {
  factory $WebPushSubscriptionCopyWith(
          WebPushSubscription value, $Res Function(WebPushSubscription) then) =
      _$WebPushSubscriptionCopyWithImpl<$Res, WebPushSubscription>;
  @useResult
  $Res call(
      {@JsonKey(name: 'id') int? id,
      @JsonKey(name: 'endpoint') String? endpoint,
      @JsonKey(name: 'server_key') String? serverKey,
      @JsonKey(name: 'alerts') WebPushSubscriptionAlerts? alerts});

  $WebPushSubscriptionAlertsCopyWith<$Res>? get alerts;
}

/// @nodoc
class _$WebPushSubscriptionCopyWithImpl<$Res, $Val extends WebPushSubscription>
    implements $WebPushSubscriptionCopyWith<$Res> {
  _$WebPushSubscriptionCopyWithImpl(this._value, this._then);

  // ignore: unus


			activeDidState("MRPIN.home")
// 								},
// 								{
// 									and(
// 										activeDidState("PIN.CH"),
// 										activeDidState("flagTI.8"),
// 									)
// 								},
// 								{
// 									activeDidState("flagTI.9")
// 								},
// 								{
// 									activeDidState("AUT_CMS")
// 								},
// 							)

// 						CONTACTLESS:
// 							or(
// 								{
// 									and(
// 										activeDidState("AUT_PACE"),
// 										activeDidState("MRPIN.home"),
// 									)
// 								},
// 								{
// 									and(
// 										activeDidState("AUT_PACE"),
// 										activeDidState("PIN.CH"),
// 										activeDidState("flagTI.8"),
// 									)
// 								},
// 								{
// 									and(
// 										activeDidState("AUT_PACE"),
// 										activeDidState("flagTI.9"),
// 									)
// 								},
// 								{
// 									and(
// 										activeDidState("AUT_PACE"),
// 										activeDidState("AUT_CMS"),
// 									)
// 								},
// 							)
			}
			writeAcl {
				neverAcl()
// 						AUT_CMS
			}
		}
		add {
			name = ef_c_ch_enc_r2048
			description =
				"This file contains a certificate for cryptography with RSA with the public key PuK.CH.ENC.R2048 to PrK.CH.ENC.R2048."
			path = +"C200"
			shortEf = 0x02u
			type = DatasetType.TRANSPARENT

			readAcl {
				paceProtectedAcl()
			}
			writeAcl {
				neverAcl()
			}
		}
		add {
			name = ef_c_ch_encv_r2048
			description =
				"This file contains a certificate for cryptography with RSA with the public key PuK.CH.ENCV.R2048 to PrK.CH.ENCV.R2048."
			path = +"C50A"
			shortEf = 0x0Au
			type = DatasetType.TRANSPARENT

			readAcl {
				mrPinHomePaceProtectedAcl()
// 						CONTACT:
// 							or(
// 								{
// 									activeDidState("MRPIN.home")
// 								},
// 								{
// 									and(
// 										activeDidState("PIN.CH"),
// 										activeDidState("flagTI.10"),
// 									)
// 								},
// 								{
// 									activeDidState("flagTI.11")
// 								},
// 								{
// 									activeDidState("AUT_CMS")
// 								},
// 							)

// 						CONTACTLESS:
// 							or(
// 								{
// 									and(
// 										activeDidState("AUT_PACE"),
// 										activeDidState("MRPIN.home"),
// 									)
// 								},
// 								{
// 									and(
// 										activeDidState("AUT_PACE"),
// 										activeDidState("PIN.CH"),
// 										activeDidState("flagTI.10"),
// 									)
// 								},
// 								{
// 									and(
// 										activeDidState("AUT_


vec_xst(v_dst_128s_2,  (dstStride*2) * 2, dst) ;
    vec_xst(v_dst_128s_3,  (dstStride*2) * 3, dst) ;
    vec_xst(v_dst_128s_4,  (dstStride*2) * 4, dst) ;
    vec_xst(v_dst_128s_5,  (dstStride*2) * 5, dst) ;
    vec_xst(v_dst_128s_6,  (dstStride*2) * 6, dst) ;
    vec_xst(v_dst_128s_7,  (dstStride*2) * 7, dst) ;

} // end transpose_matrix_8_altivec()

inline void transpose_matrix_16_altivec(int16_t *src, intptr_t srcStride, int16_t *dst, intptr_t dstStride)
{
    transpose_matrix_8_altivec((int16_t *)src, srcStride, (int16_t *)dst, dstStride) ;
    transpose_matrix_8_altivec((int16_t *)&src[8] , srcStride, (int16_t *)&dst[dstStride*8], dstStride) ;
    transpose_matrix_8_altivec((int16_t *)&src[srcStride*8], srcStride, (int16_t *)&dst[8], dstStride) ;
    transpose_matrix_8_altivec((int16_t *)&src[srcStride*8 + 8], srcStride, (int16_t *)&dst[dstStride*8 + 8], dstStride) ;
} // end transpose_matrix_16_altivec()

inline void transpose_matrix_32_altivec(int16_t *src, intptr_t srcStride, int16_t *dst, intptr_t dstStride)
{
    transpose_matrix_16_altivec((int16_t *)src, srcStride, (int16_t *)dst, dstStride) ;
    transpose_matrix_16_altivec((int16_t *)&src[16] , srcStride, (int16_t *)&dst[dstStride*16], dstStride) ;
    transpose_matrix_16_altivec((int16_t *)&src[srcStride*16], srcStride, (int16_t *)&dst[16], dstStride) ;
    transpose_matrix_16_altivec((int16_t *)&src[srcStride*16 + 16], srcStride, (int16_t *)&dst[dstStride*16 + 16], dstStride) ;
} // end transpose_matrix_32_altivec()

inline static void partialButterfly32_transposedSrc_altivec(const int16_t* __restrict__ src, int16_t* __restrict__ dst, int shift)
{
    const int line = 32 ;

    int j, k;
    int E[16][8], O[16][8];
    int EE[8][8], EO[8][8];
    int EEE[4][8], EEO[4][8];
    int EEEE[2][8], EEEO[2][8];
    int add = 1 << (shift - 1);

    for (j = 0; j < line/8; j++)
    {
        /* E and O*/
        for(int ii=0; ii<8; ii++) { E[0][ii] = src[(0*line) + ii] + src[((31 - 0)*line) + ii] ; }
        for(int ii=0; ii<8; ii++) { O[0][ii] = src[(0*line) + ii] - src[((31 - 0)*line) + ii] ; }

        for(int ii=0; ii<8; ii++) { E[1][ii] = src[(1*line) +


is.isLive,
    this.isNews,
    this.isKids,
    this.isPremiere,
    this.timerId,
    this.currentProgram,
    this.movieCount,
    this.seriesCount,
    this.imagesCustom,
  });

  factory Item.fromJson(Map<String, dynamic> json) => _$ItemFromJson(json);

  Map<String, dynamic> toJson() => _$ItemToJson(this);
}

import 'package:moeloaderflutter/net/download.dart';
import 'package:moeloaderflutter/ui/common/common.dart';
import 'package:moeloaderflutter/ui/common/ui_const.dart';
import 'package:moeloaderflutter/util/common_function.dart';
import 'package:clipboard/clipboard.dart';
import 'package:flutter/material.dart';
import 'package:moeloaderflutter/init.dart';
import 'package:logging/logging.dart';

class DownloadPage extends StatefulWidget {
  const DownloadPage({super.key});

  @override
  State<StatefulWidget> createState() {
    return _DownloadState();
  }
}

class _DownloadState extends State<DownloadPage> {
  final _log = Logger("_DownloadState");

  @override
  Widget build(BuildContext context) {
    return StreamBuilder<DownloadState>(
        initialData: DownloadManager().curState(),
        stream: DownloadManager().downloadStream(),
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          return Scaffold(
            body: _buildBody(context, snapshot),
            appBar: _buildAppBar(context),
          );
        });
  }

  AppBar _buildAppBar(BuildContext context) {
    List<Widget> children = [];
    children.add(const Text(
      "下载列表",
      style: TextStyle(fontWeight: FontWeight.bold, fontSize: 18),
    ));
    return AppBar(
      toolbarHeight: UIConst.toolbarHeight,
      titleSpacing: 0,
      title: FittedBox(
        child: Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: children,
        ),
      ),
      iconTheme: Theme.of(context).iconTheme,
      elevation: 10,
      actions: [_buildInfoAction(context)],
    );
  }

  Widget _buildInfoAction(BuildContext context) {
    return Padding(
        padding: appBarActionPadding(),
        child: IconButton(
            onPressed: () {
              showModalBottomSheet(
                  context: context,
                  builder: (context) {
                    return SingleChildScrollView(
                      child: Padding(
                        padding: const EdgeInsets.only(
                            left: 10, right: 10, top: 10, bottom: 10),
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            const Padding(
                              padding: EdgeInsets.only(top: 10, bottom: 10),
                              child: Text(
                                "下载存储路径：",
                                style: TextStyle(fontWeight: FontWeight.bold),
                              ),
                            ),
                            buildUrlWidget(
                                context, Global.downloadsDirectory.path)
                          ],
                        ),
                      ),
                    );
                  });
            },
            icon: const Icon(Icons.info)));
  }

  Widget _buildCopyAction(BuildContext context) {


 Node has no zone labels [Fail]
		// [1] Node with no zone labels
		// [2] Zone/Zones parameter irrelevant
		// [3] AllowedTopologies irrelevant
		{
			Name:   "Node_with_no_Zone_labels",
			Node:   nodeWithNoLabels,
			Reject: true,
		},

		// Node with Zone labels as well as Zone parameter specified [Fail]
		// [1] Node with zone labels
		// [2] Zone parameter specified
		// [3] AllowedTopologies irrelevant
		{
			Name:        "Node_with_Zone_labels_and_Zone_parameter_present",
			Node:        nodeWithZoneLabels,
			ZonePresent: true,
			Zone:        "zoneX",
			Reject:      true,
		},

		// Node with Zone labels as well as Zones parameter specified [Fail]
		// [1] Node with zone labels
		// [2] Zones parameter specified
		// [3] AllowedTopologies irrelevant
		{
			Name:         "Node_with_Zone_labels_and_Zones_parameter_present",
			Node:         nodeWithZoneLabels,
			ZonesPresent: true,
			Zones:        "zoneX,zoneY",
			Reject:       true,
		},

		// Zone parameter as well as AllowedTopologies specified [Fail]
		// [1] nil Node
		// [2] Zone parameter specified
		// [3] AllowedTopologies specified
		{
			Name:        "Nil_Node_and_Zone_parameter_and_Allowed_Topology_term",
			Node:        nil,
			ZonePresent: true,
			Zone:        "zoneX",
			AllowedTopologies: []v1.TopologySelectorTerm{
				{
					MatchLabelExpressions: []v1.TopologySelectorLabelRequirement{
						{
							Key:    v1.LabelZoneFailureDomain,
							Values: []string{"zoneX"},
						},
					},
				},
			},
			Reject: true,
		},

		// Zones parameter as well as AllowedTopologies specified [Fail]
		// [1] nil Node
		// [2] Zones parameter specified
		// [3] AllowedTopologies specified
		{
			Name:         "Nil_Node_and_Zones_parameter_and_Allowed_Topology_term",
			Node:         nil,
			ZonesPresent: true,
			Zones:        "zoneX,zoneY",
			AllowedTopologies: []v1.TopologySelectorTerm{
				{
					MatchLabelExpressions: []v1.TopologySelectorLabelRequirement{
						{
							Key:    v1.LabelZoneFailureDomain,
							Values: []string{"zoneX"},
						},
					},
				},
			},
			Reject: true,
		},

		// Key specified in AllowedTopologies is not LabelZoneFailureDomain [Fail]
		// [1] nil Node
		// [2] no Zone/Zones parameter
		// [3] AllowedTopologies with invalid key specified
		{
			Name: "Nil_Node_and_Invalid_Allowed_Topology_Key",
			Node: nil,
			AllowedTopologies: []v1.TopologySelectorTerm{
				{
					MatchLabelExpressions: []v1.TopologySelectorLabelRequirement{
						{
							Key:    "invalid_key",
							Values: []string{"zoneX"},
						},
						{
							Key:    v1.LabelZoneFailureDomain,
							Values: []string{"zoneY"},
						},
					},
				},
			},
			Reject: true,
		},

		// AllowedTopologies without keys specifying LabelZoneFailureDomain [Fail]
		// [1] nil Node
		// [2] no Zone/Zones parameter
		// [3] Invalid AllowedTopologies
		{
			Name: "Nil_Node_and_Invalid_AllowedTopologies",
			Node: nil,
			AllowedTopologies: []v1.TopologySelectorTerm{


play (dsahip, dc);
		}
	}
	if ((flags & AHISF_RECORD) && !dsahip->recording) {
		dsahip->recording = 1;
		ds_init_record (dsahip);
		ds_record (dsahip, 1);
	}
	return 0;
}

static uae_u32 AHIsub_Stop (TrapContext *ctx)
{
	uae_u32 flags = m68k_dreg (regs, 0);
	uae_u32 audioctrl = m68k_areg (regs, 2);
	struct DSAHI *dsahip = GETAHI;
	int i;

	if (ahi_debug)
		write_log (_T("AHI: Stop(%08x,%08x)\n"),
		flags, audioctrl);
	if ((flags & AHISF_PLAY) && dsahip->playing) {
		dsahip->playing = 0;
		for (i = 0; i < dsahip->channels; i++) {
			struct dschannel *dc = &dsahip->channel[i];
			ds_stop (dsahip, dc);
		}
	}
	if ((flags & AHISF_RECORD) && dsahip->recording) {
		dsahip->recording = 0;
		ds_record (dsahip, 0);
		ds_free_record (dsahip);
	}
	return 0;
}

static uae_u32 AHIsub_Update (TrapContext *ctx)
{
	uae_u32 flags = m68k_dreg (regs, 0);
	uae_u32 audioctrl = m68k_areg (regs, 2);
	struct DSAHI *dsahip = GETAHI;
	if (ahi_debug)
		write_log (_T("AHI: Update(%08x,%08x)\n"), flags, audioctrl);
	setevent (dsahip);
	return 0;
}

static uae_u32 AHIsub_SetVol (TrapContext *ctx)
{
	uae_u16 channel = m68k_dreg (regs, 0);
	uae_s32 volume = m68k_dreg (regs, 1);
	uae_s32 pan = m68k_dreg (regs, 2);
	uae_u32 audioctrl = m68k_areg (regs, 2);
	uae_u32 flags = m68k_dreg (regs, 3);
	struct DSAHI *dsahip = GETAHI;
	struct dschannel *dc = GETCHANNEL;

	if (ahi_debug > 1)
		write_log (_T("AHI: SetVol(%d,%d,%d,%08x,%08x)\n"),
		channel, volume, pan, audioctrl, flags);
	if (dc) {
		if (volume < -65535)
			volume = -65535;
		if (volume > 65535)
			volume = 65535;
		if (pan < -65535)
			pan = -65535;
		if (pan > 65535)
			pan = 65535;
		dc->csnext.volume = volume;
		dc->csnext.panning = pan;
		if (flags & AHISF_IMM) {
			ds_setvolume (dsahip, dc);
		}
	}
	return 0;
}

static uae_u32 AHIsub_SetFreq (TrapContext *ctx)
{
	uae_u16 channel = m68k_dreg (regs, 0);
	uae_u32 frequency = m68k_dreg (regs, 1);
	uae_u32 audioctrl = m68k_areg (regs, 2);
	uae_u32 flags = m68k_dreg (regs, 3);
	struct DSAHI *dsahip = GETAHI;
	struct dschannel *dc = GETCHANNEL;

	if (ahi_debug > 1)
		write_log (_T("AHI: SetFreq(%d,%d,%08x,%08x)\n"),
		channel, frequency, audioctrl, flags);
	if (dc) {
		dc->csnext.frequency = frequency;
		if (flags


    int upper = a[a.length - 1] - a[0];
    while (lower <= upper) {
      int middle = (lower + upper) / 2;
      if (check(a, m, valueToDivisors, middle)) {
        result = middle;
        upper = middle - 1;
      } else {
        lower = middle + 1;
      }
    }

    return result;
  }

  static boolean check(int[] a, int m, Map<Integer, List<Integer>> valueToDivisors, int diffLimit) {
    int[] counts = new int[m + 1];
    int covered = 0;
    int beginIndex = 0;
    for (int endIndex = 0; endIndex < a.length; ++endIndex) {
      for (int divisor : valueToDivisors.get(a[endIndex])) {
        if (counts[divisor] == 0) {
          ++covered;
        }
        ++counts[divisor];
      }

      while (a[endIndex] - a[beginIndex] > diffLimit) {
        for (int divisor : valueToDivisors.get(a[beginIndex])) {
          --counts[divisor];
          if (counts[divisor] == 0) {
            --covered;
          }
        }

        ++beginIndex;
      }

      if (covered == m) {
        return true;
      }
    }

    return false;
  }
}import java.util.ArrayList;
import java.util.List;

public class Solution {
	public String[] expand(String S) {
		List<char[]> candidatesList = new ArrayList<>();
		int index = 0;
		while (index < S.length()) {
			if (S.charAt(index) == '{') {
				int endIndex = S.indexOf('}', index);
				String[] fields = S.substring(index + 1, endIndex).split(",");

				char[] candidates = new char[fields.length];
				for (int i = 0; i < candidates.length; i++) {
					candidates[i] = fields[i].charAt(0);
				}
				candidatesList.add(candidates);

				index = endIndex + 1;
			} else {
				candidatesList.add(new char[] { S.charAt(index) });

				index++;
			}
		}

		List<String> words = new ArrayList<>();
		search(words, candidatesList, 0, new StringBuilder());
		return words.stream().sorted().toArray(String[]::new);
	}

	void search(List<String> words, List<char[]> candidatesList, int index, StringBuilder word) {
		if (index == candidatesList.size()) {
			words.add(word.toString());

			return;
		}

		for (char candidate : candidatesList.get(index)) {
			word.append(candidate);

			search(words, candidatesList, index + 1, word);

			word.deleteCharAt(word.length() - 1);
		}
	}
}
import java.util.Arrays;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();
		int m = sc.nextInt();
		int[] a = readArray(sc, n);
		int[] b = readArray(sc, m);
		System.out.println(Arrays.stream(solve(a, b)).mapToObj(String::valueOf).collect(Collectors.joining(" ")));

		sc.close();
	}

	static int[] readArray(Scanner sc, int size) {
		int[] result = new int[size];
		for (int i = 0; i < result.length; i++) {
			result[i] = sc.nextInt();
		}
		return result;
	}

	static int[] solve(int[] a, int[] b) {
		int[


, b =>
                {
                    b.Property<int>("PaymentDetailId")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int")
                        .UseIdentityColumn();

                    b.Property<string>("CardNumber")
                        .HasColumnType("nvarchar(16)");

                    b.Property<string>("CardOwnerName")
                        .HasColumnType("nvarchar(100)");

                    b.Property<string>("ExpirationDate")
                        .HasColumnType("nvarchar(5)");

                    b.Property<string>("SecurityCode")
                        .HasColumnType("nvarchar(3)");

                    b.HasKey("PaymentDetailId");

                    b.ToTable("PaymentDetails");
                });
#pragma warning restore 612, 618
        }
    }
}


s Evil',
                'description': 'Video of a fight',
                'file': fp,
            }, **kwargs)
            self.assertEqual(response.status_code, 200)

        # Delete
        uploads = FileUpload.objects.all()  # Find uploaded file & use it's ID.
        upload = list(uploads).pop()
        client.logout()
        client = self.get_logged_in_trudy_client()
        response = client.post('/teacher/course/1/lecture/1/delete_lecture_note',{
            'upload_id': upload.upload_id,
        },**kwargs)
        self.assertEqual(response.status_code, 200)
        json_string = response.content.decode(encoding='UTF-8')
        array = json.loads(json_string)
        self.assertEqual(array['message'], 'unauthorized deletion')
        self.assertEqual(array['status'], 'failed')


8 ; =ov49_0225CD58
	ldr r0, [r0, #4]
	bx r3
	nop
_0225E3A8: .word ov49_0225CD58
	thumb_func_end ov49_0225E3A0

	thumb_func_start ov49_0225E3AC
ov49_0225E3AC: ; 0x0225E3AC
	ldr r3, _0225E3B4 ; =ov49_0225CDE8
	ldr r0, [r0, #4]
	bx r3
	nop
_0225E3B4: .word ov49_0225CDE8
	thumb_func_end ov49_0225E3AC

	thumb_func_start ov49_0225E3B8
ov49_0225E3B8: ; 0x0225E3B8
	push {r3, r4, r5, r6, lr}
	sub sp, #0xc
	add r5, r0, #0
	ldr r0, _0225E3F0 ; =0x00000613
	add r4, r1, #0
	ldrb r0, [r5, r0]
	add r6, r2, #0
	cmp r0, r4
	bhi _0225E3CE
	bl GF_AssertFail
_0225E3CE:
	mov r0, #0xa
	lsl r0, r0, #0xe
	str r0, [sp, #8]
	mov r0, #0
	str r0, [sp, #4]
	lsl r0, r4, #2
	add r1, r5, r0
	mov r0, #0x82
	str r6, [sp]
	lsl r0, r0, #2
	ldr r0, [r1, r0]
	add r1, sp, #0
	bl ov49_0225CFA8
	add sp, #0xc
	pop {r3, r4, r5, r6, pc}
	nop
_0225E3F0: .word 0x00000613
	thumb_func_end ov49_0225E3B8

	thumb_func_start ov49_0225E3F4
ov49_0225E3F4: ; 0x0225E3F4
	push {r4, r5, r6, lr}
	add r5, r0, #0
	ldr r0, _0225E41C ; =0x00000613
	add r4, r1, #0
	ldrb r0, [r5, r0]
	add r6, r2, #0
	cmp r0, r4
	bhi _0225E408
	bl GF_AssertFail
_0225E408:
	lsl r0, r4, #2
	add r1, r5, r0
	mov r0, #0x82
	lsl r0, r0, #2
	ldr r0, [r1, r0]
	add r1, r6, #0
	bl ov49_0225CFEC
	pop {r4, r5, r6, pc}
	nop
_0225E41C: .word 0x00000613
	thumb_func_end ov49_0225E3F4

	thumb_func_start ov49_0225E420
ov49_0225E420: ; 0x0225E420
	push {r3, r4, r5, r6, r7, lr}
	add r5, r0, #0
	ldr r0, _0225E470 ; =0x00000613
	add r6, r1, #0
	ldrb r0, [r5, r0]
	add r7, r2, #0
	add r4, r3, #0
	cmp r0, r6
	bhi _0225E436
	bl GF_AssertFail
_0225E436:
	cmp r7, #3