text:
<?php
/**
 * DO NOT EDIT THIS FILE!
 *
 * This file was automatically generated from external sources.
 *
 * Any manual change here will be lost the next time the SDK
 * is updated. You've been warned!
 */

namespace DTS\eBaySDK\Trading\Enums;

class DigitalStatusCodeType
{
    const C_ACTIVATED = 'Activated';
    const C_CUSTOM_CODE = 'CustomCode';
    const C_DEACTIVATED = 'Deactivated';
    const C_DOWNLOADED = 'Downloaded';
    const C_INACTIVE = 'Inactive';
}

redpajama_set_name: RedPajamaGithub


text:
package com.tisa7.android.whoisthat;

import android.app.Application;

import com.iflytek.cloud.SpeechUtility;

public class App extends Application{

	@Override
	public void onCreate() {
		super.onCreate();
		SpeechUtility.createUtility(this, "appid=53c767b6");
	}

}


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DDDTools.ULExtractor.TestContext2.DomainEvents
{
    /// <summary>
    /// A document was marked as read for a given employee.
    /// </summary>
    public class DocumentMarkedAsReadEvent
    {
    }
}


text:
#ifndef _LINUX_SWITCHDEV_H_
#define _LINUX_SWITCHDEV_H_

#include <linux/netdevice.h>
#include <linux/notifier.h>
#include <linux/list.h>
#include <net/ip_fib.h>

#define SWITCHDEV_F_NO_RECURSE		BIT(0)
#define SWITCHDEV_F_SKIP_EOPNOTSUPP	BIT(1)
#define SWITCHDEV_F_DEFER		BIT(2)

struct switchdev_trans_item {
	struct list_head list;
	void *data;
	void (*destructor)(const void *data);
};

struct switchdev_trans {
	struct list_head item_list;
	bool ph_prepare;
};

static inline bool switchdev_trans_ph_prepare(struct switchdev_trans *trans)
{
	return trans && trans->ph_prepare;
}

static inline bool switchdev_trans_ph_commit(struct switchdev_trans *trans)
{
	return trans && !trans->ph_prepare;
}

enum switchdev_attr_id {
	SWITCHDEV_ATTR_ID_UNDEFINED,
	SWITCHDEV_ATTR_ID_PORT_PARENT_ID,
	SWITCHDEV_ATTR_ID_PORT_STP_STATE,
	SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS,
	SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME,
};

struct switchdev_attr {
	enum switchdev_attr_id id;
	u32 flags;
	union {
		struct netdev_phys_item_id ppid;	/* PORT_PARENT_ID */
		u8 stp_state;				/* PORT_STP_STATE */
		unsigned long brport_flags;		/* PORT_BRIDGE_FLAGS */
		u32 ageing_time;			/* BRIDGE_AGEING_TIME */
	} u;
};

enum switchdev_obj_id {
	SWITCHDEV_OBJ_ID_UNDEFINED,
	SWITCHDEV_OBJ_ID_PORT_VLAN,
	SWITCHDEV_OBJ_ID_IPV4_FIB,
	SWITCHDEV_OBJ_ID_PORT_FDB,
};

struct switchdev_obj {
	enum switchdev_obj_id id;
	u32 flags;
};

/* SWITCHDEV_OBJ_ID_PORT_VLAN */
struct switchdev_obj_port_vlan {
	struct switchdev_obj obj;
	u16 flags;
	u16 vid_begin;
	u16 vid_end;
};

#define SWITCHDEV_OBJ_PORT_VLAN(obj) \
	container_of(obj, struct switchdev_obj_port_vlan, obj)

/* SWITCHDEV_OBJ_ID_IPV4_FIB */
struct switchdev_obj_ipv4_fib {
	struct switchdev_obj obj;
	u32 dst;
	int dst_len;
	struct fib_info fi;
	u8 tos;
	u8 type;
	u32 nlflags;
	u32 tb_id;
};

#define SWITCHDEV_OBJ_IPV4_FIB(obj) \
	container_of(obj, struct switchdev_obj_ipv4_fib, obj)

/* SWITCHDEV_OBJ_ID_PORT_FDB */
struct switchdev_obj_port_fdb {
	struct switchdev_obj obj;
	unsigned char addr[ETH_ALEN];
	u16 vid;
	u16 ndm_state;
};

#define SWITCHDEV_OBJ_PORT_FDB(obj) \
	container_of(obj, struct switchdev_obj_port_fdb, obj)

void switchdev_trans_item_enqueue(struct switchdev_trans *trans,
				  void *data, void (*destructor)(void const *),
				  struct switchdev_trans_item *tritem);
void *switchdev_trans_item_dequeue(struct switchdev_trans *trans);

typedef int switchdev_obj_dump_cb_t(struct switchdev_obj *obj);

/**
 * struct switchdev_ops - switchdev operations
 *
 * @switchdev_port_attr_get: Get a port attribute (see switchdev_attr).
 *
 * @switchdev_port_attr_set: Set a port attribute (see switchdev_attr).
 *
 * @switchdev_port_obj_add: Add an object to port (see switchdev_obj_*).
 *
 * @switchdev_port_obj_del: Delete an object from port (see switchdev_obj_*).
 *
 * @switchdev_port_obj_dump: Dump port objects (see switchdev_obj_*).
 */
struct switchdev_ops {
	int	(*switchdev_port_attr_get)(struct net_device *dev,
					   struct switchdev_attr *attr);
	int	(*switchdev_port_attr_set)(struct net_device *dev,
					   const struct switchdev_attr *attr,
					   struct switchdev_trans *trans);
	int	(*switchdev_port_obj_add)(struct net_device *dev,
					  const struct switchdev_obj *obj,
					  struct switchdev_trans *trans);
	int	(*switchdev_port_obj_del)(struct net_device *dev,
					  const struct switchdev_obj *obj);
	int	(*switchdev_port_obj_dump)(struct net_device *dev,
					   struct switchdev_obj *obj,
					   switchdev_obj_dump_cb_t *cb);
};

enum switchdev_notifier_type {
	SWITCHDEV_FDB_ADD = 1,
	SWITCHDEV_FDB_DEL,
};

struct switchdev_notifier_info {
	struct net_device *dev;
};

struct switchdev_notifier_fdb_info {
	struct switchdev_notifier_info info; /* must be first */
	const unsigned char *addr;
	u16 vid;
};

static inline struct net_device *
switchdev_notifier_info_to_dev(const struct switchdev_notifier_info *info)
{
	return info->dev;
}

#ifdef CONFIG_NET_SWITCHDEV

void switchdev_deferred_process(void);
int switchdev_port_attr_get(struct net_device *dev,
			    struct switchdev_attr *attr);
int switchdev_port_attr_set(struct net_device *dev,
			    const struct switchdev_attr *attr);
int switchdev_port_obj_add(struct net_device *dev,
			   const struct switchdev_obj *obj);
int switchdev_port_obj_del(struct net_device *dev,
			   const struct switchdev_obj *obj);
int switchdev_port_obj_dump(struct net_device *dev, struct switchdev_obj *obj,
			    switchdev_obj_dump_cb_t *cb);
int register_switchdev_notifier(struct notifier_block *nb);
int unregister_switchdev_notifier(struct notifier_block *nb);
int call_switchdev_notifiers(unsigned long val, struct net_device *dev,
			     struct switchdev_notifier_info *info);
int switchdev_port_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,
				  struct net_device *dev, u32 filter_mask,
				  int nlflags);
int switchdev_port_bridge_setlink(struct net_device *dev,
				  struct nlmsghdr *nlh, u16 flags);
int switchdev_port_bridge_dellink(struct net_device *dev,
				  struct nlmsghdr *nlh, u16 flags);
int switchdev_fib_ipv4_add(u32 dst, int dst_len, struct fib_info *fi,
			   u8 tos, u8 type, u32 nlflags, u32 tb_id);
int switchdev_fib_ipv4_del(u32 dst, int dst_len, struct fib_info *fi,
			   u8 tos, u8 type, u32 tb_id);
void switchdev_fib_ipv4_abort(struct fib_info *fi);
int switchdev_port_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
			   struct net_device *dev, const unsigned char *addr,
			   u16 vid, u16 nlm_flags);
int switchdev_port_fdb_del(struct ndmsg *ndm, struct nlattr *tb[],
			   struct net_device *dev, const unsigned char *addr,
			   u16 vid);
int switchdev_port_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb,
			    struct net_device *dev,
			    struct net_device *filter_dev, int idx);
void switchdev_port_fwd_mark_set(struct net_device *dev,
				 struct net_device *group_dev,
				 bool joining);

#else

static inline void switchdev_deferred_process(void)
{
}

static inline int switchdev_port_attr_get(struct net_device *dev,
					  struct switchdev_attr *attr)
{
	return -EOPNOTSUPP;
}

static inline int switchdev_port_attr_set(struct net_device *dev,
					  const struct switchdev_attr *attr)
{
	return -EOPNOTSUPP;
}

static inline int switchdev_port_obj_add(struct net_device *dev,
					 const struct switchdev_obj *obj)
{
	return -EOPNOTSUPP;
}

static inline int switchdev_port_obj_del(struct net_device *dev,
					 const struct switchdev_obj *obj)
{
	return -EOPNOTSUPP;
}

static inline int switchdev_port_obj_dump(struct net_device *dev,
					  const struct switchdev_obj *obj,
					  switchdev_obj_dump_cb_t *cb)
{
	return -EOPNOTSUPP;
}

static inline int register_switchdev_notifier(struct notifier_block *nb)
{
	return 0;
}

static inline int unregister_switchdev_notifier(struct notifier_block *nb)
{
	return 0;
}

static inline int call_switchdev_notifiers(unsigned long val,
					   struct net_device *dev,
					   struct switchdev_notifier_info *info)
{
	return NOTIFY_DONE;
}

static inline int switchdev_port_bridge_getlink(struct sk_buff *skb, u32 pid,
					    u32 seq, struct net_device *dev,
					    u32 filter_mask, int nlflags)
{
	return -EOPNOTSUPP;
}

static inline int switchdev_port_bridge_setlink(struct net_device *dev,
						struct nlmsghdr *nlh,
						u16 flags)
{
	return -EOPNOTSUPP;
}

static inline int switchdev_port_bridge_dellink(struct net_device *dev,
						struct nlmsghdr *nlh,
						u16 flags)
{
	return -EOPNOTSUPP;
}

static inline int switchdev_fib_ipv4_add(u32 dst, int dst_len,
					 struct fib_info *fi,
					 u8 tos, u8 type,
					 u32 nlflags, u32 tb_id)
{
	return 0;
}

static inline int switchdev_fib_ipv4_del(u32 dst, int dst_len,
					 struct fib_info *fi,
					 u8 tos, u8 type, u32 tb_id)
{
	return 0;
}

static inline void switchdev_fib_ipv4_abort(struct fib_info *fi)
{
}

static inline int switchdev_port_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
					 struct net_device *dev,
					 const unsigned char *addr,
					 u16 vid, u16 nlm_flags)
{
	return -EOPNOTSUPP;
}

static inline int switchdev_port_fdb_del(struct ndmsg *ndm, struct nlattr *tb[],
					 struct net_device *dev,
					 const unsigned char *addr, u16 vid)
{
	return -EOPNOTSUPP;
}

static inline int switchdev_port_fdb_dump(struct sk_buff *skb,
					  struct netlink_callback *cb,
					  struct net_device *dev,
					  struct net_device *filter_dev,
					  int idx)
{
       return idx;
}

static inline void switchdev_port_fwd_mark_set(struct net_device *dev,
					       struct net_device *group_dev,
					       bool joining)
{
}

#endif

#endif /* _LINUX_SWITCHDEV_H_ */


text:
export PYTHONBIN="python"
# To avoid python changing the sys.path variable, add an -S
#export PYTHONBIN='python -S'

# Maybe the following variables need to be setup
#export PYTHONPATH=/some/lab/specific/path:PYTHONPATH
#export PATH=/path:PATH
#export LD_LIBRARY_PATH=/anotherpath:LD_LIBRARY_PATH

# Basic Theano flags
MERLIN_THEANO_FLAGS="cuda.root=/usr/local/8.0,floatX=float32,on_unused_input=ignore"
export MERLIN_THEANO_FLAGS

# Log the resulting setup =====================================================

# Print some basic informations
echo Architecture: `uname -m`
echo Distribution: `lsb_release -d |sed 's/Description://'`
echo HOSTNAME=$HOSTNAME
echo USER=$USER
echo " "

# Print the Merlin's related environment variables
#echo PATH: $PATH
echo PATH:
echo "$PATH" |tr : '\n' |sed '/^$/d' |sed 's/^/    /'
#echo LD_LIBRARY_PATH: $LD_LIBRARY_PATH
echo LD_LIBRARY_PATH:
echo "$LD_LIBRARY_PATH" |tr : '\n' |sed '/^$/d' |sed 's/^/    /'
#echo PYTHONPATH: $PYTHONPATH
echo PYTHONPATH:
echo "$PYTHONPATH" |tr : '\n' |sed '/^$/d' |sed 's/^/    /'
echo PYTHONBIN: $PYTHONBIN
#echo MERLIN_THEANO_FLAGS: $MERLIN_THEANO_FLAGS
echo MERLIN_THEANO_FLAGS:
echo "$MERLIN_THEANO_FLAGS" |tr , '\n' |sed '/^$/d' |sed 's/^/    /'

echo " "


text:
<!DOCTYPE html>

    <link rel="stylesheet" href="qunit/qunit.css" type="text/css" media="screen" />

progstr-javascript

test markup, will be hidden


text:
package org.openmuc.framework.core.datamanager;

import java.util.ArrayList;
import java.util.List;

import org.openmuc.framework.config.ArgumentSyntaxException;
import org.openmuc.framework.config.DeviceScanInfo;
import org.openmuc.framework.config.DeviceScanListener;
import org.openmuc.framework.config.ScanException;
import org.openmuc.framework.config.ScanInterruptedException;
import org.openmuc.framework.driver.spi.DriverDeviceScanListener;
import org.openmuc.framework.driver.spi.DriverService;

public class ScanForDevicesTask implements Runnable {
    private final DriverService driver;
    private final String settings;
    private final DeviceScanListener listener;

    public ScanForDevicesTask(DriverService driver, String settings, DeviceScanListener listener) {
        this.driver = driver;
        this.settings = settings;
        this.listener = listener;
    }

    @Override
    public void run() {
        try {
            driver.scanForDevices(settings, new NonBlockingScanListener(listener));
        } catch (UnsupportedOperationException e) {
            listener.scanError("Device scan not supported by driver");
            return;
        } catch (ArgumentSyntaxException e) {
            listener.scanError("Scan settings syntax invalid: " + e.getMessage());
            return;
        } catch (ScanException e) {
            listener.scanError("IOException while scanning: " + e.getMessage());
            return;
        } catch (ScanInterruptedException e) {
            listener.scanInterrupted();
            return;
        }
        listener.scanFinished();
    }

    class NonBlockingScanListener implements DriverDeviceScanListener {
        List<DeviceScanInfo> scanInfos = new ArrayList<>();
        DeviceScanListener listener;

        public NonBlockingScanListener(DeviceScanListener listener) {
            this.listener = listener;
        }

        @Override
        public void scanProgressUpdate(int progress) {
            listener.scanProgress(progress);
        }

        @Override
        public void deviceFound(DeviceScanInfo scanInfo) {
            if (!scanInfos.contains(scanInfo)) {
                scanInfos.add(scanInfo);
                listener.deviceFound(scanInfo);
            }
        }
    }

}


text:
<?xml version="1.0" encoding="UTF-8" ?>
<dt-api library="Buttons">
	<name>button().node()</name>
	<summary>Get the button node for the selected button</summary>
	<since>1.0.0</since>

	<type type="function">
		<signature>button().node()</signature>
		<returns type="jQuery">
			A jQuery object that contains the node of the selected button
		</returns>
		<description>
			Get a jQuery object that contains a reference to the node for the selected button.
		</description>
	</type>

	<description>
		It can often be useful to have access to the DOM node of a button so you can manipulate it using directly jQuery or DOM methods. This method provides exactly that option.
	</description>

	<example title="Set the background colour for button index 0"><![CDATA[

var table = $('#myTable').DataTable();

table
	.button( 0 )
	.nodes()
	.css( 'background', 'blue' );

]]></example>

	<example title="Add a custom click event handler to a selected button"><![CDATA[

var table = $('#myTable').DataTable();

table
	.button( 'copy:name' )
	.nodes()
	.on( 'click', function ( e ) {
		console.log( 'Copy button clicked!' );
	} );

]]></example>
</dt-api>


text:
<check if="{{isset(@item.contributors_data)}}">

{{@dict_contributors}}

	<repeat group="{{@item.contributors_data}}" value="{{@con}}" key="{{@nick}}">

		{{@con.name}}

		<check if="{{isset(@con.twitter)}}">

		</check>
		<check if="{{isset(@con.adn)}}">

		</check>
		<check if="{{isset(@con.mail)}}">

		</check>
		<check if="{{isset(@con.url)}}">

		</check>

		<check if="{{isset(@con.flattr)}}">

		</check>

	</repeat>
</check>


text:
require 'log4r'
require 'log4r/outputter/iooutputter'
require "log4r/staticlogger"

require 'metadata/VmConfig/GetNativeCfg'

module Log4r
  class MiqPayloadOutputter < IOOutputter
    attr_reader :filename, :partialLog

    HEADER_SIZE   = 16
    HEADER_MAGIC  = "MIQ_LOG_"

    def self.genHeader(size, pos = 0)
      [HEADER_MAGIC, size, pos].pack("a8LL")
    end

    def initialize(_name, hash = {})
      super(_name, nil, hash)

      @partialLog = false
      @out = nil

      if (_filename = (hash[:filename] or hash['filename']))
        if _filename.class != String
          raise TypeError, "Argument 'filename' must be a String", caller
        end

        # file validation
        if FileTest.exist?(_filename)
          if not FileTest.file?(_filename)
            raise StandardError, "'#{_filename}' is not a regular file", caller
          elsif not FileTest.writable?(_filename)
            raise StandardError, "'#{_filename}' is not writable!", caller
          end
        else # ensure directory is writable
          dir = File.dirname(_filename)
          unless FileTest.writable?(dir)
            raise StandardError, "'#{dir}' is not writable!"
          end
        end

        @filename = _filename
        @out = File.new(@filename, "r+")
        Logger.log_internal {
          "MiqPayloadOutputter '#{@name}' writing to #{@filename}"
        }
      else
        cfg = GetNativeCfg.new
        cfg.getDiskFileHash.each_value do |df|
          _out = File.new(df, "r")
          _magic, _size, _pos = _out.read(HEADER_SIZE).unpack("a8LL")
          _out.close
          next if _magic != HEADER_MAGIC
          @out = File.new(df, "r+")
          @filename = df
        end
        raise StandardError, "Could not find log device", caller unless @out
      end

      @out.seek(0, IO::SEEK_SET)
      magic, @size, @pos = @out.read(HEADER_SIZE).unpack("a8LL")

      raise StandardError, "'#{@filename}' bad magic number #{magic}", caller if magic != HEADER_MAGIC
    end

    private

    def write(data)
      if @pos + data.length >= @size
        @pos = 0
        @partialLog = true
      end
      @out.seek(@pos + HEADER_SIZE, IO::SEEK_SET)
      super
      @pos += data.length
      @out.seek(0, IO::SEEK_SET)
      @out.write(MiqPayloadOutputter.genHeader(@size, @pos))
      @out.flush
    end
  end # class MiqPayloadOutputter
end # module Log4r

if __FILE__ == $0

  class ConsoleFormatter < Log4r::Formatter
    @@prog = File.basename(__FILE__, ".*")
    def format(event)
      "#{Log4r::LNAMES[event.level]} [#{datetime}] -- #{@@prog}: " +
        (event.data.kind_of?(String) ? event.data : event.data.inspect) + "\n"
    end

    private

    def datetime
      time = Time.now.utc
      time.strftime("%Y-%m-%dT%H:%M:%S.") << "%06d " % time.usec
    end
  end
  $log = Log4r::Logger.new 'toplog'
  $log.level = Log4r::DEBUG
  lo = Log4r::MiqPayloadOutputter.new('payload', :formatter => ConsoleFormatter, :filename => "test/test.log")
  # lo = Log4r::MiqPayloadOutputter.new('payload', :formatter=>ConsoleFormatter)
  $log.add 'payload'

  puts "Log file: #{lo.filename}"
  puts

  $log.debug "test line 1"
  $log.debug "test line 2"
  $log.debug "test line 3"

  # tf = File.open("test/test.log", "r")
  tf = File.open(lo.filename, "r")
  magic, size, pos = tf.read(Log4r::MiqPayloadOutputter::HEADER_SIZE).unpack("a8LL")

  puts "MAGIC: #{magic}"
  puts "SIZE: #{size}"
  puts "POS: #{pos}"

  puts tf.read(pos)

end


text:
import React, { PropTypes } from 'react';
import Slider from 'react-slick';
// import Carousel from 'nuka-carousel';
// import cx from 'classnames';
import importcss from 'importcss';

// export default class SimpleSlider extends React.Component {
//   constructor(){
//     super();
//     this.mixins = [Carousel.ControllerMixin];
//   }
//
//   render() {
//     return (
//       <Carousel>
//
//
//
//
//
//
//       </Carousel>
//     )
//   }
// };

@importcss(require('./Slider.css'))
export default class SimpleSlider extends React.Component {
  render() {
    const settings = {
      arrows: false,
      dots: false,
      autoplaySpeed: 5*1000
   };
   return (
     <Slider {...settings}>

     </Slider>
   );
  }
}


text:
import os

import unittest

import launch
from launch_ros.substitutions import ExecutableInPackage
import launch_testing
import launch_testing.actions
from launch_testing.asserts import assertSequentialStdout

import pytest

# @brief Test goal: "Integrationtest for the user-header example of iceoryx"
# @pre setup ROS2 launch executables for RouDi (debug mode) and the example processes
# @post check if all applications return exitcode 0 (success) after test run
@pytest.mark.launch_test
def generate_test_description():

    proc_env = os.environ.copy()
    colcon_prefix_path = os.environ.get('COLCON_PREFIX_PATH', '')
    executable_list = ['iox-cpp-user-header-subscriber',
                       'iox-cpp-user-header-untyped-subscriber',
                       'iox-c-user-header-subscriber',
                       'iox-cpp-user-header-publisher',
                       'iox-cpp-user-header-untyped-publisher',
                       'iox-c-user-header-publisher']
    process_list = []

    roudi_executable = os.path.join(
        colcon_prefix_path,
        'iceoryx_posh/bin/',
        'iox-roudi'
    )
    roudi_process = launch.actions.ExecuteProcess(
        cmd=[roudi_executable, '-l', 'debug'],
        env=proc_env, output='screen',
        sigterm_timeout='20')

    for exec in executable_list:
        tmp_exec = os.path.join(
            colcon_prefix_path,
            'example_user_header/bin/',
            exec)
        tmp_process = launch.actions.ExecuteProcess(
            cmd=[tmp_exec],
            env=proc_env, output='screen')
        process_list.append(tmp_process)

    print("Process list:", process_list)

    return launch.LaunchDescription([
        roudi_process,
        process_list[0],
        process_list[1],
        process_list[2],
        process_list[3],
        process_list[4],
        process_list[5],
        launch_testing.actions.ReadyToTest()
    ]), {'roudi_process': roudi_process,
         'user_header_cpp_subscriber_process': process_list[0],
         'user_header_cpp_untyped_subscriber_process': process_list[1],
         'user_header_c_subscriber_process': process_list[2],
         'user_header_cpp_publisher_process': process_list[3],
         'user_header_cpp_untyped_publisher_process': process_list[4],
         'user_header_c_publisher_process': process_list[5]}

# These tests will run concurrently with the dut process. After this test is done,
# the launch system will shut down RouDi

class TestUserHeaderExample(unittest.TestCase):
    def test_roudi_ready(self, proc_output):
        proc_output.assertWaitFor(
            'RouDi is ready for clients', timeout=45, stream='stdout')

    def test_user_header_typed_cpp_publisher_to_all_subscriber(self, proc_output):
        proc_output.assertWaitFor(
            'iox-cpp-user-header-publisher sent data: 5 with timestamp 3042ms', timeout=45, stream='stdout')
        proc_output.assertWaitFor(
            'iox-cpp-user-header-subscriber got value: 5 with timestamp 3042ms', timeout=45, stream='stdout')
        proc_output.assertWaitFor(
            'iox-cpp-user-header-untyped-subscriber got value: 5 with timestamp 3042ms', timeout=45, stream='stdout')
        proc_output.assertWaitFor(
            'iox-c-user-header-subscriber got value: 5 with timestamp 3042ms', timeout=45, stream='stdout')

    def test_user_header_untyped_cpp_publisher_to_all_subscriber(self, proc_output):
        proc_output.assertWaitFor(
            'iox-cpp-user-header-untyped-publisher sent data: 5 with timestamp 3073ms', timeout=45, stream='stdout')
        proc_output.assertWaitFor(
            'iox-cpp-user-header-subscriber got value: 5 with timestamp 3073ms', timeout=45, stream='stdout')
        proc_output.assertWaitFor(
            'iox-cpp-user-header-untyped-subscriber got value: 5 with timestamp 3073ms', timeout=45, stream='stdout')
        proc_output.assertWaitFor(
            'iox-c-user-header-subscriber got value: 5 with timestamp 3073ms', timeout=45, stream='stdout')

    def test_user_header_c_publisher_to_all_subscriber(self, proc_output):
        proc_output.assertWaitFor(
            'iox-c-user-header-publisher sent data: 5 with timestamp 3037ms', timeout=45, stream='stdout')
        proc_output.assertWaitFor(
            'iox-cpp-user-header-subscriber got value: 5 with timestamp 3037ms', timeout=45, stream='stdout')
        proc_output.assertWaitFor(
            'iox-cpp-user-header-untyped-subscriber got value: 5 with timestamp 3037ms', timeout=45, stream='stdout')
        proc_output.assertWaitFor(
            'iox-c-user-header-subscriber got value: 5 with timestamp 3037ms', timeout=45, stream='stdout')

# These tests run after shutdown and examine the stdout log

@launch_testing.post_shutdown_test()
class TestUserHeaderExampleExitCodes(unittest.TestCase):
    def test_exit_code(self, proc_info):
        launch_testing.asserts.assertExitCodes(proc_info)


text:
using System;
using System.Runtime.Serialization;

namespace AllYourTextsLib.Framework
{
    [Serializable()]
    public abstract class BackupDatabaseReadException : Exception
    {
        public BackupDatabaseReadException()
            : base()
        {
            ;
        }

        public BackupDatabaseReadException(string message)
            : base(message)
        {
            ;
        }

        public BackupDatabaseReadException(string message, Exception inner)
            : base(message, inner)
        {
            ;
        }

        protected BackupDatabaseReadException(SerializationInfo info, StreamingContext context)
            :base(info, context)
        {
            ;
        }
    }
}


text:
import sys

from networking_mlnx.plugins.mlnx.agent import mlnx_eswitch_neutron_agent
from oslo_config import cfg

from neutron.i18n import _LE, _LI
from neutron.common import config as common_config
from neutron.common import utils
from neutron.openstack.common import log as logging
from neutron.plugins.mlnx.agent import config  # noqa

LOG = logging.getLogger(__name__)

def main():
    common_config.init(sys.argv[1:])
    common_config.setup_logging()

    try:
        interface_mappings = utils.parse_mappings(
            cfg.CONF.ESWITCH.physical_interface_mappings)
    except ValueError as e:
        LOG.error(_LE("Parsing physical_interface_mappings failed: %s. "
                      "Agent terminated!"), e)
        sys.exit(1)
    LOG.info(_LI("Interface mappings: %s"), interface_mappings)

    try:
        agent = mlnx_eswitch_neutron_agent.MlnxEswitchNeutronAgent(
            interface_mappings)
    except Exception as e:
        LOG.error(_LE("Failed on Agent initialisation : %s. "
                      "Agent terminated!"), e)
        sys.exit(1)

    # Start everything.
    LOG.info(_LI("Agent initialised successfully, now running... "))
    agent.run()
    sys.exit(0)

if __name__ == '__main__':
    main()


text:
package ru.tsibrovskii.examples;

import java.io.*;

/**
 * Класс, проверяющий слово, является ли оно палиндромом.
 */
public class Palindrome {

    private char[] palindromWord;

    /**
     * Метод, проверяющий слово, является ли оно палиндромом.
     * @param in входящий поток.
     * @return результат.
     * @throws IOException исключение.
     */
    public boolean isPalindrome(InputStream in) throws IOException {
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
            String str;
            String revertStr = "";

            if ((str = reader.readLine()) != null) {
                if (str.length() != 5) {
                    return false;
                }
                else {
                    palindromWord = str.toCharArray();
                    for (int i = palindromWord.length - 1; i >= 0; i--) {
                        revertStr = String.format("%s%s", revertStr, str.charAt(i));
                    }
                    return revertStr.equalsIgnoreCase(str);
                }
            } else return false;
        }
    }
}


text:
from django.db import migrations

def get_ttl(apps, schema_editor):
    Show = apps.get_model('podcast', 'Show')
    for show in Show.objects.all():
        show.ttl = 60
        show.save(update_fields=['ttl'])

class Migration(migrations.Migration):

    dependencies = [
        ('podcast', '0024_show_ttl'),
    ]

    operations = [
        migrations.RunPython(get_ttl, reverse_code=migrations.RunPython.noop),
    ]


text:
package com.devesion.commons.obd.adapter.command.diagnostic.sensors.units;

import com.devesion.commons.obd.adapter.command.CommandResult;

/**
 * Represents Speeds Value Object.
 */
class SpeedValue extends AbstractSensorCommandValue {

	SpeedValue(CommandResult commandResult) {
		super(commandResult);
	}

	@Override
	protected float calculateValue() {
		return getResultByteNumber(0);
	}
}


text:
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;

namespace UniRx.Tests
{
    [TestClass]
    public class SchedulerTest
    {
        private static string[] ScheduleTasks(IScheduler scheduler)
        {
            var list = new List<string>();

            Action leafAction = () => list.Add("----leafAction.");
            Action innerAction = () =>
            {
                list.Add("--innerAction start.");
                scheduler.Schedule(leafAction);
                list.Add("--innerAction end.");
            };
            Action outerAction = () =>
            {
                list.Add("outer start.");
                scheduler.Schedule(innerAction);
                list.Add("outer end.");
            };
            scheduler.Schedule(outerAction);

            return list.ToArray();
        }

        [TestMethod]
        public void CurrentThread()
        {
            var hoge = ScheduleTasks(Scheduler.CurrentThread);
            hoge.Is("outer start.", "outer end.", "--innerAction start.", "--innerAction end.", "----leafAction.");
        }
        [TestMethod]
        public void CurrentThread2()
        {
            var scheduler = Scheduler.CurrentThread;

            var list = new List<string>();
            scheduler.Schedule(() =>
            {
                list.Add("one");

                scheduler.Schedule(TimeSpan.FromSeconds(3), () =>
                {
                    list.Add("after 3");
                });

                scheduler.Schedule(TimeSpan.FromSeconds(1), () =>
                {
                    list.Add("after 1");
                });
            });

            list.Is("one", "after 1", "after 3");
        }

        [TestMethod]
        public void CurrentThread3()
        {
            var scheduler = Scheduler.CurrentThread;

            var list = new List<string>();
            scheduler.Schedule(() =>
            {
                list.Add("one");

                var cancel = scheduler.Schedule(TimeSpan.FromSeconds(3), () =>
                {
                    list.Add("after 3");
                });

                scheduler.Schedule(TimeSpan.FromSeconds(1), () =>
                {
                    list.Add("after 1");
                    cancel.Dispose();
                });
            });

            list.Is("one", "after 1");
        }

        [TestMethod]
        public void Immediate()
        {
            var hoge = ScheduleTasks(Scheduler.Immediate);
            hoge.Is("outer start.", "--innerAction start.", "----leafAction.", "--innerAction end.", "outer end.");
        }
    }
}


text:
using Foundation;
using NUnit.Runner.Services;
using UIKit;

namespace XamarinTestRunner.iOS
{
    [Register("AppDelegate")]
    public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
    {
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();

			var nunit = new NUnit.Runner.App();
			nunit.AddTestAssembly(typeof(System.Data.SQLite.Tests.PlatformTests).Assembly);
			nunit.Options = new TestOptions { AutoRun = true };
			LoadApplication(nunit);

			return base.FinishedLaunching(app, options);
        }
    }
}


text:
from django.http import HttpResponse
from django.shortcuts import render_to_response
import json

from accounts import manager
from utils import platform_config
from django.contrib.auth.decorators import login_required
from service_manager import service_manager
from django.template import RequestContext

@login_required
def applications(request):
	template = {}
	return render_to_response('applications.html', template, context_instance=RequestContext(request))


text:
from nose.tools import *
from hawkweed.monads.continuation import Continuation, callcc

def test_call():
    assert_equal(Continuation(lambda x: x + 10)(10), 20)

def test_bind():
    assert_equal(Continuation(lambda x: x)(lambda x: x + 10)(10), 20)

def test_callcc():
    assert_equal(callcc(lambda x: x)(lambda x: x)(10)(20), 20)


text:
import pygame
import serial

# Declares a variable to hold the name of my Launchpad serial port
# You should change the port name here
port = "/dev/tty.uart-0AFF4676258A174C"

# Initializes the pygame module
pygame.init()

# Declares an object of type Joystick (with the first controller found)
xcon = pygame.joystick.Joystick(0)
xcon.init()

# Declares an object of type Serial opening the port my Launchpad is in
msp = serial.Serial(port)

# Main loop for reading the serial and sending data
while True:
	if msp.readable():
		if msp.read(4) == ":)\r\n":
			pygame.event.pump()
			if xcon.get_button(10) == 1:
				break
			axis = xcon.get_axis(4)
			axis = (axis + 1)*128
			axis_str = str(int(axis))
			msp.write(axis_str)

# Closes pygame and the serial port
pygame.quit()
msp.close()


text:
using System;
using System.Web.UI;
using BoletoNet;
using System.Globalization;

[assembly: WebResource("BoletoNet.Imagens.033.jpg", "image/jpg")]

namespace BoletoNet
{
    /// <author>
    /// Eduardo Frare
    /// Stiven
    /// Diogo
    /// Miamoto
    /// </author>

    ///<summary>
    /// Classe referente ao banco Banco_Santander
    ///</summary>
    internal class Banco_Santander : AbstractBanco, IBanco
    {

        /// <summary>
        /// Classe responsavel em criar os campos do Banco Banco_Santander.
        /// </summary>
        internal Banco_Santander()
        {
            this.Codigo = 033;
            this.Digito = "7";
            this.Nome = "Santander";
        }

        internal Banco_Santander(int Codigo)
        {

            this.Codigo = ((Codigo != 353) && (Codigo != 8)) ? 033 : Codigo;
            this.Digito = "0";
            this.Nome = "Banco_Santander";
        }

        #region IBanco Members

        /// <summary>
        ///
        ///   *******
        ///
        ///	O Código de barra para cobrança contém 44 posições dispostas da seguinte forma:
        ///    01 a 03 -  3 - 033 fixo - Código do banco
        ///    04 a 04 -  1 - 9 fixo - Código da moeda (R$)
        ///    05 a 05 -  1 - Dígito verificador do Código de barras
        ///    06 a 09 -  4 - Fator de vencimento
        ///    10 a 19 - 10 - Valor
        ///    20 a 20 -  1 - Fixo 9
        ///    21 a 27 -  7 - Código do cedente padrão satander
        ///    28 a 40 - 13 - Nosso número
        ///    41 - 41 - 1 -  IOS  - Seguradoras(Se 7% informar 7. Limitado  a 9%) Demais clientes usar 0
        ///    42 - 44 - 3 - Tipo de modalidade da carteira 101, 102, 201
        ///
        ///   *******
        ///
        /// </summary>
        public override void FormataCodigoBarra(Boleto boleto)
        {
            string codigoBanco = Utils.FormatCode(this.Codigo.ToString(), 3);//3
            string codigoMoeda = boleto.Moeda.ToString();//1
            string fatorVencimento = FatorVencimento(boleto).ToString(); //4
            string valorNominal = Utils.FormatCode(boleto.ValorBoleto.ToString("f").Replace(",", "").Replace(".", ""), 10);//10
            string fixo = "9";//1
            string codigoCedente = Utils.FormatCode(boleto.Cedente.Codigo.ToString(), 7);//7
            string nossoNumero = Utils.FormatCode(boleto.NossoNumero, 12) + Mod11Santander(Utils.FormatCode(boleto.NossoNumero, 12), 9);//13
            string IOS = boleto.PercentualIOS.ToString();//1
            string tipoCarteira = boleto.Carteira;//3;
            boleto.CodigoBarra.Codigo = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}",
                codigoBanco, codigoMoeda, fatorVencimento, valorNominal, fixo, codigoCedente, nossoNumero, IOS, tipoCarteira);

            string calculoDV = Mod10Mod11Santander(boleto.CodigoBarra.Codigo, 9).ToString();

            boleto.CodigoBarra.Codigo = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}",
                codigoBanco, codigoMoeda, calculoDV, fatorVencimento, valorNominal, fixo, codigoCedente, nossoNumero, IOS, tipoCarteira);

        }

        /// <summary>
        ///
        ///   *******
        ///
        ///	A Linha Digitavel para cobrança contém 44 posições dispostas da seguinte forma:
        ///   1º Grupo -
        ///    01 a 03 -  3 - 033 fixo - Código do banco
        ///    04 a 04 -  1 - 9 fixo - Código da moeda (R$) outra moedas 8
        ///    05 a 05 –  1 - Fixo 9
        ///    06 a 09 -  4 - Código cedente padrão santander
        ///    10 a 10 -  1 - Código DV do primeiro grupo
        ///   2º Grupo -
        ///    11 a 13 –  3 - Restante do código cedente
        ///    14 a 20 -  7 - 7 primeiros campos do nosso número
        ///    21 a 21 - 13 - Código DV do segundo grupo
        ///   3º Grupo -
        ///    22 - 27 - 6 -  Restante do nosso número
        ///    28 - 28 - 1 - IOS  - Seguradoras(Se 7% informar 7. Limitado  a 9%) Demais clientes usar 0
        ///    29 - 31 - 3 - Tipo de carteira
        ///    32 - 32 - 1 - Código DV do terceiro grupo
        ///   4º Grupo -
        ///    33 - 33 - 1 - Composto pelo DV do código de barras
        ///   5º Grupo -
        ///    34 - 36 - 4 - Fator de vencimento
        ///    37 - 47 - 10 - Valor do título
        ///   *******
        ///
        /// </summary>
        public override void FormataLinhaDigitavel(Boleto boleto)
        {
            string nossoNumero = Utils.FormatCode(boleto.NossoNumero, 12) + Mod11Santander(Utils.FormatCode(boleto.NossoNumero, 12), 9);//13
            string codigoCedente = Utils.FormatCode(boleto.Cedente.Codigo.ToString(), 7);
            string fatorVencimento = FatorVencimento(boleto).ToString();
            string IOS = boleto.PercentualIOS.ToString();//1

            #region Grupo1

            string codigoBanco = Utils.FormatCode(this.Codigo.ToString(), 3);//3
            string codigoModeda = boleto.Moeda.ToString();//1
            string fixo = "9";//1
            string codigoCedente1 = codigoCedente.Substring(0, 4);//4
            string calculoDV1 = Mod10(string.Format("{0}{1}{2}{3}", codigoBanco, codigoModeda, fixo, codigoCedente1)).ToString();//1
            string grupo1 = string.Format("{0}{1}{2}.{3}{4}", codigoBanco, codigoModeda, fixo, codigoCedente1, calculoDV1);

            #endregion

            #region Grupo2

            string codigoCedente2 = codigoCedente.Substring(4, 3);//3
            string nossoNumero1 = nossoNumero.Substring(0, 7);//7
            string calculoDV2 = Mod10(string.Format("{0}{1}", codigoCedente2, nossoNumero1)).ToString();
            string grupo2 = string.Format("{0}{1}{2}", codigoCedente2, nossoNumero1, calculoDV2);
            grupo2 = " " + grupo2.Substring(0, 5) + "." + grupo2.Substring(5, 6);

            #endregion

            #region Grupo3

            string nossoNumero2 = nossoNumero.Substring(7, 6); //6

            string tipoCarteira = boleto.Carteira;//3
            string calculoDV3 = Mod10(string.Format("{0}{1}{2}", nossoNumero2, IOS, tipoCarteira)).ToString();//1
            string grupo3 = string.Format("{0}{1}{2}{3}", nossoNumero2, IOS, tipoCarteira, calculoDV3);
            grupo3 = " " + grupo3.Substring(0, 5) + "." + grupo3.Substring(5, 6) + " ";

            #endregion

            #region Grupo4
            string DVcodigoBanco = Utils.FormatCode(this.Codigo.ToString(), 3);//3
            string DVcodigoMoeda = boleto.Moeda.ToString();//1
            string DVvalorNominal = Utils.FormatCode(boleto.ValorBoleto.ToString("f").Replace(",", "").Replace(".", ""), 10);//10
            string DVfixo = "9";//1
            string DVcodigoCedente = Utils.FormatCode(boleto.Cedente.Codigo.ToString(), 7).ToString();//7
            string DVnossoNumero = Utils.FormatCode(boleto.NossoNumero, 12) + Mod11Santander(Utils.FormatCode(boleto.NossoNumero, 12), 9);
            string DVtipoCarteira = boleto.Carteira;//3;

            string calculoDVcodigo = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}",
                DVcodigoBanco, DVcodigoMoeda, fatorVencimento, DVvalorNominal, DVfixo, DVcodigoCedente, DVnossoNumero, IOS, DVtipoCarteira);

            string grupo4 = Mod10Mod11Santander(calculoDVcodigo, 9).ToString() + " ";

            #endregion

            #region Grupo5

             //4
            string valorNominal = Utils.FormatCode(boleto.ValorBoleto.ToString("f").Replace(",", "").Replace(".", ""), 10);//10

            string grupo5 = string.Format("{0}{1}", fatorVencimento, valorNominal);
            //grupo5 = grupo5.Substring(0, 4) + " " + grupo5.Substring(4, 1)+" "+grupo5.Substring(5,9);

            #endregion

            boleto.CodigoBarra.LinhaDigitavel = string.Format("{0}{1}{2}{3}{4}", grupo1, grupo2, grupo3, grupo4, grupo5);

            //Usado somente no Santander
            boleto.Cedente.ContaBancaria.Conta = boleto.Cedente.Codigo.ToString();

        }

        public override void FormataNossoNumero(Boleto boleto)
        {
            boleto.NossoNumero = string.Format("{0}-{1}", boleto.NossoNumero, Mod11Santander(boleto.NossoNumero, 9));
        }

        public override void FormataNumeroDocumento(Boleto boleto)
        {
            throw new NotImplementedException("Função não implementada.");
        }

        public override void ValidaBoleto(Boleto boleto)
        {
            //throw new NotImplementedException("Função não implementada.");
            if (!((boleto.Carteira == "102") || (boleto.Carteira == "101") || (boleto.Carteira == "201")))
                throw new NotImplementedException("Carteira não implementada.");

            //Banco 353  - Utilizar somente 08 posições do Nosso Numero (07 posições + DV), zerando os 05 primeiros dígitos
            if (this.Codigo == 353)
            {
                if (boleto.NossoNumero.Length != 7)
                    throw new NotImplementedException("Nosso Número deve ter 7 posições para o banco 353.");
            }

            //Banco 008  - Utilizar somente 09 posições do Nosso Numero (08 posições + DV), zerando os 04 primeiros dígitos
            if (this.Codigo == 8)
            {
                if (boleto.NossoNumero.Length != 8)
                    throw new NotImplementedException("Nosso Número deve ter 7 posições para o banco 008.");
            }

            if (this.Codigo == 33)
            {
                if (boleto.NossoNumero.Length == 7 && boleto.Carteira.Equals("101"))
                    boleto.NossoNumero = Utils.FormatCode(boleto.NossoNumero,"0", 12, true);

                if (boleto.NossoNumero.Length != 12)
                    throw new NotSupportedException("Nosso Número deve ter 12 posições para o banco 033.");
            }
            if (boleto.Cedente.Codigo.ToString().Length > 7)
                throw new NotImplementedException("Código cedente deve ter 7 posições.");

            boleto.LocalPagamento += "Grupo Santander - GC";

            if (EspecieDocumento.ValidaSigla(boleto.EspecieDocumento) == "")
               boleto.EspecieDocumento = new EspecieDocumento_Santander("2");

            if (boleto.PercentualIOS > 10 & (this.Codigo == 8 || this.Codigo == 33 || this.Codigo == 353))
                throw new Exception("O percentual do IOS é limitado a 9% para o Banco Santander");

            boleto.FormataCampos();
        }

        private static int Mod11Santander(string seq, int lim)
        {
            int ndig = 0;
            int nresto = 0;
            int total = 0;
            int multiplicador = 5;

            while (seq.Length > 0)
            {
                int valorPosicao = Convert.ToInt32(seq.Substring(0, 1));
                total += valorPosicao * multiplicador;
                multiplicador--;

                if (multiplicador == 1)
                {
                    multiplicador = 9;
                }

                seq = seq.Remove(0, 1);
            }

            nresto = total - ((total / 11) * 11);

            if (nresto == 0 || nresto == 1)
                ndig = 0;
            else if (nresto == 10)
                ndig = 1;
            else
                ndig = (11 - nresto);

            return ndig;
        }

        private static int Mod10Mod11Santander(string seq, int lim)
        {
            int ndig = 0;
            int nresto = 0;
            int total = 0;
            int multiplicador = 2;

            char[] posicaoSeq = seq.ToCharArray();
            Array.Reverse(posicaoSeq);
            string sequencia = new string(posicaoSeq);

            while (sequencia.Length > 0)
            {
                int valorPosicao = Convert.ToInt32(sequencia.Substring(0, 1));
                total += valorPosicao * multiplicador;
                multiplicador++;

                if (multiplicador == 10)
                {
                    multiplicador = 2;
                }

                sequencia = sequencia.Remove(0, 1);
            }

            nresto = (total * 10) % 11; //nresto = (((total * 10) / 11) % 10); Jefhtavares em 19/03/14

            if (nresto == 0 || nresto == 1 || nresto == 10)
                ndig = 1;
            else
                ndig = nresto;

            return ndig;
        }

        protected static int Mult10Mod11Santander(string seq, int lim, int flag)
        {
            int mult = 0;
            int total = 0;
            int pos = 1;
            int ndig = 0;
            int nresto = 0;
            string num = string.Empty;

            mult = 1 + (seq.Length % (lim - 1));

            if (mult == 1)
                mult = lim;

            while (pos <= seq.Length)
            {
                num = Microsoft.VisualBasic.Strings.Mid(seq, pos, 1);
                total += Convert.ToInt32(num) * mult;

                mult -= 1;
                if (mult == 1)
                    mult = lim;

                pos += 1;
            }

            nresto = ((total * 10) % 11);

            if (flag == 1)
                return nresto;
            else
            {
                if (nresto == 0 || nresto == 1)
                    ndig = 0;
                else if (nresto == 10)
                    ndig = 1;
                else
                    ndig = (11 - nresto);

                return ndig;
            }
        }

        /// <summary>
        /// Verifica o tipo de ocorrência para o arquivo remessa
        /// </summary>
        public string Ocorrencia(string codigo)
        {
            switch (codigo)
            {
                case "01":
                    return "01-Título não existe";
                case "02":
                    return "02-Entrada Confirmada";
                case "03":
                    return "03-Entrada Rejeitada";
                case "06":
                    return "06-Liquidação";
                case "07":
                    return "07-Liquidação por conta";
                case "08":
                    return "08-Liquidação por saldo";
                case "09":
                    return "09-Baixa Automatica";
                case "10":
                    return "10-Baixa conf. instrução ou protesto";
                case "11":
                    return "11-Em Ser";
                case "12":
                    return "12-Abatimento Concedido";
                case "13":
                    return "13-Abatimento Cancelado";
                case "14":
                    return "14-Prorrogação de Vencimento";
                case "15":
                    return "15-Enviado para Cartório";
                case "16":
                    return "16-Título já baixado/liquidado";
                case "17":
                    return "17-Liquidado em cartório";
                case "21":
                    return "21-Entrada em cartório";
                case "22":
                    return "22-Retirado de cartório";
                case "24":
                    return "24-Custas de cartório";
                case "25":
                    return "25-Protestar Título";
                case "26":
                    return "26-Sustar protesto";
                default:
                    return "";
            }
        }

        #region Métodos de geração do arquivo remessa

        #region HEADER REMESSA
        public override string GerarHeaderRemessa(string numeroConvenio, Cedente cedente, TipoArquivo tipoArquivo, int numeroArquivoRemessa, Boleto boletos)
        {
            throw new NotImplementedException("Função não implementada.");
        }
        public override string GerarHeaderRemessa(Cedente cedente, TipoArquivo tipoArquivo, int numeroArquivoRemessa)
        {
            return GerarHeaderRemessa("0", cedente, tipoArquivo, numeroArquivoRemessa);
        }
        /// <summary>
        /// HEADER do arquivo CNAB
        /// Gera o HEADER do arquivo remessa de acordo com o lay-out informado
        /// </summary>
        public override string GerarHeaderRemessa(string numeroConvenio, Cedente cedente, TipoArquivo tipoArquivo, int numeroArquivoRemessa)
        {
            try
            {
                string _header = " ";

                base.GerarHeaderRemessa("0", cedente, tipoArquivo, numeroArquivoRemessa);

                switch (tipoArquivo)
                {

                    case TipoArquivo.CNAB240:
                        _header = GerarHeaderRemessaCNAB240(cedente);
                        break;
                    case TipoArquivo.CNAB400:
                        _header = GerarHeaderRemessaCNAB400(0, cedente);
                        break;
                    case TipoArquivo.Outro:
                        throw new Exception("Tipo de arquivo inexistente.");
                }

                return _header;

            }
            catch (Exception ex)
            {
                throw new Exception("Erro durante a geração do HEADER do arquivo de REMESSA.", ex);
            }
        }

        /// <summary>
        ///POS INI/FINAL	DESCRIÇÂO	                   A/N	TAM	DEC	CONTEÚDO	NOTAS
        ///--------------------------------------------------------------------------------
        ///001 - 003	Código do Banco na compensação	    N	003		353 / 008 / 033
        ///004 - 007	Lote de serviço	                    N	004		0000	1
        ///008 - 008	Tipo de registro	                N	001		0	2
        ///009 - 016	Reservado (uso Banco)	            A	008		Brancos
        ///017 - 017	Tipo de inscrição da empresa	    N	001		1 = CPF,  2 = CNPJ
        ///018 - 032	Nº de inscrição da empresa	        N	015
        ///033 - 047	Código de Transmissão   	        N	015			3
        ///048 - 072	Reservado (uso Banco)	            A	025		Brancos
        ///073 - 102	Nome da empresa	                    A	030
        ///103 - 132	Nome do Banco	                    A	030		Banco Santander
        ///133 - 142	Reservado (uso Banco)	            A	010		Brancos
        ///143 - 143	Código remessa 	                    N	001		1 = Remessa
        ///144 - 151	Data de geração do arquivo	        N	008		DDMMAAAA
        ///152 - 157	Reservado (uso Banco)  	            A	006		Brancos
        ///158 - 163	Nº sequencial do arquivo 	        N	006			4
        ///164 - 166	Nº da versão do layout do arquivo	N	003		040
        ///167 - 240	Reservado (uso Banco)	            A	074		Brancos
        /// </summary>
        public string GerarHeaderRemessaCNAB240(Cedente cedente)
        {
            try
            {
                string header = Utils.FormatCode(Codigo.ToString(), "0", 3, true);
                header += "0000";
                header += "0";
                header += Utils.FormatCode("", " ", 8);
                header += (cedente.CPFCNPJ.Length == 11 ? "1" : "2");
                header += Utils.FormatCode("", "0", 15);
                header += Utils.FormatCode("", "0", 15);
                header += Utils.FormatCode("", " ", 25);
                header += Utils.FormatCode(cedente.Nome, " ", 30);
                header += Utils.FormatCode("BANCO SANTANDER", " ", 30);
                header += Utils.FormatCode("", " ", 10);
                header += "1";
                header += DateTime.Now.ToString("ddMMyyyy");
                header += Utils.FormatCode("", " ", 6);
                header += "0001";
                header += "040";
                header += Utils.FormatCode("", " ", 74);
                return header;

            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao gerar HEADER do arquivo de remessa do CNAB240.", ex);
            }
        }

        public string GerarHeaderRemessaCNAB400(int numeroConvenio, Cedente cedente)
        {
            try
            {
                string complemento = new string(' ', 275);
                string _header;

                _header = "01REMESSA01COBRANCA       ";         //fixo
                //Código da transmissão fornecido pelo banco 9(20), mas normalmente é formado por:
                //018-021 = Código da agencia 9(04)
                //022-029 = Código do cedente 9(08)
                //030-037 = Conta cobrança/corrente 9(08)
                _header += Utils.FitStringLength(cedente.ContaBancaria.Agencia, 4, 4, '0', 0, true, true, true);
                _header += Utils.FitStringLength(cedente.Codigo.ToString(), 8, 8, '0', 0, true, true, true);
                if (cedente.ContaBancaria.Conta.Length == 9 || (!String.IsNullOrEmpty(cedente.ContaBancaria.DigitoConta) && cedente.ContaBancaria.Conta.Length == 8))
                {
                    _header += Utils.FitStringLength(cedente.ContaBancaria.Conta.Substring(0, 7), 8, 8, '0', 0, true, true, true);
                }
                else
                {
                    _header += Utils.FitStringLength(cedente.ContaBancaria.Conta, 8, 8, '0', 0, true, true, true);
                }
                _header += Utils.FitStringLength(cedente.Nome, 30, 30, ' ', 0, true, true, false).ToUpper();
                _header += "033";
                _header += "SANTANDER      ";                   //Nome do banco X(15)
                _header += DateTime.Now.ToString("ddMMyy");     //data da gravação
                _header += "0000000000000000";                  //zeros 9(16)
                _header += complemento;                         //brancos X(275)
                _header += "000";                               //zeros 9(03)
                _header += "000001";

                _header = Utils.SubstituiCaracteresEspeciais(_header);

                return _header;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao gerar HEADER do arquivo de remessa do CNAB400.", ex);
            }
        }

        #endregion HEADER REMESSA

        #region HEADER LOTE REMESSA

        public override string GerarHeaderLoteRemessa(string numeroConvenio, Cedente cedente, int numeroArquivoRemessa, TipoArquivo tipoArquivo)
        {
            try
            {
                string header = " ";

                switch (tipoArquivo)
                {

                    case TipoArquivo.CNAB240:
                        header = GerarHeaderLoteRemessaCNAB240(cedente, numeroArquivoRemessa);
                        break;
                    case TipoArquivo.CNAB400:
                        header = GerarHeaderLoteRemessaCNAB400(0, cedente, numeroArquivoRemessa);
                        break;
                    case TipoArquivo.Outro:
                        throw new Exception("Tipo de arquivo inexistente.");
                }

                return header;

            }
            catch (Exception ex)
            {
                throw new Exception("Erro durante a geração do HEADER DO LOTE do arquivo de REMESSA.", ex);
            }
        }

        private string GerarHeaderLoteRemessaCNAB400(int numeroConvenio, Cedente cedente, int numeroArquivoRemessa)
        {
            throw new Exception("Função não implementada.");
        }

        private string GerarHeaderLoteRemessaCNAB240(Cedente cedente, int numeroArquivoRemessa)
        {
            try
            {
                string header = Utils.FormatCode(Codigo.ToString(), "0", 3, true);
                header += "0000";
                header += "0";
                header += "R";
                header += "  ";
                header += "030";
                header += " ";
                header += "0";
                header += (cedente.CPFCNPJ.Length == 11 ? "1" : "2");
                header += Utils.FormatCode("", "0", 15);
                header += Utils.FormatCode("", " ", 20);
                header += Utils.FormatCode("", "0", 15);
                header += Utils.FormatCode("", " ", 5);
                header += Utils.FormatCode(cedente.Nome, " ", 30);
                header += Utils.FormatCode("", " ", 40);
                header += Utils.FormatCode("", " ", 40);
                header += Utils.FormatCode(numeroArquivoRemessa.ToString(), "0", 8);
                header += DateTime.Now.ToString("ddMMyyyy");
                header += Utils.FormatCode("", " ", 41);
                return header;
            }
            catch (Exception e)
            {
                throw new Exception("Erro ao gerar HEADER DO LOTE do arquivo de remessa.", e);
            }
        }

        #endregion HEADER LOTE REMESSA

        #region DETALHE REMESSA

        /// <summary>
        /// DETALHE do arquivo CNAB
        /// Gera o DETALHE do arquivo remessa de acordo com o lay-out informado
        /// </summary>
        public override string GerarDetalheRemessa(Boleto boleto, int numeroRegistro, TipoArquivo tipoArquivo)
        {
            try
            {
                string _detalhe = " ";

                base.GerarDetalheRemessa(boleto, numeroRegistro, tipoArquivo);

                switch (tipoArquivo)
                {
                    case TipoArquivo.CNAB240:
                        _detalhe = GerarDetalheRemessaCNAB240();
                        break;
                    case TipoArquivo.CNAB400:
                        _detalhe = GerarDetalheRemessaCNAB400(boleto, numeroRegistro, tipoArquivo);
                        break;
                    case TipoArquivo.Outro:
                        throw new Exception("Tipo de arquivo inexistente.");
                }

                return _detalhe;

            }
            catch (Exception ex)
            {
                throw new Exception("Erro durante a geração do DETALHE arquivo de REMESSA.", ex);
            }
        }

        public string GerarDetalheRemessaCNAB240()
        {
            throw new NotImplementedException("Função não implementada.");
        }

        public string GerarDetalheRemessaCNAB400(Boleto boleto, int numeroRegistro, TipoArquivo tipoArquivo)
        {
            try
            {
                base.GerarDetalheRemessa(boleto, numeroRegistro, tipoArquivo);

                string controle_partic = new string(' ', 25);
                string sacador_aval = new string(' ', 30);
                string _detalhe;

                _detalhe = "1";

                // Tipo de inscrição do cedente
                // 01 - CPF DO CEDENTE
                // 02 - CNPJ DO CEDENTE

                if (boleto.Cedente.CPFCNPJ.Length <= 11)
                    _detalhe += "01";
                else
                    _detalhe += "02";

                _detalhe += Utils.FitStringLength(boleto.Cedente.CPFCNPJ, 14, 14, '0', 0, true, true, true);
                //Código da transmissão fornecido pelo banco 9(20), mas normalmente é formado por:
                //018-021 = Código da agencia 9(04)
                //022-029 = Código do cedente 9(08)
                //030-037 = Conta cobrança/corrente 9(08)
                _detalhe += Utils.FitStringLength(boleto.Cedente.ContaBancaria.Agencia, 4, 4, '0', 0, true, true, true);
                _detalhe += Utils.FitStringLength(boleto.Cedente.Codigo.ToString(), 8, 8, '0', 0, true, true, true);
                if (boleto.Cedente.ContaBancaria.Conta.Length == 9 || (!String.IsNullOrEmpty(boleto.Cedente.ContaBancaria.DigitoConta) && boleto.Cedente.ContaBancaria.Conta.Length == 8))
                    _detalhe += Utils.FitStringLength(boleto.Cedente.ContaBancaria.Conta.Substring(0, 7), 8, 8, '0', 0, true, true, true);
                else
                    _detalhe += Utils.FitStringLength(boleto.Cedente.ContaBancaria.Conta, 8, 8, '0', 0, true, true, true);
                 //Bloco if-else adicionado por Jéferson (jefhtavares). Segundo o Banco o código de transmissão muda de acordo com o tamanho (length) da conta corrente

                //Número de controle do participante, controle do cedente X(25)
                _detalhe += controle_partic;
                //NossoNumero com DV, pegar os 8 primeiros dígitos, da direita para esquerda
                string nossoNumero = Utils.FormatCode(boleto.NossoNumero, 12) + Mod11Santander(Utils.FormatCode(boleto.NossoNumero, 12), 9);//13
                _detalhe += Utils.Right(nossoNumero, 8, '0', true);
                _detalhe += "000000"; //Data do segundo desconto 9(06)
                _detalhe += " "; //brancos X(01)
                //(Nota 4) posição 78-78, sempre igual a '4', sendo obrigatório a informação do percentual na posição 79-82
                /* Jéferson (jefhtavares) em 19/02/2014
                 * Usar '4' na posição 78 quando HOUVER percentual de multa, caso contrário informar 0
                 */
                if (boleto.PercMulta == 0)
                    _detalhe += "0";
                else
                    _detalhe += "4";

                //Percentual de multa por atraso 9(04)V99 = significa 4 posições, sendo 2 decimais
                _detalhe += Utils.FitStringLength(boleto.PercMulta.ToString("0.00").Replace(",", ""), 4, 4, '0', 0, true, true, true);
                _detalhe += "00"; //Unidade de valor mora corrente = 00
                _detalhe += "0000000000000"; //Valor do titulo em outra unidade (consultar banco) 9(13)V99 = significa 13 posições, sendo 2 decimais
                _detalhe += "    "; //brancos X(04)
                _detalhe += "000000"; //Data de cobrança da multa, se zeros, será cobrada após vencimento

                //Código da carteira
                //1 - Eletrônica COM registro
                //3 - Caucionada eletrônica
                //4 - Cobrança SEM registro
                //5 - Rápida COM registro
                //6 - Caucionada rápida
                //7 - Descontada eletrônica
                string carteira;
                switch (boleto.Carteira)
                {
                    case "101": //Carteira 101 (Rápida com registro - impressão pelo beneficiário)
                        carteira = "5";
                        break;
                    case "201": //Carteira 201 (Eletrônica com registro - impressão pelo banco)
                        carteira = "1";
                        break;
                    default:
                        throw new Exception("Carteira não implementada para emissão de remessa");
                }
                _detalhe += carteira;

                //Código de ocorrência
                //01 - Entrada de Título
                //02 - Baixa de Título
                //04 - Concessão de abatimento
                //05 - Cancelamento de abatimento
                //06 - Prorrogação de vencimento
                //07 - Alteração Número de controle do cedente
                //08 - Alteração do seu Número
                //09 - Protestar
                //18 - Sustar protesto
                _detalhe += "01";

                //Nº do documento
                _detalhe += Utils.FitStringLength(boleto.NumeroDocumento, 10, 10, ' ', 0, true, true, false);
                _detalhe += boleto.DataVencimento.ToString("ddMMyy");
                _detalhe += Utils.FitStringLength(boleto.ValorBoleto.ToString("0.00").Replace(",", ""), 13, 13, '0', 0, true, true, true);
                _detalhe += "033";

                //Se a Código da carteira = 5 (Rápida COM registro), informar, senão = 00000 (zeros 9(05))
                if (!String.IsNullOrEmpty(boleto.Cedente.ContaBancaria.DigitoAgencia))
                {
                    _detalhe += Utils.FitStringLength(boleto.Cedente.ContaBancaria.Agencia, 4, 4, '0', 0, true, true, true);
                    _detalhe += Utils.FitStringLength(boleto.Cedente.ContaBancaria.DigitoAgencia, 1, 1, '0', 0, true, true, true);
                }
                else
                {
                    _detalhe += Utils.FitStringLength("0" + boleto.Cedente.ContaBancaria.Agencia, 5, 5, '0', 0, true, true, true);
                }

                //Espécie de documento
                //01 - Duplicata
                //02 - Nota promissória
                //04 - Apólice / Nota Seguro
                //05 - Recibo
                //06 - Duplicata de serviço
                //07 - Letra de cambio

                string especie_doc = "00";

                //Transcrição para arquivo REMESSA. Verifica qual espécie de documento (Ver EspecieDocumento_Santander.cs)
                switch (boleto.EspecieDocumento.Codigo)
                {
                    case "2": //DuplicataMercantil,
                        especie_doc = "01";
                        break;
                    case "12": //NotaPromissoria
                    case "13": //NotaPromissoriaRural
                    case "98": //NotaPromissoariaDireta
                        especie_doc = "02";
                        break;
                    case "20": //ApoliceSeguro
                        especie_doc = "03";
                        break;
                    case "17": //Recibo
                        especie_doc = "05";
                        break;
                    case "06": //DuplicataServico
                        especie_doc = "06";
                        break;
                    case "07": //LetraCambio353
                    case "30": //LetraCambio008
                        especie_doc = "07";
                        break;
                    default:    //Cheque ou qualquer outro Código
                        especie_doc = "01";
                        break;
                }

                _detalhe += especie_doc;
                _detalhe += "N"; // Identificação de Título, Aceito ou Não aceito

                //A data informada neste campo deve ser a mesma data de emissão do Título de crédito
                //(Duplicata de Serviço / Duplicata Mercantil / Nota Fiscal, etc), que deu origem a esta Cobrança.
                //Existindo divergência, na existência de protesto, a documentação poderá não ser aceita pelo Cartório.
                _detalhe += boleto.DataDocumento.ToString("ddMMyy");

                switch (boleto.Instrucoes.Count)
                {
                    case 0:
                        _detalhe += "0000"; //Não há instruções
                        break;
                    case 1:
                        _detalhe += Utils.FitStringLength(boleto.Instrucoes[0].Codigo.ToString(), 2, 2, '0', 0, true, true, true);
                        _detalhe += "00";
                        break;
                    default:
                        _detalhe += Utils.FitStringLength(boleto.Instrucoes[0].Codigo.ToString(), 2, 2, '0', 0, true, true, true);
                        _detalhe += Utils.FitStringLength(boleto.Instrucoes[1].Codigo.ToString(), 2, 2, '0', 0, true, true, true);
                        break;
                }

                //Valor de mora cobrado por dia de atraso (Juros de 1 dia)
                _detalhe += Utils.FitStringLength(boleto.JurosMora.ToString("0.00").Replace(",", ""), 13, 13, '0', 0, true, true, true);

                // Data limite para desconto
                _detalhe += boleto.DataVencimento.ToString("ddMMyy");
                _detalhe += Utils.FitStringLength(boleto.ValorDesconto.ToString("0.00").Replace(",", ""), 13, 13, '0', 0, true, true, true);
                _detalhe += "0000000000000"; // Valor do IOF a ser recolhido pelo banco para Nota de Seguro 9(13)V9(02) = significa 13 posições, sendo 2 decimais
                _detalhe += "0000000000000"; // Valor do Abatimento 9(13)V9(02) = significa 13 posições, sendo 2 decimais

                if (boleto.Sacado.CPFCNPJ.Length <= 11)
                    _detalhe += "01";  // CPF
                else
                    _detalhe += "02"; // CNPJ

                _detalhe += Utils.FitStringLength(boleto.Sacado.CPFCNPJ, 14, 14, '0', 0, true, true, true).ToUpper();
                _detalhe += Utils.FitStringLength(boleto.Sacado.Nome.TrimStart(' '), 40, 40, ' ', 0, true, true, false).ToUpper();
                _detalhe += Utils.FitStringLength(boleto.Sacado.Endereco.End.TrimStart(' '), 40, 40, ' ', 0, true, true, false).ToUpper();
                _detalhe += Utils.FitStringLength(boleto.Sacado.Endereco.Bairro.TrimStart(' '), 12, 12, ' ', 0, true, true, false).ToUpper();
                _detalhe += Utils.FitStringLength(boleto.Sacado.Endereco.CEP, 8, 8, ' ', 0, true, true, true);
                _detalhe += Utils.FitStringLength(boleto.Sacado.Endereco.Cidade.TrimStart(' '), 15, 15, ' ', 0, true, true, false).ToUpper();
                _detalhe += Utils.FitStringLength(boleto.Sacado.Endereco.UF, 2, 2, ' ', 0, true, true, false).ToUpper();

                //Nome do Sacador ou coobrigado
                _detalhe += sacador_aval;
                _detalhe += " "; //brancos X(01)
                // Identificador de complemento de conta cobrança
                _detalhe += "I";
                //Complemento da conta, posições 384-385, com a última posição da conta e o dígito da conta
                _detalhe += boleto.Cedente.ContaBancaria.Conta.Substring(boleto.Cedente.ContaBancaria.Conta.Length - 1, 1) + boleto.Cedente.ContaBancaria.DigitoConta;
                _detalhe += "      "; //brancos X(06)
                string diasProtesto = "00";
                if (boleto.Instrucoes.Count > 0)
                {
                    if (boleto.Instrucoes[0].Codigo == (int)EnumInstrucoes_Santander.Protestar)
                        diasProtesto = Utils.FitStringLength(boleto.Instrucoes[0].QuantidadeDias.ToString(), 2, 2, '0', 0, true, true, true);
                    else if (boleto.Instrucoes.Count > 1 && boleto.Instrucoes[1].Codigo == (int)EnumInstrucoes_Santander.Protestar)
                        diasProtesto = Utils.FitStringLength(boleto.Instrucoes[1].QuantidadeDias.ToString(), 2, 2, '0', 0, true, true, true);
                    else
                        diasProtesto = "00"; //Nº de dias para protesto 9(02)
                }

                _detalhe += diasProtesto;
                _detalhe += " "; //brancos X(01)
                _detalhe += Utils.FitStringLength(numeroRegistro.ToString(), 6, 6, '0', 0, true, true, true);

                _detalhe = Utils.SubstituiCaracteresEspeciais(_detalhe);

                return _detalhe;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao gerar DETALHE do arquivo CNAB400.", ex);
            }
        }

        #endregion DETALHE REMESSA

        #region TRAILER CNAB240

        /// <summary>
        ///POS INI/FINAL	DESCRIÇÂO	                   A/N	TAM	DEC	CONTEÚDO	NOTAS
        ///--------------------------------------------------------------------------------
        ///001 - 003	Código do Banco na compensação	    N	003		341
        ///004 - 007	Lote de serviço	                    N	004		Nota 5
        ///008 - 008	Registro Trailer de Lote            N	001     5
        ///009 - 017	Complemento de Registros            A	009     Brancos
        ///018 - 023    Qtd. Registros do Lote              N   006     Nota 15
        ///024 - 041    Soma Valor dos Débitos do Lote      N   018     Nota 14
        ///042 - 059    Soma Qtd. de Moedas do Lote         N   018     Nota 14
        ///060 - 230    Complemento de Registros            A   171     Brancos
        ///231 - 240    Cód. Ocr. para Retorno              A   010     Brancos
        /// </summary>

        public override string GerarTrailerLoteRemessa(int numeroRegistro)
        {
            try
            {
                string trailer = Utils.FormatCode(Codigo.ToString(), "0", 3, true);
                trailer += Utils.FormatCode("", "0", 4, true);
                trailer += "5";
                trailer += Utils.FormatCode("", " ", 9);
                trailer += Utils.FormatCode("", "0", 6, true);
                trailer += Utils.FormatCode("", "0", 18, true);
                trailer += Utils.FormatCode("", "0", 18, true);
                trailer += Utils.FormatCode("", " ", 171);
                trailer += Utils.FormatCode("", " ", 10);
                trailer = Utils.SubstituiCaracteresEspeciais(trailer);

                return trailer;
            }
            catch (Exception e)
            {
                throw new Exception("Erro durante a geração do registro TRAILER do LOTE de REMESSA.", e);
            }
        }

        /// <summary>
        ///POS INI/FINAL	DESCRIÇÂO	                   A/N	TAM	DEC	CONTEÚDO	NOTAS
        ///--------------------------------------------------------------------------------
        ///001 - 003	Código do Banco na compensação	    N	003		341
        ///004 - 007	Lote de serviço	                    N	004		9999
        ///008 - 008	Registro Trailer de Arquivo         N	001     9
        ///009 - 017	Complemento de Registros            A	009     Brancos
        ///018 - 023    Qtd. Lotes do Arquivo               N   006     Nota 15
        ///024 - 029    Qtd. Registros do Arquivo           N   006     Nota 15
        ///030 - 240    Complemento de Registros            A   211     Brancos
        /// </summary>

        public override string GerarTrailerArquivoRemessa(int numeroRegistro)
        {
            try
            {
                string trailer = Utils.FormatCode(Codigo.ToString(), "0", 3, true);
                trailer += "9999";
                trailer += "9";
                trailer += Utils.FormatCode("", " ", 9);
                trailer += Utils.FormatCode("", "0", 6, true);
                trailer += Utils.FormatCode("", "0", 6, true);
                trailer += Utils.FormatCode("", " ", 211);
                trailer = Utils.SubstituiCaracteresEspeciais(trailer);

                return trailer;
            }
            catch (Exception e)
            {
                throw new Exception("Erro durante a geração do registro TRAILER do ARQUIVO de REMESSA.", e);
            }
        }
        #endregion TRAILER CNAB240

        #region TRAILER CNAB400

        /// <summary>
        /// TRAILER do arquivo CNAB
        /// Gera o TRAILER do arquivo remessa de acordo com o lay-out informado
        /// </summary>
        public override string GerarTrailerRemessa(int numeroRegistro, TipoArquivo tipoArquivo, Cedente cedente, decimal vltitulostotal)
        {
            try
            {
                string _trailer = " ";

                base.GerarTrailerRemessa(numeroRegistro, tipoArquivo, cedente, vltitulostotal);

                switch (tipoArquivo)
                {
                    case TipoArquivo.CNAB240:
                        _trailer = GerarTrailerRemessa240();
                        break;
                    case TipoArquivo.CNAB400:
                        _trailer = GerarTrailerRemessa400(numeroRegistro, vltitulostotal);
                        break;
                    case TipoArquivo.Outro:
                        throw new Exception("Tipo de arquivo inexistente.");
                }

                return _trailer;

            }
            catch (Exception ex)
            {
                throw new Exception("", ex);
            }
        }

        public string GerarTrailerRemessa240()
        {
            throw new NotImplementedException("Função não implementada.");
        }

        public string GerarTrailerRemessa400(int numeroRegistro, decimal vltitulostotal)
        {
            try
            {
                string complemento = new string('0', 374);
                string _trailer;

                _trailer = "9";
                _trailer += Utils.FitStringLength(numeroRegistro.ToString(), 6, 6, '0', 0, true, true, true); //Quantidade total de linhas no arquivo
                _trailer += Utils.FitStringLength(vltitulostotal.ToString("0.00").Replace(",", ""), 13, 13, '0', 0, true, true, true);
                _trailer += complemento;
                _trailer += Utils.FitStringLength(numeroRegistro.ToString(), 6, 6, '0', 0, true, true, true); // Número sequencial do registro no arquivo.

                _trailer = Utils.SubstituiCaracteresEspeciais(_trailer);

                return _trailer;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro durante a geração do registro TRAILER do arquivo de REMESSA.", ex);
            }
        }

        #endregion TRAILER CNAB400

        #endregion Métodos de geração do arquivo remessa

        #region Método de leitura do arquivo retorno

        public override DetalheRetorno LerDetalheRetornoCNAB400(string registro)
        {
            try
            {
                DetalheRetorno detalhe = new DetalheRetorno(registro);

                //Tipo de Inscrição Empresa
                detalhe.CodigoInscricao = Utils.ToInt32(registro.Substring(1, 2));
                //Nº Inscrição da Empresa
                detalhe.NumeroInscricao = registro.Substring(3, 14);

                //Identificação da Empresa Cedente no Banco
                detalhe.Agencia = Utils.ToInt32(registro.Substring(17, 4));
                detalhe.Conta = Utils.ToInt32(registro.Substring(21, 8));

                //Nº Controle do Participante
                detalhe.NumeroControle = registro.Substring(37, 25);
                //Identificação do Título no Banco
                detalhe.NossoNumeroComDV = registro.Substring(62, 8);
                detalhe.NossoNumero = registro.Substring(62, 7);
                detalhe.DACNossoNumero = registro.Substring(69, 1);
                //Identificação de Ocorrência
                detalhe.CodigoOcorrencia = Utils.ToInt32(registro.Substring(108, 2));

                //Descrição da ocorrência
                detalhe.DescricaoOcorrencia = this.Ocorrencia(registro.Substring(108, 2));

                //Número do Documento
                detalhe.NumeroDocumento = registro.Substring(116, 10);
                //Identificação do Título no Banco
                detalhe.IdentificacaoTitulo = registro.Substring(126, 8);

                //Valor do Título
                decimal valorTitulo = Convert.ToInt64(registro.Substring(152, 13));
                detalhe.ValorTitulo = valorTitulo / 100;
                //Banco Cobrador
                detalhe.CodigoBanco = Utils.ToInt32(registro.Substring(165, 3));
                //Agência Cobradora
                detalhe.AgenciaCobradora = Utils.ToInt32(registro.Substring(168, 5));
                //Espécie do Título
                detalhe.Especie = Utils.ToInt32(registro.Substring(173, 2));
                // IOF
                decimal iof = Convert.ToUInt64(registro.Substring(214, 13));
                detalhe.IOF = iof / 100;
                //Abatimento Concedido sobre o Título (Valor Abatimento Concedido)
                decimal valorAbatimento = Convert.ToUInt64(registro.Substring(227, 13));
                detalhe.ValorAbatimento = valorAbatimento / 100;
                //Desconto Concedido (Valor Desconto Concedido)
                decimal valorDesconto = Convert.ToUInt64(registro.Substring(240, 13));
                detalhe.Descontos = valorDesconto / 100;
                //Valor Pago
                decimal valorPago = Convert.ToUInt64(registro.Substring(253, 13));
                detalhe.ValorPago = valorPago / 100;
                //Juros Mora
                decimal jurosMora = Convert.ToUInt64(registro.Substring(266, 13));
                detalhe.JurosMora = jurosMora / 100;
                //Outros Créditos
                decimal outrosCreditos = Convert.ToUInt64(registro.Substring(279, 13));
                detalhe.OutrosCreditos = outrosCreditos / 100;
                //Data Ocorrência no Banco
                int dataOcorrencia = Utils.ToInt32(registro.Substring(110, 6));
                detalhe.DataOcorrencia = Utils.ToDateTime(dataOcorrencia.ToString("##-##-##"));
                //Data Vencimento do Título
                int dataVencimento = Utils.ToInt32(registro.Substring(146, 6));
                detalhe.DataVencimento = Utils.ToDateTime(dataVencimento.ToString("##-##-##"));
                // Data do Crédito
                int dataCredito = Utils.ToInt32(registro.Substring(295, 6));
                detalhe.DataCredito = Utils.ToDateTime(dataCredito.ToString("##-##-##"));
                //Nome do Sacado
                detalhe.NomeSacado = registro.Substring(301, 36);

                detalhe.NumeroSequencial = Utils.ToInt32(registro.Substring(394, 6));

                return detalhe;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao ler detalhe do arquivo de RETORNO / CNAB 400.", ex);
            }
        }

        public override DetalheSegmentoTRetornoCNAB240 LerDetalheSegmentoTRetornoCNAB240(string registro)
        {
            try
            {
                DetalheSegmentoTRetornoCNAB240 detalhe = new DetalheSegmentoTRetornoCNAB240(registro);

                if (registro.Substring(13, 1) != "T")
                    throw new Exception("Registro inválido. O detalhe não possuí as características do segmento T.");

                detalhe.CodigoBanco = Convert.ToInt32(registro.Substring(0, 3));
                detalhe.idCodigoMovimento = Convert.ToInt32(registro.Substring(15, 2));
                detalhe.Agencia = Convert.ToInt32(registro.Substring(17, 4));
                detalhe.DigitoAgencia = registro.Substring(21, 1);
                detalhe.Conta = Convert.ToInt32(registro.Substring(22, 9));
                detalhe.DigitoConta = registro.Substring(31, 1);

                detalhe.NossoNumero = registro.Substring(40, 13);
                detalhe.CodigoCarteira = Convert.ToInt32(registro.Substring(43, 1));
                detalhe.NumeroDocumento = registro.Substring(54, 15);
                string dataVencimento = registro.Substring(69, 8);
                //detalhe.DataVencimento = Convert.ToDateTime(dataVencimento.ToString("##-##-####"));
                detalhe.DataVencimento = DateTime.ParseExact(dataVencimento, "ddMMyyyy", CultureInfo.InvariantCulture);
                decimal valorTitulo = Convert.ToInt64(registro.Substring(77, 15));
                detalhe.ValorTitulo = valorTitulo / 100;
                detalhe.IdentificacaoTituloEmpresa = registro.Substring(100, 25);
                detalhe.TipoInscricao = Convert.ToInt32(registro.Substring(127, 1));
                detalhe.NumeroInscricao = registro.Substring(128, 15);
                detalhe.NomeSacado = registro.Substring(143, 40);
                decimal valorTarifas = Convert.ToUInt64(registro.Substring(193, 15));
                detalhe.ValorTarifas = valorTarifas / 100;
                detalhe.CodigoRejeicao = registro.Substring(208, 10);
                detalhe.UsoFebraban = registro.Substring(218, 22);

                return detalhe;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao processar arquivo de RETORNO - SEGMENTO T.", ex);
            }

        }

        #endregion

        #endregion

        /// <summary>
        /// Efetua as Validações dentro da classe Boleto, para garantir a geração da remessa
        /// </summary>
        public override bool ValidarRemessa(TipoArquivo tipoArquivo, string numeroConvenio, IBanco banco, Cedente cedente, Boletos boletos, int numeroArquivoRemessa, out string mensagem)
        {
            bool vRetorno = true;
            string vMsg = string.Empty;
            ////IMPLEMENTACAO PENDENTE...
            mensagem = vMsg;
            return vRetorno;
        }

    }
}