/*
 * Copyright (c) 2006-2024, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2024/01/11     flyingcys    The first version
 */
#include "riscv-virt.h"
.org 0
	.section .vectors, "ax"
	.globl _start
	.type _start,@function
_start:
	.cfi_startproc
	.cfi_undefined ra
.option push
.option norelax
//	la  gp, __global_pointer$
.option pop

	// Continue primary hart
	csrr a0, mhartid
	li   a1, PRIM_HART
	bne  a0, a1, secondary

	li x1, 0
	li x2, 0
	li x3, 0
	li x4, 0
	li x5, 0
	li x6, 0
	li x7, 0
	li x8, 0
	li x9, 0
	li x10, 0
	li x11, 0
	li x12, 0
	li x13, 0
	li x14, 0
	li x15, 0
	li x16, 0
	li x17, 0
	li x18, 0
	li x19, 0
	li x20, 0
	li x21, 0
	li x22, 0
	li x23, 0
	li x24, 0
	li x25, 0
	li x26, 0
	li x27, 0
	li x28, 0
	li x29, 0
	li x30, 0
	li x31, 0

	// enable interrupt
//	li x3, 0x880
//	csrw mie, x3

	csrw mie, 0
	csrw mip, 0
   	la t0, trap_entry
 	csrw mtvec, t0

#ifndef RISCV_QEMU
	// invalidate all memor


is.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * Created by Mr.Cheng on 2017/9/12.
 */
@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        //定义key序列化方式
        RedisSerializer<String> redisSerializer = new StringRedisSerializer();//Long类型会出现异常信息;需要我们上面的自定义key生成策略，一般没必要
        template.setConnectionFactory(factory);
        template.setKeySerializer(redisSerializer);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.setHashKeySerializer(redisSerializer);
        template.setHashValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}
package com.spring.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @Description:swagger配置
 * @Author : Mr.Cheng
 * @Date:2017/5/26
 */
@Configuration
@EnableSwagger2
public class Swagger2 {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.spring.web"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Spring Boot中使用Swagger2构建RESTful APIs")
                .description("更多Spring Boot相关文章请关注：https://github.com/FurionCS")
                .termsOfServiceUrl("https://github.com/FurionCS")
                .contact("Mr.Cheng")
                .version("1.0")
                .build();
    }
}
package com.spring.persistence;

import com.spring.domain.model.User;
import com.spring.domain.type.UserStatus;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Description 用户数据接口
 * @Author ErnestCheng
 * @Date 2017/5/27.
 */
@Repository
public interface UserMapper {
    /**
     * 添加用户信息
     * @param user
     */
    void addUser(User user);

    /**
     * 通过用户id获得用户
     * @param userId
     * @


 KP587785252 * T1v);
        T1C = FNMS(KP951056516, T1B, KP587785252 * T1A);
        T1Q = FMA(KP951056516, T1A, KP587785252 * T1B);
        T1N = FMA(KP951056516, T1v, KP587785252 * T1w);
        T1D = FNMS(KP250000000, T1p, T1i);
        T1F = T1D - T1E;
        T1R = T1E + T1D;
        T1s = FNMS(KP250000000, T1f, T18);
        T1u = T1s - T1t;
        T1M = T1t + T1s;
        {
          E T1y, T1G, T1r, T1z;
          T1y = T1u - T1x;
          T1G = T1C + T1F;
          T1r = W[12];
          T1z = W[13];
          Ip[WS(rs, 3)] = FNMS(T1z, T1G, T1r * T1y);
          Im[WS(rs, 3)] = FMA(T1r, T1G, T1z * T1y);
        }
        {
          E T1U, T1W, T1T, T1V;
          T1U = T1M + T1N;
          T1W = T1R - T1Q;
          T1T = W[16];
          T1V = W[17];
          Ip[WS(rs, 4)] = FNMS(T1V, T1W, T1T * T1U);
          Im[WS(rs, 4)] = FMA(T1T, T1W, T1V * T1U);
        }
        {
          E T1I, T1K, T1H, T1J;
          T1I = T1u + T1x;
          T1K = T1F - T1C;
          T1H = W[4];
          T1J = W[5];
          Ip[WS(rs, 1)] = FNMS(T1J, T1K, T1H * T1I);
          Im[WS(rs, 1)] = FMA(T1H, T1K, T1J * T1I);
        }
        {
          E T1O, T1S, T1L, T1P;
          T1O = T1M - T1N;
          T1S = T1Q + T1R;
          T1L = W[0];
          T1P = W[1];
          Ip[0] = FNMS(T1P, T1S, T1L * T1O);
          Im[0] = FMA(T1L, T1S, T1P * T1O);
        }
      }
    }
  }
}

static const tw_instr twinstr[] = {{TW_FULL, 1, 10}, {TW_NEXT, 1, 0}};

static const hc2c_desc desc = {
    10, "hc2cb_10", twinstr, &GENUS, {72, 30, 30, 0}};

void X(codelet_hc2cb_10)(planner *p) {
  X(khc2c_register)(p, hc2cb_10, &desc, HC2C_VIA_RDFT);
}
#endif


from sqlalchemy.orm import Session
from . import models, schemas

def create_analysis_record(db: Session, analysis_data: schemas.AnalysisResponse):
    """
    save one record in db
    """
    db_record = models.AnalysisHistory(
        text=analysis_data.text,
        sentiment=analysis_data.sentiment,
        score=analysis_data.score,
    )
    db.add(db_record)
    db.commit()
    db.refresh(db_record)
    return db_record

def get_analysis_history(db: Session, skip: int = 0, limit: int = 100):
    return db.query(models.AnalysisHistory).order_by(models.AnalysisHistory.id.desc()).offset(skip).limit(limit).all()

def delete_history_item_by_id(db: Session, item_id: int):
    db_item = db.query(models.AnalysisHistory).filter(models.AnalysisHistory.id == item_id).first()
    if db_item:
        db.delete(db_item)
        db.commit()
        return db_item
    return None

def delete_all_history(db: Session):
    rows_deleted = db.query(models.AnalysisHistory).delete()
    db.commit()
    return rows_deleted


{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}],
		"32":[{"key":"cateId","name":"类型","value":[{"n":"全部","v":"32"},{"n":"国语记录片","v":"42"},{"n":"外语记录片","v":"43"}]},{"key":"letter","name":"字母","value":[{"n":"全部","v":""},{"n":"A","v":"A"},{"n":"B","v":"B"},{"n":"C","v":"C"},{"n":"D","v":"D"},{"n":"E","v":"E"},{"n":"F","v":"F"},{"n":"G","v":"G"},{"n":"H","v":"H"},{"n":"I","v":"I"},{"n":"J","v":"J"},{"n":"K","v":"K"},{"n":"L","v":"L"},{"n":"M","v":"M"},{"n":"N","v":"N"},{"n":"O","v":"O"},{"n":"P","v":"P"},{"n":"Q","v":"Q"},{"n":"R","v":"R"},{"n":"S","v":"S"},{"n":"T","v":"T"},{"n":"U","v":"U"},{"n":"V","v":"V"},{"n":"W","v":"W"},{"n":"X","v":"X"},{"n":"Y","v":"Y"},{"n":"Z","v":"Z"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"time"},{"n":"人气","v":"hits"},{"n":"评分","v":"score"}]}]
	},
	filter_def:{
		1:{cateId:'1',by:'time'},
		2:{cateId:'2',by:'time'},
		3:{cateId:'3',by:'time'},
		4:{cateId:'4',by:'time'},
		32:{cateId:'32',by:'time'}
	},
	searchUrl: '/vodsearch/**----------fypage---.html',
	class_parse: '.nav-menu-items&&li:lt(6);a&&Text;a&&href;.*/(.*?).html',
}// 地址发布页 https://subaibai.vip/
var rule = {
    title: '小虎斑素白白',
    // host:'https://www.subaibaiys.com',
    host: 'https://subaibai.vip',
    hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src = jsp.pdfh(html,".go:eq(0)&&a&&href");print(src);HOST=src', //网页域名根动态抓取js代


mns to clear
		rep				# Clear
		stosw				#  line
		movb $SCR_ROW-1,%dh		# Bottom line
putchr.4:	movw %dx,(%ebx) 		# Update position
		popa				# Restore
		ret				# To caller
/*
 * Convert EAX, AX, or AL to hex, saving the result to [EDI].
 */
hex32:		pushl %eax			# Save
		shrl $0x10,%eax 		# Do upper
		call hex16			#  16
		popl %eax			# Restore
hex16:		call hex16.1			# Do upper 8
hex16.1:	xchgb %ah,%al			# Save/restore
hex8:		pushl %eax			# Save
		shrb $0x4,%al			# Do upper
		call hex8.1			#  4
		popl %eax			# Restore
hex8.1: 	andb $0xf,%al			# Get lower 4
		cmpb $0xa,%al			# Convert
		sbbb $0x69,%al			#  to hex
		das				#  digit
		orb $0x20,%al			# To lower case
		stosb				# Save char
		ret				# (Recursive)

		.data
		.p2align 4
/*
 * Global descriptor table.
 */
gdt:		.word 0x0,0x0,0x0,0x0		# Null entry
		.word 0xffff,0x0,0x9a00,0xcf	# SEL_SCODE
		.word 0xffff,0x0,0x9200,0xcf	# SEL_SDATA
		.word 0xffff,0x0,0x9a00,0x0	# SEL_RCODE
		.word 0xffff,0x0,0x9200,0x0	# SEL_RDATA
gdt.1:
gdtdesc:	.word gdt.1-gdt-1		# Limit
		.long gdt			# Base
/*
 * Messages.
 */
m_logo: 	.asciz " \nBTX loader 1.00  "
m_vers: 	.asciz "BTX version is \0\n"
e_fmt:		.asciz "Error: Client format not supported\n"
#ifdef BTXLDR_VERBOSE
m_mem:		.asciz "Starting in protected mode (base mem=\0)\n"
m_esp:		.asciz "Arguments passed (esp=\0):\n"
m_args: 	.asciz"<howto="
		.asciz" bootdev="
		.asciz" junk="
		.asciz" "
		.asciz" "
		.asciz" bootinfo=\0>\n"
m_rel_bi:	.asciz "Relocated bootinfo (size=48) to \0\n"
m_rel_args:	.asciz "Relocated arguments (size=18) to \0\n"
m_rel_btx:	.asciz "Relocated kernel (size=\0) to \0\n"
m_base: 	.asciz "Client base address is \0\n"
m_elf:		.asciz "Client format is ELF\n"
m_segs: 	.asciz "text segment: offset="
		.asciz " vaddr="
		.asciz " filesz="
		.asciz " memsz=\0\n"
		.asciz "data segment: offset="
		.asciz " vaddr="
		.asciz " filesz="
		.asciz " memsz=\0\n"
m_done: 	.asciz "Loading complete\n"
#endif
/*
 * Uninitialized data area.
 */
buf:						# Scratch buffer


st currentWord = words[index];

    if (result === '') {
      if (currentWord.length > remaining) break;

      result += currentWord;
      remaining -= currentWord.length;
    } else {
      if (currentWord.length + 1 > remaining) break;

      result += ' ' + currentWord;
      remaining -= (currentWord.length + 1);
    }

    index++;
  }

  return result;
};
// Type definitions for @styled-system/core 5.1
// Project: https://github.com/styled-system/styled-system
// Definitions by: Leo Toneff <https://github.com/bragle>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.1

import * as CSS from 'csstype';

export function get(obj: any, ...paths: Array<string | number>): any;

export type ObjectOrArray<T, K extends keyof any = keyof any> = T[] | Record<K, T | Record<K, T> | T[]>;

export type Scale = ObjectOrArray<number | string>;

export interface styleFn {
    (...args: any[]): any;

    config?: object | undefined;
    propNames?: string[] | undefined;
    cache?: object | undefined;
}

export interface ConfigStyle {
    /** The CSS property to use in the returned style object (overridden by `properties` if present). */
    property?: keyof CSS.Properties | undefined;
    /**
     * An array of multiple properties (e.g. `['marginLeft', 'marginRight']`) to which this style's value will be
     * assigned (overrides `property` when present).
     */
    properties?: Array<keyof CSS.Properties> | undefined;
    /** A string referencing a key in the `theme` object. */
    scale?: string | undefined;
    /** A fallback scale object for when there isn't one defined in the `theme` object. */
    defaultScale?: Scale | undefined;
    /** A function to transform the raw value based on the scale. */
    transform?: ((value: any, scale?: Scale) => any) | undefined;
}

export interface Config {
    /** Property name exposed for use in components */
    [customStyleName: string]: ConfigStyle | boolean;
}

export function compose(...parsers: styleFn[]): styleFn;

export function system(styleDefinitions: Config): styleFn;

export function createParser(config: ConfigStyle): styleFn;

export function createStyleFunction(args: ConfigStyle): styleFn;
import { Enumerable } from '../../Enumerable';
import { IEqualityComparer } from '../../IEqualityComparer';
declare module "../../Enumerable" {
    interface Enumerable<T> {
        distinct(comparer?: IEqualityComparer<T>): Enumerable<T>;
    }
}
Enumerable.prototype.distinct = function <T>(comparer: IEqualityComparer<T> = (a, b) => a === b) {
    const ref = this;
    return new Enumerable<T>(function* () {
        const cache: T[] = [];
        for (let item of ref) {
            if (cache.findIndex(x => comparer(x, item)) === -1) {
                cache.push(item);
                yield item;
            }
        }
    });
}import { Directive, Renderer2, OnInit, ElementRef, HostListener, HostBinding, Input } from '@angular/core';

@Directive


tm.filenm = fileitm.fullnm.substr(chkloc+1);
            }
            chkloc = fileitm.filenm.find_last_of(".");
            if (chkloc == std::string::npos) {
                fileitm.displaynm = fileitm.filenm;
            } else {
                fileitm.displaynm = fileitm.filenm.substr(0,chkloc);
            }
            filelist.push_back(fileitm);
        } else if ((sbuf.st_mode & S_IFDIR ) && (retcd == 0)) {
            MOTPLS_LOG(DBG, TYPE_NETCAM, NO_ERRNO
                , _("Directory specified: %s"),filedir.c_str());
            d = opendir(filedir.c_str());
            if (d != NULL) {
                while ((dir_ent=readdir(d)) != NULL) {
                    fileitm.fullnm = filedir;
                    fileitm.fullnm += dir_ent->d_name;
                    fileitm.filenm = dir_ent->d_name;
                    chkloc = fileitm.filenm.find_last_of(".");
                    if (chkloc == std::string::npos) {
                        fileitm.displaynm = fileitm.filenm;
                    } else {
                        fileitm.displaynm = fileitm.filenm.substr(0,chkloc);
                    }
                    retcd = stat(fileitm.fullnm.c_str(), &sbuf);
                    if ((sbuf.st_mode & S_IFREG) && (retcd == 0)) {
                        filelist.push_back(fileitm);
                    }
                }
            } else {
                MOTPLS_LOG(DBG, TYPE_NETCAM, SHOW_ERRNO
                    , _("Directory did not open: %s"),filedir.c_str());
            }
            closedir(d);
            std::sort(filelist.begin()
                , filelist.end()
                , netcam_filelist_cmp);
        }
        filenbr = 0;
    }
    if (filelist.size() == 0) {
        MOTPLS_LOG(INF, TYPE_NETCAM, NO_ERRNO
            , _("Directory/file not found: %s"), filedir.c_str());
    } else {
        path = filelist[(uint)filenbr].fullnm;
    }
    MOTPLS_LOG(DBG, TYPE_NETCAM, NO_ERRNO
            , _("Netcam Path: %s"),path.c_str());

}

void cls_netcam::check_buffsize(netcam_buff_ptr buff, size_t numbytes)
{
    int min_size_to_alloc;
    int real_alloc;
    uint new_size;

    if ((buff->size - buff->used) >= numbytes) {
        return;
    }

    min_size_to_alloc = (int)(numbytes - (buff->size - buff->used));
    real_alloc = ((min_size_to_alloc / NETCAM_BUFFSIZE) * NETCAM_BUFFSIZE);

    if ((min_size_to_alloc - real_alloc) > 0) {
        real_alloc += NETCAM_BUFFSIZE;
    }

    new_size = (uint)buff->size + (uint)real_alloc;

    buff->ptr =(char*) myrealloc(buff->ptr, new_size,"check_buf_size");
    buff->size = new_size;
}

char *cls_netcam::url_match(regmatch_t m, const char *input)
{
    char *match = NULL;
    int len;

    if (m.rm_so != -1) {
        len = m.rm_eo - m.rm_so;
        if (len > 0) {
            if ((match =(char*) mymalloc(uint(len + 1))) != NULL) {
                strncpy(match, input + m.rm_so, (uint)len);
                match[len] = '\0';
            }


ecimal(&self) -> String {
        format!(
            "0x{:02x}{:02x}{:02x}{:02x}{:02x}{:02x}",
            self.eui[0], self.eui[1], self.eui[2], self.eui[3], self.eui[4], self.eui[5]
        )
    }

    /// Returns a String representation in the EUI-64 interface ID format '0000:00ff:fe00:0000'
    pub fn to_interfaceid(&self) -> String {
        format!(
            "{:02x}{:02x}:{:02x}ff:fe{:02x}:{:02x}{:02x}",
            (self.eui[0] ^ 0x02),
            self.eui[1],
            self.eui[2],
            self.eui[3],
            self.eui[4],
            self.eui[5]
        )
    }

    /// Returns a String representation in the IPv6 link local format 'fd00:c2b6:b24b:be67:2827:688d:e6a1:6a3b:00ff:fe00:0000'
    pub fn to_link_local(&self) -> String {
        format!(
            "ff80::{:02x}{:02x}:{:02x}ff:fe{:02x}:{:02x}{:02x}",
            (self.eui[0] ^ 0x02),
            self.eui[1],
            self.eui[2],
            self.eui[3],
            self.eui[4],
            self.eui[5]
        )
    }

    /// Returns a String in the format selected by fmt
    pub fn to_string(&self, fmt: MacAddressFormat) -> String {
        match fmt {
            MacAddressFormat::Canonical => self.to_canonical(),
            MacAddressFormat::HexString => self.to_hex_string(),
            MacAddressFormat::DotNotation => self.to_dot_string(),
            MacAddressFormat::Hexadecimal => self.to_hexadecimal(),
        }
    }

    /// Parses a String representation from any format supported
    pub fn parse_str(s: &str) -> Result<MacAddress, ParseError> {
        let re = Regex::new("(0x)?([0-9a-fA-F]{1,2})[:.-]?").unwrap();
        let mut eui: Eui48 = [0; EUI48LEN];

        match s.len() {
            11..=17 => {}
            _ => {
                return Err(ParseError::InvalidLength(s.len()));
            }
        }

        let mut i = 0;
        for caps in re.captures_iter(s) {
            // Fill the array and keep counting for InvalidByteCount
            if i < EUI48LEN {
                let matched_byte = caps.get(2).unwrap().as_str();
                eui[i] = u8::from_str_radix(matched_byte, 16).unwrap();
            }
            i += 1;
        }

        if i != EUI48LEN {
            return Err(ParseError::InvalidByteCount(i, eui));
        }

        Ok(MacAddress::new(eui))
    }

    /// Return the internal structure as a slice of bytes
    pub fn as_bytes(&self) -> &[u8] {
        &self.eui
    }

    /// Returns an array in Eui48. Works as an inverse function of new()
    pub fn to_array(&self) -> Eui48 {
        self.eui
    }

    /// Returns Display MacAddressFormat, determined at compile time.
    pub fn get_display_format() -> MacAddressFormat {
        if cfg!(feature = "disp_hexstring") {
            MacAddressFormat::HexString
        } else {
            MacAddress


 TodosNotifier extends StateNotifier<List<Todo>> {
  // `todos` listesini boş bir liste olarak başlatıyoruz.
  TodosNotifier() : super([]);

  // Kullanıcı arayüzünün todo eklemesine izin verelim.
  void addTodo(Todo todo) {
    // Durumumuz değişmez olduğundan, `state.add(todo)` yapamayız.
    // Bunun yerine, önceki elemanları ve yenisini içeren yeni bir
    // todos listesi oluşturmalıyız.
    // Burada Dart'ın spread operatörünü kullanmak faydalıdır!
    state = [...state, todo];
    // "notifyListeners" veya benzeri bir şeyi çağırmaya gerek yoktur.
    // "state =" çağırmak, gerektiğinde kullanıcı arayüzünü otomatik olarak yeniden oluşturacaktır.
  }

  // `todos` silmemize izin verelim
  void removeTodo(String todoId) {
    // Yine, durumumuz değişmez. Bu yüzden mevcut listeyi değiştirmek yerine yeni bir
    // liste oluşturuyoruz.
    state = [
      for (final todo in state)
        if (todo.id != todoId) todo,
    ];
  }

  // Bir `todo`yu tamamlandı olarak işaretleyelim
  void toggle(String todoId) {
    state = [
      for (final todo in state)
        // Sadece eşleşen `todo`yu tamamlandı olarak işaretliyoruz
        if (todo.id == todoId)
          // Yine, durumumuz değişmez olduğundan, bir kopya yapmamız gerekiyor.
          // Bize yardımcı olması için daha önce uyguladığımız `copyWith` yöntemini kullanıyoruz.
          todo.copyWith(completed: !todo.completed)
        else
          // diğer `todos` değiştirilmez
          todo,
    ];
  }
}

// Son olarak, kullanıcı arayüzünün TodosNotifier sınıfımızla etkileşimde bulunmasını
// sağlamak için StateNotifierProvider kullanıyoruz.
final todosProvider = StateNotifierProvider<TodosNotifier, List<Todo>>((ref) {
  return TodosNotifier();
});
// ignore_for_file: omit_local_variable_types

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_riverpod/legacy.dart';

enum FilterType {
  none,
  completed,
}

abstract class Todo {
  bool get isCompleted;
}

class TodoList extends StateNotifier<List<Todo>> {
  TodoList() : super([]);
}

/* SNIPPET START */

final filterTypeProvider = StateProvider<FilterType>((ref) => FilterType.none);
final todosProvider =
    StateNotifierProvider<TodoList, List<Todo>>((ref) => TodoList());

final filteredTodoListProvider = Provider((ref) {
  // フィルタの種類と Todo リストを取得、監視する
  final FilterType filter = ref.watch(filterTypeProvider);
  final List<Todo> todos = ref.watch(todosProvider);

  switch (filter) {
    case FilterType.completed:
      //  Todo リストを完了タスクのみにフィルタリングして値を返す
      return todos.where((todo) => todo.isCompleted).toList();
    case FilterType.none:
      // フィルタ未適用の Todo リストをそのまま返す
      return todos;
  }
});
// ignore_for_file: use_key_in_widget_constructors

import 'package:flutter/material.dart';


# SPDX-FileCopyrightText: (C) 2021 - 2025 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

import logging, sys

# Disable logging by default
LVL_TRACK = 0
LVL_CRITICAL = logging.CRITICAL
LVL_ERR = logging.ERROR
LVL_WARN = logging.WARN
LVL_INFO = logging.INFO
LVL_DEBUG = logging.DEBUG
LVL_MIN = 99

# Put this in your program after importing log to enable logging:
# log.LVL_TRACK = 20
# log.LVL_MIN = log.LVL_INFO

def log(*args, level=logging.INFO):
  if not hasattr(log, "logger"):
    log.logger = logging.getLogger(__name__)
    log.logger.setLevel(level)
    handler = logging.StreamHandler(sys.stdout)
    handler.setFormatter(logging.Formatter("%(asctime)s %(message)s",
                                           datefmt="%Y-%m-%d %H:%M:%S"))
    # handler.setFormatter(logging.Formatter("%(message)s"))
    log.logger.addHandler(handler)
  outstr = " ".join(map(str, args))
  log.logger.log(level, outstr)
  return

def info(*args):
  log(*args, level=LVL_INFO)
  return

def debug(*args):
  log(*args, level=LVL_DEBUG)
  return

def warn(*args):
  log(*args, level=LVL_WARN)
  return

def error(*args):
  log(*args, level=LVL_ERR)
  return

def critical(*args):
  log(*args, level=LVL_CRITICAL)
  return


UMENT_VA(this, rhs);

  m_opaque_sp = clone(rhs.m_opaque_sp);
}

SBTypeEnumMember &SBTypeEnumMember::operator=(const SBTypeEnumMember &rhs) {
  LLDB_INSTRUMENT_VA(this, rhs);

  if (this != &rhs)
    m_opaque_sp = clone(rhs.m_opaque_sp);
  return *this;
}

bool SBTypeEnumMember::IsValid() const {
  LLDB_INSTRUMENT_VA(this);
  return this->operator bool();
}
SBTypeEnumMember::operator bool() const {
  LLDB_INSTRUMENT_VA(this);

  return m_opaque_sp.get();
}

const char *SBTypeEnumMember::GetName() {
  LLDB_INSTRUMENT_VA(this);

  if (m_opaque_sp.get())
    return m_opaque_sp->GetName().GetCString();
  return nullptr;
}

int64_t SBTypeEnumMember::GetValueAsSigned() {
  LLDB_INSTRUMENT_VA(this);

  if (m_opaque_sp.get())
    return m_opaque_sp->GetValueAsSigned();
  return 0;
}

uint64_t SBTypeEnumMember::GetValueAsUnsigned() {
  LLDB_INSTRUMENT_VA(this);

  if (m_opaque_sp.get())
    return m_opaque_sp->GetValueAsUnsigned();
  return 0;
}

SBType SBTypeEnumMember::GetType() {
  LLDB_INSTRUMENT_VA(this);

  SBType sb_type;
  if (m_opaque_sp.get()) {
    sb_type.SetSP(m_opaque_sp->GetIntegerType());
  }
  return sb_type;
}

void SBTypeEnumMember::reset(TypeEnumMemberImpl *type_member_impl) {
  m_opaque_sp.reset(type_member_impl);
}

TypeEnumMemberImpl &SBTypeEnumMember::ref() {
  if (m_opaque_sp.get() == nullptr)
    m_opaque_sp = std::make_shared<TypeEnumMemberImpl>();
  return *m_opaque_sp.get();
}

const TypeEnumMemberImpl &SBTypeEnumMember::ref() const {
  return *m_opaque_sp.get();
}

SBTypeEnumMemberList::SBTypeEnumMemberList()
    : m_opaque_up(new TypeEnumMemberListImpl()) {
  LLDB_INSTRUMENT_VA(this);
}

SBTypeEnumMemberList::SBTypeEnumMemberList(const SBTypeEnumMemberList &rhs)
    : m_opaque_up(new TypeEnumMemberListImpl()) {
  LLDB_INSTRUMENT_VA(this, rhs);

  for (uint32_t i = 0,
                rhs_size = const_cast<SBTypeEnumMemberList &>(rhs).GetSize();
       i < rhs_size; i++)
    Append(const_cast<SBTypeEnumMemberList &>(rhs).GetTypeEnumMemberAtIndex(i));
}

bool SBTypeEnumMemberList::IsValid() {
  LLDB_INSTRUMENT_VA(this);
  return this->operator bool();
}
SBTypeEnumMemberList::operator bool() const {
  LLDB_INSTRUMENT_VA(this);

  return (m_opaque_up != nullptr);
}

SBTypeEnumMemberList &SBTypeEnumMemberList::
operator=(const SBTypeEnumMemberList &rhs) {
  LLDB_INSTRUMENT_VA(this, rhs);

  if (this != &rhs) {
    m_opaque_up = std::make_unique<TypeEnumMemberListImpl>();
    for (uint32_t i = 0,
                  rhs_size = const_cast<SBTypeEnumMemberList &>(rhs).GetSize();
         i < rhs_size; i++)
      Append(
          const_cast<SBTypeEnumMemberList &>(rhs).GetTypeEnumMemberAtIndex(i));
  }
  return *this;
}

void SBTypeEnumMemberList::Append(SBTypeEnumMember enum_member) {
  LLDB_INSTRUMENT_VA(this, enum_member);

  if (enum_member.IsValid())
    m_opaque_up->Append(enum_member.m_opaque_sp);
}

SBTypeEnumMember
SBTypeEnumMemberList::


\x11" +
	"Argentīnas laiks\x18Argentīnas ziemas laiks\x19Argentīnas vasaras laiks" +
	"\x17Rietumargentīnas laiks\x1eRietumargentīnas ziemas laiks\x1fRietumarg" +
	"entīnas vasaras laiks\x10Armēnijas laiks\x17Armēnijas ziemas laiks\x18Ar" +
	"mēnijas vasaras laiks\x10Atlantijas laiks\x17Atlantijas ziemas laiks\x18" +
	"Atlantijas vasaras laiks\x1eAustrālijas centrālais laiks%Austrālijas cen" +
	"trālais ziemas laiks&Austrālijas centrālais vasaras laiks&Austrālijas ce" +
	"ntrālais rietumu laiks-Austrālijas centrālais rietumu ziemas laiks.Austr" +
	"ālijas centrālais rietumu vasaras laiks\x1bAustrālijas austrumu laiks" +
	"\x22Austrālijas austrumu ziemas laiks#Austrālijas austrumu vasaras laiks" +
	"\x1aAustrālijas rietumu laiks!Austrālijas rietumu ziemas laiks\x22Austrā" +
	"lijas rietumu vasaras laiks\x15Azerbaidžānas laiks\x1cAzerbaidžānas ziem" +
	"as laiks\x1dAzerbaidžānas vasaras laiks\x10Azoru salu laiks\x17Azoru sal" +
	"u ziemas laiks\x18Azoru salu vasaras laiks\x12Bangladešas laiks\x19Bangl" +
	"adešas ziemas laiks\x1aBangladešas vasaras laiks\x0eButānas laiks\x10Bol" +
	"īvijas laiks\x11Brazīlijas laiks\x18Brazīlijas ziemas laiks\x19Brazīlij" +
	"as vasaras laiks\x1aBrunejas Darusalamas laiks\x10Kaboverdes laiks\x17Ka" +
	"boverdes ziemas laiks\x18Kaboverdes vasaras laiks\x15Čamorra ziemas laik" +
	"s\x0eČetemas laiks\x15Četemas ziemas laiks\x16Četemas vasaras laiks\x0dČ" +
	"īles laiks\x14Čīles ziemas laiks\x15Čīles vasaras laiks\x0dĶīnas laiks" +
	"\x14Ķīnas ziemas laiks\x15Ķīnas vasaras laiks\x12Čoibalsanas laiks\x19Čo" +
	"ibalsanas ziemas laiks\x1aČoibalsanas vasaras laiks\x17Ziemsvētku salas " +
	"laiks\x1cKokosu (Kīlinga) salu laiks\x10Kolumbijas laiks\x17Kolumbijas z" +
	"iemas laiks\x18Kolumbijas vasaras laiks\x0fKuka salu laiks\x16Kuka salu " +
	"ziemas la


) .mdc-notched-outline__trailing {
  border-color: rgba(0, 0, 0, 0.38);
}
.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,
.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,
.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing {
  border-color: rgba(0, 0, 0, 0.87);
}
.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,
.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,
.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing {
  border-color: #6200ee;
  /* @alternate */
  border-color: var(--mdc-theme-primary, #6200ee);
}
.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading {
  /* @noflip */
  border-top-left-radius: 4px;
  /* @alternate */
  /* @noflip */
  border-top-left-radius: var(--mdc-shape-small, 4px);
  /* @noflip */
  border-top-right-radius: 0;
  /* @noflip */
  border-bottom-right-radius: 0;
  /* @noflip */
  border-bottom-left-radius: 4px;
  /* @alternate */
  /* @noflip */
  border-bottom-left-radius: var(--mdc-shape-small, 4px);
}
[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading, .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl] {
  /* @noflip */
  border-top-left-radius: 0;
  /* @noflip */
  border-top-right-radius: 4px;
  /* @alternate */
  /* @noflip */
  border-top-right-radius: var(--mdc-shape-small, 4px);
  /* @noflip */
  border-bottom-right-radius: 4px;
  /* @alternate */
  /* @noflip */
  border-bottom-right-radius: var(--mdc-shape-small, 4px);
  /* @noflip */
  border-bottom-left-radius: 0;
}

@supports (top: max(0%)) {
  .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading {
    width: max(12px, var(--mdc-shape-small, 4px));
  }
}
@supports (top: max(0%)) {
  .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch {
    max-width: calc(100% - max(12px, var(--mdc-shape-small, 4px)) * 2);
  }
}
.mdc-text


 function findShinyOutput(chartContent) {
    return chartContent.find('.shiny-text-output, .shiny-html-output');
  }

  // safely detect rendering on a mobile phone
  function isMobilePhone() {
    try
    {
      return ! window.matchMedia("only screen and (min-width: 768px)").matches;
    }
    catch(e) {
      return false;
    }
  }

  function isFillPage() {
    return _options.fillPage;
  }

  // detect portrait mode
  function isPortrait() {
    return ($(window).width() < $(window).height());
  }

  // safely detect rendering on a tablet
  function isTablet() {
    try
    {
      return window.matchMedia("only screen and (min-width: 769px) and (max-width: 992px)").matches;
    }
    catch(e) {
      return false;
    }
  }

  // test whether this is a shiny doc
  function isShinyDoc() {
    return (typeof(window.Shiny) !== "undefined" && !!window.Shiny.outputBindings);
  }

  // set flex using vendor specific prefixes
  function setFlex(el, flex) {
    el.css('-webkit-box-flex', flex)
      .css('-webkit-flex', flex)
      .css('-ms-flex', flex)
      .css('flex', flex);
  }

  // support bookmarking of pages
  function handleLocationHash() {

    // restore tab/page from bookmark
    var hash = window.decodeURIComponent(window.location.hash);
    if (hash.length > 0)
      $('ul.nav a[href="' + hash + '"]').tab('show');
    FlexDashboardUtils.manageActiveNavbarMenu();

    // navigate to a tab when the history changes
    window.addEventListener("popstate", function(e) {
      var hash = window.decodeURIComponent(window.location.hash);
      var activeTab = $('ul.nav a[href="' + hash + '"]');
      if (activeTab.length) {
        activeTab.tab('show');
      } else {
        $('ul.nav a:first').tab('show');
      }
      FlexDashboardUtils.manageActiveNavbarMenu();
    });

    // add a hash to the URL when the user clicks on a tab/page
    $('.navbar-nav a[data-toggle="tab"]').on('click', function(e) {
      var baseUrl = FlexDashboardUtils.urlWithoutHash(window.location.href);
      var hash = FlexDashboardUtils.urlHash($(this).attr('href'));
      var href = baseUrl + hash;
      FlexDashboardUtils.setLocation(href);
    });

    // handle clicks of other links that should activate pages
    var navPages = $('ul.navbar-nav li a[data-toggle=tab]');
    navPages.each(function() {
      var href =  $(this).attr('href');
      var links = $('a[href="' + href + '"][data-toggle!=tab]');
      links.each(function() {
        $(this).on('click', function(e) {
          window.FlexDashboardUtils.showPage(href);
        });
      });
    });
  }

  // tweak Prism highlighting
  function initPrismHighlighting() {

    if (window.Prism) {
      Prism.languages.insertBefore('r', 'comment', {
        'heading': [
          {
            // title 1
        	  // =======

        	  // title 2
        	  // -------
        	  pattern: /\w+.*(?:\r?\n|\r)(?:====+|----+)/,
            alias: 'operator'
          },
          {
            // ### title 3
            pattern: /(^\s*)###[^#].+/m,
            lookbehind: true,
            alias: 'operator'
          }
        ]
      });

      // prism highlight
      Prism.highlightAll();
    }
  }

  // get theme color
  var themeColors = {
    bootstrap: {
      primary: "rgba(51, 122, 183, 0.4)",
      info: "rgb(217, 237, 247)",
      success: "rgb(223, 240, 216)",
      warning: "rgb(252, 248, 227)",
      danger: "rgb(242, 222,


 * console.log(array);
     * // => ['a', 'c']
     *
     * console.log(pulled);
     * // => ['b', 'd']
     */
    var pullAt = flatRest(function(array, indexes) {
      var length = array == null ? 0 : array.length,
          result = baseAt(array, indexes);

      basePullAt(array, arrayMap(indexes, function(index) {
        return isIndex(index, length) ? +index : index;
      }).sort(compareAscending));

      return result;
    });

    /**
     * Removes all elements from `array` that `predicate` returns truthy for
     * and returns an array of the removed elements. The predicate is invoked
     * with three arguments: (value, index, array).
     *
     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
     * to pull elements from an array by value.
     *
     * @static
     * @memberOf _
     * @since 2.0.0
     * @category Array
     * @param {Array} array The array to modify.
     * @param {Function} [predicate=_.identity] The function invoked per iteration.
     * @returns {Array} Returns the new array of removed elements.
     * @example
     *
     * var array = [1, 2, 3, 4];
     * var evens = _.remove(array, function(n) {
     *   return n % 2 == 0;
     * });
     *
     * console.log(array);
     * // => [1, 3]
     *
     * console.log(evens);
     * // => [2, 4]
     */
    function remove(array, predicate) {
      var result = [];
      if (!(array && array.length)) {
        return result;
      }
      var index = -1,
          indexes = [],
          length = array.length;

      predicate = getIteratee(predicate, 3);
      while (++index < length) {
        var value = array[index];
        if (predicate(value, index, array)) {
          result.push(value);
          indexes.push(index);
        }
      }
      basePullAt(array, indexes);
      return result;
    }

    /**
     * Reverses `array` so that the first element becomes the last, the second
     * element becomes the second to last, and so on.
     *
     * **Note:** This method mutates `array` and is based on
     * [`Array#reverse`](https://mdn.io/Array/reverse).
     *
     * @static
     * @memberOf _
     * @since 4.0.0
     * @category Array
     * @param {Array} array The array to modify.
     * @returns {Array} Returns `array`.
     * @example
     *
     * var array = [1, 2, 3];
     *
     * _.reverse(array);
     * // => [3, 2, 1]
     *
     * console.log(array);
     * // => [3, 2, 1]
     */
    function reverse(array) {
      return array == null ? array : nativeReverse.call(array);
    }

    /**
     * Creates a slice of `array` from `start` up to, but not including, `end`.
     *
     * **Note:** This method is used instead of
     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
     * returned.
     *
     * @static
     * @memberOf _
     * @since 3.0.0
     * @category Array
     * @param {Array} array The array to slice.
     * @param {number} [start=0] The start position.
     * @param {number} [end=array.length] The end position.
     * @returns {Array} Returns the slice of `array`.
     */
    function slice(array, start, end) {
      var length = array == null ? 0 :


uaternion()
        {
            return new Quaternion(x, y, z, w);
        }

        public override string ToString()
        {
            return string.Format("{0:0.000}, {1:0.000}, {2:0.000}, {3:0.000}", x, y, z, w);
        }
    }

    /// <summary>
    /// Avatar configuration. Used for automatic fitting scale, and future features for identifying compatible wearables for a specific avatar.
    /// </summary>
    [Serializable]
    internal class AvatarConfig
    {
        /// <summary>
        /// GUIDs of compatible avatars (Reserved for future use)
        /// </summary>
        public List<string> guids;

        /// <summary>
        /// Name of avatar
        /// </summary>
        public string name;

        /// <summary>
        /// Avatar armature name. For reference only, might not be used for dressing since armature name is obtained from cabinet settings.
        /// </summary>
        public string armatureName;

        /// <summary>
        /// World position delta between avatar and wearable
        /// </summary>
        public AvatarConfigVector3 worldPosition;

        /// <summary>
        /// World rotation delta between avatar and wearable
        /// </summary>
        public AvatarConfigQuaternion worldRotation;

        /// <summary>
        /// Lossy avatar scale
        /// </summary>
        public AvatarConfigVector3 avatarLossyScale;

        /// <summary>
        /// Lossy wearable scale
        /// </summary>
        public AvatarConfigVector3 wearableLossyScale;

        /// <summary>
        /// Constructs a new avatar config
        /// </summary>
        public AvatarConfig()
        {
            guids = new List<string>();
            worldPosition = new AvatarConfigVector3(0, 0, 0);
            worldRotation = new AvatarConfigQuaternion(0, 0, 0, 0);
            avatarLossyScale = new AvatarConfigVector3(0, 0, 0);
            wearableLossyScale = new AvatarConfigVector3(0, 0, 0);
        }

        /// <summary>
        /// Copy constructor
        /// </summary>
        /// <param name="toCopy">Avatar config to copy</param>
        public AvatarConfig(AvatarConfig toCopy)
        {
            // deep copy
            guids = new List<string>(toCopy.guids);

            worldPosition = new AvatarConfigVector3(toCopy.worldPosition);
            worldRotation = new AvatarConfigQuaternion(toCopy.worldRotation);
            avatarLossyScale = new AvatarConfigVector3(toCopy.avatarLossyScale);
            wearableLossyScale = new AvatarConfigVector3(toCopy.wearableLossyScale);
        }
    }
}


�',	'卡片少女召唤脱衣大战'},
{'27007',	'情和欲的两极',	'情和欲的两极'},
{'27008',	'父女戏春水',	'父女戏春水'},
{'27009',	'情语潮湿',	'情语潮湿'},
{'27010',	'寡妇村猎美致富记',	'寡妇村猎美致富记'},
{'27011',	'柳依依雪霏霏',	'柳依依雪霏霏'},
{'27012',	'我的性奴老婆',	'我的性奴老婆'},
{'27013',	'色列漫画网',	'色列漫画网'},
{'27014',	'月亮白的图书集',	'月亮白的图书集'},
{'27015',	'蹂躏警花柳婷婷',	'蹂躏警花柳婷婷'},
{'27016',	'附体记',	'附体记'},
{'27017',	'猎美玉龙',	'猎美玉龙'},
{'27018',	'515zy导航',	'515zy导航'},
{'27019',	'仙人谷导航',	'仙人谷导航'},
{'27020',	'第一會所',	'第一會所'},
{'27021',	'95撸导航',	'95撸导航'},
{'27022',	'绿色无毒成人网站',	'绿色无毒成人网站'},
{'27023',	'色狼福利导航',	'色狼福利导航'},
{'27024',	'极品哥导航',	'极品哥导航'},
{'27025',	'绿加白福利导航',	'绿加白福利导航'},
{'27026',	'蓝鸟福利导航',	'蓝鸟福利导航'},
{'27027',	'点幼阁',	'点幼阁'},
{'27028',	'JJ福利导航',	'JJ福利导航'},
{'27029',	'痴汉导航',	'痴汉导航'},
{'27030',	'1024导航',	'1024导航'},
{'27031',	'18p2p',	'18p2p'},
{'27032',	'夜趣福利导航',	'夜趣福利导航'},
{'27033',	'狂人色导航',	'狂人色导航'},
{'27034',	'夜猫导航',	'夜猫导航'},
{'27035',	'千百撸导航',	'千百撸导航'},
{'27036',	'一点啪福利导航',	'一点啪福利导航'},
{'27037',	'情迷小晚香',	'情迷小晚香'},
{'27038',	'色色闷骚男',	'色色闷骚男'},
{'27039',	'按摩后我狂


 %v", err)
	}
	target := lis.Addr().String()
	lis = nw.Listener(lis)
	stopper := StartServer(ServerInfo{Type: "protobuf", Listener: lis}, grpc.MaxConcurrentStreams(uint32(benchFeatures.MaxConcurrentCalls+1)))
	defer stopper()
	conn := NewClientConn(
		target, grpc.WithInsecure(),
		grpc.WithDialer(func(address string, timeout time.Duration) (net.Conn, error) {
			return nw.TimeoutDialer(net.DialTimeout)("tcp", address, timeout)
		}),
	)
	tc := testpb.NewBenchmarkServiceClient(conn)

	// Warm up connection.
	stream, err := tc.StreamingCall(context.Background())
	if err != nil {
		b.Fatalf("%v.StreamingCall(_) = _, %v", tc, err)
	}
	for i := 0; i < 10; i++ {
		streamCaller(stream, benchFeatures.ReqSizeBytes, benchFeatures.RespSizeBytes)
	}

	ch := make(chan struct{}, benchFeatures.MaxConcurrentCalls*4)
	var (
		mu sync.Mutex
		wg sync.WaitGroup
	)
	wg.Add(benchFeatures.MaxConcurrentCalls)

	// Distribute the b.N calls over maxConcurrentCalls workers.
	for i := 0; i < benchFeatures.MaxConcurrentCalls; i++ {
		stream, err := tc.StreamingCall(context.Background())
		if err != nil {
			b.Fatalf("%v.StreamingCall(_) = _, %v", tc, err)
		}
		go func() {
			for range ch {
				start := time.Now()
				streamCaller(stream, benchFeatures.ReqSizeBytes, benchFeatures.RespSizeBytes)
				elapse := time.Since(start)
				mu.Lock()
				s.Add(elapse)
				mu.Unlock()
			}
			wg.Done()
		}()
	}
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		ch <- struct{}{}
	}
	close(ch)
	wg.Wait()
	b.StopTimer()
	conn.Close()
}
func unaryCaller(client testpb.BenchmarkServiceClient, reqSize, respSize int) {
	if err := DoUnaryCall(client, reqSize, respSize); err != nil {
		grpclog.Fatalf("DoUnaryCall failed: %v", err)
	}
}

func streamCaller(stream testpb.BenchmarkService_StreamingCallClient, reqSize, respSize int) {
	if err := DoStreamingRoundTrip(stream, reqSize, respSize); err != nil {
		grpclog.Fatalf("DoStreamingRoundTrip failed: %v", err)
	}
}
// +build !go1.7

/*
 *
 * Copyright 2016 gRPC authors.
 *
 * 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 credentials

import (
	"crypto/tls"
)

// cloneTLSConfig returns a shallow clone of the exported
// fields of cfg, ignoring the unexported sync.Once, which
// contains a mutex and must not be copied.
//
// If cfg is nil, a new zero tls.Config is returned.
func cloneTLSConfig(cfg *tls.Config) *tls


ne has flags for printing branches. We define those here.
	ap := cli.CreateBranchArgParser()
	ap.ArgListHelp = append(ap.ArgListHelp, [2]string{"start-point", "A commit that a new branch should point at."})
	ap.SupportsFlag(cli.ListFlag, "", "List branches")
	ap.SupportsFlag(cli.VerboseFlag, "v", "When in list mode, show the hash and commit subject line for each head")
	ap.SupportsFlag(cli.AllFlag, "a", "When in list mode, shows remote tracked branches")
	ap.SupportsFlag(datasetsFlag, "", "List all datasets in the database")
	ap.SupportsFlag(cli.RemoteParam, "r", "When in list mode, show only remote tracked branches. When with -d, delete a remote tracking branch.")
	ap.SupportsFlag(showCurrentFlag, "", "Print the name of the current branch")
	return ap
}

// EventType returns the type of the event to log
func (cmd BranchCmd) EventType() eventsapi.ClientEventType {
	return eventsapi.ClientEventType_BRANCH
}

// Exec executes the command
func (cmd BranchCmd) Exec(ctx context.Context, commandStr string, args []string, dEnv *env.DoltEnv, cliCtx cli.CliContext) int {
	ap := cmd.ArgParser()
	apr, usage, terminate, status := ParseArgsOrPrintHelp(ap, commandStr, args, branchDocs)
	if terminate {
		return status
	}

	errorBuilder := errhand.BuildDError("error: failed to create query engine")
	queryist, err := cliCtx.QueryEngine(ctx)
	if err != nil {
		return HandleVErrAndExitCode(errorBuilder.AddCause(err).Build(), nil)
	}

	if len(apr.ContainsMany(cli.MoveFlag, cli.CopyFlag, cli.DeleteFlag, cli.DeleteForceFlag, cli.ListFlag, showCurrentFlag)) > 1 {
		cli.PrintErrln("Must specify exactly one of --move/-m, --copy/-c, --delete/-d, -D, --show-current, or --list.")
		return 1
	}

	switch {
	case apr.Contains(cli.MoveFlag):
		return moveBranch(queryist.Context, queryist.Queryist, apr, args, usage)
	case apr.Contains(cli.CopyFlag):
		return copyBranch(queryist.Context, queryist.Queryist, apr, args, usage)
	case apr.Contains(cli.DeleteFlag):
		return deleteBranches(queryist.Context, queryist.Queryist, apr, args, usage)
	case apr.Contains(cli.DeleteForceFlag):
		return deleteBranches(queryist.Context, queryist.Queryist, apr, args, usage)
	case apr.Contains(cli.ListFlag):
		return printBranches(queryist.Context, queryist.Queryist, apr, usage)
	case apr.Contains(showCurrentFlag):
		return printCurrentBranch(queryist.Context, queryist.Queryist)
	case apr.Contains(datasetsFlag):
		return printAllDatasets(queryist.Context, dEnv)
	case apr.ContainsAny(cli.SetUpstreamToFlag, cli.TrackFlag):
		return updateUpstream(queryist.Context, queryist.Queryist, apr, args)
	case apr.NArg() > 0:
		return createBranch(queryist.Context, queryist.Queryist, apr, args, usage)
	default:
		return printBranches(queryist.Context, queryist.Queryist, apr, usage)
	}
}

type branchMeta struct {
	name   string
	hash   string
	remote bool
}

func getBranches(sqlCtx *sql.Context, queryEngine cli.Queryist, remote bool) ([]branchMeta, error) {
	var command string
	if remote {
		command = "SELECT name, hash from dolt_remote_branches"
	} else {
		command = "SELECT name, hash from dolt_branches"
	}

	schema, rowIter, _,


          // We are working with STRING
          MeanReciprocalRank<String> mmr15 = new MeanReciprocalRank<>();
          // Question
          RankedResults<String> rankedResults = new RankedResults<>("What is the capital of France?");
          // Target responses (expressed as Strings)
          rankedResults.addExpectedAnswers("Paris is the capital of France.");
          rankedResults.addExpectedAnswers("France's capital city is Paris.");
          // Results from query (scope, resul)
          rankedResults.addResult(0.9, "Paris is the capital of France.");
          rankedResults.addResult(0.85, "The capital of Germany is Berlin.");
          rankedResults.addResult(0.7, "Madrid is the capital of Spain.");
          rankedResults.addResult(0.6, "France is a country in Europe.");
          // Default RELEVANCE FUNCTION IS EXACT MATCHING.
          // As one of the results is an exact match, the MRR will be 1.0 for this rank.
          double mrr = new MeanReciprocalRank<String>().eval(List.of(rankedResults));
          System.out.println(yellow("===== MRR@15 ===== "));
          System.out.println(cyan("     Used Objects : ") + "String");
          System.out.println(cyan("Relevance Checker : ") + mmr15.getRelevanceChecker().getClass().getSimpleName());
          System.out.println(cyan("           Score  : ") + mrr);
    }

    @Test
    public void should_explain_mrr_embeddings() {
        // We are now working with EMBEDDINGS
        EmbeddingSimilarityRelevanceChecker relevance = new EmbeddingSimilarityRelevanceChecker(
                new CosineSimilarity(), 0.89);
        MeanReciprocalRank<Embedding> mmr15 = new MeanReciprocalRank<>(relevance, 15);

        // Question
        RankedResults<Embedding> rankedResults = new RankedResults<>("What is the capital of France?");
        // Target responses (Also expressed as Embeddings now)
        rankedResults.addExpectedAnswers(embed("Paris is the capital of France."));
        rankedResults.addExpectedAnswers(embed("France's capital city is Paris."));
        // Results from query (similarity, embedding))
        rankedResults.addResult(0.9, embed("Paris is the capital of France."));
        rankedResults.addResult(0.85, embed("The capital of Germany is Berlin."));
        rankedResults.addResult(0.7, embed("Madrid is the capital of Spain."));
        rankedResults.addResult(0.6, embed("France is a country in Europe."));

        // The default RELEVANCE FUNCTION IS EXACT MATCHING.
        System.out.println(yellow("===== MRR@15 ===== "));
        System.out.println(cyan("     Used Objects : ") + "Embedding");
        System.out.println(cyan("Relevance Checker : ") + mmr15.getRelevanceChecker().getClass().getSimpleName());
        System.out.println(cyan("           Score  : ") + mmr15.eval(List.of(rankedResults)));
    }

    Embedding embed(String text) {
        return getEmbeddingModel(MODEL_EMBEDDING_TEXT).embed(text).content();
    }

    @Test
    public void should_mmr_for_rag() {

        String question = "What is the population of Berlin?";

        // We are working with STRING
        EmbeddingSimilarityRelevanceChecker relevance = new EmbeddingSimilarityRelevanceChecker(
                new CosineSimilarity(), 0.75);
        MeanReciprocalRank<Embedding> mmr15 = new MeanReciprocalRank<>(relevance, 15);

        // Question
        RankedResults<Embedding> rankedResults = new RankedResults<>(question);
        // What I am supposed the get
        rankedResults.addExpectedAnswers(embed("Berlin is about 3.85 millions inhabitants"));
        ra


Less => {
                sum += right_it.next().unwrap();
                right_idx += 1;
            }

            Ordering::Greater => {
                sum -= left_it.next().unwrap();
                left_idx += 1;
            }

            Ordering::Equal => break,
        }
    }

    let (min, max) = numbers[left_idx..right_idx]
        .iter()
        .minmax()
        .into_option()
        .unwrap();
    let part2 = min + max;

    (part1, part2)
}
// Copyright (c) 2022 The vulkano developers
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or
// https://www.apache.org/licenses/LICENSE-2.0> or the MIT
// license <LICENSE-MIT or https://opensource.org/licenses/MIT>,
// at your option. All files in the project carrying such
// notice may not be copied, modified, or distributed except
// according to those terms.

mod app;
mod game_of_life;
mod pixels_draw;
mod render_pass;
mod vulkano_config;
#[allow(unused)]
mod vulkano_context;
#[allow(unused)]
mod vulkano_window;

use crate::app::{App, RenderPipeline};
use crate::vulkano_window::VulkanoWindow;
use cgmath::Vector2;
use time::Instant;
use vulkano::image::ImageAccess;
use winit::event::{ElementState, MouseButton};
use winit::{
    event::{Event, WindowEvent},
    event_loop::{ControlFlow, EventLoop},
    platform::run_return::EventLoopExtRunReturn,
};

// A multi windowed game of life application. You could use this to learn:
// - how to handle multiple window inputs,
// - how to draw on a canvas
// - how to organize compute shader with graphics
// - how to do a cellular automata simulation using compute shaders
// The possibilities are limitless ;)

// Architecture:
// `VulkanoConfig`: Information for device & context creation
// `VulkanoContext`: A struct containing everything related to vulkano device, instance and queues. Separated to make it convenient to handle multiple windows.
// `VulkanoWindow`: A struct owning winit windows and target images. This is used to begin and end frame. And between that you should call your render pipelines.
// `App`: Holds the windows in a hash map, retains id of the primary window, render pipelines per window and context.

pub const WINDOW_WIDTH: u32 = 1024;
pub const WINDOW_HEIGHT: u32 = 1024;
pub const WINDOW2_WIDTH: u32 = 512;
pub const WINDOW2_HEIGHT: u32 = 512;
pub const SCALING: u32 = 2;

fn main() {
    println!("Welcome to Vulkano Game of Life\n Use Mouse to draw life on the grid(s)\n");
    // Create event loop
    let mut event_loop = EventLoop::new();
    // Create app with vulkano context
    let mut app = App::default();
    app.open(&event_loop);

    // Time & inputs...
    let mut time = Instant::now();
    let mut cursor_pos = Vector2::new(0.0, 0.0);
    // An extremely crude way to handle input state... But works for this example.
    let mut mouse_is_pressed_w1 = false;
    let mut mouse_is_pressed_w2 = false;
    loop {
        // Event handling
        if !handle_events(
            &mut event_loop,
            &mut app,
            &mut cursor_pos,
            &mut mouse_is_pressed_w1,
            &mut mouse_is_pressed_w2,
        ) {
            break;
        }
        // Draw life on windows if mouse is down
        draw_life(
            &mut app,
            cursor_pos,
            mouse_is_pressed_w1,
            mouse_is_pressed_w2,
        );
        // Compute life & render 60fps
        if (Instant::now() - time).as_seconds_f64() > 1.0 / 60.0 {
            compute_then


e updateFunction;
        /**
         * @private
         */
        private endFunction;
        /**
         * @private
         */
        private previousTime;
        /**
         * @private
         */
        private velocity;
        /**
         * @private
         */
        private previousVelocity;
        /**
         * @private
         */
        private currentPosition;
        /**
         * @private
         */
        private previousPosition;
        /**
         * @private
         */
        private currentScrollPos;
        /**
         * @private
         */
        private maxScrollPos;
        /**
         * @private
         * 触摸按下时的偏移量
         */
        private offsetPoint;
        /**
         * @private
         * 停止触摸时继续滚动的动画实例
         */
        private animation;
        $bounces: boolean;
        /**
         * @private
         * 正在播放缓动动画的标志。
         */
        isPlaying(): boolean;
        /**
         * @private
         * 如果正在执行缓动滚屏，停止缓动。
         */
        stop(): void;
        private started;
        /**
         * @private
         * true表示已经调用过start方法。
         */
        isStarted(): boolean;
        /**
         * @private
         * 开始记录位移变化。注意：当使用完毕后，必须调用 finish() 方法结束记录，否则该对象将无法被回收。
         * @param touchPoint 起始触摸位置，以像素为单位，通常是stageX或stageY。
         */
        start(touchPoint: number): void;
        /**
         * @private
         * 更新当前移动到的位置
         * @param touchPoint 当前触摸位置，以像素为单位，通常是stageX或stageY。
         */
        update(touchPoint: number, maxScrollValue: number, scrollValue: any): void;
        /**
         * @private
         * 停止记录位移变化，并计算出目标值和继续缓动的时间。
         * @param currentScrollPos 容器当前的滚动值。
         * @param maxScrollPos 容器可以滚动的最大值。当目标值不在 0~maxValue之间时，将会应用更大的摩擦力，从而影响缓动时间的长度。
         */
        finish(currentScrollPos: number, maxScrollPos: number): void;
        /**
         * @private
         *
         * @param timeStamp
         * @returns
         */
        private onTick(timeStamp);
        /**
         * @private
         *
         * @param animation
         */
        private finishScrolling(animation?);
        /**
         * @private
         * 缓动到水平滚动位置
         */
        private throwTo(hspTo, duration?);
        /**
         * @private
         * 更新水平滚动位置
         */
        private onScrollingUpdate(animation);
    }
}
declare namespace eui {
    /**
     * Defines values for setting the direction property
     * of the ProgressBar class.
     * @version Egret 2.4
     * @version eui 1.0
     * @platform Web,Native
     * @includeExample  extension/eui/core/DirectionExample.ts
     * @language en_US
     */
    /**
     * 定义进度条等控件增长方向的常量
     * @version Egret 2.4
     * @version eui 1.0
     * @platform Web,Native
     * @includeExample  extension/


hql-engine-cdn.hasura.io/assets/main-site/deploy-hasura-cloud.png" /></a>

**Nota**: inscribirse es gratis y no se requiere tarjeta de crédito.

Una vez que se registre e inicie sesión, debería ver la siguiente pantalla de bienvenida y se creará automáticamente un
nuevo proyecto de Hasura para usted:

![Página de bienvenida de Hasura Cloud](https://graphql-engine-cdn.hasura.io/learn-hasura/assets/graphql-hasura/hasura-cloud-welcome.png)

Una vez que se inicie el proyecto, puede hacer clic en el botón `Launch Console` en la ventana emergente. Si ya tenía
una cuenta de Hasura Cloud, puede crear un nuevo proyecto mediante un clic en la acción `+ New Project` en la parte
superior y luego en `Launch Console`.

## Consola de Hasura {#hasura-console}

Esto abrirá la consola de Hasura para el proyecto. Debería verse algo así:

![Consola de Hasura](https://graphql-engine-cdn.hasura.io/learn-hasura/assets/graphql-hasura/hasura-console.png)

El siguiente paso es conectar la base de datos a Hasura. Podemos hacer uso del nivel de la
[base de datos de Postgres](https://hasura.io/learn/database/postgresql/what-is-postgresql/) gratuita de Heroku para
configurar esto. Diríjase a la pestaña `Data` en la consola y haga clic en `Connect Database`.

Tenemos dos opciones para conectar una base de datos:

- Conecte una base de datos existente
- Cree la base de datos de Heroku (gratis)

Para iniciar este proceso, vamos a crear una nueva base de datos de Postgres desde cero utilizando Heroku Postgres. Haga
clic en la pestaña `Create Heroku Database (Free)`. En esta pestaña, ahora tiene una opción para hacer clic en el botón
`Create Database`. Tenga en cuenta que crear una cuenta en Heroku es gratis.

![Cree la base de datos de Heroku](https://graphql-engine-cdn.hasura.io/learn-hasura/assets/graphql-hasura/create-heroku-database.png)

Después de iniciar sesión en Heroku y hacer clic en `Create Database`, Hasura Cloud realizará lo siguiente para usted:

- Crear una aplicación en Heroku
- [Instalar el complemento de Postgres](https://hasura.io/learn/database/postgresql/installation/installing-postgresql/)
- Buscar la URL de la base de datos que puede utilizar para configurar Hasura

![Configuración de Heroku de Hasura Cloud](https://graphql-engine-cdn.hasura.io/learn-hasura/assets/graphql-hasura/hasura-cloud-heroku-setup.png)

Se necesitarán unos segundos para conectarse a Heroku Postgres e iniciar. Una vez que se establezca la conexión, se le
llevará a la página del gestor de datos en la consola, que enumera la base de datos que acabamos de conectar.

También puede gestionar el proyecto desde el panel de control de Hasura Cloud.

![Página del proyecto de Hasura Cloud](https://graphql-engine-cdn.hasura.io/learn-hasura/assets/graphql-hasura/hasura-cloud-project-page.png)

¡Genial! ¡Ahora ha desplegado Hasura, conectado una base de datos y tiene la consola de administrador lista para
empezar!
---


eBorder

nsStyleTableBorder::nsStyleTableBorder(nsPresContext* aPresContext)
{
  mBorderCollapse = NS_STYLE_BORDER_SEPARATE;

  nsCompatibility compatMode = eCompatibility_FullStandards;
  if (aPresContext)
    compatMode = aPresContext->CompatibilityMode();
  mEmptyCells = (compatMode == eCompatibility_NavQuirks)
                  ? NS_STYLE_TABLE_EMPTY_CELLS_SHOW_BACKGROUND
                  : NS_STYLE_TABLE_EMPTY_CELLS_SHOW;
  mCaptionSide = NS_SIDE_TOP;
  mBorderSpacingX.SetCoordValue(0);
  mBorderSpacingY.SetCoordValue(0);
}

nsStyleTableBorder::~nsStyleTableBorder(void)
{
}

nsStyleTableBorder::nsStyleTableBorder(const nsStyleTableBorder& aSource)
{
  memcpy((nsStyleTableBorder*)this, &aSource, sizeof(nsStyleTableBorder));
}

nsChangeHint nsStyleTableBorder::CalcDifference(const nsStyleTableBorder& aOther) const
{
  // Border-collapse changes need a reframe, because we use a different frame
  // class for table cells in the collapsed border model.  This is used to
  // conserve memory when using the separated border model (collapsed borders
  // require extra state to be stored).
  if (mBorderCollapse != aOther.mBorderCollapse) {
    return NS_STYLE_HINT_FRAMECHANGE;
  }

  if ((mCaptionSide == aOther.mCaptionSide) &&
      (mBorderSpacingX == aOther.mBorderSpacingX) &&
      (mBorderSpacingY == aOther.mBorderSpacingY)) {
    if (mEmptyCells == aOther.mEmptyCells)
      return NS_STYLE_HINT_NONE;
    return NS_STYLE_HINT_VISUAL;
  }
  else
    return NS_STYLE_HINT_REFLOW;
}

#ifdef DEBUG
/* static */
nsChangeHint nsStyleTableBorder::MaxDifference()
{
  return NS_STYLE_HINT_FRAMECHANGE;
}
#endif

// --------------------
// nsStyleColor
//

nsStyleColor::nsStyleColor(nsPresContext* aPresContext)
{
  mColor = aPresContext->DefaultColor();
}

nsStyleColor::nsStyleColor(const nsStyleColor& aSource)
{
  mColor = aSource.mColor;
}

nsChangeHint nsStyleColor::CalcDifference(const nsStyleColor& aOther) const
{
  if (mColor == aOther.mColor)
    return NS_STYLE_HINT_NONE;
  return NS_STYLE_HINT_VISUAL;
}

#ifdef DEBUG
/* static */
nsChangeHint nsStyleColor::MaxDifference()
{
  return NS_STYLE_HINT_VISUAL;
}
#endif

// --------------------
// nsStyleBackground
//

nsStyleBackground::nsStyleBackground(nsPresContext* aPresContext)
  : mBackgroundFlags(NS_STYLE_BG_COLOR_TRANSPARENT | NS_STYLE_BG_IMAGE_NONE),
    mBackgroundAttachment(NS_STYLE_BG_ATTACHMENT_SCROLL),
    mBackgroundClip(NS_STYLE_BG_CLIP_BORDER),
    mBackgroundInlinePolicy(NS_STYLE_BG_INLINE_POLICY_CONTINUOUS),
    mBackgroundOrigin(NS_STYLE_BG_ORIGIN_PADDING),
    mBackgroundRepeat(NS_STYLE_BG_REPEAT_XY)
{
  mBackgroundColor = aPresContext->DefaultBackgroundColor();
}

nsStyleBackground::nsStyleBackground(const nsStyleBackground& aSource)
  : mBackgroundFlags(aSource.mBackgroundFlags),
    mBackgroundAttachment(aSource.mBackground


Rule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}function kr(n,e=[]){return n instanceof te||n instanceof V||n instanceof Te||(n instanceof ve?ra(n.definition,t=>kr(t,e)):!(n instanceof fe&&he(e,n))&&n instanceof Fe&&(n instanceof fe&&e.push(n),be(n.definition,t=>kr(t,e))))}function Be(n){if(n instanceof fe)return"SUBRULE";if(n instanceof te)return"OPTION";if(n instanceof ve)return"OR";if(n instanceof Ie)return"AT_LEAST_ONE";if(n instanceof Ce)return"AT_LEAST_ONE_SEP";if(n instanceof Te)return"MANY_SEP";if(n instanceof V)return"MANY";if(n instanceof D)return"CONSUME";throw Error("non exhaustive match")}class xr{walk(e,t=[]){I(e.definition,(r,i)=>{const s=J(e.definition,i+1);if(r instanceof fe)this.walkProdRef(r,s,t);else if(r instanceof D)this.walkTerminal(r,s,t);else if(r instanceof ye)this.walkFlat(r,s,t);else if(r instanceof te)this.walkOption(r,s,t);else if(r instanceof Ie)this.walkAtLeastOne(r,s,t);else if(r instanceof Ce)this.walkAtLeastOneSep(r,s,t);else if(r instanceof Te)this.walkManySep(r,s,t);else if(r instanceof V)this.walkMany(r,s,t);else{if(!(r instanceof ve))throw Error("non exhaustive match");this.walkOr(r,s,t)}})}walkTerminal(e,t,r){}walkProdRef(e,t,r){}walkFlat(e,t,r){const i=t.concat(r);this.walk(e,i)}walkOption(e,t,r){const i=t.concat(r);this.walk(e,i)}walkAtLeastOne(e,t,r){const i=[new te({definition:e.definition})].concat(t,r);this.walk(e,i)}walkAtLeastOneSep(e,t,r){const i=Oa(e,t,r);this.walk(e,i)}walkMany(e,t,r){const i=[new te({definition:e.definition})].concat(t,r);this.walk(e,i)}walkManySep(e,t,r){const i=Oa(e,t,r);this.walk(e,i)}walkOr(e,t,r){const i=t.concat(r);I(e.definition,s=>{const a=new ye({definition:[s]});this.walk(a,i)})}}function Oa(n,e,t){return[new te({definition:[new D({terminalType:n.separator})].concat(n.definition)})].concat(e,t)}function Gn(n){if(n instanceof fe)return Gn(n.referencedRule);if(n instanceof D)return[n.terminalType];if(function(e){return e instanceof ye||e instanceof te||e instanceof V||e instanceof Ie||e instanceof Ce||e instanceof Te||e instanceof D||e instanceof _t}(n))return function(e){let t=[];const r=e.definition;let i,s=0,a=r.length>s,o=!0;for(;a&&o;)i=r[s],o=kr(i),t=t.concat(Gn(i)),s+=1,a=r.length>s;return vi(t)}(n);if(function(e){return e instan


            return sse_event_queue

    async def enqueue_events_for_sse(self, task_id, task_update_event):
        async with self.subscriber_lock:
            if task_id not in self.task_sse_subscribers:
                return

            current_subscribers = self.task_sse_subscribers[task_id]
            for subscriber in current_subscribers:
                await subscriber.put(task_update_event)

    async def dequeue_events_for_sse(
        self, request_id, task_id, sse_event_queue: asyncio.Queue
    ) -> AsyncIterable[SendTaskStreamingResponse] | JSONRPCResponse:
        try:
            while True:
                event = await sse_event_queue.get()
                if isinstance(event, JSONRPCError):
                    yield SendTaskStreamingResponse(id=request_id, error=event)
                    break

                yield SendTaskStreamingResponse(id=request_id, result=event)
                if isinstance(event, TaskStatusUpdateEvent) and event.final:
                    break
        finally:
            async with self.subscriber_lock:
                if task_id in self.task_sse_subscribers:
                    self.task_sse_subscribers[task_id].remove(sse_event_queue)


/x); \
	mov	SYS_/**/x, %g1; \
	t	210; \
	bcs	cerror; \
	nop; \
	retl; \
	nop

/*
 * Simulator system calls, (SAS -m), used to implement
 * simulated disk i/o from the driver level of the kernel.
 */

	SYSCALL(open)

	SYSCALL(close)

	SYSCALL(read)

	SYSCALL(write)

	SYSCALL(lseek)

	SYSCALL(ioctl)

	SYSCALL(bind)

	SYSCALL(sendto)

	SYSCALL(recv)

	SYSCALL(socket)

cerror:
	sethi	%hi(_errno), %g1;
	st	%o0, [%g1 + %lo(_errno)];
	retl;
	mov	-1, %o0;

/*
 * traps to the simulator for character i/o
 */
/*
 * simcoutc(c) char c;
 */
#define UART_1N	0	/* each character followed by a new-line */
#define UART_4N	4	/* 4 characters, then a new-line */
#define UART_4	8	/* 4 characters, no new line */
	.global _simcoutc
_simcoutc:
	set	UART_BYPASS, %g1
	mov	UART_4N, %g2
	retl
	sta	%o0, [%g1 + %g2] ASI_CTL

	.global	_simcinc
_simcinc:
	t	252
	retl
	nop


border-radius:0.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{border-color:#2C3E50;background-color:#2C3E50}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(44,62,80,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(44,62,80,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(44,62,80,0.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:0.5rem}.custom-switch .custom-control-label::after{top:calc(0.203125rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#b4bcc2;border-radius:0.5rem;-webkit-transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;transition:transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;transition:transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out}@media screen and (prefers-reduced-motion: reduce){.custom-switch .custom-control-label::after{-webkit-transition:none;transition:none}}.custom-switch .custom-control-input:checked ~ .custom-control-label::after{background-color:#fff;-webkit-tran


--- API documentation generation script for screw.nvim
---
--- This script uses vimdoc to generate API documentation from LuaCATS annotations
--- in the source code, following the nvim-best-practices-plugin-template pattern.

--- Get the directory where this script is located
---@return string
local function _get_script_directory()
  local info = debug.getinfo(1, "S")
  local script_path = info.source:match("^@(.+)")
  return vim.fn.fnamemodify(script_path, ":h")
end

--- Get the project root directory (two levels up from script directory)
---@return string
local function _get_project_root()
  local script_dir = _get_script_directory()
  return vim.fn.fnamemodify(script_dir, ":h:h")
end

--- Debug function to show package paths
local function debug_paths()
  print("=== Debugging package paths ===")
  print("package.path:", package.path)
  print("package.cpath:", package.cpath)

  -- Try to find mini.doc in different locations
  local paths_to_check = {}
  for path in package.path:gmatch("([^;]+)") do
    local mini_doc_path = path:gsub("%?", "mini/doc")
    table.insert(paths_to_check, mini_doc_path)
  end

  print("Checking for mini.doc at these locations:")
  for _, path in ipairs(paths_to_check) do
    local exists = vim.fn.filereadable(path) == 1
    print("  " .. path .. " : " .. (exists and "EXISTS" or "not found"))
  end
end

--- Generate basic API documentation as fallback
local function generate_basic_docs()
  print("Generating basic API documentation as fallback...")

  local api_content = [[==============================================================================
screw.nvim API Documentation                                    *screw_api.txt*

Auto-generated API documentation for screw.nvim security code review plugin.

==============================================================================
FUNCTIONS                                                      *screw-api-functions*

For detailed API documentation, see the source files:
- lua/screw/init.lua      - Main plugin API functions
- lua/screw/types.lua     - Type definitions
- lua/screw/config/meta.lua - Configuration types

Main API functions available:
- setup()                 - Initialize the plugin (optional)
- create_note()           - Create a new security note
- view_current_line_notes() - View notes for current line
- get_notes()             - Get all notes with optional filtering
- export_notes()          - Export notes to various formats
- import_notes()          - Import SARIF findings
- jump_next()             - Jump to next security note
- jump_prev()             - Jump to previous security note

For complete function signatures and detailed documentation,
use LSP or refer to the source code with LuaCATS annotations.

==============================================================================
 vim:tw=78:ts=8:noet:ft=help:norl:
]]

  local types_content = [[==============================================================================
screw.nvim Type Definitions                                   *screw_types.txt*

Auto-generated type documentation for screw.nvim.

==============================================================================
CORE TYPES


sing var input = """
            {"event_id":"12c2d058d58442709aa2eca08bf20986"}

            """.ToMemoryStream();

        using var expectedEnvelope = new Envelope(
            new Dictionary<string, object> { ["event_id"] = "12c2d058d58442709aa2eca08bf20986" },
            Array.Empty<EnvelopeItem>());

        // Act
        using var envelope = await Envelope.DeserializeAsync(input);

        // Assert
        envelope.Should().BeEquivalentTo(expectedEnvelope);
    }

    [Fact]
    public async Task Serialization_EnvelopeWithoutHeader_Success()
    {
        // Arrange
        using var envelope = new Envelope(
            new Dictionary<string, object>(),
            new[]
            {
                new EnvelopeItem(
                    new Dictionary<string, object>{["type"] = "session"},
                    new StreamSerializable("""
                        {"started": "2020-02-07T14:16:00Z","attrs":{"release":"sentry-test@1.0.0"}}
                        """.ToMemoryStream())
                )
            });

        // Act
        var output = await envelope.SerializeToStringAsync(_testOutputLogger, _fakeClock);

        // Assert
        output.Should().Be("""
            {"sent_at":"9999-12-31T23:59:59.9999999+00:00"}
            {"type":"session","length":75}
            {"started": "2020-02-07T14:16:00Z","attrs":{"release":"sentry-test@1.0.0"}}

            """);
    }

    [Fact]
    public void Serialization_EnvelopeWithoutHeader_Success_Synchronous()
    {
        // Arrange
        using var envelope = new Envelope(
            new Dictionary<string, object>(),
            new[]
            {
                new EnvelopeItem(
                    new Dictionary<string, object>{["type"] = "session"},
                    new StreamSerializable("""
                        {"started": "2020-02-07T14:16:00Z","attrs":{"release":"sentry-test@1.0.0"}}
                        """.ToMemoryStream())
                )
            });

        // Act
        var output = envelope.SerializeToString(_testOutputLogger, _fakeClock);

        // Assert
        output.Should().Be("""
            {"sent_at":"9999-12-31T23:59:59.9999999+00:00"}
            {"type":"session","length":75}
            {"started": "2020-02-07T14:16:00Z","attrs":{"release":"sentry-test@1.0.0"}}

            """);
    }

    [Fact]
    public async Task Deserialization_EnvelopeWithoutHeader_Success()
    {
        // Arrange
        using var input = """
                {}
                {"type":"fake","length":75}
                {"started": "2020-02-07T14:16:00Z","attrs":{"release":"sentry-test@1.0.0"}}

                """.ToMemoryStream();

        using var expectedEnvelope = new Envelope(
            new Dictionary<string, object>(),
            new[]
            {
                new EnvelopeItem(
                    new Dictionary<string, object>{["type"] = "fake"},
                    new StreamSerializable("""
                        {"started": "2020-02-07T14:16:00Z","attrs":{"release":"sentry-test@1.0.0"}}
                        """.ToMemoryStream())
                )
            });

        // Act
        using var envelope = await Envelope.DeserializeAsync(input);

        // Assert
        envelope.Should().BeEquivalentTo(expectedEnvelope);
    }

    [Fact]
    public async Task Serialization_EnvelopeWithTwoItems_Success()
    {
        // Arrange
        using var envelope = new Envelope(
            new Dictionary<string, object>
            {
                ["event_id"] = "9ec79c33ec


ddress)
	logger.Debug("Re-Sending preprepare v2", "m", m)
	c.broadcast(m)
	return nil
}

func (c *core) handlePreprepareV2(msg *istanbul.Message) error {
	defer c.handlePrePrepareTimer.UpdateSince(time.Now())

	logger := c.newLogger("func", "handlePreprepareV2", "tag", "handleMsg", "from", msg.Address)
	logger.Trace("Got preprepareV2 message", "m", msg)

	preprepareV2 := msg.PreprepareV2()

	logger = logger.New("msg_num", preprepareV2.Proposal.Number(), "msg_hash",
		preprepareV2.Proposal.Hash(), "msg_seq", preprepareV2.View.Sequence, "msg_round", preprepareV2.View.Round)

	// Verify that the proposal is for the sequence number of the view we verified.
	if preprepareV2.View.Sequence.Cmp(preprepareV2.Proposal.Number()) != 0 {
		logger.Warn("Received preprepare with invalid block number")
		return errInvalidProposal
	}

	// Ensure we have the same view with the PREPREPARE message.
	if err := c.checkMessage(istanbul.MsgPreprepareV2, preprepareV2.View); err != nil {
		if err == errOldMessage {
			// Get validator set for the given proposal
			valSet := c.backend.ParentBlockValidators(preprepareV2.Proposal)
			prevBlockAuthor := c.backend.AuthorForBlock(preprepareV2.Proposal.Number().Uint64() - 1)
			proposer := c.selectProposer(valSet, prevBlockAuthor, preprepareV2.View.Round.Uint64())

			// We no longer broadcast a COMMIT if this is a PREPREPARE from the correct proposer for an existing block.
			// However, we log a WARN for potential future debugging value.
			if proposer.Address() == msg.Address && c.backend.HasBlock(preprepareV2.Proposal.Hash(), preprepareV2.Proposal.Number()) {
				logger.Warn("Would have sent a commit message for an old block")
				return nil
			}
		}
		// Probably shouldn't errFutureMessage as we should have moved to that round in handleRoundChangeCertificate
		logger.Trace("Check preprepare failed", "err", err)
		return err
	}

	// Check proposer is valid for the message's view (this may be a subsequent round)
	headBlock, headProposer := c.backend.GetCurrentHeadBlockAndAuthor()
	if headBlock == nil {
		logger.Error("Could not determine head proposer")
		return errNotFromProposer
	}
	proposerForMsgRound := c.selectProposer(c.current.ValidatorSet(), headProposer, preprepareV2.View.Round.Uint64())
	if proposerForMsgRound.Address() != msg.Address {
		logger.Warn("Ignore preprepare message from non-proposer", "actual_proposer", proposerForMsgRound.Address())
		return errNotFromProposer
	}

	// If round > 0, handle the ROUND CHANGE certificate. If round = 0, it should not have a ROUND CHANGE certificate
	if preprepareV2.View.Round.Cmp(common.Big0) > 0 {
		if !preprepareV2.HasRoundChangeCertificateV2() {
			logger.Error("Preprepare for non-zero round did not contain a round change certificate.")
			return errMissingRoundChangeCertificate
		}
		// This also moves us to the next round if the certificate is valid.
		err := c.handleRoundChangeCertificateV2(*preprepareV2.View, preprepareV2.RoundChangeCertificateV2, preprepareV2.Proposal)
		if err != nil {
			logger.Warn("Invalid round change certificate with preprepare.", "err", err)
			return err
		}
	} else if preprepareV2.HasRoundChangeCertificateV2() {
		logger.Error("Preprepare for round 0 has a round change certificate.")
		return errInvalidProposal
	}

	// Verify the proposal we received
	if duration, err := c.verifyProposal(preprepareV2.Proposal); err !=


CountAggregationResult) XXX_Size() int {
	return xxx_messageInfo_CountAggregationResult.Size(m)
}
func (m *CountAggregationResult) XXX_DiscardUnknown() {
	xxx_messageInfo_CountAggregationResult.DiscardUnknown(m)
}

var xxx_messageInfo_CountAggregationResult proto.InternalMessageInfo

func (m *CountAggregationResult) GetValue() int64 {
	if m != nil && m.Value != nil {
		return *m.Value
	}
	return 0
}

type TopRowsAggregationResult struct {
	Rows                 [][]byte `protobuf:"bytes,1,rep,name=rows" json:"rows,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *TopRowsAggregationResult) Reset()         { *m = TopRowsAggregationResult{} }
func (m *TopRowsAggregationResult) String() string { return proto.CompactTextString(m) }
func (*TopRowsAggregationResult) ProtoMessage()    {}
func (*TopRowsAggregationResult) Descriptor() ([]byte, []int) {
	return fileDescriptor_453745cff914010e, []int{106}
}

func (m *TopRowsAggregationResult) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_TopRowsAggregationResult.Unmarshal(m, b)
}
func (m *TopRowsAggregationResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_TopRowsAggregationResult.Marshal(b, m, deterministic)
}
func (m *TopRowsAggregationResult) XXX_Merge(src proto.Message) {
	xxx_messageInfo_TopRowsAggregationResult.Merge(m, src)
}
func (m *TopRowsAggregationResult) XXX_Size() int {
	return xxx_messageInfo_TopRowsAggregationResult.Size(m)
}
func (m *TopRowsAggregationResult) XXX_DiscardUnknown() {
	xxx_messageInfo_TopRowsAggregationResult.DiscardUnknown(m)
}

var xxx_messageInfo_TopRowsAggregationResult proto.InternalMessageInfo

func (m *TopRowsAggregationResult) GetRows() [][]byte {
	if m != nil {
		return m.Rows
	}
	return nil
}

type PercentilesAggregationItem struct {
	Key                  *float64 `protobuf:"fixed64,1,opt,name=key" json:"key,omitempty"`
	Value                []byte   `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *PercentilesAggregationItem) Reset()         { *m = PercentilesAggregationItem{} }
func (m *PercentilesAggregationItem) String() string { return proto.CompactTextString(m) }
func (*PercentilesAggregationItem) ProtoMessage()    {}
func (*PercentilesAggregationItem) Descriptor() ([]byte, []int) {
	return fileDescriptor_453745cff914010e, []int{107}
}

func (m *PercentilesAggregationItem) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_PercentilesAggregationItem.Unmarshal(m, b)
}
func (m *PercentilesAggregationItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_PercentilesAggregationItem.Marshal(b, m, deterministic)
}
func (m *PercentilesAggregationItem) XXX_Merge(src proto.Message) {
	xxx_messageInfo_PercentilesAggregationItem.Merge(m, src)
}
func (m *PercentilesAggregationItem) XXX_Size() int {
	return xxx_messageInfo_PercentilesAggregationItem.Size(m)
}
func (m *PercentilesAggregationItem) XXX_DiscardUnknown() {
	xxx_messageInfo_PercentilesAggregationItem.Dis


b6+\x9e\xfaF\xdbi\xab\xe9~\xbb\
;m\xbf\xdc\xce\x9aX*\x92w\x97\xbbm\xae\x9d\xb5\
W\xd5\xdb\xcf]>z\xe9\x98\xb7\x0f\x97\x12\xae\xd2N\
c\x1d0\x08\x01OF\xc7<\xe0\x9e\x19\x98\x1c\x95\xe6\
\x09\xafW\x050[\x92@\x05NFs\xf3\x1c\x82>\
b\xa3\x00\xb1'w\x18\x15\xb0\xd6\xf1\xb2\x95e\xdc;\
n\xcb\x11\x9f\xbd\x82ry\x1cu\xcf\xbey\xa6\x08Q\
r\x19\x00\x04\xf4\x18\x03\xaez\x9f~z\xf0q\xe9\x9a\
\xce5ih\xdd6\xda\xb2\xe5R\xb2\xdd+\xab\xdf\xf3\
\xdf\xafR\xe7\x86\xaf\x1b.h\xd9\xdd]&\xf5\xd3w\
k\xf9+\xebk\xdb\xaa\x5c\x95\xcc\x93H\xe1f!\x17\
 \x02\xb98S\x8c\x0c\xe4q\x9c\x1e\x83 p\xd8\x0a\
\x0c\xd6\xfa/\xdd\xb8\xb9\x93\xf7`o\x1b\x06\x1cc\xee\
\x86<\x826e@\x00|\xa4\xe5rI\x1b\xf76\xb1\
2\x19\x08\x1ccq\xc0<!,r9\xc9#\xbfQ\
\xeb\xc9\xcf7\xadk\xd7\xebi$ZF\x8f=\xec\xc2\
&iB\xba\x01\x0a\x00rUA\xdf!\x001\xda\x00\
s\xc6\xc0\xccx\xee\xa3R\xadu\x0axd\xa9\xf3>\
Z\x92\x94\xa1\x08\xd3Z]\xf3TiF\xed\xbb\xebv\
\xec\x96\xad_\x9at\xe1IM\xd7z\xc6*T\xa3\x15\
)s\xc9\xabY4\xb6J:\xdd\xef\xaazi\xe5\x1e\
4\xf1\x1a\xd9\xdcO\x05\x91+(;\xb7:|\xab\xf3\
\x88\xf6\xee\xc9\x8f\xcc+\xbb*76\xf2H\xdd\x8c\x0f\
\x9fu\xab\x9b\xab\x99$\x9eWW,\xe2_\x9d1\x85\
\xcb\xaarrd;I\x19%@\x0d\xc0#kW\xad\
\xea\xba-\xce\xa7o>\xa7p\xed\x04\xc7d\x91A4\
\x86\x16\x99\xb710\xc4\xa3+\x8cr\xaaN\x1b\xeeg\
q&\xbc\xe3\xc4\xda}\xa5\xae\x9d\x17\x991[\xb6H\
^\x14Tf]\xe6V\x12\x89v\x15\x08\x14\x0f\x97n\
\xf3\xf3\x80B\x9c\x8a\xfdg\x87\xa1\x85\xc3\xaa4\xa1j\
\x95o\x0as\x92\x8b\x93s\xb4\x5c\xaf+?v:\xa6\
\xf6\x8d\xdd\xf5L\xf8\x0c\xeeU\xabsI\xcaP\x85\x9b\
\x8ao\xca\xdb4\x9a\xb5\xad\xe6\x93\xb6\xac\xf3\xa9$f\
.U\x8a\x96\x00\xc7\x93\x91\xc3)\x0a\x06\x00\x01\x91\x94\
\xf4b\xa3;\xb3\xc91;\xa9\x08\x1by\x03=\xc2*\
\xaa\x9d\xad\x19rv\xe5\xb9`\x00$\xe1\xb2\xc3\x83Z\
1\xa4\xcf\xe6\x08\xd1\xd9\x87\x98K\x05\x0d\x1a\xec \x02\
6\x02y\x1c\xb2\x82N\xe27`\xe7\x19\xa0\xba\xe5\x17\
\x8c\xf4\x0e\x87w\x98~^Y\x82\x82\xe4e\xb1\x80\x01\
\xc0\xdeA\x0b_\xa1C\x96Zix\xb8\xdd]^\xda\
.\xdaw\xf3\xd6\xfao\xf0\x95\x14\xa0\xf9\x94\x9b\xe6\xeb\
\xe9k\x7f\xc0\xfc\xf7/\xdajSY\xa4\xa8N\xf4\x90\
*F2\x1aE\x0c\xc4\x93\x94\xfb\xc0\xa9\xf9@\x03`\
\xdc0\xc0\x023&\xba\x92B\xccAws$\x8a|\
\xb2H\x01\x8f\x0a\xe5\x8e\xd6\xc1EbT\x92\xeas\xc1\
\x18\x1d6\x96d`\xac\xe3\xcb\x0a\x18\x992\xb8\xc8$\
\x07\xc9\xce\x18\xe7\x95\x03\x01\xb3\x85dx\xcf\x01\xb9q\
\x8d\xa4\xb9\xe7\xef\x22\xe7\x09\xd0\x92\xccI 1<d\
\x0e.\x9d*P\x9f:\x82R\x9d\xae\xfb\xdb\x96\xe9\xae\
\xba\xbb6\x9b\xead\xebT\xf8V\x91Z=\x16\xa9\xdb\
_^\xbf\x9a(\xb1,>\xf9`N0H.H\xf9\
\x9bqPQX1\x04\x01\xc8-\xf2\x91\xbbmP\x95\
\x9f8\xc2\x05\x01\x95I (\x0a\x07\xcaN\xe0\xc4\x8c\
2\xf5\x00rr\xc0\xee\x1a{\x14\xe0\x15$\xa9]\xa4\
\xb6\xd4*\xa4\x1f3i-\x86%\x86A\x04\x90\xc3h\
\x04\xe0Wxw\x00P\x03\x82\x01'\x00\x06 \xaeW\
$\x1f\x97\x0c\xe3\x95@@\x5cd\x1cw\xd3\x9cb\xd5\
\xd2\xf5kMRI\xab]\xa7\xb7\xce\xf78\xab\xc6m\
\xab?>T\xdd\xb7\xb3\xbe\xd6\xbd\xfb\xe8\xf4\xd7B\x89\
PY\x1bs\x900\x0e\xe3\x88\xc0\x22F\xdcT\x80p\
\xcd\xb7#8\xc2\x8c6A\xa8Y\xb6\xc9)\x0cI\x08\
\x03F\xd9eR\xdc\xaa\x93\xf3\x16\x1b\x8b6\xe5\x1c\x06\
\x0b\xd4\xe2\xae?\xdf\x19;\x89\x00\xa9 d\xa3\x07\xe4\
\x13\x9c\x91\xe5\x9c\x02\xa3$\xe7$1&\xac\x91\xe5\xd4\
\x02\xaa\x88\x146\xd2#\x05\x8e\xe6\x18\x04\x95\xe3\x07\x0c\
Hl\xb8l\x11\xd7\xa6\x0di\xad\x97*\xf4\xddt\xb2\
z\xbb-\x96\xbbY\xdd\x1c\x15\x1c\x96\x8f]\xf5i;\
_\xa7[t\xd5j\xfa2\xb4\xae\xc8r\xea\x8e:\x00\
\x00\x04\x11\x9e\x1c\x81\xc1\xc3\x12\xa0p7\x10\xcb\xcei\
\xbb\xd9B\x11\xb8\x82X&\xd3\x86\xe8\xa5F\xdeY\xb2\
y\x0a0\x0a\xf00\xbfu_a\xc3\x05(X\x97!\
X\xb1\xc9\x1bU\xb2x \xe1\x89%Tt\x0e\x018\
\xa6\x0d\xaeN\x19Wi\xf9\x9c\xa8|\x01\xf2\x92\xbd\x86\
\xe1\xd4\x92r\xaap0@\xad\x95\x92WZ[].\
\xba%d\xb6\xf2\xb6\xeb\xa3\xdc\xc2rr\xd5iw\x17\
\xd6\xd7{\xda\xeb]}\xefWa]\xe4\xc1\x03k;\
(|\xb68a\xf7Q\x8eI\x1b\x89 \x02q\xb4\x00\
0\xc3\x22 \xc7!\x87\x98<\xb7\x0d\xc1\xe4\xc8\xaa\x14\
\x80\x09\x01\x87\x1bw\x95\xcb\x81\xd8\xf2f\x916\x02A\
2Fq\xd0\x01\xb7vpFG\xf0\x92\xac\xb8\xc6q\
\x9c\xe3\x91\x19@\xaeA\xdc\xcd\xb7\x00\xe7\xef\xee\x07q\
)\x9c)S\xcf!AS\x85c\x92\xa6\xa2\xd2\x8fO\
\xc2\xff\x00em{+i\xe8\xb5Ww\xb2\xf7\xf4\xbc\
\xdd\x97\xf7\xb6\xb5\xaf\xf9/\x9a\xd4\xd3\xb3\xd4\xa4\xb4>\
dD\x01\x1eG\x97\xbb;\xdbq\x0d\x92\xb8}\x80t\
\x1c\x12p\x00\xe0g\xb6\x87_\x82\xfa\xdc\xba$\x0bt\
\x15\x9c\xe7\x00\x9cs\x94$\xe7\x82\xc7r\x01\xb4\xb0e\
=s^d\xfb\xb8!A\x01\xf2\xa8B(R\x01$\
\x001\x91\xceyl\x95\x05\xb6\x90\x03T\xb6\xec\xea\xeb\
\x22\x10\x0f\x96X\x90\x5c\x15%F\x15\x06\xe3\x808\xdc\
\xb1\xb7$\x12\xdc\xd7\x0e+,\xc3b\x17;\x8a\x8c\xd3\
\xbd\xe2\xb4z-%\xaa\xde\xd6\xbb\xd6\xeb\xafOK\x03\
\x9b\xe20\xb2P|\xd3\xa5}Si\xd9&\xac\xed\xbd\
\xbb\xeb\xff\x00\x03\xb5\xbf\xd5\x1eh\xda-\


us = HAL_DMA_Start_IT(hhash->hdmain, inputaddr, (uint32_t)&HASH->DIN, \
                                (((inputSize % 4U) != 0U) ? (inputSize + (4U - (inputSize % 4U))) : (inputSize)));
    }

    if (status != HAL_OK)
    {
      /* Return error status */
      status = HAL_ERROR;
    }
    /* Enable DMA requests */
    SET_BIT(HASH->CR, HASH_CR_DMAE);

    /* Process Unlocked */
    __HAL_UNLOCK(hhash);

    /* Return function status */
    if (status != HAL_OK)
    {
      /* Update HASH state machine to error */
      hhash->State = HAL_HASH_STATE_ERROR;
    }

    /* Return function status */
    return status;
  }
  else
  {
    return HAL_BUSY;
  }
}
/**
  * @}
  */

#endif /* HAL_HASH_MODULE_ENABLED */

/**
  * @}
  */
#endif /*  HASH*/
/**
  * @}
  */


.dataPlanoExpira);
      final hashDataExpira = md5.convert(utf8.encode(dataPlanoExpiraFormatada + Constantes.chave)).toString();
      if (hashDataExpira != Sessao.nfcePlanoPagamento!.hashRegistro) {
        Sessao.abriuDialogBoxEspera = true;
        gerarDialogBoxEspera(context);
        gerarDialogBoxInformacao(context, 'Banco de dados corrompido. Não é permitido realizar alterações no banco de dados.');
      } else {
        final dias = Sessao.nfcePlanoPagamento!.dataPlanoExpira!.difference(DateTime.now()).inDays;
        if (dias <= 5) {
          gerarDialogBoxInformacao(context, 'Faltam $dias dia(s) para que seu plano NFC-e expire.');
        }
        // verifica se o plano está ativo no servidor, pois o usuário pode cancelar o plano a qualquer tempo
        // TODO: essa verificação deve ser feita também randomicamente no momento da emissão da NFC-e
        if (await Biblioteca.hasNetwork()) {
          NfceService servicoNfce = NfceService();
          final nfcePlanoPagamentoModel = await servicoNfce.verificarPlano();
          if (nfcePlanoPagamentoModel == null || nfcePlanoPagamentoModel.statusPagamento != '3') {
            Sessao.configuracaoPdv =
            Sessao.configuracaoPdv!.copyWith(
              modulo: 'G',
              moduloFiscalPrincipal: '',
              planoSituacao: 'B',
              planoValor: 0,
              plano: '',
            );
            await Sessao.db.pdvConfiguracaoDao.alterar(Sessao.configuracaoPdv!);
            Sessao.db.nfcePlanoPagamentoDao.excluir(Sessao.nfcePlanoPagamento!);
            if (!mounted) return;
            Navigator.of(context)
              .push(MaterialPageRoute(
                  builder: (BuildContext context) =>
                      const NfceContrataPage()))
              .then((_) {
              });
          }
        }
      }
    } else {
      Sessao.configuracaoPdv =
      Sessao.configuracaoPdv!.copyWith(
        modulo: 'G',
        moduloFiscalPrincipal: '',
        planoSituacao: 'B',
        planoValor: 0,
        plano: '',
      );
      await Sessao.db.pdvConfiguracaoDao.alterar(Sessao.configuracaoPdv!);
      setState(() {
      });
    }
  }
// #endregion métodos Caixa

}/*
Title: T2Ti ERP 3.0
Description: ListaPage relacionada à tabela [PRODUTO_SUBGRUPO]

The MIT License

Copyright: Copyright (C) 2021 T2Ti.COM

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


games.toString(), inline: true },
                { name: "Kill per Game", value: stats.kpg.toString(), inline: true },
                { name: "Banned", value: stats.banned ? "Yes" : "No", inline: true }
            ])
            .setTimestamp()
            .setFooter({ text: "Made with Surviv.io API", iconURL: client.user.displayAvatarURL() });
        allEmbeds.push(overall);
        for (const mode of stats.modes) allEmbeds.push(createModeEmbed(mode, stats));
        if (history[0]) {
            const last = new EmbedBuilder()
                .setColor(color())
                .setTitle(`${stats.username} - Last Played Game`)
                .setImage(stats.player_icon)
                .addFields([
                    { name: "Mode", value: history[0].team_mode == 1 ? "Solo" : (history[0].team_mode == 2 ? "Duo" : "Squad"), inline: true },
                    { name: "Number of Teammates", value: history[0].team_count.toString(), inline: true },
                    { name: "Total Teams", value: history[0].team_total.toString(), inline: true },
                    { name: "Rank", value: history[0].rank.toString(), inline: true },
                    { name: "Kills", value: history[0].kills.toString(), inline: true },
                    { name: "Team Kills", value: history[0].team_kills.toString(), inline: true },
                    { name: "End Time", value: readableDateTime(new Date(history[0].end_time)), inline: true },
                    { name: "Damage Dealt", value: history[0].damage_dealt.toString(), inline: true },
                    { name: "Damage Taken", value: history[0].damage_taken.toString(), inline: true }
                ])
                .setTimestamp()
                .setFooter({ text: "Made with Surviv.io API", iconURL: client.user.displayAvatarURL() });
            allEmbeds.push(last);
        }
        return allEmbeds;
    }
}

const cmd = new SurvivCommand();
export default cmd;

const emotes = [
    "acorn",
    "face-alien",
    "face-angry",
    "baguette",
    "campfire",
    "candy-corn",
    "cattle",
    "chick",
    "chicken-dinner",
    "coconut",
    "crab",
    "cupcake",
    "face-dab",
    "face-disappoint",
    "donut",
    "egg",
    "eggplant",
    "fish",
    "flag-albania",
    "flag-algeria",
    "flag-argentina",
    "flag-australia",
    "flag-austria",
    "flag-azerbaijan",
    "flag-belarus",
    "flag=belgium",
    "flag-bolivia",
    "flag-brazil",
    "flag-canada",
    "flag-chile",
    "flag-china",
    "flag-colombia",
    "flag-croatia",
    "flag-czech-republic",
    "flag-denmark",
    "flag-dominican-republic",
    "flag-ecudaor",
    "flag-egypt",
    "flag-estonia",
    "flag-finland",
    "flag-france",
    "flag-georgia",
    "flag-germany",
    "flag-greece",
    "flag-guatemala


북';
      case 'body swap':
        return '신체교환';
      case 'out of order':
        return '정리되지 않음';
      case 'time stop':
        return '시간 정지';
      case 'missing cover':
        return '커버 없음';
      case 'monster':
        return '몬스터';
      case 'mtf threesome':
        return '남여트젠 쓰리썸';
      case '3d':
        return '3D';
      case 'twins':
        return '쌍둥이';
      case 'ttm threesome':
        return '남트젠트젠 쓰리썸';
      case 'compilation':
        return '모음집';
      case 'oyakodon':
        return '모녀덮밥';
      case 'poor grammar':
        return '맞춤법 안맞음';
      case 'watermarked':
        return '워터마크';
      case 'game sprite':
        return 'game sprite';
      case 'mmt threesome':
        return '남남트젠 쓰리썸';
      case 'miyamoto smoke':
        return 'miyamoto smoke';
      case 'variant set':
        return 'variant set';
      case 'tuna empire':
        return 'tuna empire';
      case 'nudity only':
        return 'nudity only';
      case 'comedy':
        return '코미디';
      case 'levi':
        return 'levi';
      case 'frottage':
        return '프로타주';
      case 'meganekko':
        return 'meganekko';
      case 'husky guy':
        return 'husky guy';
      case 'roman shoten':
        return 'roman shoten';
      case 'shinozuka jouji':
        return 'shinozuka jouji';
      case 'animal on animal':
        return 'animal on animal';
      case 'redraw':
        return 'redraw';
      case 'chiyou yoyuchi':
        return 'chiyou yoyuchi';
      case 'takuji':
        return 'takuji';
      case 'horror':
        return '호러';
      case 'manga':
        return '망가';
      case 'female:big breasts':
        return 'female:거유';
      case 'female:loli':
        return 'female:로리';
      case 'female:stockings':
        return 'female:스타킹';
      case 'female:schoolgirl uniform':
        return 'female:여학생 교복';
      case 'female:sole female':
        return 'female:단독여성';
      case 'female:anal':
        return 'female:애널';
      case 'female:nakadashi':
        return 'female:질내 사정';
      case 'female:bondage':
        return 'female:속박';
      case 'female:blowjob':
        return 'female:펠라치오';
      case 'female:rape':
        return 'female:강간';
      case 'female:glasses':
        return 'female:안경';
      case 'female:ahegao':
        return 'female:아헤가오';
      case 'female:paizuri':
        return 'female:파이즈리';
      case 'female:defloration':
        return 'female:첫 경험';
      case 'female:double penetration':
        return 'female:동시 삽